1
0
Переглянути джерело

fix:下单流程bug,
积分变动记录、消费订单同步重发逻辑

lhm 3 роки тому
батько
коміт
3c415c0036
15 змінених файлів з 276 додано та 23 видалено
  1. 1 1
      kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java
  2. 4 0
      kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberOrderSyncResendDao.java
  3. 10 0
      kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberScoreChangeRecordDao.java
  4. 85 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberOrderSyncResendTask.java
  5. 84 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberScoreChangeResendTask.java
  6. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java
  7. 4 0
      kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberOrderSyncResendService.java
  8. 9 0
      kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberScoreChangeRecordService.java
  9. 21 17
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  10. 2 2
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java
  11. 10 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberOrderSyncResendServiceImpl.java
  12. 16 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberScoreChangeRecordServiceImpl.java
  13. 2 2
      kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml
  14. 13 0
      kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberOrderSyncResendDao.xml
  15. 14 0
      kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberScoreChangeRecordDao.xml

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java

@@ -32,7 +32,7 @@ public interface ProductStoreRelaDao extends BaseDao<ProductStoreRelaEntity> {
 
     List<ProductStoreRelaEntity> querySameList(Map<String, Object> map);
 
-    void updateStockNum(ProductStoreRelaEntity productStoreRelaEntity);
+    void updateStockNumByStoreIdAndSku(ProductStoreRelaEntity productStoreRelaEntity);
 
     void updateSellVolumeNum(ProductStoreRelaEntity productStoreRelaEntity);
 

+ 4 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberOrderSyncResendDao.java

@@ -62,4 +62,8 @@ public interface HaiKongMemberOrderSyncResendDao {
      * @param ids   id 集合
      */
     void deleteBatch(List<Integer> ids);
+
+    List<HaiKongMemberOrderSyncResendEntity> queryListByResendStatus();
+
+    void updateResendStatusBatch(@Param("list") List<Long> ids, @Param("resendStatus") String status);
 }

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberScoreChangeRecordDao.java

@@ -27,4 +27,14 @@ public interface HaiKongMemberScoreChangeRecordDao {
     void deleteByOutBizNo(@Param("outBizNo") String outBizNo);
 
     void deleteBatchByOutBizNo(List<String> outBizNos);
+
+    List<HaiKongMemberScoreChangeRecordEntity> queryListByResendStatus();
+
+    /**
+     * 批量更新重发状态
+     *
+     * @param ids 需要更新的记录id
+     * @param status   重发状态
+     */
+    void updateResendStatusBatch(@Param("list") List<Long> ids, @Param("resendStatus") String status);
 }

+ 85 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberOrderSyncResendTask.java

@@ -0,0 +1,85 @@
+package com.kmall.admin.haikong.task;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
+import com.kmall.admin.haikong.client.HaiKongMemberTemplate;
+import com.kmall.admin.haikong.constant.HaiKongMemberOrderResendStatusEnum;
+import com.kmall.admin.haikong.dto.MemberOrderInfoSyncDTO;
+import com.kmall.admin.haikong.dto.MemberScoreChangeDTO;
+import com.kmall.admin.haikong.dto.MemberScoreChangeResponseDTO;
+import com.kmall.admin.haikong.utils.Response;
+import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
+import com.kmall.admin.utils.jackson.JacksonUtil;
+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;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 重发会员消费订单同步定时任务
+ * @author lhm
+ * @createDate 2021-12-01
+ */
+@Component
+public class MemberOrderSyncResendTask {
+
+    private static final Logger log = LoggerFactory.getLogger(MemberOrderSyncResendTask.class);
+
+    @Autowired
+    private HaiKongMemberTemplate haiKongMemberTemplate;
+
+    @Autowired
+    private HaiKongMemberOrderSyncResendService haiKongMemberOrderSyncResendService;
+
+    //    @Scheduled(cron = "0 55 0/2 * * ?")
+    @Scheduled(cron = "0/20 0/2 * * * ?")
+    public void resend() {
+        // 查询等待发送和发送失败的记录
+        List<HaiKongMemberOrderSyncResendEntity> haiKongMemberOrderSyncResendEntities = haiKongMemberOrderSyncResendService.queryListByResendStatus();
+        if (CollectionUtils.isEmpty(haiKongMemberOrderSyncResendEntities)) {
+            return;
+        }
+        List<Long> successIdList = new ArrayList<>();
+        List<Long> failedIdList = new ArrayList<>();
+        haiKongMemberOrderSyncResendEntities.forEach(haiKongMemberOrderSyncResendEntity -> {
+            MemberOrderInfoSyncDTO memberOrderInfoSyncDTO = new MemberOrderInfoSyncDTO();
+            BeanUtils.copyProperties(haiKongMemberOrderSyncResendEntity, memberOrderInfoSyncDTO);
+            String body = JacksonUtil.toJson(memberOrderInfoSyncDTO);
+            log.info("【重发】请求会员消费订单同步接口!请求体:{}", body);
+            try {
+                String responseJson = haiKongMemberTemplate.changeMemberScore(body);
+                Response<MemberScoreChangeResponseDTO> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<MemberScoreChangeResponseDTO>>() {});
+                if (Objects.nonNull(response) && response.getSuccess()) {
+                    MemberScoreChangeResponseDTO responseData = response.getData();
+                    BeanUtils.copyProperties(responseData, haiKongMemberOrderSyncResendEntity);
+                    haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
+                    successIdList.add(haiKongMemberOrderSyncResendEntity.getId().longValue());
+                    log.info("【重发】请求会员消费订单同步接口成功!响应数据:{}", responseJson);
+                }
+            } catch (Exception e) {
+                haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+                failedIdList.add(haiKongMemberOrderSyncResendEntity.getId().longValue());
+                log.error("【重发】请求会员消费订单同步接口失败!异常:", e);
+            }
+        });
+
+        if (!CollectionUtils.isEmpty(successIdList)) {
+            haiKongMemberOrderSyncResendService.updateResendStatusBatch(successIdList, HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
+        }
+
+        if (!CollectionUtils.isEmpty(failedIdList)) {
+            haiKongMemberOrderSyncResendService.updateResendStatusBatch(failedIdList, HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+        }
+        log.info("【重发】此次重发会员消费订单同步接口!成功【{}】条,失败【{}】条!", successIdList.size(), failedIdList.size());
+    }
+
+
+}

+ 84 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberScoreChangeResendTask.java

@@ -0,0 +1,84 @@
+package com.kmall.admin.haikong.task;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
+import com.kmall.admin.haikong.client.HaiKongMemberTemplate;
+import com.kmall.admin.haikong.constant.HaiKongMemberOrderResendStatusEnum;
+import com.kmall.admin.haikong.constant.HaiKongMemberScoreChangeEventEnum;
+import com.kmall.admin.haikong.dto.MemberScoreChangeDTO;
+import com.kmall.admin.haikong.dto.MemberScoreChangeResponseDTO;
+import com.kmall.admin.haikong.utils.Response;
+import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeRecordService;
+import com.kmall.admin.utils.jackson.JacksonUtil;
+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;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 会员积分变动重发定时任务
+ * @author lhm
+ * @createDate 2021-12-01
+ */
+@Component
+public class MemberScoreChangeResendTask {
+
+    private static final Logger log = LoggerFactory.getLogger(MemberScoreChangeResendTask.class);
+
+    @Autowired
+    private HaiKongMemberTemplate haiKongMemberTemplate;
+
+    @Autowired
+    private HaiKongMemberScoreChangeRecordService haiKongMemberScoreChangeRecordService;
+
+    //    @Scheduled(cron = "0 55 0/2 * * ?")
+    @Scheduled(cron = "0/20 0/2 * * * ?")
+    public void resend() {
+        // 查询等待发送和发送失败的记录
+        List<HaiKongMemberScoreChangeRecordEntity> haiKongMemberScoreChangeRecordEntities = haiKongMemberScoreChangeRecordService.queryListByResendStatus();
+        if (CollectionUtils.isEmpty(haiKongMemberScoreChangeRecordEntities)) {
+            return;
+        }
+        List<Long> successIdList = new ArrayList<>();
+        List<Long> failedIdList = new ArrayList<>();
+        haiKongMemberScoreChangeRecordEntities.forEach(haiKongMemberScoreChangeRecordEntity -> {
+            MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
+            BeanUtils.copyProperties(haiKongMemberScoreChangeRecordEntity, memberScoreChangeDTO);
+            String body = JacksonUtil.toJson(memberScoreChangeDTO);
+            log.info("【重发】请求会员系统积分变动接口!请求体:{}", body);
+            try {
+                String responseJson = haiKongMemberTemplate.changeMemberScore(body);
+                Response<MemberScoreChangeResponseDTO> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<MemberScoreChangeResponseDTO>>() {});
+                if (Objects.nonNull(response) && response.getSuccess()) {
+                    MemberScoreChangeResponseDTO responseData = response.getData();
+                    BeanUtils.copyProperties(responseData, haiKongMemberScoreChangeRecordEntity);
+                    haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
+                    successIdList.add(haiKongMemberScoreChangeRecordEntity.getId());
+                    log.info("【重发】请求会员系统积分变动接口成功!响应数据:{}", responseJson);
+                }
+            } catch (Exception e) {
+                haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+                failedIdList.add(haiKongMemberScoreChangeRecordEntity.getId());
+                log.error("【重发】请求会员系统积分变动接口失败!异常:", e);
+            }
+        });
+
+        if (!CollectionUtils.isEmpty(successIdList)) {
+            haiKongMemberScoreChangeRecordService.updateResendStatusBatch(successIdList, HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
+        }
+
+        if (!CollectionUtils.isEmpty(failedIdList)) {
+            haiKongMemberScoreChangeRecordService.updateResendStatusBatch(failedIdList, HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+        }
+        log.info("【重发】此次重发会员积分变动接口!成功【{}】条,失败【{}】条!", successIdList.size(), failedIdList.size());
+    }
+
+
+}

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java

@@ -162,5 +162,5 @@ public interface ProductStoreRelaService {
      * 更新库存
      * @param productStoreRelaEntity    门店库存实体
      */
-    void updateStockNum(ProductStoreRelaEntity productStoreRelaEntity);
+    void updateStockNumByStoreIdAndSku(ProductStoreRelaEntity productStoreRelaEntity);
 }

+ 4 - 0
kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberOrderSyncResendService.java

@@ -35,4 +35,8 @@ public interface HaiKongMemberOrderSyncResendService {
      * @param haiKongMemberOrderSyncResendEntity    新增的数据
      */
     void save(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity);
+
+    List<HaiKongMemberOrderSyncResendEntity> queryListByResendStatus();
+
+    void updateResendStatusBatch(List<Long> ids, String status);
 }

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberScoreChangeRecordService.java

@@ -26,4 +26,13 @@ public interface HaiKongMemberScoreChangeRecordService {
     void deleteByOutBizNo(String outBizNo);
 
     void deleteBatchByOutBizNo(List<String> outBizNos);
+
+    List<HaiKongMemberScoreChangeRecordEntity> queryListByResendStatus();
+
+    /**
+     * 批量更新重发状态
+     * @param ids  需要更新的记录id
+     * @param status    重发状态
+     */
+    void updateResendStatusBatch(List<Long> ids, String status);
 }

+ 21 - 17
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -1366,7 +1366,7 @@ public class OrderServiceImpl implements OrderService {
                         productInfo.setStockNum(productInfo.getStockNum() - cartEntity.getNumber());
                         productInfo.setStoreId(Long.valueOf(storeId));
                         productInfo.addSellVolume();
-                        productStoreRelaDao.updateStockNum(productInfo);//修改普通商品库存
+                        productStoreRelaDao.updateStockNumByStoreIdAndSku(productInfo);//修改普通商品库存
 
                         if (goodsEntity != null) {
                             goodsEntity.setGoodsNumber(goodsEntity.getGoodsNumber() - cartEntity.getNumber());
@@ -2459,10 +2459,10 @@ public class OrderServiceImpl implements OrderService {
                     // 当前出区数
                     Integer exitRegionNumber = goodsDto.getExitRegionNumber();
                     // 保税仓库存 + 门店库存 - 出区数 >= 购买数
-                    if (!((warehouseStock + goodsNumber) - exitRegionNumber >= sellVolume)) {
+                    if (!((warehouseStock + stockNum) - exitRegionNumber >= sellVolume)) {
                         // 库存不足
-                        LOGGER.error("sku:【{}】库存不足,门店可用库存:【{}】,仓库可用库存:【{}】,购买数量:【{}】", sku, goodsNumber, warehouseStock, sellVolume);
-                        throw new ServiceException(String.format("sku:【%s】库存不足,门店可用库存:【%s】,仓库可用库存:【%s】,购买数量:【%s】", sku, goodsNumber, warehouseStock, sellVolume));
+                        LOGGER.error("sku:【{}】库存不足,门店可用库存:【{}】,仓库可用库存:【{}】,购买数量:【{}】", sku, stockNum, warehouseStock, sellVolume);
+                        throw new ServiceException(String.format("sku:【%s】库存不足,门店可用库存:【%s】,仓库可用库存:【%s】,购买数量:【%s】", sku, stockNum, warehouseStock, sellVolume));
                     }
                     // 门店库存变化记录
                     StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
@@ -2472,8 +2472,8 @@ public class OrderServiceImpl implements OrderService {
                     storeMngChangeEntity.setStoreId(Integer.parseInt(String.valueOf(goodsDto.getStoreId())));
                     storeMngChangeEntity.setMerchSn(goodsDto.getMerchSn());
                     storeMngChangeEntity.setStoreChangeNum(sellVolume);
-                    storeMngChangeEntity.setStoreOriginalNum(goodsDto.getStockNum());
-                    storeMngChangeEntity.setStoreValidNum(goodsDto.getStockNum() - sellVolume);
+                    storeMngChangeEntity.setStoreOriginalNum(stockNum);
+                    storeMngChangeEntity.setStoreValidNum(stockNum - sellVolume);
                     storeMngChangeEntity.setCreateTime(new Date());
                     storeMngChangeEntity.setModTime(new Date());
                     storeMngChangeEntity.setCreaterSn(user.getUsername());
@@ -2481,7 +2481,7 @@ public class OrderServiceImpl implements OrderService {
                     storeMngChangeEntity.setIsValid(0);
                     storeMngChangeDao.save(storeMngChangeEntity);
 
-                    int validNum = goodsDto.getStockNum() - sellVolume;
+                    int validNum = stockNum - sellVolume;
                     // 园区库存变化记录
                     MngChangeEntity mngChangeEntity = new MngChangeEntity();
                     mngChangeEntity.setThirdPartyMerchCode(goodsDto.getThirdPartyMerchCode());
@@ -2503,9 +2503,9 @@ public class OrderServiceImpl implements OrderService {
                     // 如果园区库存数量小于等于0, 则不更新园区库存, 园区库存只做参考
                     int diff = Math.max(goodsNumber - sellVolume, 0);
                     GoodsEntity goodsEntity = new GoodsEntity();
+                    BeanUtils.copyProperties(goodsDto, goodsEntity);
                     goodsEntity.setGoodsNumber(diff);
                     goodsEntity.setLastSaleTime(new Date());
-                    BeanUtils.copyProperties(goodsDto, goodsEntity);
                     goodsService.updateStockNumberByProductCodeAndSku(goodsEntity);
                     // 门店库存
                     ProductStoreRelaEntity productStoreRelaEntity = new ProductStoreRelaEntity();
@@ -2514,7 +2514,7 @@ public class OrderServiceImpl implements OrderService {
                     productStoreRelaEntity.setStoreId(storeId.longValue());
                     productStoreRelaEntity.setSellVolume(goodsDto.getSellVolume() + sellVolume);
                     productStoreRelaEntity.setLastSaleTime(new Date());
-                    productStoreRelaService.updateStockNum(productStoreRelaEntity);//修改普通商品库存
+                    productStoreRelaService.updateStockNumByStoreIdAndSku(productStoreRelaEntity);//修改普通商品库存
 
                     BigDecimal retailPrice = goodsDto.getRetailPrice(); // 单价
                     BigDecimal storeRetailPrice = goodsDto.getRetailPrice(); // 单价
@@ -2753,13 +2753,17 @@ public class OrderServiceImpl implements OrderService {
             memberConsumptionRecordsDao.save(consumptionRecords);
 
             // 同步会员订单消费记录
-            syncMemberConsumeRecord(memberPhone, order, deductionScore);
+            if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
+                syncMemberConsumeRecord(memberPhone, order, deductionScore);
+            }
 
             // 积分变动接口,下单扣减
-            syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
-            // 下单赠送,一元积一分
-            Integer score = order.getActual_price().intValue();
-            syncMemberScoreChangeRecord(openId, order, score, "下单赠送", HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
+            if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
+                syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
+                // 下单赠送,一元积一分
+                Integer score = order.getActual_price().intValue();
+                syncMemberScoreChangeRecord(openId, order, score, "下单赠送", HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
+            }
 
             // 生成取票码
             PickUpCodeEntity pickUpCodeEntity = new PickUpCodeEntity();
@@ -4442,7 +4446,7 @@ public class OrderServiceImpl implements OrderService {
         //订单价格计算:订单的总价+运费
         for (GoodsEntity goodsEntity : goodsList) {
             goodsTotalPrice = goodsTotalPrice
-                    .add(goodsEntity.getRetailPrice().multiply(new BigDecimal(goodsEntity.getGoodsNumber()))).setScale(2, RoundingMode.HALF_UP);
+                    .add(goodsEntity.getRetailPrice().multiply(new BigDecimal(goodsEntity.getSellVolume()))).setScale(2, RoundingMode.HALF_UP);
             fullCutCouponDec = fullCutCouponDec
                     .add(goodsEntity.getDiscountedPrice()).setScale(2, RoundingMode.HALF_UP);
             actualPrice = actualPrice
@@ -4562,7 +4566,7 @@ public class OrderServiceImpl implements OrderService {
         orderGoodsVo.setDiscountedPrice(goodsDto.getDiscountedPrice());
         orderGoodsVo.setActualPaymentAmount(goodsDto.getActualPaymentAmount());
 
-        orderGoodsVo.setNumber(goodsDto.getGoodsNumber());
+        orderGoodsVo.setNumber(goodsDto.getSellVolume());
 //        orderGoodsVo.setGoods_specification_name_value(goodsDto.get);
 //        orderGoodsVo.setGoods_specification_ids(goodsItem.getGoods_specification_ids());
         orderGoodsVo.setOrderBizType(Dict.orderBizType.item_10.getItem());
@@ -4574,7 +4578,7 @@ public class OrderServiceImpl implements OrderService {
         orderGoodsVo.setSku(goodsDto.getSku());
 
 
-        BigDecimal number = new BigDecimal(Long.valueOf(goodsDto.getGoodsNumber()));
+        BigDecimal number = new BigDecimal(Long.valueOf(goodsDto.getSellVolume()));
         BigDecimal goodsTotal = goodsDto.getRetailPrice().multiply(number);//单商品总价
         BigDecimal rate = goodsTotal.divide(orderInfo.getGoods_price(), 2, BigDecimal.ROUND_HALF_UP);//当前商品总价/订单总价(不含运费、不含优惠券)
         BigDecimal freightPrice = BigDecimal.valueOf(orderInfo.getFreight_price());

+ 2 - 2
kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java

@@ -1302,7 +1302,7 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
      * @param productStoreRelaEntity 门店库存实体
      */
     @Override
-    public void updateStockNum(ProductStoreRelaEntity productStoreRelaEntity) {
-        productStoreRelaDao.updateStockNum(productStoreRelaEntity);
+    public void updateStockNumByStoreIdAndSku(ProductStoreRelaEntity productStoreRelaEntity) {
+        productStoreRelaDao.updateStockNumByStoreIdAndSku(productStoreRelaEntity);
     }
 }

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberOrderSyncResendServiceImpl.java

@@ -59,4 +59,14 @@ public class HaiKongMemberOrderSyncResendServiceImpl implements HaiKongMemberOrd
     public void save(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity) {
         haiKongMemberOrderSyncResendDao.save(haiKongMemberOrderSyncResendEntity);
     }
+
+    @Override
+    public List<HaiKongMemberOrderSyncResendEntity> queryListByResendStatus() {
+        return haiKongMemberOrderSyncResendDao.queryListByResendStatus();
+    }
+
+    @Override
+    public void updateResendStatusBatch(List<Long> ids, String status) {
+        haiKongMemberOrderSyncResendDao.updateResendStatusBatch(ids, status);
+    }
 }

+ 16 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberScoreChangeRecordServiceImpl.java

@@ -58,4 +58,20 @@ public class HaiKongMemberScoreChangeRecordServiceImpl implements HaiKongMemberS
     public void deleteBatchByOutBizNo(List<String> outBizNos) {
         haiKongMemberScoreChangeRecordDao.deleteBatchByOutBizNo(outBizNos);
     }
+
+    @Override
+    public List<HaiKongMemberScoreChangeRecordEntity> queryListByResendStatus() {
+        return haiKongMemberScoreChangeRecordDao.queryListByResendStatus();
+    }
+
+    /**
+     * 批量更新重发状态
+     *
+     * @param ids 需要更新的记录id
+     * @param status   重发状态
+     */
+    @Override
+    public void updateResendStatusBatch(List<Long> ids, String status) {
+        haiKongMemberScoreChangeRecordDao.updateResendStatusBatch(ids, status);
+    }
 }

+ 2 - 2
kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml

@@ -599,13 +599,13 @@
         where a.goods_id = #{goodsId} and a.store_id = #{storeId}
     </select>
 
-    <update id="updateStockNum" parameterType="com.kmall.admin.entity.ProductStoreRelaEntity">
+    <update id="updateStockNumByStoreIdAndSku" parameterType="com.kmall.admin.entity.ProductStoreRelaEntity">
         update mall_product_store_rela a
         <set>
             <if test="stockNum != null">a.`stock_num` = #{stockNum},</if>
             <if test="sellVolume != null">a.`sell_volume` = #{sellVolume},</if>
         </set>
-        where a.goods_id = #{goodsId} and a.store_id = #{storeId}
+        where a.store_id = #{storeId} and a.sku = #{sku}
     </update>
 
     <update id="updateSellVolumeNum" parameterType="com.kmall.api.entity.ProductVo">

+ 13 - 0
kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberOrderSyncResendDao.xml

@@ -33,6 +33,12 @@
             AND name LIKE concat('%',#{resendStatus},'%')
         </if>
     </select>
+    <select id="queryListByResendStatus"
+            resultType="com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity">
+        select *
+        from haikong_member_order_sync_resend
+        where resend_status in ('0', '2')
+    </select>
 
     <insert id="save" parameterType="com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity" useGeneratedKeys="true" keyProperty="id">
         insert into haikong_member_order_sync_resend
@@ -90,6 +96,13 @@
             id = #{item.id}
         </foreach>
     </update>
+    <update id="updateResendStatusBatch">
+        update haikong_member_order_sync_resend set resend_status = #{resendStatus}
+        where id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
 
     <delete id="delete">
         delete from haikong_member_order_sync_resend where id = #{id}

+ 14 - 0
kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberScoreChangeRecordDao.xml

@@ -36,6 +36,12 @@
         select *
         from haikong_member_score_change_record
     </select>
+    <select id="queryListByResendStatus"
+            resultType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity">
+        select *
+        from haikong_member_score_change_record
+        where resend_status in ('0', '2')
+    </select>
 
     <insert id="save" parameterType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity" useGeneratedKeys="true" keyProperty="id">
         insert into haikong_member_score_change_record
@@ -83,6 +89,14 @@
         where out_biz_no = #{outBizNo}
     </update>
 
+    <update id="updateResendStatusBatch">
+        update haikong_member_score_change_record set resend_status = #{resendStatus}
+        where id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
+
     <delete id="deleteByOutBizNo">
         delete from haikong_member_score_change_record where out_biz_no = #{outBizNo}
     </delete>