patch_entities.py 3.6 KB

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