no message

This commit is contained in:
2025-09-04 17:24:47 +08:00
parent e984fd5f30
commit d274cbf7c1
5 changed files with 159 additions and 12 deletions

View File

@ -72,7 +72,7 @@ public class ItemController {
@PostMapping(value = "/rent/modify")
public OpenResponse<String> modifyCreate(@RequestBody String request) {
public OpenResponse<String> modifyCreate(@RequestBody RentRuleItem request) {
return itemService.modifyItem(request);
}

View File

@ -26,7 +26,7 @@ public interface ItemService {
*/
OpenResponse<String> createRentItem(RentRuleItem param);
OpenResponse<String> modifyItem(String param);
OpenResponse<String> modifyItem(RentRuleItem param);
/**
* 根据业务属性写死自提履约信息

View File

@ -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<String> modifyItem(String param) {
public OpenResponse<String> modifyItem(RentRuleItem rentRuleItem) {
return AlipayApiTemplate.execute(new AlipayApiCallback<String, AlipayOpenAppItemModifyResponse >() {
@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<ItemSkuVO> modifyItemSkus(RentRuleItem param) throws AlipayApiException {
List<ItemSkuVO> 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<ItemSkuAttrVO> 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<RentCommodityConfig.DurationPrice> 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<AlipayOpenAppItemQueryResponse> queryItemDetail(String itemId, String outItemId, long needEditSpu) {
return AlipayApiTemplate.execute(new AlipayApiCallback<AlipayOpenAppItemQueryResponse, AlipayOpenAppItemQueryResponse>() {

View File

@ -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<String> response = new OpenResponse<>();
if(ruleRes == null){
response = itemService.createRentItem(rentRuleItem);
}else{
response = itemService.modifyItem(rentRuleItem);
}
OpenResponse<String> response = itemService.createRentItem(rentRuleItem);

View File

@ -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);
}