Class CommodityXmlConverter

java.lang.Object
tools.CommodityXmlConverter

public final class CommodityXmlConverter extends Object
現金商城商品目錄與 Commodity.img WZ-XML 之間的雙向轉換器(後台 GUI 使用)。

權威資料表為 cashshop_modified_items(伺服器啟動時由 CashItemFactory 讀取),而玩家用戶端則是讀取自身 WZ 的 Commodity.img 來決定商城顯示內容。 本類別讓營運者能在兩者間同步:

匯出採用 v149 用戶端 Commodity.img 的正規欄位順序與結構(CRLF 換行、4 空格縮排、 standalone="yes" 宣告,與 HaRepacker 輸出一致)。伺服器追蹤的欄位直接對應 DB 欄位: SN→serialItemId→itemidCount→countPrice→discount_pricePeriod→periodPriority→priorityGender→genderOnSale→showupClass→mark 僅在 mark > 0(new/hot/sale 角標)時輸出,與實機資料一致(多數商品無此欄)。

其餘 v149 用戶端欄位伺服器並未使用,依實機 Commodity.img 的主流值以常數輸出: Bonus=0ReqPOP=0ReqLEV=0PbCash=PbPoint=PbGift=30Refundable=1(實機資料統計:PbCash/PbPoint/PbGift 恆為 30,Bonus/ReqPOP/ReqLEV 逾 98% 為 0)。因伺服器不讀取這些欄位、且私服情境下「無等級限制/可退費」為合理預設, cashshop_modified_items 無需為它們新增欄位。

  • Method Details

    • exportXml

      public static String exportXml() throws SQLException
      cashshop_modified_items 全表匯出為 Commodity.img 的 WZ-XML 字串。
      Returns:
      HaRepacker 風格的 Commodity.img.xml 內容
      Throws:
      SQLException - 讀取資料表失敗時
    • importXml

      public static int importXml(String xml) throws Exception
      解析 Commodity.img 的 WZ-XML 並 upsert 進 cashshop_modified_items

      逐一走訪根節點下每個 <imgdir> 商品,讀取其 SN(必填、>0) 與其餘欄位後呼叫 CashItemFactory.saveModifiedItem(int, int, int, int, int, int, int, boolean, int)(同步寫 DB+更新快取)。

      Parameters:
      xml - Commodity.img.xml 內容
      Returns:
      成功匯入的商品筆數
      Throws:
      Exception - XML 解析失敗時