1
0
lhm 3 سال پیش
والد
کامیت
ef0d839496

+ 3 - 3
kmall-admin/src/main/java/com/kmall/admin/entity/haikong/HaiKongMemberOrderSyncResendEntity.java

@@ -44,7 +44,7 @@ public class HaiKongMemberOrderSyncResendEntity {
     /**
      * 会员系统订单id,请求成功后返回
      */
-    private Long memberSysOrderId;
+    private String memberSysOrderId;
 
     /**
      * 重发状态,0:等待重发 1:重发成功 2:重发失败 3:无需重发
@@ -138,11 +138,11 @@ public class HaiKongMemberOrderSyncResendEntity {
         this.createTime = createTime;
     }
 
-    public Long getMemberSysOrderId() {
+    public String getMemberSysOrderId() {
         return memberSysOrderId;
     }
 
-    public void setMemberSysOrderId(Long memberSysOrderId) {
+    public void setMemberSysOrderId(String memberSysOrderId) {
         this.memberSysOrderId = memberSysOrderId;
     }
 

+ 2 - 3
kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberOrderSyncResendTask.java

@@ -40,8 +40,7 @@ public class MemberOrderSyncResendTask {
     @Autowired
     private HaiKongMemberOrderSyncResendService haiKongMemberOrderSyncResendService;
 
-    //    @Scheduled(cron = "0 55 0/2 * * ?")
-//    @Scheduled(cron = "0/20 0/2 * * * ?")
+//    @Scheduled(cron = "0 0/2 * * * ?")
     public void resend() {
         // 查询等待发送和发送失败的记录
         List<HaiKongMemberOrderSyncResendEntity> haiKongMemberOrderSyncResendEntities = haiKongMemberOrderSyncResendService.queryListByResendStatus();
@@ -58,7 +57,7 @@ public class MemberOrderSyncResendTask {
             log.info("【重发】请求会员消费订单同步接口!请求体:{}", body);
             try {
                 String responseJson = haiKongMemberTemplate.changeMemberScore(body);
-                Response<Long> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<Long>>() {});
+                Response<String> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<String>>() {});
                 if (Objects.nonNull(response) && response.getSuccess()) {
                     haiKongMemberOrderSyncResendEntity.setMemberSysOrderId(response.getData());
                     haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());

+ 1 - 2
kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberScoreChangeResendTask.java

@@ -39,8 +39,7 @@ public class MemberScoreChangeResendTask {
     @Autowired
     private HaiKongMemberScoreChangeRecordService haiKongMemberScoreChangeRecordService;
 
-    //    @Scheduled(cron = "0 55 0/2 * * ?")
-    //@Scheduled(cron = "0/20 0/2 * * * ?")
+//    @Scheduled(cron = "0 0/2 * * * ?")
     public void resend() {
         // 查询等待发送和发送失败的记录
         List<HaiKongMemberScoreChangeRecordEntity> haiKongMemberScoreChangeRecordEntities = haiKongMemberScoreChangeRecordService.queryListByResendStatus();

+ 3 - 4
kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberSysAccessTokenRefreshTask.java

@@ -32,8 +32,7 @@ public class MemberSysAccessTokenRefreshTask {
     private HaiKongMemberTemplate haiKongMemberTemplate;
 
 
-//    @Scheduled(cron = "0 55 0/2 * * ?")
-    @Scheduled(cron = "0 0/2 * * * ?")
+//    @Scheduled(cron = "0/30 * * * * ?")
     public void refresh() {
         String refreshToken = JedisUtil.get(Constants.MEMBER_SYS_REFRESH_TOKEN_REDIS_KEY);
         String accessToken = JedisUtil.get(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY);
@@ -51,7 +50,7 @@ public class MemberSysAccessTokenRefreshTask {
             } catch (Exception e) {
                 log.error(e.getMessage() + "====>", e);
             }
-        } else {
+        } else if (StringUtils.isEmpty(accessToken) && !StringUtils.isEmpty(refreshToken)) {
             try {
                 String refreshAccessTokenJson = haiKongMemberTemplate.refreshAccessToken(refreshToken);
                 handleResponse(refreshAccessTokenJson, a);
@@ -74,7 +73,7 @@ public class MemberSysAccessTokenRefreshTask {
         if (Objects.nonNull(response) && response.getSuccess()) {
             AccessTokenDTO accessTokenDTO = response.getData();
             JedisUtil.del(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY);
-            JedisUtil.set(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY, JacksonUtil.toJson(accessTokenDTO), (60 * 60 * 2) - (60 * 2));
+            JedisUtil.set(Constants.MEMBER_SYS_ACCESS_TOKEN_REDIS_KEY, JacksonUtil.toJson(accessTokenDTO), (60 * 60 * 2) - (60 * 10));
             if (a) {
                 JedisUtil.del(Constants.MEMBER_SYS_REFRESH_TOKEN_REDIS_KEY);
                 JedisUtil.set(Constants.MEMBER_SYS_REFRESH_TOKEN_REDIS_KEY, Optional.ofNullable(accessTokenDTO.getRefreshToken()).orElse(""), (60 * 60 * 24 * 7));

+ 8 - 7
kmall-admin/src/main/java/com/kmall/admin/haikong/task/SendOrderInfoTask.java

@@ -15,6 +15,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
@@ -43,7 +44,7 @@ public class SendOrderInfoTask {
     @Autowired
     private VmcShopTemplate vmcShopTemplate;
 
-    //    @Scheduled(cron = "0/20 0/2 * * * ?")
+//    @Scheduled(cron = "0 0/1 * * * ?")
     public void resend() {
         // 查询等待发送和发送失败的记录
         List<HaiKongSendOrderInfoRecordEntity> haiKongSendOrderInfoRecordEntities = haiKongSendOrderInfoRecordService.queryListByResendStatus();
@@ -81,23 +82,23 @@ public class SendOrderInfoTask {
             sendOrderToVmcShopDTO.setOrderInfo(orderInfoDTO);
 
             String body = JacksonUtil.toJson(sendOrderToVmcShopDTO);
-            log.info("【重发】请求会员消费订单同步接口!请求体:{}", body);
+            log.info("【重发】请求免税mall创建订单接口!请求体:{}", body);
             try {
                 String responseJson = vmcShopTemplate.sendOrder(body);
-                Response<Long> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<Long>>() {});
-                if (Objects.nonNull(response) && response.getSuccess()) {
+                Response<String> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<String>>() {});
+                if (Objects.nonNull(response) && !"failure".equals(response.getResult())) {
                     haiKongSendOrderInfoRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
                     successList.add(haiKongSendOrderInfoRecordEntity);
-                    log.info("【重发】请求会员消费订单同步接口成功!响应数据:{}", responseJson);
+                    log.info("【重发】请求免税mall创建订单接口成功!响应数据:{}", responseJson);
                 } else {
                     haiKongSendOrderInfoRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
                     failedList.add(haiKongSendOrderInfoRecordEntity);
-                    log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
+                    log.error("【重发】请求免税mall创建订单接口失败!响应:{}", responseJson);
                 }
             } catch (Exception e) {
                 haiKongSendOrderInfoRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
                 failedList.add(haiKongSendOrderInfoRecordEntity);
-                log.error("【重发】请求会员消费订单同步接口失败!异常:", e);
+                log.error("【重发】请求免税mall创建订单接口失败!异常:", e);
             }
         });
 

+ 47 - 1
kmall-admin/src/main/java/com/kmall/admin/haikong/utils/Response.java

@@ -25,6 +25,14 @@ public class Response<T> {
 
     private Integer totalCount;
 
+    private Integer code;
+
+    private String result;
+
+    private String message;
+
+    private String ext;
+
     public Boolean getSuccess() {
         return success;
     }
@@ -81,6 +89,38 @@ public class Response<T> {
         this.totalCount = totalCount;
     }
 
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getResult() {
+        return result;
+    }
+
+    public void setResult(String result) {
+        this.result = result;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public String getExt() {
+        return ext;
+    }
+
+    public void setExt(String ext) {
+        this.ext = ext;
+    }
+
     @Override
     public String toString() {
         return "Response{" +
@@ -91,6 +131,10 @@ public class Response<T> {
                 ", pageSize=" + pageSize +
                 ", pageNo=" + pageNo +
                 ", totalCount=" + totalCount +
+                ", code=" + code +
+                ", result='" + result + '\'' +
+                ", message='" + message + '\'' +
+                ", ext='" + ext + '\'' +
                 '}';
     }
 
@@ -101,7 +145,9 @@ public class Response<T> {
         /**
          * 无效的refresh_token
          */
-        INVALID_REFRESH(1005, "无效的refresh_token");
+        INVALID_REFRESH(1005, "无效的refresh_token"),
+        PRODUCT_NON_EXISTS(10500, "商品不存在"),
+        ;
 
         /**
          * 错误码

+ 32 - 25
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -642,6 +642,9 @@ public class OrderServiceImpl implements OrderService {
         mailInfo.setShopTel(storeEntity.getTelephoneNumber());
         AddressEntity addressEntity = addressDao.queryStoreAddress(storeEntity.getId(),Dict.addressStatus.item_1.getItem());
         // 发货人
+        if (Objects.isNull(addressEntity)) {
+            throw new ServiceException("请先配置发货地址!");
+        }
         mailInfo.setSenderTel(addressEntity.getTelNumber());
         mailInfo.setSenderName(addressEntity.getSenderName());
         mailInfo.setSenderProvince(addressEntity.getProvinceName());
@@ -2282,11 +2285,9 @@ public class OrderServiceImpl implements OrderService {
             ListUtils listUtils = BeanUtils.instantiate(ListUtils.class);
             listUtils.copyList(goodsEntityList, queryGoodsVOList);
 
-            // 商品总重量
-            BigDecimal weight = new BigDecimal(0);
             //生成商户订单号
             SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
-            String orderSn = "ZWCW" + format.format(new Date()) + CommonUtil.generateOrderNumber();
+            String orderSn = "ZMHK" + format.format(new Date()) + CommonUtil.generateOrderNumber();
             // 检查库存和更新库存
             for (QueryGoodsVO goodsDto : queryGoodsVOList) {
                 // 要购买的数量
@@ -2507,15 +2508,17 @@ public class OrderServiceImpl implements OrderService {
 
             String env = environment.getProperty("haikong.env");
             // 判断是微信的支付码还是支付宝的支付码
+            env = "prod";
             if (!org.springframework.util.StringUtils.isEmpty(env) && Constants.PROD.equals(env)) {
                 if (parCode.startsWith("28")) {
                     // 支付宝支付
-                    try {
+                    throw new ServiceException("目前暂不支持支付宝付款!请使用微信进行支付!");
+                    /*try {
                         AliPay(user, parCode, order, processRecordEntity, orderWXPayRecordCurrent, store);
                     } catch (Exception e) {
                         LOGGER.error("支付宝支付出现异常!订单号:【{}】", order.getOrder_sn(), e);
                         throw e;
-                    }
+                    }*/
                 } else {
                     // 微信支付
                     try {
@@ -2808,9 +2811,9 @@ public class OrderServiceImpl implements OrderService {
 
             String response = vmcShopTemplate.sendOrder(body);
 
-            com.kmall.admin.haikong.utils.R<String> r = JacksonUtil.fromListJson(response, new TypeReference<com.kmall.admin.haikong.utils.R<String>>() {});
+            Response<String> r = JacksonUtil.fromListJson(response, new TypeReference<Response<String>>() {});
 
-            if (Objects.nonNull(r) && r.getCode() == 0) {
+            if (Objects.nonNull(r) && !"failure".equals(r.getResult())) {
                 pickUpCodeService.updatePickUpCodeStatusByOrderSn(orderSn, Dict.PickUpCodeStatusEnum.item_0.getStatus());
                 haiKongSendOrderInfoRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
                 LOGGER.info("推送订单到免税mall成功!响应结果:{}", response);
@@ -2864,7 +2867,7 @@ public class OrderServiceImpl implements OrderService {
      */
     private SeaportInfoDTO wrapSeaportInfo(OrderVo order) {
         SeaportInfoDTO seaportInfoDTO = new SeaportInfoDTO();
-        seaportInfoDTO.setSeaportCode("4600");
+        seaportInfoDTO.setSeaportCode("5791");
         seaportInfoDTO.setPlatform("1");
         seaportInfoDTO.setIdentityCard(order.getIdCard());
         seaportInfoDTO.setIdentityName(order.getPay_name());
@@ -3232,7 +3235,7 @@ public class OrderServiceImpl implements OrderService {
             // 发送请求
             String memberOrderSyncResponseJson = haiKongMemberTemplate.memberOrderSync(body);
             LOGGER.info("请求会员系统同步消费订单接口!响应:{}", memberOrderSyncResponseJson);
-            Response<Long> response = JacksonUtil.fromListJson(memberOrderSyncResponseJson, new TypeReference<Response<Long>>() {});
+            Response<String> response = JacksonUtil.fromListJson(memberOrderSyncResponseJson, new TypeReference<Response<String>>() {});
             if (Objects.nonNull(response) && response.getSuccess()) {
                 haiKongMemberOrderSyncResendEntity.setMemberSysOrderId(response.getData());
                 haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.NON_RESEND.getStatus());
@@ -4676,11 +4679,13 @@ public class OrderServiceImpl implements OrderService {
                 .filter(m -> Constants.RejectStatus.ALLOW.getCode().equals(m.getReject()))
                 .map(MkActivitiesScoreEntity::getSku)
                 .collect(Collectors.toList());
+        LOGGER.info("参与积分抵扣的sku集合:{}", scoreDeductionAllowSkuList);
         // 不参与积分抵扣的sku集合,如果该list不为空,则默认其余的sku参与积分抵扣
         List<String> scoreDeductionRejectSkuList = mkActivitiesScoreEntities.stream()
                 .filter(m -> Constants.RejectStatus.REJECT.getCode().equals(m.getReject()))
                 .map(MkActivitiesScoreEntity::getSku)
                 .collect(Collectors.toList());
+        LOGGER.info("不参与积分抵扣的sku集合:{}", scoreDeductionRejectSkuList);
 
         if (!CollectionUtils.isEmpty(scoreDeductionAllowSkuList) && !CollectionUtils.isEmpty(scoreDeductionRejectSkuList)) {
             LOGGER.error("积分抵扣表中既有参与又有不参与!与需求不符!");
@@ -4696,12 +4701,7 @@ public class OrderServiceImpl implements OrderService {
         for (GoodsDetailsDto goodsDetailsDto : goodsDetailsDtos) {
             String sku = goodsDetailsDto.getGoodsSn();
             if (!promotionSkuList.contains(sku)) {
-                if (CollectionUtils.isEmpty(scoreDeductionAllowSkuList) && !CollectionUtils.isEmpty(scoreDeductionRejectSkuList)) {
-                    if (!scoreDeductionRejectSkuList.contains(sku)) {
-                        BigDecimal skuActualPaymentAmount = goodsDetailsDto.getActualPaymentAmount();
-                        skuTotalPrice = skuTotalPrice.add(skuActualPaymentAmount);
-                    }
-                } else if (!CollectionUtils.isEmpty(scoreDeductionAllowSkuList) && CollectionUtils.isEmpty(scoreDeductionRejectSkuList)) {
+                if (!CollectionUtils.isEmpty(scoreDeductionAllowSkuList) && CollectionUtils.isEmpty(scoreDeductionRejectSkuList)) {
                     if (scoreDeductionAllowSkuList.contains(sku)) {
                         BigDecimal skuActualPaymentAmount = goodsDetailsDto.getActualPaymentAmount();
                         skuTotalPrice = skuTotalPrice.add(skuActualPaymentAmount);
@@ -4728,21 +4728,28 @@ public class OrderServiceImpl implements OrderService {
                 // 过滤掉参与过限时特价并且与积分抵扣互斥的sku,以及未参加积分抵扣活动的sku
                 goodsDetailsDtos = goodsDetailsDtos.stream().filter(goodsDetailsDto -> {
                     String sku = goodsDetailsDto.getSku();
+
+                    // 满赠商品不参与积分分摊计算
+                    if (Constants.ActivityTopicEnum.MZ.getTopicName().equals(goodsDetailsDto.getActivity())) {
+                        return false;
+                    }
+                    // 如果临时促销中定义了该sku不参与,那么根据优先级不管该商品在积分抵扣中如何设置,都认定为不参与
                     if (!promotionSkuList.contains(sku)) {
                         // 如果导入的商品都为不参与,则其余的商品都默认参与积分抵扣活动
-                        if (CollectionUtils.isEmpty(scoreDeductionAllowSkuList) && !CollectionUtils.isEmpty(scoreDeductionRejectSkuList)) {
-                            if (!scoreDeductionRejectSkuList.contains(sku)) {
-                                return true;
-                            }
+                        if (CollectionUtils.isEmpty(scoreDeductionAllowSkuList) &&
+                                !CollectionUtils.isEmpty(scoreDeductionRejectSkuList) &&
+                                !scoreDeductionRejectSkuList.contains(sku)) {
+                            return true;
+                        }
                         // 如果导入的商品都为参与,则默认其余商品不参与
-                        } else if (!CollectionUtils.isEmpty(scoreDeductionAllowSkuList) && CollectionUtils.isEmpty(scoreDeductionRejectSkuList)) {
-                            if (scoreDeductionAllowSkuList.contains(sku)) {
-                                return true;
-                            }
+                        if (!CollectionUtils.isEmpty(scoreDeductionAllowSkuList) &&
+                                CollectionUtils.isEmpty(scoreDeductionRejectSkuList) &&
+                                scoreDeductionAllowSkuList.contains(sku)) {
+                            return true;
                         }
                     }
-                    // 满赠商品不参与积分分摊计算
-                    return !Constants.ActivityTopicEnum.MZ.getTopicName().equals(goodsDetailsDto.getActivity());
+                    // 临时促销中有这个sku,说明不参与积分抵扣
+                    return false;
                 }).collect(Collectors.toList());
                 // 系统设置的最大抵扣比例(最多能抵扣订单金额的比例),在系统管理的系统参数中设置,KEY为 HAIKONG_MEMBER_MAX_SCORE_RATIO
                 String scoreRatioStr = sysConfigDao.queryByKey(Constants.HAIKONG_MEMBER_MAX_SCORE_RATIO);

+ 0 - 4
kmall-admin/src/main/resources/mybatis/mapper/haikong/HaikongSendOrderInfoRecordDao.xml

@@ -367,10 +367,6 @@
 			<foreach collection="list" item="item" open="case " close=" end,">
 				when id = #{item.id} then #{item.resendStatus}
 			</foreach>
-			member_sys_order_id =
-			<foreach collection="list" item="item" open="case " close=" end,">
-				when id = #{item.id} then #{item.memberSysOrderId}
-			</foreach>
 		</trim>
 		where id in
 		<foreach collection="list" item="item" open="(" separator="," close=")">