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