# -*- coding: utf-8 -*- """给自动生成的实体补充关联字段与 PHP 获取器等值实现(在类尾插入)。""" from pathlib import Path from _root import ROOT ENT = Path(str(ROOT / "yoshop-java/src/main/java/cn/yoshop/common/entity")) PATCHES = { "UserGrade.java": """ // ------------------------------------------------------------ 获取器 @JsonIgnore private String upgradeRaw; @JsonIgnore private String equityRaw; /** 升级条件:库内 json 字符串,出参为对象 */ @com.fasterxml.jackson.annotation.JsonProperty("upgrade") public Object getUpgradeJson() { return cn.yoshop.common.util.PhpStr.jsonDecodeArray(upgrade); } /** 等级权益:库内 json 字符串,出参为对象 */ @com.fasterxml.jackson.annotation.JsonProperty("equity") public Object getEquityJson() { return cn.yoshop.common.util.PhpStr.jsonDecodeArray(equity); } """, "Coupon.java": """ /** 适用范围配置:库内 json 字符串,出参为数组/对象 */ @com.fasterxml.jackson.annotation.JsonProperty("apply_range_config") public Object getApplyRangeConfigJson() { return cn.yoshop.common.util.PhpStr.jsonDecodeArray(applyRangeConfig); } """, "Category.java": """ // ------------------------------------------------------------ 关联 /** 分类图片(image_id=0 时 null) */ @TableField(exist = false) private UploadFile image; /** 子分类(仅非空时输出,对齐 PHP getTreeData 的 !empty($children) && $item['children']) */ @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY) @TableField(exist = false) private java.util.List children; """, "UploadGroup.java": """ @com.fasterxml.jackson.annotation.JsonInclude(com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY) @TableField(exist = false) private java.util.List children; """, "StoreAddress.java": """ // ------------------------------------------------------------ 组装字段 /** 省市区 ID 级联数组 */ @TableField(exist = false) private java.util.List cascader; /** 省市区名称 */ @TableField(exist = false) private java.util.Map region; /** 完整地址 */ @TableField(exist = false) private String fullAddress; """, "OrderGoods.java": """ // ------------------------------------------------------------ 关联 @TableField(exist = false) private UploadFile image; /** 商品封面图(image.preview_url) */ @com.fasterxml.jackson.annotation.JsonProperty("goods_image") public String getGoodsImage() { return image == null ? null : image.getPreviewUrl(); } """, } def main(): for name, snippet in PATCHES.items(): path = ENT / name text = path.read_text(encoding="utf-8") idx = text.rstrip().rfind("}") head = text.rstrip()[:idx].rstrip("\n") # 补充必要 import imports = [] if "TableField" in snippet and "import com.baomidou.mybatisplus.annotation.TableField;" not in text: imports.append("import com.baomidou.mybatisplus.annotation.TableField;") if imports: head = head.replace("import com.baomidou.mybatisplus.annotation.TableName;", "import com.baomidou.mybatisplus.annotation.TableName;\n" + "\n".join(imports), 1) out = head + "\n" + snippet + "}\n" path.write_text(out, encoding="utf-8") print("patched", name) if __name__ == "__main__": main()