patch_entities.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. # -*- coding: utf-8 -*-
  2. """给自动生成的实体补充关联字段与 PHP 获取器等值实现(在类尾插入)。"""
  3. from pathlib import Path
  4. ENT = Path(r"C:\Users\Administrator\WorkBuddy\2026-10-17-12-27-10\java-rewrite\yoshop-java\src\main\java\cn\yoshop\common\entity")
  5. PATCHES = {
  6. "UserGrade.java": """
  7. // ------------------------------------------------------------ 获取器
  8. @JsonIgnore
  9. private String upgradeRaw;
  10. @JsonIgnore
  11. private String equityRaw;
  12. /** 升级条件:库内 json 字符串,出参为对象 */
  13. @com.fasterxml.jackson.annotation.JsonProperty("upgrade")
  14. public Object getUpgradeJson() {
  15. return cn.yoshop.common.util.PhpStr.jsonDecodeArray(upgrade);
  16. }
  17. /** 等级权益:库内 json 字符串,出参为对象 */
  18. @com.fasterxml.jackson.annotation.JsonProperty("equity")
  19. public Object getEquityJson() {
  20. return cn.yoshop.common.util.PhpStr.jsonDecodeArray(equity);
  21. }
  22. """,
  23. "Coupon.java": """
  24. /** 适用范围配置:库内 json 字符串,出参为数组/对象 */
  25. @com.fasterxml.jackson.annotation.JsonProperty("apply_range_config")
  26. public Object getApplyRangeConfigJson() {
  27. return cn.yoshop.common.util.PhpStr.jsonDecodeArray(applyRangeConfig);
  28. }
  29. """,
  30. "Category.java": """
  31. // ------------------------------------------------------------ 关联
  32. /** 分类图片(image_id=0 时 null) */
  33. @TableField(exist = false)
  34. private UploadFile image;
  35. /** 子分类(仅非空时输出,对齐 PHP getTreeData 的 !empty($children) && $item['children']) */
  36. @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)
  37. @TableField(exist = false)
  38. private java.util.List<Category> children;
  39. """,
  40. "UploadGroup.java": """
  41. @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY)
  42. @TableField(exist = false)
  43. private java.util.List<UploadGroup> children;
  44. """,
  45. "StoreAddress.java": """
  46. // ------------------------------------------------------------ 组装字段
  47. /** 省市区 ID 级联数组 */
  48. @TableField(exist = false)
  49. private java.util.List<Integer> cascader;
  50. /** 省市区名称 */
  51. @TableField(exist = false)
  52. private java.util.Map<String, String> region;
  53. /** 完整地址 */
  54. @TableField(exist = false)
  55. private String fullAddress;
  56. """,
  57. "OrderGoods.java": """
  58. // ------------------------------------------------------------ 关联
  59. @TableField(exist = false)
  60. private UploadFile image;
  61. /** 商品封面图(image.preview_url) */
  62. @com.fasterxml.jackson.annotation.JsonProperty("goods_image")
  63. public String getGoodsImage() {
  64. return image == null ? null : image.getPreviewUrl();
  65. }
  66. """,
  67. }
  68. def main():
  69. for name, snippet in PATCHES.items():
  70. path = ENT / name
  71. text = path.read_text(encoding="utf-8")
  72. idx = text.rstrip().rfind("}")
  73. head = text.rstrip()[:idx].rstrip("\n")
  74. # 补充必要 import
  75. imports = []
  76. if "TableField" in snippet and "import com.baomidou.mybatisplus.annotation.TableField;" not in text:
  77. imports.append("import com.baomidou.mybatisplus.annotation.TableField;")
  78. if imports:
  79. head = head.replace("import com.baomidou.mybatisplus.annotation.TableName;",
  80. "import com.baomidou.mybatisplus.annotation.TableName;\n" + "\n".join(imports), 1)
  81. out = head + "\n" + snippet + "}\n"
  82. path.write_text(out, encoding="utf-8")
  83. print("patched", name)
  84. if __name__ == "__main__":
  85. main()