From d274cbf7c1f65f9719ebd14682dbc5e5958a73eb Mon Sep 17 00:00:00 2001 From: eric <465889110@qq.com> Date: Thu, 4 Sep 2025 17:24:47 +0800 Subject: [PATCH] no message --- .../pay/alipay/controller/ItemController.java | 2 +- .../sczx/pay/alipay/service/ItemService.java | 2 +- .../alipay/service/impl/ItemServiceImpl.java | 152 +++++++++++++++++- .../service/impl/RentRuleItemServiceImpl.java | 11 +- .../sczx/pay/mapper/RentRuleItemMapper.java | 4 +- 5 files changed, 159 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/sczx/pay/alipay/controller/ItemController.java b/src/main/java/com/sczx/pay/alipay/controller/ItemController.java index 3630efc..f05c0d4 100644 --- a/src/main/java/com/sczx/pay/alipay/controller/ItemController.java +++ b/src/main/java/com/sczx/pay/alipay/controller/ItemController.java @@ -72,7 +72,7 @@ public class ItemController { @PostMapping(value = "/rent/modify") - public OpenResponse modifyCreate(@RequestBody String request) { + public OpenResponse modifyCreate(@RequestBody RentRuleItem request) { return itemService.modifyItem(request); } diff --git a/src/main/java/com/sczx/pay/alipay/service/ItemService.java b/src/main/java/com/sczx/pay/alipay/service/ItemService.java index e5d2a23..4a55768 100644 --- a/src/main/java/com/sczx/pay/alipay/service/ItemService.java +++ b/src/main/java/com/sczx/pay/alipay/service/ItemService.java @@ -26,7 +26,7 @@ public interface ItemService { */ OpenResponse createRentItem(RentRuleItem param); - OpenResponse modifyItem(String param); + OpenResponse modifyItem(RentRuleItem param); /** * 根据业务属性写死自提履约信息 diff --git a/src/main/java/com/sczx/pay/alipay/service/impl/ItemServiceImpl.java b/src/main/java/com/sczx/pay/alipay/service/impl/ItemServiceImpl.java index 95afe35..b69fe66 100644 --- a/src/main/java/com/sczx/pay/alipay/service/impl/ItemServiceImpl.java +++ b/src/main/java/com/sczx/pay/alipay/service/impl/ItemServiceImpl.java @@ -155,14 +155,19 @@ public class ItemServiceImpl implements ItemService { // 设置价格单元 model.setPriceUnit("元/日"); + + //设置商品ID String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); String uuidSuffix = UUID.randomUUID().toString().replace("-", "").substring(0, 6).toUpperCase(); String outItemId = "OI"+timestamp + uuidSuffix; model.setOutItemId(outItemId); rentRuleItemvo.setOutItemId(outItemId); rentRuleItemvo.setOutSkuId(outItemId+"_sku"); + //设置商品详情页路径 model.setPath("alipays://platformapi/startapp?appId=2021004169641281&page=pages/rentGoodsDetail/index?outItemId="+outItemId); rentRuleItemvo.setPagePath("alipays://platformapi/startapp?appId=2021004169641281&page=pages/rentGoodsDetail/index?outItemId="+outItemId); + + //设置商品状态 model.setSaleStatus("AVAILABLE"); //sku_attrs model.setSkus(getItemSkus(rentRuleItem, model.getImageList(), model.getItemType())); @@ -198,18 +203,65 @@ public class ItemServiceImpl implements ItemService { @Override - public OpenResponse modifyItem(String param) { + public OpenResponse modifyItem(RentRuleItem rentRuleItem) { return AlipayApiTemplate.execute(new AlipayApiCallback() { @Override public AlipayOpenAppItemModifyResponse process() throws AlipayApiException { - AlipayOpenAppItemModifyModel itemCreateRequest = JSON.parseObject(param, AlipayOpenAppItemModifyModel.class); - // 构造请求参数以调用接口 AlipayOpenAppItemModifyRequest request = new AlipayOpenAppItemModifyRequest(); - AlipayOpenAppItemModifyModel model = itemCreateRequest; + AlipayOpenAppItemModifyModel model = new AlipayOpenAppItemModifyModel(); + RentRuleItem rentRuleItemvo = rentRuleItem; + // 设置平台类目 + model.setCategoryId("C001684401"); + // 设置商品名称由品牌、型号、电池规格、租赁类型、套餐名称拼接 + String title = rentRuleItem.getBrandName() + rentRuleItem.getModelName() +"_"+ rentRuleItem.getCategoryName() + "_" + rentRuleItem.getRentType()+rentRuleItem.getRuleName(); + rentRuleItemvo.setItemDesc(title); + // 设置商品名称 + model.setTitle(title); + // 设置导购描述 + model.setDesc(title); + // 设置平台类目 + model.setCategoryId("C001684401"); + // 设置商品主图 + String imgStr = imageUploadService.uploadAndReturnId(rentRuleItem.getImage(), "ITEM_HEAD_IMG"); + model.setHeadImg(imgStr); + rentRuleItemvo.setImage(imgStr); + // 设置商品模版类型 + model.setItemType("2"); + //sku_attrs + + // 设置价格单元 + model.setPriceUnit("元/日"); + + //设置商品ID + String timestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")); + String uuidSuffix = UUID.randomUUID().toString().replace("-", "").substring(0, 6).toUpperCase(); + String outItemId = "OI"+timestamp + uuidSuffix; + model.setOutItemId(outItemId); + rentRuleItemvo.setOutItemId(outItemId); + rentRuleItemvo.setOutSkuId(outItemId+"_sku"); + //设置商品详情页路径 + model.setPath("alipays://platformapi/startapp?appId=2021004169641281&page=pages/rentGoodsDetail/index?outItemId="+outItemId); + rentRuleItemvo.setPagePath("alipays://platformapi/startapp?appId=2021004169641281&page=pages/rentGoodsDetail/index?outItemId="+outItemId); + + //设置商品状态 + model.setSaleStatus("AVAILABLE"); + //sku_attrs + model.setSkus(modifyItemSkus(rentRuleItem)); + + // 设置属性列表 + model.setAttrs(getItemAttrs(rentRuleItem, model.getImageList(), model.getItemType())); + + RentRuleItem res = rentRuleItemMapper.selectItemByFourIds(rentRuleItem.getBatteryRuleId(), rentRuleItem.getCarRuleId(), rentRuleItem.getCarModelId(), rentRuleItem.getBrandId()); + + if(res != null ){ + rentRuleItemMapper.updateItemIdByOutItemId(rentRuleItemvo); + }else { + rentRuleItemMapper.insertByFourId(rentRuleItemvo); + } logger.info("属性列表:" + JSON.toJSONString(model)); request.setBizModel(model); @@ -471,6 +523,9 @@ public class ItemServiceImpl implements ItemService { // 是否可买断 appItemAttrVO.setAttrValue("1"); break; + case "收货方式": + appItemAttrVO.setAttrValue("自提"); + break ; } if (!StringUtils.isEmpty(appItemAttrVO.getAttrValue())) { attrs.add(appItemAttrVO); @@ -503,7 +558,7 @@ public class ItemServiceImpl implements ItemService { // sku.setOriginalPrice(originalPriceInCents); // 设置库存 - sku.setStockNum(String.valueOf(100L)); + sku.setStockNum(String.valueOf(999999)); // 设置价格单元 sku.setPriceUnit("元/日"); @@ -522,7 +577,9 @@ public class ItemServiceImpl implements ItemService { config.setCustomLease("0"); config.setSlopeFormula("DEFAULT_SLOPE_FORMULA"); config.setDurationUnit("日"); - config.setBuyoutPrice("10000"); + + //买断价10000元*100 单位分 + config.setBuyoutPrice("1000000"); config.setPriceUnit("元"); int rentalDays = 1; @@ -535,7 +592,7 @@ public class ItemServiceImpl implements ItemService { for(int i = 1; i < 4; i++){ RentCommodityConfig.DurationPrice durationPrice = new RentCommodityConfig.DurationPrice(); - String val = i + ""; + String val = i*100 + ""; durationPrice.setDuration(i*rentalDays+""); durationPrice.setTotalSalePrice(param.getRentalPrice() .multiply(new BigDecimal(val)) @@ -555,6 +612,87 @@ public class ItemServiceImpl implements ItemService { return itemSkus; } + + private List modifyItemSkus(RentRuleItem param) throws AlipayApiException { + List itemSkus = new ArrayList<>(); + + ItemSkuVO sku = new ItemSkuVO(); + + // 设置商家侧SKU ID,需要全局唯一 + sku.setOutSkuId(param.getOutItemId() + "_sku"); + + // 设置售卖状态 + sku.setSaleStatus("AVAILABLE"); + + // 设置SKU类型为租赁 + sku.setSkuType("RENT"); + + // 设置价格相关字段 + Long rentalPriceInCents = param.getRentalPrice().multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); +// sku.setSalePrice(rentalPriceInCents.toString()); +// // 设置原价为租赁价格的1.2倍 +// Long originalPriceInCents = new BigDecimal(rentalPriceInCents) +// .multiply(new BigDecimal("1.2")) +// .setScale(0, BigDecimal.ROUND_HALF_UP) +// .longValue(); +// sku.setOriginalPrice(originalPriceInCents); + + // 设置库存 + sku.setStockNum(999999L); + + // 设置价格单元 + sku.setPriceUnit("元/日"); + + // 设置销售属性 + List skuAttrs = new ArrayList<>(); + + // 添加租赁商品属性 + ItemSkuAttrVO rentCommodityAttr = new ItemSkuAttrVO(); + rentCommodityAttr.setAttrKey("rent_commodity"); + rentCommodityAttr.setAttrType("custom"); + + RentCommodityConfig config = new RentCommodityConfig(); + config.setName("门店自提,租完归还"); + config.setDescription("套餐说明"); + config.setCustomLease("0"); + config.setSlopeFormula("DEFAULT_SLOPE_FORMULA"); + config.setDurationUnit("日"); + + //买断价10000元*100 单位分 + config.setBuyoutPrice("1000000"); + config.setPriceUnit("元"); + + int rentalDays = 1; + if(param.getRentalDays() != null && param.getRentalDays() > 0){ + rentalDays = param.getRentalDays(); + } + + // 创建时段价格列表根据基础价格创建3个时段价格 + List durationPriceList = new ArrayList<>(); + + for(int i = 1; i < 4; i++){ + RentCommodityConfig.DurationPrice durationPrice = new RentCommodityConfig.DurationPrice(); + String val = i*100 + ""; + durationPrice.setDuration(i*rentalDays+""); + durationPrice.setTotalSalePrice(param.getRentalPrice() + .multiply(new BigDecimal(val)) + .setScale(0, BigDecimal.ROUND_HALF_UP).toString()); + durationPrice.setTotalOriginalPrice(param.getRentalPrice() + .multiply(new BigDecimal(val)) + .setScale(0, BigDecimal.ROUND_HALF_UP).toString()); + durationPriceList.add(durationPrice); + } + config.setDurationPriceList(durationPriceList); + rentCommodityAttr.setAttrValue(JSON.toJSONString(config)); + // 根据实际情况设置 + skuAttrs.add(rentCommodityAttr); + sku.setSkuAttrs(skuAttrs); + + itemSkus.add(sku); + return itemSkus; + } + + @Override public OpenResponse queryItemDetail(String itemId, String outItemId, long needEditSpu) { return AlipayApiTemplate.execute(new AlipayApiCallback() { diff --git a/src/main/java/com/sczx/pay/alipay/service/impl/RentRuleItemServiceImpl.java b/src/main/java/com/sczx/pay/alipay/service/impl/RentRuleItemServiceImpl.java index b79f6cc..a4d7fd0 100644 --- a/src/main/java/com/sczx/pay/alipay/service/impl/RentRuleItemServiceImpl.java +++ b/src/main/java/com/sczx/pay/alipay/service/impl/RentRuleItemServiceImpl.java @@ -38,8 +38,17 @@ public class RentRuleItemServiceImpl implements RentRuleItemService { map.put("code","500"); return map; } + RentRuleItem ruleRes = rentRuleItemMapper.selectItemByFourIds(Long.valueOf(batteryRuleId), Long.valueOf(carRuleId), Long.valueOf(carModelId), Long.valueOf(brandId)); + OpenResponse response = new OpenResponse<>(); + if(ruleRes == null){ + response = itemService.createRentItem(rentRuleItem); + }else{ + response = itemService.modifyItem(rentRuleItem); + } + + + - OpenResponse response = itemService.createRentItem(rentRuleItem); diff --git a/src/main/java/com/sczx/pay/mapper/RentRuleItemMapper.java b/src/main/java/com/sczx/pay/mapper/RentRuleItemMapper.java index cb671d5..3551b94 100644 --- a/src/main/java/com/sczx/pay/mapper/RentRuleItemMapper.java +++ b/src/main/java/com/sczx/pay/mapper/RentRuleItemMapper.java @@ -11,7 +11,7 @@ import java.util.List; @Mapper public interface RentRuleItemMapper { - + RentRuleItem selectByAliId(@Param("aliItemId") String aliItemId); RentRuleItem selectByFourId(@Param("batteryRuleId") Long batteryRuleId, @Param("carRuleId") Long carRuleId, @Param("carModelId") Long carModelId,@Param("brandId") Long brandId); @@ -25,5 +25,5 @@ public interface RentRuleItemMapper { int updateByOutItemId(@Param("outItemId") String outItemId, @Param("aliItemId") String aliItemId); - + }