Browse Source

批量供货/取消供货

zhangwl 1 month ago
parent
commit
642f197b50

+ 300 - 56
src/main/java/zs/payment/entity/mysql/ImsEweiShopGoods.java

@@ -22,494 +22,738 @@ public class ImsEweiShopGoods {
     @TableId(type = IdType.AUTO)
     private Long id;
     // 公众号id
+    @TableField("uniacid")
     private Integer uniacid;
     // 一级分类ID
+    @TableField("pcate")
     private Long pcate;
     // 二级分类ID
+    @TableField("ccate")
     private Long ccate;
     // 三级分类ID
+    @TableField("tcate")
     private Long tcate;
     // 1 实体商品 2 虚拟商品 3 虚拟物品(卡密) 4 批发商品 5 记次/时商品 9 周期购商品 20 租赁商品 21 定金购商品 22拍卖 23易拍即得拍卖品24易拍即得拼拍 25盲盒 26盲盒商品 27久猪租赁
+    @TableField("type")
     private Integer type;
     // 多商户id
+    @TableField("merchid")
     private Integer merchid;
     // 状态 0 下架 1 上架 2 赠品上架
+    @TableField("status")
     private Integer status;
     // 排序
+    @TableField("displayorder")
     private Integer displayorder;
     // 商品名称
+    @TableField("title")
     private String title;
     // 商品图(首图)
+    @TableField("thumb")
     private String thumb;
     // 商品单位
+    @TableField("unit")
     private String unit;
     // 分享描述
+    @TableField("description")
     private String description;
     // 商品详情
+    @TableField("content")
     private String content;
     // 商品编号
+    @TableField("goodssn")
     private String goodssn;
     // 商品条码
+    @TableField("productsn")
     private String productsn;
     // 商品原价,价格要高,因为要打折
+    @TableField("productprice")
     private BigDecimal productprice;
     // 普通商品现价/拍卖保证金
+    @TableField("marketprice")
     private BigDecimal marketprice;
     // 租赁中押金/拍卖保留价/久猪租赁押金
+    @TableField("costprice")
     private BigDecimal costprice;
     // 成本价
-    private BigDecimal cost_of_price;
+    @TableField("cost_of_price")
+    private BigDecimal costOfPrice;
     // 原价
+    @TableField("originalprice")
     private BigDecimal originalprice;
     // 商品库存
+    @TableField("total")
     private Integer total;
     // 0 拍下减库存 1 付款减库存 2 永久不减
+    @TableField("totalcnf")
     private Integer totalcnf;
     // 已出售数
+    @TableField("sales")
     private Integer sales;
     // 实际售出数
+    @TableField("salesreal")
     private Integer salesreal;
     // 商品规格设置
+    @TableField("spec")
     private String spec;
     // 建立时间
+    @TableField("createtime")
     private Long createtime;
     // 重量
+    @TableField("weight")
     private BigDecimal weight;
     // 购买赠送积分,如果带%号,则为按成交价比例计算
+    @TableField("credit")
     private String credit;
     // 单次最多购买量
+    @TableField("maxbuy")
     private Integer maxbuy;
     // 用户最多购买量
+    @TableField("usermaxbuy")
     private Integer usermaxbuy;
     // 启用商品规则 0 不启用 1 启用
+    @TableField("hasoption")
     private Integer hasoption;
     // 配送
+    @TableField("dispatch")
     private Integer dispatch;
     // 缩略图地址
-    private String thumb_url;
+    @TableField("thumb_url")
+    private String thumbUrl;
     // 新上
+    @TableField("isnew")
     private Integer isnew;
     // 热卖
+    @TableField("ishot")
     private Integer ishot;
     // 促销
+    @TableField("isdiscount")
     private Integer isdiscount;
     // 促销标题
-    private String isdiscount_title;
+    @TableField("isdiscount_title")
+    private String isdiscountTitle;
     // 促销时间
-    private Integer isdiscount_time;
+    @TableField("isdiscount_time")
+    private Integer isdiscountTime;
     // 促销描述
-    private String isdiscount_discounts;
+    @TableField("isdiscount_discounts")
+    private String isdiscountDiscounts;
     // 推荐 1是 0否
+    @TableField("isrecommand")
     private Integer isrecommand;
     // 包邮 1是 0否
+    @TableField("issendfree")
     private Integer issendfree;
     // 限时卖
+    @TableField("istime")
     private Integer istime;
     // 允许评价 1是 0否
+    @TableField("iscomment")
     private Integer iscomment;
     // 限卖开始时间/拼拍开始倒计时分钟
+    @TableField("timestart")
     private Integer timestart;
     // 限卖结束时间/拼拍结束倒计时分钟
+    @TableField("timeend")
     private Integer timeend;
     // 查看次数
+    @TableField("viewcount")
     private Integer viewcount;
     // 是否删除 1是 0否
+    @TableField("deleted")
     private Integer deleted;
     // 是否有分销 1是 0否
+    @TableField("hascommission")
     private Integer hascommission;
     // 一级分销比率
-    private BigDecimal commission1_rate;
+    @TableField("commission1_rate")
+    private BigDecimal commission1Rate;
     // 一级分销固定佣金
-    private BigDecimal commission1_pay;
+    @TableField("commission1_pay")
+    private BigDecimal commission1Pay;
     // 二级分销比率
-    private BigDecimal commission2_rate;
+    @TableField("commission2_rate")
+    private BigDecimal commission2Rate;
     // 二级分销固定佣金
-    private BigDecimal commission2_pay;
+    @TableField("commission2_pay")
+    private BigDecimal commission2Pay;
     // 三级分销比率
-    private BigDecimal commission3_rate;
+    @TableField("commission3_rate")
+    private BigDecimal commission3Rate;
     // 三级分销固定佣金
-    private BigDecimal commission3_pay;
+    @TableField("commission3_pay")
+    private BigDecimal commission3Pay;
     // 分销
+    @TableField("commission")
     private String commission;
     // 得分
+    @TableField("score")
     private BigDecimal score;
     // 抓取产品信息ID/星链导入商品spuid,共富商城第三方商品id, 芸信供应链id
-    private String catch_id;
+    @TableField("catch_id")
+    private String catchId;
     // 抓取产品地址/共富商城第三方商品链接
-    private String catch_url;
+    @TableField("catch_url")
+    private String catchUrl;
     // 抓取产品来源/来源星链xinglian、淘宝助手taobao,共富商城第三方商品(拼多多gfPDD,京东gfJD,淘宝gfTaobao),芸信yunxin
-    private String catch_source;
+    @TableField("catch_source")
+    private String catchSource;
     // 更新时间
+    @TableField("updatetime")
     private Long updatetime;
     // 分享标题
-    private String share_title;
+    @TableField("share_title")
+    private String shareTitle;
     // 分享图标
-    private String share_icon;
+    @TableField("share_icon")
+    private String shareIcon;
     // 货到付款 1 不支持 2 支持
+    @TableField("cash")
     private Integer cash;
     // 海报图片
-    private String commission_thumb;
+    @TableField("commission_thumb")
+    private String commissionThumb;
     // 不参与会员折扣
+    @TableField("isnodiscount")
     private Integer isnodiscount;
     // 会员等级浏览权限
+    @TableField("showlevels")
     private String showlevels;
     // 会员组购买权限
+    @TableField("buylevels")
     private String buylevels;
     // 会员组浏览权限
+    @TableField("showgroups")
     private String showgroups;
     // 会员组购买权限
+    @TableField("buygroups")
     private String buygroups;
     // 支持线下核销 Null 0 1 不支持 2 支持
+    @TableField("isverify")
     private Integer isverify;
     // 核销:支持门店ID
+    @TableField("storeids")
     private String storeids;
     // 商家通知
+    @TableField("noticeopenid")
     private String noticeopenid;
     // 提醒类型
+    @TableField("noticetype")
     private String noticetype;
     // 需要关注
+    @TableField("needfollow")
     private Integer needfollow;
     // 关注地址
+    @TableField("followurl")
     private String followurl;
     // 关注事项
+    @TableField("followtip")
     private String followtip;
     // 积分抵扣 0 不支持积分抵扣 >0 最多抵扣 元
+    @TableField("deduct")
     private BigDecimal deduct;
     // 短名称 打印需要
+    @TableField("shorttitle")
     private String shorttitle;
     // 虚拟商品模板ID 0 多规格虚拟商品
     @TableField("`virtual`")
     private Integer virtualVar;
     // 一级多重分类
+    @TableField("ccates")
     private String ccates;
     // 折扣
+    @TableField("discounts")
     private String discounts;
     // 不执行分销
+    @TableField("nocommission")
     private Integer nocommission;
     // 隐藏分销按钮
+    @TableField("hidecommission")
     private Integer hidecommission;
     // 二级多重分类
+    @TableField("pcates")
     private String pcates;
     // 三级多重分类
+    @TableField("tcates")
     private String tcates;
     // 店铺LOGO
-    private String detail_logo;
+    @TableField("detail_logo")
+    private String detailLogo;
     // 店铺名称
-    private String detail_shopname;
+    @TableField("detail_shopname")
+    private String detailShopname;
     // 全部宝贝x个
-    private String detail_totaltitle;
+    @TableField("detail_totaltitle")
+    private String detailTotaltitle;
     // 按钮1名称
-    private String detail_btntext1;
+    @TableField("detail_btntext1")
+    private String detailBtntext1;
     // 按钮1链接 默认"查看所有商品"及"默认的全部商品连接"
-    private String detail_btnurl1;
+    @TableField("detail_btnurl1")
+    private String detailBtnurl1;
     // 按钮2名称
-    private String detail_btntext2;
+    @TableField("detail_btntext2")
+    private String detailBtntext2;
     // 按钮2链接 默认"进店逛逛"及"默认的小店或商城连接"
-    private String detail_btnurl2;
+    @TableField("detail_btnurl2")
+    private String detailBtnurl2;
     // 多重分类数据集,这个是重点,用于商品分类
+    @TableField("cates")
     private String cates;
     // 营销文章ID
+    @TableField("artid")
     private Integer artid;
     // 余额抵扣 0 支持全额抵扣 -1 不支持余额抵扣 >0 最多抵扣 元
+    @TableField("deduct2")
     private BigDecimal deduct2;
     // 单品满件包邮 0 : 不支持满件包邮
+    @TableField("ednum")
     private Integer ednum;
     // 不参加满包邮的地区 ,0 : 不支持满件包邮
+    @TableField("edareas")
     private String edareas;
     // 单品满额包邮 0 : 不支持满额包邮
+    @TableField("edmoney")
     private BigDecimal edmoney;
     // 自定义表单形式
+    @TableField("diyformtype")
     private Integer diyformtype;
     // 自定义表单ID
+    @TableField("diyformid")
     private Integer diyformid;
     // 订单模式
+    @TableField("diymode")
     private Integer diymode;
     // 配送类型 0 运费模板 1 统一邮费
+    @TableField("dispatchtype")
     private Integer dispatchtype;
     // 配送ID
+    @TableField("dispatchid")
     private Integer dispatchid;
     // 统一邮费
+    @TableField("dispatchprice")
     private BigDecimal dispatchprice;
     // 多件累计抵扣积分
+    @TableField("manydeduct")
     private Integer manydeduct;
     // 销售更新
+    @TableField("saleupdate")
     private Integer saleupdate;
     // 商户ID
+    @TableField("shopid")
     private Integer shopid;
     // 商品分类集合
+    @TableField("allcates")
     private String allcates;
     // 用户单次必须购买数量
+    @TableField("minbuy")
     private Integer minbuy;
     // 提供发票
+    @TableField("invoice")
     private Integer invoice;
     // 保修
+    @TableField("repair")
     private Integer repair;
     // 7天无理由退换
+    @TableField("seven")
     private Integer seven;
     // 余额返现
+    @TableField("money")
     private String money;
     // 多规格中最小价格,无规格时显示销售价
+    @TableField("minprice")
     private BigDecimal minprice;
     // 多规格中最大价格,无规格时显示销售价
+    @TableField("maxprice")
     private BigDecimal maxprice;
     // 商品所在省 如为空则显示商城所在
+    @TableField("province")
     private String province;
     // 商品所在城市 如为空则显示商城所在
+    @TableField("city")
     private String city;
     // 是否购买后显示
+    @TableField("buyshow")
     private Integer buyshow;
     // 购买后显示的内容
+    @TableField("buycontent")
     private String buycontent;
+    @TableField("saleupdate37975")
     private Integer saleupdate37975;
+    @TableField("saleupdate51117")
     private Integer saleupdate51117;
     // 是否自动发货 1是 0否
+    @TableField("virtualsend")
     private Integer virtualsend;
     // 自动发货内容
+    @TableField("virtualsendcontent")
     private String virtualsendcontent;
     // 0按订单核销1按消费码核销2按次核销
+    @TableField("verifytype")
     private Integer verifytype;
     // 商品自定义的表单结构
+    @TableField("diyfields")
     private String diyfields;
     // 存为模板时记录的id
+    @TableField("diysaveid")
     private Integer diysaveid;
     // 模板更新
+    @TableField("diysave")
     private Integer diysave;
     // 正品保证
+    @TableField("quality")
     private Integer quality;
     // 是否加入团购 1是 0否(必填)
+    @TableField("groupstype")
     private Integer groupstype;
     // 显示库存(必填)
+    @TableField("showtotal")
     private Integer showtotal;
     // 子标题
+    @TableField("subtitle")
     private String subtitle;
     // 详情页 分享按钮 0 弹出层 1跳转海报(必填)
+    @TableField("sharebtn")
     private Integer sharebtn;
+    @TableField("checked")
     private Integer checked;
     // 详情页面显示首图 0 不显示 1 显示 注:首图为列表页使用,尺寸较小
-    private Integer thumb_first;
+    @TableField("thumb_first")
+    private Integer thumbFirst;
     // 机端使用的价格 0 当前设置促销价格 1 商户设置促销价格
+    @TableField("merchsale")
     private Integer merchsale;
     // 商品关键字
+    @TableField("keywords")
     private String keywords;
     // 商品标签
+    @TableField("labelname")
     private String labelname;
     // 自动收货 0 系统设置 -1 不自动收货 >0 天数
+    @TableField("autoreceive")
     private Integer autoreceive;
     // 不允许退货
+    @TableField("cannotrefund")
     private Integer cannotrefund;
     // 砍价
+    @TableField("bargain")
     private Integer bargain;
     // 二次购买几折
+    @TableField("buyagain")
     private BigDecimal buyagain;
     // 是否持续使用
-    private Integer buyagain_islong;
+    @TableField("buyagain_islong")
+    private Integer buyagainIslong;
     // 使用条件,0是付款后,1是完成后
-    private Integer buyagain_condition;
+    @TableField("buyagain_condition")
+    private Integer buyagainCondition;
     // 可以使用优惠 默认是 0 不能使用其他优惠,1是可以使用
-    private Integer buyagain_sale;
+    @TableField("buyagain_sale")
+    private Integer buyagainSale;
     // 关于重复购买的佣金
-    private String buyagain_commission;
+    @TableField("buyagain_commission")
+    private String buyagainCommission;
     // 再次购买价格
-    private BigDecimal buyagain_price;
+    @TableField("buyagain_price")
+    private BigDecimal buyagainPrice;
     // 自定义页面ID
+    @TableField("diypage")
     private Integer diypage;
     // 是否 支持收银台
+    @TableField("cashier")
     private Integer cashier;
     // 核销:是否指定时间兑换(必填)
+    @TableField("isendtime")
     private Integer isendtime;
     // 核销:自动使用期限(必填)
+    @TableField("usetime")
     private Integer usetime;
     // 核销:使用有效期至(必填)
+    @TableField("endtime")
     private Integer endtime;
     // 多商户排序(必填)
+    @TableField("merchdisplayorder")
     private Integer merchdisplayorder;
     // 兑换库存
-    private Integer exchange_stock;
+    @TableField("exchange_stock")
+    private Integer exchangeStock;
     // 兑换邮费(必填)
-    private BigDecimal exchange_postage;
+    @TableField("exchange_postage")
+    private BigDecimal exchangePostage;
     // 是否开启预售(必填)
+    @TableField("ispresell")
     private Integer ispresell;
     // 预售价格(必填)
+    @TableField("presellprice")
     private BigDecimal presellprice;
     // 预售商品结束设置(必填)
+    @TableField("presellover")
     private Integer presellover;
     // 预售商品结束X天后,商品转为正常销售(必填)
+    @TableField("presellovertime")
     private Integer presellovertime;
     // 是否设置预售开始时间(必填)
+    @TableField("presellstart")
     private Integer presellstart;
     // 预售开始时间(必填)
+    @TableField("preselltimestart")
     private Integer preselltimestart;
     // 是否设置预售结束时间(必填)
+    @TableField("presellend")
     private Integer presellend;
     // 预售结束时间(必填)
+    @TableField("preselltimeend")
     private Integer preselltimeend;
     // 预售发货时间类型 0设置时间 1购买后X天(必填)
+    @TableField("presellsendtype")
     private Integer presellsendtype;
     //(必填)
+    @TableField("presellsendstatrttime")
     private Integer presellsendstatrttime;
     // 预售购买后X天后发货(必填)
+    @TableField("presellsendtime")
     private Integer presellsendtime;
     // 地区code
-    private String edareas_code;
+    @TableField("edareas_code")
+    private String edareasCode;
     // 总库存(必填)
-    private Integer unite_total;
+    @TableField("unite_total")
+    private Integer uniteTotal;
     // 3N营销会员
+    @TableField("threen")
     private String threen;
     // 批发价格
+    @TableField("intervalfloor")
     private Integer intervalfloor;
     // 批发单价
+    @TableField("intervalprice")
     private String intervalprice;
     // 是否为全返商品(必填)
+    @TableField("isfullback")
     private Integer isfullback;
     // 是否开启上架时间(必填)
+    @TableField("isstatustime")
     private Integer isstatustime;
     // 上架开始时间(必填)
+    @TableField("statustimestart")
     private Integer statustimestart;
     // 上架结束时间(必填)
+    @TableField("statustimeend")
     private Integer statustimeend;
     // 主商城搜索结果中是否显示该商品 1隐藏 0显示(必填)
+    @TableField("nosearch")
     private Integer nosearch;
     // 显示销量(必填)
+    @TableField("showsales")
     private Integer showsales;
     // 是否为直播商品(必填)
+    @TableField("islive")
     private Integer islive;
     // 直播间价格(必填)
+    @TableField("liveprice")
     private BigDecimal liveprice;
     // 是否开启微信卡片 0关闭 1开启
+    @TableField("opencard")
     private Integer opencard;
     // 微信卡片id
+    @TableField("cardid")
     private String cardid;
     // 可核销次数
+    @TableField("verifygoodsnum")
     private Integer verifygoodsnum;
     // 可核销天数
+    @TableField("verifygoodsdays")
     private Integer verifygoodsdays;
     // 核销时间类型
+    @TableField("verifygoodslimittype")
     private Integer verifygoodslimittype;
     // 核销过期时间
+    @TableField("verifygoodslimitdate")
     private Integer verifygoodslimitdate;
     // 最小直播价(必填)
+    @TableField("minliveprice")
     private BigDecimal minliveprice;
     // 最大直播价(必填)
+    @TableField("maxliveprice")
     private BigDecimal maxliveprice;
     // 订金(必填)
+    @TableField("dowpayment")
     private BigDecimal dowpayment;
     // 行业模板id(必填)
+    @TableField("tempid")
     private Integer tempid;
     // 允许门店设置价格 1允许 0禁止(必填)
+    @TableField("isstoreprice")
     private Integer isstoreprice;
     // 定金退还设置 0退还 -1不退还 1-12多少小时退还(必填)
+    @TableField("beforehours")
     private Integer beforehours;
     // 新商品(必填)
+    @TableField("newgoods")
     private Integer newgoods;
     // 视频
+    @TableField("video")
     private String video;
+    @TableField("officthumb")
     private String officthumb;
     // 是否初始化分类信息 1是 0否
+    @TableField("catesinit3")
     private String catesinit3;
     // 是否调整过显示库存 1是 0否
+    @TableField("showtotaladd")
     private Integer showtotaladd;
     //(必填)
+    @TableField("verifygoodstype")
     private Integer verifygoodstype;
     //(必填)
+    @TableField("isforceverifystore")
     private Integer isforceverifystore;
     // 是否是进货 1
+    @TableField("commoditytype")
     private Integer commoditytype;
     // 云商城商品id
-    private Integer gd_id;
+    @TableField("gd_id")
+    private Integer gdId;
     // 是否是供货 1是
+    @TableField("issupply")
     private Integer issupply;
     // 机器人是否支持自提(0支持 1不支持)
+    @TableField("ispickup")
     private Integer ispickup;
     // 云商城店铺名称
-    private String ysh_merchname;
+    @TableField("ysh_merchname")
+    private String yshMerchname;
     // 是否京东商品0:否1是
+    @TableField("isjingdong")
     private Integer isjingdong;
     // 本币抵扣金额/久猪金猪豆(本币)最高可抵扣
-    private BigDecimal benbi_money;
+    @TableField("benbi_money")
+    private BigDecimal benbiMoney;
     // 联盟币抵扣金额
-    private BigDecimal lmb_money;
+    @TableField("lmb_money")
+    private BigDecimal lmbMoney;
     // 联盟币抵扣上限
-    private Integer lmb_num;
+    @TableField("lmb_num")
+    private Integer lmbNum;
     // 积分币抵扣
-    private Integer benbi_num;
+    @TableField("benbi_num")
+    private Integer benbiNum;
     // 接入人
+    @TableField("jieruren")
     private String jieruren;
     // 推荐人
+    @TableField("tuijianren")
     private String tuijianren;
     // 分佣策略 1 按固定金额分账 2 按利润百分比分账(必填)
-    private Integer fenyong_tactics;
+    @TableField("fenyong_tactics")
+    private Integer fenyongTactics;
     // 分佣联盟币(关系和交易)同时是定金购定金分佣金额「分佣策略=2时,该值是通过fenyong_profit_per计算得出的」
+    @TableField("fenyonglmb")
     private BigDecimal fenyonglmb;
     // 利润百分比
-    private BigDecimal fenyong_profit_per;
+    @TableField("fenyong_profit_per")
+    private BigDecimal fenyongProfitPer;
     // 满多少返联盟币
-    private BigDecimal man_saleprice;
+    @TableField("man_saleprice")
+    private BigDecimal manSaleprice;
     // 返联盟币
-    private Integer fan_lmb;
+    @TableField("fan_lmb")
+    private Integer fanLmb;
     // 奖励积分币
-    private Integer reward_jfb;
+    @TableField("reward_jfb")
+    private Integer rewardJfb;
     // 奖励积分币-允许多件累计 0 不允许 1 允许
-    private Integer allow_more;
+    @TableField("allow_more")
+    private Integer allowMore;
     // 是否是订单全返商品
+    @TableField("isordersign")
     private Integer isordersign;
     // 定金购定金可支付开始时间/拍卖开始时间/拼拍开始时间
+    @TableField("deposittimestart")
     private Integer deposittimestart;
     // 定金购定金可支付结束时间/拍卖结束时间/拼拍结束时间
+    @TableField("deposittimeend")
     private Integer deposittimeend;
     // 定金购尾款开始时间
+    @TableField("remainingtimestart")
     private Integer remainingtimestart;
     // 定金购尾款结束时间
+    @TableField("remainingtimeend")
     private Integer remainingtimeend;
     // 定金购尾款/拍卖起拍价
+    @TableField("remainingprice")
     private BigDecimal remainingprice;
     // 定金购全额支付价格/拍卖参考价
+    @TableField("fullprice")
     private BigDecimal fullprice;
     // 定金购每期天数
+    @TableField("cycleday")
     private Integer cycleday;
     // 定金购期数
+    @TableField("cyclenum")
     private Integer cyclenum;
     // 分佣联盟币(关系和交易)定金购尾款分佣金额
-    private BigDecimal fenyonglmb_r;
+    @TableField("fenyonglmb_r")
+    private BigDecimal fenyonglmbR;
     // 分佣联盟币(关系和交易)定金全额支付分佣金额
-    private BigDecimal fenyonglmb_f;
+    @TableField("fenyonglmb_f")
+    private BigDecimal fenyonglmbF;
     // 拍卖加价幅度
+    @TableField("rangeprice")
     private BigDecimal rangeprice;
     // 拍卖加价延迟分钟/易拍记得 竞拍限时秒
+    @TableField("pricemin")
     private Integer pricemin;
     // 拍卖关联得商品id/拼拍关联拍卡id
+    @TableField("relevanceid")
     private Integer relevanceid;
     // 拍卖商品状态1流拍 (易拍记得 拍卖状态0未知1已结束)/拼拍(0未开始或进行中或成团等待开始1报名中2已结束)
+    @TableField("auctionstatus")
     private Integer auctionstatus;
     // 拍卖商品1未开始/拼拍1成团等待开始
+    @TableField("isauctiontime")
     private Integer isauctiontime;
     // 拍卖送派人userid
-    private String souyue_userid;
+    @TableField("souyue_userid")
+    private String souyueUserid;
     // 是否是供货推荐商品
-    private Integer issupply_recommend;
+    @TableField("issupply_recommend")
+    private Integer issupplyRecommend;
     // 拍卖奖励比例
+    @TableField("rewardratio")
     private BigDecimal rewardratio;
     // 易拍记得拍卖房间人数
+    @TableField("auctionnum")
     private Integer auctionnum;
     // 费用详情
+    @TableField("costcontent")
     private String costcontent;
     // 行程路线/久猪扩展字段
+    @TableField("itinerary")
     private String itinerary;
     // 是否是旅游产品 1是
+    @TableField("isitinerary")
     private Integer isitinerary;
     // 共富分佣
-    private BigDecimal fenyong_rich;
+    @TableField("fenyong_rich")
+    private BigDecimal fenyongRich;
     // 共富广告收益抵扣上限
-    private BigDecimal adv_money;
+    @TableField("adv_money")
+    private BigDecimal advMoney;
     // 商品属性0无1汽车订购(717项目专用)
+    @TableField("attribute")
     private Integer attribute;
     // 会员等级奖励积分币
-    private String level_reward_jfb;
+    @TableField("level_reward_jfb")
+    private String levelRewardJfb;
     // 商品类别:0线上商品 1线下商品
+    @TableField("kind")
     private Integer kind;
-
     //============以下是供应链需求,新增字段========================
     //商品供应来源 芸信yunxin
-    private String supply_source;
+    @TableField("supply_source")
+    private String supplySource;
     //供应链的商品id
-    private String supply_id;
+    @TableField("supply_id")
+    private String supplyId;
 }

+ 29 - 3
src/main/java/zs/payment/entity/mysql/ImsEweiShopGoodsOption.java

@@ -56,36 +56,47 @@ public class ImsEweiShopGoodsOption {
     private Long id;
 
     //所属企云商城的id
+    @TableField("uniacid")
     private Integer uniacid;
 
     //商品id
+    @TableField("goodsid")
     private Integer goodsid;
 
     //规格标题
+    @TableField("title")
     private String title;
 
     //缩略图
+    @TableField("thumb")
     private String thumb;
 
     //销售价
+    @TableField("productprice")
     private BigDecimal productprice;
 
     //市场价
+    @TableField("marketprice")
     private BigDecimal marketprice;
 
     //成本价
+    @TableField("costprice")
     private BigDecimal costprice;
 
     //库存
+    @TableField("stock")
     private Integer stock;
 
     //重量
+    @TableField("weight")
     private BigDecimal weight;
 
     //排序
+    @TableField("displayorder")
     private Integer displayorder;
 
     //规格内容
+    @TableField("specs")
     private String specs;
 
     //SKU id ,存储芸信的商品规格id,下单与获取运费验证是否可售等使用这个
@@ -93,49 +104,64 @@ public class ImsEweiShopGoodsOption {
     private String skuId;
 
     //商品编号
+    @TableField("goodssn")
     private String goodssn;
 
     //货品编号
+    @TableField("productsn")
     private String productsn;
 
     //是否虚拟
+    @TableField("virtual")
     private Integer virtual;
 
     //兑换库存
-    private Integer exchange_stock;
+    @TableField("exchange_stock")
+    private Integer exchangeStock;
 
     //兑换邮费
-    private BigDecimal exchange_postage;
+    @TableField("exchange_postage")
+    private BigDecimal exchangePostage;
 
     //预售价
+    @TableField("presellprice")
     private BigDecimal presellprice;
 
     //天数
+    @TableField("day")
     private Integer day;
 
     //全返总价 必填
+    @TableField("allfullbackprice")
     private BigDecimal allfullbackprice;
 
     //全返价 必填
+    @TableField("fullbackprice")
     private BigDecimal fullbackprice;
 
     //全返总比例
+    @TableField("allfullbackratio")
     private BigDecimal allfullbackratio;
 
     //全返比例
+    @TableField("fullbackratio")
     private BigDecimal fullbackratio;
 
     //是否全返
+    @TableField("isfullback")
     private Integer isfullback;
 
     //是否直播
+    @TableField("islive")
     private Integer islive;
 
     //直播价
+    @TableField("liveprice")
     private BigDecimal liveprice;
 
     //周期购周期
-    private String cycelbuy_periodic;
+    @TableField("cycelbuy_periodic")
+    private String cycelbuyPeriodic;
 
     //云商城规格id
     @TableField("sku_id")

+ 16 - 1
src/main/java/zs/payment/entity/mysql/ImsEweiShopGoodsSpec.java

@@ -2,6 +2,7 @@ package zs.payment.entity.mysql;
 
 
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Getter;
@@ -32,23 +33,37 @@ public class ImsEweiShopGoodsSpec {
     //    yunspecid    int                      null comment '云商城id',
     //    src_id       int                      null comment '复制原来id'
     //)
+    //    row_format = DYNAMIC;
 
     @TableId(type = IdType.AUTO)
     private Long id;
 
     //所属企云商城的id
+    @TableField("uniacid")
     private Integer uniacid;
 
+    @TableField("goodsid")
     private Integer goodsid;
+    @TableField("title")
     private String title;
+    @TableField("description")
     private String description;
+    @TableField("displaytype")
     private Integer displaytype;
+    @TableField("content")
     private String content;
+    @TableField("displayorder")
     private Integer displayorder;
+    @TableField("propId")
     private String propId;
+    @TableField("iscycelbuy")
     private Integer iscycelbuy;
+    //云商城id
+    @TableField("yunspecid")
     private Integer yunspecid;
-    private Integer src_id;
+    //复制原来id
+    @TableField("src_id")
+    private Integer srcId;
 
 
 

+ 10 - 2
src/main/java/zs/payment/entity/mysql/ImsEweiShopGoodsSpecItem.java

@@ -37,24 +37,32 @@ public class ImsEweiShopGoodsSpecItem {
     private Long id;
 
     // 所属企云商城的id
+    @TableField("uniacid")
     private Integer uniacid;
-//关联规格id
+    //关联规格id
+    @TableField("specid")
     private Integer specid;
     //规格项名称
+    @TableField("title")
     private String title;
     //缩略图
+    @TableField("thumb")
     private String thumb;
     //是否显示,默认1
     @TableField("`show`")
     private Integer showVar;
     //排序 ,默认0
+    @TableField("displayorder")
     private Integer displayorder;
+    @TableField("valueId")
     private String valueId;
     //是否虚拟
     @TableField("`virtual`")
     private Integer virtualVar;
-    private String cycelbuy_periodic;
+    @TableField("cycelbuy_periodic")
+    private String cycelbuyPeriodic;
     // 云商城id
+    @TableField("yunspecitemid")
     private Integer yunspecitemid;
 
 }

+ 27 - 5
src/main/java/zs/payment/messages/KafkaConsumer.java

@@ -245,7 +245,7 @@ public class KafkaConsumer {
                     // 生态供应价
                     goods.setCostprice(new BigDecimal(dto.getCost_price() ).divide(new BigDecimal(100)));
                     // 成本价
-                    goods.setCost_of_price(new BigDecimal(dto.getCost_price() ).divide(new BigDecimal(100)));
+                    goods.setCostOfPrice(new BigDecimal(dto.getCost_price() ).divide(new BigDecimal(100)));
 
 
                     goods.setTotal(dto.getStock());
@@ -259,9 +259,9 @@ public class KafkaConsumer {
                     //默认值,避免金额为0
                     goods.setWeight(new BigDecimal(1));
                     //商品来源
-                    goods.setSupply_source("yunxin");
+                    goods.setSupplySource("yunxin");
                     //芸信商城的商品主键
-                    goods.setSupply_id(dto.getId().toString());
+                    goods.setSupplyId(dto.getId().toString());
 //                    goods.setCates("");
                     //数据库里的时间戳是秒级
                     goods.setCreatetime(TimeUtils.getLongFromCurrentTime() / 1000);
@@ -331,7 +331,7 @@ public class KafkaConsumer {
                         goodsOption.setDay(0);
                         goodsOption.setAllfullbackprice(new BigDecimal(0));
                         goodsOption.setFullbackprice(new BigDecimal(0));
-                        goodsOption.setExchange_postage(new BigDecimal(0));
+                        goodsOption.setExchangePostage(new BigDecimal(0));
                         goodsOption.setIsfullback(0);
                         goodsOption.setIslive(0);
                         goodsOption.setLiveprice(new BigDecimal(0));
@@ -361,7 +361,7 @@ public class KafkaConsumer {
     /**
      * 物流订单发货
      *
-     * @param messsage
+     * @param orderSn
      */
     @KafkaListener(
         topics = "order.delivery",
@@ -404,5 +404,27 @@ public class KafkaConsumer {
         }
     }
 
+    /**
+     * 供货/停止供货异步处理
+     * 消息格式:{"uniacid":1, "goodsId":12345, "issupply":1, "cate":10, "storeid":789}
+     */
+    @KafkaListener(
+        topics = "commodity.fulloutput",
+        groupId = "pay2-group"
+    )
+    public void fullOutputProcess(String message) {
+        JSONObject jsonObject = JSONObject.parseObject(message);
+        Integer uniacid = jsonObject.getIntValue("uniacid");
+        Long goodsId = jsonObject.getLongValue("goodsId");
+        Integer issupply = jsonObject.getIntValue("issupply");
+        Integer cate = jsonObject.getIntValue("cate");
+        Integer storeid = jsonObject.getIntValue("storeid");
+
+        try {
+            commodityProcureService.processSupplyItem(goodsId, issupply, cate, uniacid, storeid);
+        } catch (Exception e) {
+            log.error("供货/停止供货处理失败 goodsId={}, issupply={}", goodsId, issupply, e);
+        }
+    }
 
 }

+ 7 - 7
src/main/java/zs/payment/service/Imseweishopgoods/impl/ImsEweiShopGoodsServiceImpl.java

@@ -18,29 +18,29 @@ public class ImsEweiShopGoodsServiceImpl  extends ServiceImpl<ImsEweiShopGoodsMa
     public ImsEweiShopGoods getBySupplyId(String supplyId,String supplySource) {
 
         return lambdaQuery().eq(ImsEweiShopGoods::getStatus,0)
-            .eq(ImsEweiShopGoods::getSupply_id,supplyId)
-            .eq(ImsEweiShopGoods::getSupply_source,supplySource).one();
+            .eq(ImsEweiShopGoods::getSupplyId,supplyId)
+            .eq(ImsEweiShopGoods::getSupplySource,supplySource).one();
     }
 
     @Override
     public Boolean updateStatusBySupplyId(String supplyId, String supplySource, Integer status) {
 
         return  lambdaUpdate().set(ImsEweiShopGoods::getStatus, status)
-            .eq(ImsEweiShopGoods::getSupply_source, supplySource)
-            .eq(ImsEweiShopGoods::getSupply_id, supplyId).update();
+            .eq(ImsEweiShopGoods::getSupplySource, supplySource)
+            .eq(ImsEweiShopGoods::getSupplyId, supplyId).update();
     }
 
     @Override
     public Boolean deleteBySupplyId(String supplyId, String supplySource) {
         return lambdaUpdate().set(ImsEweiShopGoods::getDeleted, 1)
-            .eq(ImsEweiShopGoods::getSupply_source, supplySource)
-            .eq(ImsEweiShopGoods::getSupply_id, supplyId).update();
+            .eq(ImsEweiShopGoods::getSupplySource, supplySource)
+            .eq(ImsEweiShopGoods::getSupplyId, supplyId).update();
     }
 
     @Override
     public ImsEweiShopGoods getByGdId(Integer gdId, Integer uniacid) {
         return lambdaQuery()
-            .eq(ImsEweiShopGoods::getGd_id, gdId)
+            .eq(ImsEweiShopGoods::getGdId, gdId)
             .eq(ImsEweiShopGoods::getDeleted, 0)
             .eq(ImsEweiShopGoods::getCommoditytype, 1)
             .eq(ImsEweiShopGoods::getUniacid, uniacid)

+ 5 - 0
src/main/java/zs/payment/service/commodity/CommodityProcureService.java

@@ -29,4 +29,9 @@ public interface CommodityProcureService {
      * 对应PHP goods.commodity.supply
      */
     Result fullOutput(GoodsSupplyReq req);
+
+    /**
+     * 单条供货/停止供货处理(Kafka异步消费调用)
+     */
+    Result processSupplyItem(Long goodsId, Integer issupply, Integer cate, Integer uniacid, Integer storeid);
 }

+ 66 - 35
src/main/java/zs/payment/service/commodity/impl/CommodityProcureServiceImpl.java

@@ -26,6 +26,7 @@ import zs.payment.mapper.primary.ImsEweiShopGoodsMapper;
 import zs.payment.req.CommodityProcureReq;
 import zs.payment.req.GoodsSupplyReq;
 import zs.payment.resp.Result;
+import zs.payment.service.yunmall.goods.GoodsService;
 import zs.payment.utils.HttpUtil;
 import zs.payment.service.Imseweishopgoods.ImsEweiShopGoodsService;
 import zs.payment.service.imseweishopcategory.ImsEweiShopCategoryService;
@@ -53,6 +54,8 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
     private static final String TOPIC_COMMODITY_PROCURE = "commodity.procure";
 
     @Autowired
+    private GoodsService yunMallGoodsService;
+    @Autowired
     private ImsEweiShopGoodsService goodsService;
     @Autowired
     private ImsEweiShopGoodsSpecService specService;
@@ -394,7 +397,7 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
                                                CategoryResolveResult categoryResult, boolean hasSpec) {
         ImsEweiShopGoods goods = new ImsEweiShopGoods();
         goods.setCommoditytype(1);
-        goods.setGd_id(gdId);
+        goods.setGdId(gdId);
         goods.setUniacid(uniacid);
         goods.setTitle(yunGoods.getGd_name());
         goods.setUnit(yunGoods.getUnit());
@@ -405,7 +408,7 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
         goods.setContent(yunGoods.getDesc());
         goods.setCreatetime(System.currentTimeMillis() / 1000);
         goods.setInvoice(1);
-        goods.setThumb_first(1);
+        goods.setThumbFirst(1);
         goods.setIssendfree(1);
 
         // 京东判断
@@ -413,7 +416,7 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
         goods.setIsjingdong(isJd ? 1 : 0);
         if (yunGoods.getShop() != null) {
             goods.setMerchid(isJd ? -JD_SHOP_ID : -yunGoods.getShop().getShop_id());
-            goods.setYsh_merchname(yunGoods.getShop().getShop_name());
+            goods.setYshMerchname(yunGoods.getShop().getShop_name());
         }
 
         // 分类
@@ -442,7 +445,7 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
                         .skip(1)
                         .map(CloudMallImg::getImgUrl)
                         .collect(Collectors.toList());
-                goods.setThumb_url(JSON.toJSONString(imgUrlList));
+                goods.setThumbUrl(JSON.toJSONString(imgUrlList));
             }
         }
 
@@ -751,44 +754,39 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
                 .eq(ImsEweiShopGoods::getMerchid, 0)
                 .eq(ImsEweiShopGoods::getDeleted, 0)
                 .gt(ImsEweiShopGoods::getCostprice, 0)
-                .ne(ImsEweiShopGoods::getCatch_source, "xinglian");
+                .ne(ImsEweiShopGoods::getCatchSource, "xinglian");
         // 关键字过滤(商品ID或标题模糊匹配)
         if (req.getKeyword() != null && !req.getKeyword().trim().isEmpty()) {
             String kw = req.getKeyword().trim();
             goodsQuery.and(w -> w.eq(ImsEweiShopGoods::getId, kw)
                     .or().like(ImsEweiShopGoods::getTitle, kw));
         }
-        // 分类过滤(FIND_IN_SET)
-        if (req.getCate() != null && req.getCate() != 0) {
-            goodsQuery.apply("FIND_IN_SET({0}, cates) <> 0", req.getCate());
-        }
+
         List<ImsEweiShopGoods> items = goodsService.list(goodsQuery);
 
+        int submitCount = 0;
         for (ImsEweiShopGoods item : items) {
             if (!issupply.equals(item.getIssupply())) {
-                if (issupply == 1) {
-                    // === 供货流程 ===
-                    supplyGoodsToMall(item, apply, cate, uniacid);
-                } else {
-                    // === 停止供货流程 ===
-                    stopSupplyFromMall(item, apply, uniacid);
-                }
-                // 更新供货状态
-                ImsEweiShopGoods update = new ImsEweiShopGoods();
-                update.setId(item.getId());
-                update.setIssupply(issupply);
-                goodsService.updateById(update);
+                JSONObject msg = new JSONObject();
+                msg.put("uniacid", uniacid);
+                msg.put("goodsId", item.getId());
+                msg.put("issupply", issupply);
+                msg.put("cate", cate);
+                msg.put("storeid", apply.getStoreid());
+                kafkaProducer.sendMessage("commodity.fulloutput", msg.toJSONString());
+                submitCount++;
             }
         }
 
-        return Result.success();
+        log.info("供货/停止供货任务已提交,共{}个商品待处理,总查询{}个", submitCount, items.size());
+        return Result.success("任务已提交,共" + submitCount + "个商品将异步处理");
     }
 
     /**
      * 供货:将本地商品推送到云商城
      * 对应PHP supply()中issupply==1的逻辑(929-1014行)
      */
-    private void supplyGoodsToMall(ImsEweiShopGoods item, ImsEweiShopApply apply, Integer cate, Integer uniacid) {
+    private void supplyGoodsToMall(ImsEweiShopGoods item, Integer storeid, Integer cate, Integer uniacid) {
         Long goodsId = item.getId();
 
         // 多规格时取最大重量
@@ -806,7 +804,7 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
         // 构建供货数据
         Map<String, Object> addgoods = new LinkedHashMap<>();
         addgoods.put("gd_name", item.getTitle());
-        addgoods.put("shop_id", apply.getStoreid());
+        addgoods.put("shop_id", storeid);
         addgoods.put("pt_id", cate);
         addgoods.put("gd_weight", item.getWeight());
         addgoods.put("gd_price", item.getMarketprice());         // 供货中心售价=商城售价
@@ -824,9 +822,9 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
         if (item.getThumb() != null) {
             imgsInfo.add(item.getThumb());  // 首图
         }
-        if (item.getThumb_url() != null && !item.getThumb_url().isEmpty()) {
+        if (item.getThumbUrl() != null && !item.getThumbUrl().isEmpty()) {
             try {
-                List<String> extraImgs = JSON.parseArray(item.getThumb_url(), String.class);
+                List<String> extraImgs = JSON.parseArray(item.getThumbUrl(), String.class);
                 if (extraImgs != null) {
                     imgsInfo.addAll(extraImgs);
                 }
@@ -889,7 +887,7 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
         addgoods.put("optionslist", JSON.toJSONString(optionsList));
 
         // 查重:是否已在云商城供货(通过gd_id判断)
-        if (item.getGd_id() != null && item.getGd_id() > 0) {
+        if (item.getGdId() != null && item.getGdId() > 0) {
             throw new ApiException("商品已经供货");
         }
 
@@ -897,7 +895,7 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
         String addGoodsUrl = mallHost + "/addGoods";
         String content;
         try {
-            content = HttpUtil.restTemplatePost(addGoodsUrl, addgoods);
+            content = HttpUtil.restTemplatePostCurl(addGoodsUrl, addgoods);
         } catch (Exception e) {
             log.error("云商城addGoods接口调用失败 goodsId={}", goodsId, e);
             throw new ApiException("云商城接口调用失败: " + e.getMessage());
@@ -915,9 +913,13 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
         Integer gdId = result.getJSONObject("result") != null
                 ? result.getJSONObject("result").getInteger("goods_id") : null;
         if (gdId != null) {
+
+            //供货
+            yunMallGoodsService.saveGoods(gdId.toString(),1);
+
             ImsEweiShopGoods update = new ImsEweiShopGoods();
             update.setId(goodsId);
-            update.setGd_id(gdId);
+            update.setGdId(gdId);
             goodsService.updateById(update);
         }
     }
@@ -926,17 +928,17 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
      * 停止供货:通知云商城停止供货
      * 对应PHP supply()中issupply==0的逻辑(1015-1034行)
      */
-    private void stopSupplyFromMall(ImsEweiShopGoods item, ImsEweiShopApply apply, Integer uniacid) {
-        if (item.getGd_id() == null || item.getGd_id() == 0) {
+    private void stopSupplyFromMall(ImsEweiShopGoods item, Integer storeid) {
+        if (item.getGdId() == null || item.getGdId() == 0) {
             throw new ApiException("该商品未在云商城供货,无法停止供货");
         }
 
         // 调用云商城接口通知停止供货
-        String changeStatusUrl = mallHost + "/changeStatus?shop_id=" + apply.getStoreid()
-                + "&gd_id=" + item.getGd_id() + "&status=2";
+        String changeStatusUrl = mallHost + "/changeStatus?shop_id=" + storeid
+                + "&gd_id=" + item.getGdId() + "&status=2";
         try {
             String resp = HttpUtil.restTemplateGet(changeStatusUrl, null);
-            log.info("云商城停止供货 goodsId={}, gd_id={}, url={}, resp={}", item.getId(), item.getGd_id(), changeStatusUrl, resp);
+            log.info("云商城停止供货 goodsId={}, gd_id={}, url={}, resp={}", item.getId(), item.getGdId(), changeStatusUrl, resp);
             JSONObject result = JSON.parseObject(resp);
             if (result == null || result.getIntValue("head") != 200) {
                 throw new ApiException("停止供货失败!");
@@ -948,10 +950,39 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
             throw new ApiException("停止供货接口调用失败!");
         }
 
+        //取消供货
+        yunMallGoodsService.saveGoods(item.getGdId().toString(),0);
         // 停止供货时取消推荐状态
         ImsEweiShopGoods update = new ImsEweiShopGoods();
         update.setId(item.getId());
-        update.setIssupply_recommend(0);
+        update.setIssupplyRecommend(0);
         goodsService.updateById(update);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result processSupplyItem(Long goodsId, Integer issupply, Integer cate, Integer uniacid, Integer storeid) {
+        ImsEweiShopGoods item = goodsService.getById(goodsId);
+        if (item == null) {
+            log.warn("供货/停止供货:商品不存在 goodsId={}", goodsId);
+            return Result.fail("商品不存在");
+        }
+        if (issupply.equals(item.getIssupply())) {
+            log.info("供货/停止供货:状态已一致,跳过 goodsId={}, issupply={}", goodsId, issupply);
+            return Result.success();
+        }
+
+        if (issupply == 1) {
+            supplyGoodsToMall(item, storeid, cate, uniacid);
+        } else {
+            stopSupplyFromMall(item, storeid);
+        }
+
+        ImsEweiShopGoods update = new ImsEweiShopGoods();
+        update.setId(goodsId);
+        update.setIssupply(issupply);
+        goodsService.updateById(update);
+        log.info("供货/停止供货处理完成 goodsId={}, issupply={}", goodsId, issupply);
+        return Result.success();
+    }
 }

+ 42 - 0
src/main/java/zs/payment/utils/HttpUtil.java

@@ -14,6 +14,9 @@ import org.springframework.http.converter.StringHttpMessageConverter;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.util.UriComponentsBuilder;
 
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+
 import javax.net.ssl.SSLContext;
 import java.nio.charset.StandardCharsets;
 import java.util.Collections;
@@ -212,4 +215,43 @@ public class HttpUtil {
             throw new RuntimeException("网络请求异常", e);
         }
     }
+
+    /**
+     * POST 请求,Content-Type: application/x-www-form-urlencoded(表单格式)
+     * @param url
+     * @param params
+     * @return
+     */
+    public static String restTemplatePostCurl(String url, Map<String, Object> params) {
+        try {
+            TrustStrategy acceptingTrustStrategy = (chain, authType) -> true;
+            SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();
+            SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
+            HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(connectionSocketFactory).build();
+            HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
+            RestTemplate restTemplate = new RestTemplate(factory);
+
+            restTemplate.getMessageConverters().removeIf(converter -> converter instanceof StringHttpMessageConverter);
+            restTemplate.getMessageConverters().add(0, new StringHttpMessageConverter(StandardCharsets.UTF_8));
+
+            HttpHeaders headers = new HttpHeaders();
+            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+            headers.setAcceptCharset(Collections.singletonList(StandardCharsets.UTF_8));
+
+            MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
+            if (params != null) {
+                params.forEach((k, v) -> formData.add(k, v == null ? "" : v.toString()));
+            }
+
+            log.info("POST_CURL_URL====>{}, body====>{}", url, formData);
+
+            HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(formData, headers);
+            ResponseEntity<String> rsp = restTemplate.exchange(url, HttpMethod.POST, request, String.class);
+            return rsp.getBody();
+
+        } catch (Exception e) {
+            log.error("HTTP POST CURL请求失败: {}", e.getMessage());
+            throw new RuntimeException("网络请求异常", e);
+        }
+    }
 }