浏览代码

订单关联

zoujiajian 1 年之前
父节点
当前提交
5bdf80979b

+ 13 - 0
wholesale/src/main/java/com/yhlxj/dao/mapper/ExchangeCodeMapper.java

@@ -0,0 +1,13 @@
+package com.yhlxj.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yhlxj.dao.model.entity.ExchangeCode;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: ExchangeCodeMapper
+ * 创建者: JavaZou
+ * 创建时间:2025/6/5 17:09
+ */
+public interface ExchangeCodeMapper extends BaseMapper<ExchangeCode> {
+}

+ 61 - 0
wholesale/src/main/java/com/yhlxj/dao/model/entity/ExchangeCode.java

@@ -0,0 +1,61 @@
+package com.yhlxj.dao.model.entity;
+
+import com.yhlxj.dao.model.BaseEntity;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/*
+ *项目名: netflix
+ *文件名: ExchangeCode
+ *创建者: JavaZou
+ *创建时间:2022/11/7 15:43
+ */
+@Getter
+@Setter
+public class ExchangeCode extends BaseEntity {
+	private String code;
+
+	/**
+	 * 平台ids
+	 */
+	private String goodsIds;
+
+	/**
+	 * 规格ids
+	 */
+	private String skuIds;
+
+	/**
+	 * 使用状态
+	 */
+	private Boolean useStatus;
+
+	/**
+	 * 订单状态
+	 */
+	private String orderStatus;
+
+	/**
+	 * 使用时间
+	 */
+	private Date useTime;
+
+	/**
+	 * 使用人id
+	 */
+	private Long userId;
+
+	/**
+	 * 0平台 1抽奖 2个人网站批发
+	 */
+	private Integer type;
+
+	/**
+	 * 兑换形式 1兑换码 2兑换链接
+	 */
+	private Integer codeType;
+
+	private String operator;
+}

+ 75 - 6
wholesale/src/main/java/com/yhlxj/service/order/impl/WebWholesaleOrderDonServiceImpl.java

@@ -9,14 +9,12 @@ import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.snowflake.Sequence;
 import com.cyksj.common.util.Codec;
 import com.cyksj.common.util.Jsons;
+import com.cyksj.common.util.StringUtil;
 import com.cyksj.enums.GatewayApiCode;
 import com.yhlxj.dao.mapper.*;
 import com.yhlxj.dao.model.dto.AliPayParams;
 import com.yhlxj.dao.model.dto.WebWholesaleConfigDto;
-import com.yhlxj.dao.model.entity.ShopConfig;
-import com.yhlxj.dao.model.entity.SysConfig;
-import com.yhlxj.dao.model.entity.User;
-import com.yhlxj.dao.model.entity.WebWholesaleOrderDon;
+import com.yhlxj.dao.model.entity.*;
 import com.yhlxj.dao.model.request.AlipayOrderDonReq;
 import com.yhlxj.dao.model.request.OrderAttach;
 import com.yhlxj.dao.model.request.WebOrderPayRequest;
@@ -32,6 +30,7 @@ import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * 项目名: yhlxj2
@@ -57,6 +56,10 @@ public class WebWholesaleOrderDonServiceImpl implements WebWholesaleOrderDonServ
 
 	private final GoodsDonSkuMapper skuMapper;
 
+	private final ExchangeCodeMapper exchangeCodeMapper;
+
+	private final WebWholesaleOrderDonCodeRelateMapper webWholesaleOrderDonCodeRelateMapper;
+
 	@Override
 	public WebWholesaleOrderDon submit(WebOrderPayRequest payRequest) throws Exception {
 		Long userId = payRequest.getUserId();
@@ -149,7 +152,73 @@ public class WebWholesaleOrderDonServiceImpl implements WebWholesaleOrderDonServ
 		unifiedHandlerOrderNotify(orderDon);
 	}
 
-	private void unifiedHandlerOrderNotify(WebWholesaleOrderDon orderDon) {
-		//订单关联兑换码 TODO
+	/**
+	 * 处理订单统一回调
+	 */
+	private void unifiedHandlerOrderNotify(WebWholesaleOrderDon orderDon) throws Exception {
+		//订单关联兑换码
+		webWholesaleOrderRelateCode(orderDon);
+	}
+
+	public void webWholesaleOrderRelateCode(WebWholesaleOrderDon orderDon) throws Exception {
+		String skuIds = orderDon.getSkuIds();
+		List<Long> skuList = Jsons.parseList(skuIds, Long.class);
+		String goodsIds = skuMapper.selectBatchIds(skuList).stream().map(GoodsDonSku::getGoodsId).collect(Collectors.toSet()).toString();
+		GoodsDonSku sku = skuMapper.selectById(skuList.get(0));
+		WebWholesaleOrderDonCodeRelate webWholesaleOrderDonCodeRelate = null;
+		Long orderId = orderDon.getId();
+		for (int i = 0; i < orderDon.getNum(); i++) {
+			StringBuilder sb = new StringBuilder(32);
+			sb.append("YH");
+			sb.append(getFillByGoodsId(sku.getGoodsId()));
+			sb.append(getFillByMonth(sku.getMonths()));
+			//随即补充12位随即数,组成20位兑换码
+			StringUtil.getRandomStr(sb, 12);
+			ExchangeCode exchangeCode = new ExchangeCode();
+			exchangeCode.setSkuIds(skuIds);
+			exchangeCode.setGoodsIds(goodsIds);
+			exchangeCode.setCode(sb.toString());
+			exchangeCode.setUseStatus(false);
+			//2 个人网站批发
+			exchangeCode.setType(2);
+			//兑换码
+			exchangeCode.setCodeType(1);
+			exchangeCodeMapper.insert(exchangeCode);
+
+			//关联兑换码批发订单
+			webWholesaleOrderDonCodeRelate = new WebWholesaleOrderDonCodeRelate();
+			webWholesaleOrderDonCodeRelate.setCode(exchangeCode.getCode());
+			webWholesaleOrderDonCodeRelate.setOrderId(orderId);
+			webWholesaleOrderDonCodeRelateMapper.insert(webWholesaleOrderDonCodeRelate);
+		}
+	}
+
+	/**
+	 * 根据平台id获取填充的字符串
+	 */
+	private String getFillByGoodsId(Long goodsId) {
+		String goodsIdStr = String.valueOf(goodsId);
+		if (goodsIdStr.length() == 1) {
+			return String.format("%s%s%s", 0, 0, goodsId);
+		}
+		if (goodsIdStr.length() == 2) {
+			return String.format("%s%s", 0, goodsId);
+		}
+		//最大不超过999
+		if (goodsIdStr.length() > 3) {
+			return goodsIdStr.substring(0, 3);
+		}
+		return goodsIdStr;
+	}
+
+	/**
+	 * 根据月份长度获取填充的字符串
+	 */
+	private String getFillByMonth(Integer skuMonth) {
+		String goodsIdStr = String.valueOf(skuMonth);
+		if (goodsIdStr.length() == 1) {
+			return String.format("%s%s%s", 0, 0, skuMonth);
+		}
+		return String.format("%s%s", 0, skuMonth);
 	}
 }