1
0
Prechádzať zdrojové kódy

Merge branch 'feature/下单改造'

lhm 3 rokov pred
rodič
commit
b79a434263
42 zmenil súbory, kde vykonal 1810 pridanie a 502 odobranie
  1. 1 0
      kmall-admin/src/main/java/com/kmall/admin/biz/CustomsClearanceTimeliness.java
  2. 4 3
      kmall-admin/src/main/java/com/kmall/admin/biz/clearance/CustomsClearanceTimelinessBiz.java
  3. 3 2
      kmall-admin/src/main/java/com/kmall/admin/config/ThreadPoolConfig.java
  4. 1 0
      kmall-admin/src/main/java/com/kmall/admin/config/mq/CustomRabbitMQProperties.java
  5. 12 11
      kmall-admin/src/main/java/com/kmall/admin/config/mq/RabbitMQConfig.java
  6. 7 0
      kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java
  7. 7 0
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderGoodsDao.java
  8. 65 0
      kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberOrderSyncResendDao.java
  9. 30 0
      kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberScoreChangeRecordDao.java
  10. 4 4
      kmall-admin/src/main/java/com/kmall/admin/entity/GoodsEntity.java
  11. 8 0
      kmall-admin/src/main/java/com/kmall/admin/entity/ProductStoreRelaEntity.java
  12. 26 0
      kmall-admin/src/main/java/com/kmall/admin/entity/UserEntity.java
  13. 151 0
      kmall-admin/src/main/java/com/kmall/admin/entity/haikong/HaiKongMemberOrderSyncResendEntity.java
  14. 160 0
      kmall-admin/src/main/java/com/kmall/admin/entity/haikong/HaiKongMemberScoreChangeRecordEntity.java
  15. 44 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/constant/HaiKongMemberOrderResendStatusEnum.java
  16. 28 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/constant/HaiKongMemberScoreChangeEventEnum.java
  17. 14 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberInfoDTO.java
  18. 102 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberScoreChangeDTO.java
  19. 51 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberScoreChangeResponseDTO.java
  20. 19 4
      kmall-admin/src/main/java/com/kmall/admin/haikong/utils/ListUtils.java
  21. 97 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/vo/CalculateOrderDiscountPriceResponseVO.java
  22. 89 3
      kmall-admin/src/main/java/com/kmall/admin/haikong/vo/QueryGoodsVO.java
  23. 7 0
      kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java
  24. 7 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderGoodsService.java
  25. 6 0
      kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java
  26. 38 0
      kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberOrderSyncResendService.java
  27. 29 0
      kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberScoreChangeRecordService.java
  28. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  29. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OfflineCartServiceImpl.java
  30. 10 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderGoodsServiceImpl.java
  31. 315 431
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  32. 10 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java
  33. 62 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberOrderSyncResendServiceImpl.java
  34. 61 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberScoreChangeRecordServiceImpl.java
  35. 29 29
      kmall-admin/src/main/resources/conf/mq.properties
  36. 8 2
      kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml
  37. 62 0
      kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml
  38. 101 0
      kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberOrderSyncResendDao.xml
  39. 89 0
      kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberScoreChangeRecordDao.xml
  40. 1 1
      kmall-admin/src/main/resources/mybatis/mapper/haikong/ScoreConsumeRecordDao.xml
  41. 33 2
      kmall-admin/src/main/webapp/js/sale/sale.js
  42. 13 9
      kmall-admin/src/test/java/com/kmall/admin/Test.java

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/biz/CustomsClearanceTimeliness.java

@@ -8,6 +8,7 @@ import java.util.List;
  * @version 1.0
  * 2021-09-09 17:59
  */
+@Deprecated
 public interface CustomsClearanceTimeliness {
 
     /**

+ 4 - 3
kmall-admin/src/main/java/com/kmall/admin/biz/clearance/CustomsClearanceTimelinessBiz.java

@@ -22,15 +22,16 @@ import java.util.stream.Collectors;
  * @version 1.0
  * 2021-09-09 18:01
  */
-@Component
+//@Component
+@Deprecated
 public class CustomsClearanceTimelinessBiz implements CustomsClearanceTimeliness {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(CustomsClearanceTimelinessBiz.class);
 
-    @Autowired
+//    @Autowired
     private ThreadPoolExecutor threadPoolExecutor;
 
-    @Autowired
+//    @Autowired
     private RabbitTemplate clearRabbitTemplate;
 
     /**

+ 3 - 2
kmall-admin/src/main/java/com/kmall/admin/config/ThreadPoolConfig.java

@@ -13,10 +13,11 @@ import java.util.concurrent.TimeUnit;
  * @version 1.0
  * 2021-09-08 19:18
  */
-@Configuration
+//@Configuration
+@Deprecated
 public class ThreadPoolConfig {
 
-    @Bean
+//    @Bean
     public ThreadPoolExecutor threadPoolExecutor () {
 
         return new ThreadPoolExecutor(

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/config/mq/CustomRabbitMQProperties.java

@@ -7,6 +7,7 @@ package com.kmall.admin.config.mq;
  * @version 1.0
  * 2021-08-26 17:08
  */
+@Deprecated
 public class CustomRabbitMQProperties {
 
     /**

+ 12 - 11
kmall-admin/src/main/java/com/kmall/admin/config/mq/RabbitMQConfig.java

@@ -24,14 +24,15 @@ import org.springframework.core.env.Environment;
  * @version 1.0
  * 2021-08-26 17:07
  */
-@Configuration
-@PropertySource(value = {"classpath:conf/mq.properties"})
+//@Configuration
+//@PropertySource(value = {"classpath:conf/mq.properties"})
+@Deprecated
 public class RabbitMQConfig {
 
-    @Autowired
+//    @Autowired
     private Environment environment;
 
-    @Bean
+//    @Bean
     public CustomRabbitMQProperties customRabbitMQProperties () {
         CustomRabbitMQProperties customRabbitMQProperties = new CustomRabbitMQProperties();
         customRabbitMQProperties.setUsername(environment.getProperty("mq.username"));
@@ -49,7 +50,7 @@ public class RabbitMQConfig {
     }
 
     /* ----------------------------------------------- 基础配置 --------------------------------------------- */
-    @Bean
+//    @Bean
     public ConnectionFactory connectionFactory () {
         CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
         connectionFactory.setUsername(customRabbitMQProperties().getUsername());
@@ -70,7 +71,7 @@ public class RabbitMQConfig {
      * SimpleRabbitListenerContainerFactory发现消息中有content_type有text就会默认将其转换成string类型
      * @return rabbit监听器容器工厂
      */
-    @Bean
+//    @Bean
     public RabbitListenerContainerFactory<?> rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
         SimpleRabbitListenerContainerFactory containerFactory = new SimpleRabbitListenerContainerFactory();
         containerFactory.setConnectionFactory(connectionFactory);
@@ -91,7 +92,7 @@ public class RabbitMQConfig {
         return containerFactory;
     }
 
-    @Bean
+//    @Bean
     public AmqpAdmin amqpAdmin () {
         AmqpAdmin amqpAdmin = new RabbitAdmin(connectionFactory());
 
@@ -103,7 +104,7 @@ public class RabbitMQConfig {
     }
 
     /* ----------------------------------------------- 队列配置 --------------------------------------------- */
-    @Bean
+//    @Bean
     public RabbitTemplate clearRabbitTemplate (ConnectionFactory connectionFactory) {
         RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
 
@@ -115,17 +116,17 @@ public class RabbitMQConfig {
         return rabbitTemplate;
     }
 
-    @Bean
+//    @Bean
     public DirectExchange clearDirectExchange () {
         return new DirectExchange(customRabbitMQProperties().getE_normal_oms_order_to_handle_customs_clearance());
     }
 
-    @Bean
+//    @Bean
     public Queue clearQueue () {
         return new Queue(customRabbitMQProperties().getQ_normal_oms_order_to_handle_customs_clearance());
     }
 
-    @Bean
+//    @Bean
     public Binding clearBinding () {
         return BindingBuilder.bind(clearQueue()).to(clearDirectExchange()).with(customRabbitMQProperties().getK_normal_oms_order_to_handle_customs_clearance());
     }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java

@@ -122,4 +122,11 @@ public interface GoodsDao extends BaseDao<GoodsEntity> {
      * @return              商品信息
      */
     GoodsEntity queryGoodsInfoByProductBarcodeAndSku(@Param("prodBarcode") String prodBarcode, @Param("sku") String sku);
+
+    /**
+     * 更新商品库存
+     * @param goodsEntity 商品
+     * @return
+     */
+    int updateStockNumberByProductCodeAndSku(GoodsEntity goodsEntity);
 }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderGoodsDao.java

@@ -42,4 +42,11 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsEntity> {
     List<OrderGoodsRestoreVo> queryListByOrderIds(List<Integer> orderIdList);
 
     List<OrderGoodsEntity> queryListHkMall(Map<String, Object> map);
+
+    /**
+     * 批量新增订单详情
+     *
+     * @param orderGoodsVos 订单详情
+     */
+    void saveBatchOrderDetail(List<OrderGoodsVo> orderGoodsVos);
 }

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

@@ -0,0 +1,65 @@
+package com.kmall.admin.dao.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
+import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 海控同步消费订单重发表
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public interface HaiKongMemberOrderSyncResendDao {
+
+    /**
+     * 批量更新重发状态
+     * @param entities  实体
+     */
+    void updateBatchResendStatus(List<HaiKongMemberOrderSyncResendEntity> entities);
+
+    /**
+     * 查询对象
+     * @param id    id
+     * @return      实体
+     */
+    HaiKongMemberOrderSyncResendEntity queryObject(@Param("id") Integer id);
+
+    /**
+     * 查询总数
+     * @return  总数
+     */
+    int queryTotal();
+
+    /**
+     * 根据状态查询集合
+     * @param resendStatus  重发状态
+     * @return              集合
+     */
+    List<HaiKongMemberOrderSyncResendEntity> queryList(@Param("resend_status") String resendStatus);
+
+    /**
+     * 新增数据
+     * @param haiKongMemberOrderSyncResendEntity    要新增的数据
+     */
+    void save(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity);
+
+    /**
+     * 更新数据
+     * @param haiKongMemberOrderSyncResendEntity    要更新的数据
+     */
+    void update(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity);
+
+    /**
+     * 删除数据
+     * @param id    id
+     */
+    void delete(@Param("id") Integer id);
+
+    /**
+     * 批量删除数据
+     * @param ids   id 集合
+     */
+    void deleteBatch(List<Integer> ids);
+}

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

@@ -0,0 +1,30 @@
+package com.kmall.admin.dao.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 会员积分变动记录
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public interface HaiKongMemberScoreChangeRecordDao {
+
+    HaiKongMemberScoreChangeRecordEntity queryObjectByOutBizNo(@Param("outBizNo") String outBizNo);
+
+    HaiKongMemberScoreChangeRecordEntity queryObjectByOpenId(@Param("openId") String openId);
+
+    Integer queryTotal();
+
+    List<HaiKongMemberScoreChangeRecordEntity> queryList();
+
+    void save(HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity);
+
+    void updateByOutBizNo(HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity);
+
+    void deleteByOutBizNo(@Param("outBizNo") String outBizNo);
+
+    void deleteBatchByOutBizNo(List<String> outBizNos);
+}

+ 4 - 4
kmall-admin/src/main/java/com/kmall/admin/entity/GoodsEntity.java

@@ -194,7 +194,7 @@ public class GoodsEntity implements Serializable {
     //视频地址
     private String videoUrl;
 
-    private String stockNum;
+    private Integer stockNum;
 
     private String storeName;
 
@@ -283,7 +283,7 @@ public class GoodsEntity implements Serializable {
     }
 
     public GoodsEntity(QueryGoodsVO queryGoodsVo) {
-        BeanUtils.copyProperties(this, queryGoodsVo);
+        BeanUtils.copyProperties(queryGoodsVo, this);
         this.goodsNumber = queryGoodsVo.getSellVolume();
     }
 
@@ -573,11 +573,11 @@ public class GoodsEntity implements Serializable {
         this.productId = productId;
     }
 
-    public String getStockNum() {
+    public Integer getStockNum() {
         return stockNum;
     }
 
-    public void setStockNum(String stockNum) {
+    public void setStockNum(Integer stockNum) {
         this.stockNum = stockNum;
     }
 

+ 8 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/ProductStoreRelaEntity.java

@@ -1,5 +1,7 @@
 package com.kmall.admin.entity;
 
+import com.kmall.admin.haikong.vo.QueryGoodsVO;
+import com.kmall.common.utils.BeanUtils;
 import com.kmall.common.utils.Constant;
 
 import java.io.Serializable;
@@ -146,6 +148,12 @@ public class ProductStoreRelaEntity implements Serializable {
     //积分生成规则id
     private Long pointsRulesId;
 
+    public ProductStoreRelaEntity() {
+    }
+
+    public ProductStoreRelaEntity(QueryGoodsVO queryGoodsVO) {
+        BeanUtils.copyProperties(queryGoodsVO, this);
+    }
 
     public Date getLastSaleTime() {
         return lastSaleTime;

+ 26 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/UserEntity.java

@@ -55,6 +55,16 @@ public class UserEntity implements Serializable {
     private String lastFaceTime;
 
     /**
+     * 海控会员系统openId
+     */
+    private String openId;
+
+    /**
+     * 海控会员系统会员码
+     */
+    private String memberCode;
+
+    /**
      * 设置:主键
      */
     public void setId(Integer id) {
@@ -273,4 +283,20 @@ public class UserEntity implements Serializable {
     public void setLastFaceTime(String lastFaceTime) {
         this.lastFaceTime = lastFaceTime;
     }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public String getMemberCode() {
+        return memberCode;
+    }
+
+    public void setMemberCode(String memberCode) {
+        this.memberCode = memberCode;
+    }
 }

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

@@ -0,0 +1,151 @@
+package com.kmall.admin.entity.haikong;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public class HaiKongMemberOrderSyncResendEntity {
+
+    private Integer id;
+
+    /**
+     * 会员唯一标识,手机号与唯一标识必传其一
+     */
+    private String openId;
+
+    /**
+     * 会员手机号
+     */
+    private String phone;
+
+    /**
+     * 消费时间
+     */
+    private Date consumeDate;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal orderAmount;
+
+    /**
+     * 订单编号
+     */
+    private String orderNo;
+
+    /**
+     * 这笔订单需要发放的积分
+     */
+    private Integer orderScore;
+
+    /**
+     * 重发状态,0:等待重发 1:重发成功 2:重发失败 3:无需重发
+     */
+    private String resendStatus;
+
+    /**
+     * 最后一次重发时间
+     */
+    private Date lastResendTime;
+
+    private Date createTime;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Date getConsumeDate() {
+        return consumeDate;
+    }
+
+    public void setConsumeDate(Date consumeDate) {
+        this.consumeDate = consumeDate;
+    }
+
+    public BigDecimal getOrderAmount() {
+        return orderAmount;
+    }
+
+    public void setOrderAmount(BigDecimal orderAmount) {
+        this.orderAmount = orderAmount;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Integer getOrderScore() {
+        return orderScore;
+    }
+
+    public void setOrderScore(Integer orderScore) {
+        this.orderScore = orderScore;
+    }
+
+    public String getResendStatus() {
+        return resendStatus;
+    }
+
+    public void setResendStatus(String resendStatus) {
+        this.resendStatus = resendStatus;
+    }
+
+    public Date getLastResendTime() {
+        return lastResendTime;
+    }
+
+    public void setLastResendTime(Date lastResendTime) {
+        this.lastResendTime = lastResendTime;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String toString() {
+        return "HaiKongMemberOrderSyncResendEntity{" +
+                "id=" + id +
+                ", openId='" + openId + '\'' +
+                ", phone='" + phone + '\'' +
+                ", consumeDate=" + consumeDate +
+                ", orderAmount=" + orderAmount +
+                ", orderNo='" + orderNo + '\'' +
+                ", orderScore=" + orderScore +
+                ", resendStatus='" + resendStatus + '\'' +
+                ", lastResendTime=" + lastResendTime +
+                ", createTime=" + createTime +
+                '}';
+    }
+}

+ 160 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/haikong/HaiKongMemberScoreChangeRecordEntity.java

@@ -0,0 +1,160 @@
+package com.kmall.admin.entity.haikong;
+
+import java.util.Date;
+
+/**
+ * 会员积分变动记录
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public class HaiKongMemberScoreChangeRecordEntity {
+
+    private Long id;
+
+    private String openId;
+
+    /**
+     * 变动的积分数量
+     */
+    private Integer score;
+
+    /**
+     * 外部订单号(kmall订单号)
+     */
+    private String outBizNo;
+
+    /**
+     * 变动描述
+     */
+    private String changeReason;
+
+    /**
+     * 变动id,自定义生成
+     */
+    private String changeId;
+
+    /**
+     * 变动事件,增 or 减
+     * {@link com.kmall.admin.haikong.constant.HaiKoneMemberScoreChangeEventEnum}
+     */
+    private String changeEvent;
+
+    /**
+     * 积分变动流水id,请求成功才返回
+     */
+    private String statementId;
+
+    private Date createTime;
+
+    private Date modifyTime;
+
+    /**
+     * 重发状态,0:等待重发 1:重发成功 2:重发失败 3:无需重发
+     */
+    private String resendStatus;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public Integer getScore() {
+        return score;
+    }
+
+    public void setScore(Integer score) {
+        this.score = score;
+    }
+
+    public String getOutBizNo() {
+        return outBizNo;
+    }
+
+    public void setOutBizNo(String outBizNo) {
+        this.outBizNo = outBizNo;
+    }
+
+    public String getChangeReason() {
+        return changeReason;
+    }
+
+    public void setChangeReason(String changeReason) {
+        this.changeReason = changeReason;
+    }
+
+    public String getChangeId() {
+        return changeId;
+    }
+
+    public void setChangeId(String changeId) {
+        this.changeId = changeId;
+    }
+
+    public String getChangeEvent() {
+        return changeEvent;
+    }
+
+    public void setChangeEvent(String changeEvent) {
+        this.changeEvent = changeEvent;
+    }
+
+    public String getStatementId() {
+        return statementId;
+    }
+
+    public void setStatementId(String statementId) {
+        this.statementId = statementId;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getModifyTime() {
+        return modifyTime;
+    }
+
+    public void setModifyTime(Date modifyTime) {
+        this.modifyTime = modifyTime;
+    }
+
+    public String getResendStatus() {
+        return resendStatus;
+    }
+
+    public void setResendStatus(String resendStatus) {
+        this.resendStatus = resendStatus;
+    }
+
+    @Override
+    public String toString() {
+        return "HaiKongMemberScoreChangeRecordEntity{" +
+                "id=" + id +
+                ", openId='" + openId + '\'' +
+                ", score=" + score +
+                ", outBizNo='" + outBizNo + '\'' +
+                ", changeReason='" + changeReason + '\'' +
+                ", changeId='" + changeId + '\'' +
+                ", changeEvent='" + changeEvent + '\'' +
+                ", statementId='" + statementId + '\'' +
+                ", resendStatus='" + resendStatus + '\'' +
+                ", createTime=" + createTime +
+                ", modifyTime=" + modifyTime +
+                '}';
+    }
+}

+ 44 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/constant/HaiKongMemberOrderResendStatusEnum.java

@@ -0,0 +1,44 @@
+package com.kmall.admin.haikong.constant;
+
+/**
+ * 重发状态枚举类
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public enum HaiKongMemberOrderResendStatusEnum {
+    /**
+     * 未重发
+     */
+    WAIT_RESEND("0", "等待重发"),
+    /**
+     * 重发成功
+     */
+    RESEND_SUCCESS("1", "重发成功"),
+    /**
+     * 重发失败
+     */
+    RESEND_FAILED("2", "重发失败"),
+    /**
+     * 无需重发
+     */
+    NON_RESEND("3", "无需重发")
+    ;
+
+
+    private final String status;
+
+    private final String desc;
+
+    HaiKongMemberOrderResendStatusEnum(String status, String desc) {
+        this.status = status;
+        this.desc = desc;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 28 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/constant/HaiKongMemberScoreChangeEventEnum.java

@@ -0,0 +1,28 @@
+package com.kmall.admin.haikong.constant;
+
+/**
+ * 会员积分变动时间枚举
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public enum HaiKongMemberScoreChangeEventEnum {
+    /**
+     * 减
+     */
+    SUBTRACT("event_subtract"),
+    /**
+     * 增
+     */
+    ADD("event_add"),
+    ;
+
+    HaiKongMemberScoreChangeEventEnum(String event) {
+        this.event = event;
+    }
+
+    private final String event;
+
+    public String getEvent() {
+        return event;
+    }
+}

+ 14 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberInfoDTO.java

@@ -75,6 +75,11 @@ public class MemberInfoDTO implements Serializable {
      */
     private String rights;
 
+    /**
+     * 会员手机号
+     */
+    private String phone;
+
     public String getOpenId() {
         return openId;
     }
@@ -163,6 +168,14 @@ public class MemberInfoDTO implements Serializable {
         this.rights = rights;
     }
 
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
     @Override
     public String toString() {
         return "MemberInfoDTO{" +
@@ -177,6 +190,7 @@ public class MemberInfoDTO implements Serializable {
                 ", couponNum=" + couponNum +
                 ", birthday='" + birthday + '\'' +
                 ", rights='" + rights + '\'' +
+                ", phone='" + phone + '\'' +
                 '}';
     }
 }

+ 102 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberScoreChangeDTO.java

@@ -0,0 +1,102 @@
+package com.kmall.admin.haikong.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.io.Serializable;
+
+/**
+ * 会员积分变动
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public class MemberScoreChangeDTO implements Serializable {
+
+    private static final long serialVersionUID = -5010285119546582199L;
+
+    @JsonProperty("open_id")
+    private String openId;
+
+    private Integer score;
+
+    /**
+     * 外部订单号
+     */
+    @JsonProperty("out_biz_no")
+    private String outBizNo;
+
+    @JsonProperty("change_reason")
+    private String changeReason;
+
+    /**
+     * 积分变动事件,需要在会员平台注册事件,后以固定事件值进行积分变动提交
+     * event_add/event_subtract(增/减)
+     */
+    @JsonProperty("change_event")
+    private String changeEvent;
+
+    /**
+     * 渠道自定义积分变动唯一标识,用于平台幂等性保证
+     */
+    @JsonProperty("change_id")
+    private String changeId;
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public Integer getScore() {
+        return score;
+    }
+
+    public void setScore(Integer score) {
+        this.score = score;
+    }
+
+    public String getOutBizNo() {
+        return outBizNo;
+    }
+
+    public void setOutBizNo(String outBizNo) {
+        this.outBizNo = outBizNo;
+    }
+
+    public String getChangeReason() {
+        return changeReason;
+    }
+
+    public void setChangeReason(String changeReason) {
+        this.changeReason = changeReason;
+    }
+
+    public String getChangeEvent() {
+        return changeEvent;
+    }
+
+    public void setChangeEvent(String changeEvent) {
+        this.changeEvent = changeEvent;
+    }
+
+    public String getChangeId() {
+        return changeId;
+    }
+
+    public void setChangeId(String changeId) {
+        this.changeId = changeId;
+    }
+
+    @Override
+    public String toString() {
+        return "MemberScoreChangeDTO{" +
+                "openId='" + openId + '\'' +
+                ", score=" + score +
+                ", outBizNo='" + outBizNo + '\'' +
+                ", changeReason='" + changeReason + '\'' +
+                ", changeEvent='" + changeEvent + '\'' +
+                ", changeId='" + changeId + '\'' +
+                '}';
+    }
+}

+ 51 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberScoreChangeResponseDTO.java

@@ -0,0 +1,51 @@
+package com.kmall.admin.haikong.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+import java.io.Serializable;
+
+/**
+ * 会员积分变动接口响应
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public class MemberScoreChangeResponseDTO implements Serializable {
+
+    private static final long serialVersionUID = -5010285119546582259L;
+
+    /**
+     * 变动的积分数量
+     */
+    @JsonProperty("score_change")
+    private Integer scoreChange;
+
+    /**
+     * 积分变动流水id
+     */
+    @JsonProperty("statement_id")
+    private String statementId;
+
+    public Integer getScoreChange() {
+        return scoreChange;
+    }
+
+    public void setScoreChange(Integer scoreChange) {
+        this.scoreChange = scoreChange;
+    }
+
+    public String getStatementId() {
+        return statementId;
+    }
+
+    public void setStatementId(String statementId) {
+        this.statementId = statementId;
+    }
+
+    @Override
+    public String toString() {
+        return "MemberScoreChangeResponseDTO{" +
+                "scoreChange=" + scoreChange +
+                ", statementId='" + statementId + '\'' +
+                '}';
+    }
+}

+ 19 - 4
kmall-admin/src/main/java/com/kmall/admin/haikong/utils/ListUtils.java

@@ -1,10 +1,10 @@
 package com.kmall.admin.haikong.utils;
 
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.BeanWrapper;
+import org.springframework.beans.BeanWrapperImpl;
 
-import java.util.Comparator;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -20,9 +20,24 @@ public class ListUtils<T, E> {
             for (int i = 0; i < source.size(); i++) {
                 T o = source.get(i);
                 E t = target.get(i);
-                BeanUtils.copyProperties(o, t);
+                BeanUtils.copyProperties(o, t, getNullPropertyNames(o));
             }
         }
     }
 
+    private String[] getNullPropertyNames (Object source) {
+        final BeanWrapper src = new BeanWrapperImpl(source);
+        java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
+
+        Set<String> emptyNames = new HashSet<String>();
+        for(java.beans.PropertyDescriptor pd : pds) {
+            Object srcValue = src.getPropertyValue(pd.getName());
+            if (srcValue == null) {
+                emptyNames.add(pd.getName());
+            }
+        }
+        String[] result = new String[emptyNames.size()];
+        return emptyNames.toArray(result);
+    }
+
 }

+ 97 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/vo/CalculateOrderDiscountPriceResponseVO.java

@@ -14,6 +14,31 @@ public class CalculateOrderDiscountPriceResponseVO {
 
     private BigDecimal orderTotalPrice;
 
+    private String memberCode;
+
+    private String memberPhone;
+
+    /**
+     * 抵扣积分
+     */
+    private Integer deductionScore;
+
+    /**
+     * 积分抵扣金额
+     */
+    private BigDecimal scoreDeductionPrice;
+
+    /**
+     * 积分规则
+     */
+    private Integer scoreLimit;
+
+    private Integer beforeScore;
+
+    private Integer afterScore;
+
+    private String openId;
+
     private List<GoodsDetailsDto> goodsDetailsDtos;
 
     public BigDecimal getOrderTotalPrice() {
@@ -32,10 +57,82 @@ public class CalculateOrderDiscountPriceResponseVO {
         this.goodsDetailsDtos = goodsDetailsDtos;
     }
 
+    public String getMemberCode() {
+        return memberCode;
+    }
+
+    public void setMemberCode(String memberCode) {
+        this.memberCode = memberCode;
+    }
+
+    public String getMemberPhone() {
+        return memberPhone;
+    }
+
+    public void setMemberPhone(String memberPhone) {
+        this.memberPhone = memberPhone;
+    }
+
+    public Integer getDeductionScore() {
+        return deductionScore;
+    }
+
+    public void setDeductionScore(Integer deductionScore) {
+        this.deductionScore = deductionScore;
+    }
+
+    public BigDecimal getScoreDeductionPrice() {
+        return scoreDeductionPrice;
+    }
+
+    public void setScoreDeductionPrice(BigDecimal scoreDeductionPrice) {
+        this.scoreDeductionPrice = scoreDeductionPrice;
+    }
+
+    public Integer getScoreLimit() {
+        return scoreLimit;
+    }
+
+    public void setScoreLimit(Integer scoreLimit) {
+        this.scoreLimit = scoreLimit;
+    }
+
+    public Integer getBeforeScore() {
+        return beforeScore;
+    }
+
+    public void setBeforeScore(Integer beforeScore) {
+        this.beforeScore = beforeScore;
+    }
+
+    public Integer getAfterScore() {
+        return afterScore;
+    }
+
+    public void setAfterScore(Integer afterScore) {
+        this.afterScore = afterScore;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
     @Override
     public String toString() {
         return "CalculateOrderDiscountPriceResponseVO{" +
                 "orderTotalPrice=" + orderTotalPrice +
+                ", memberCode='" + memberCode + '\'' +
+                ", memberPhone='" + memberPhone + '\'' +
+                ", deductionScore=" + deductionScore +
+                ", scoreDeductionPrice=" + scoreDeductionPrice +
+                ", scoreLimit=" + scoreLimit +
+                ", beforeScore=" + beforeScore +
+                ", afterScore=" + afterScore +
+                ", openId=" + openId +
                 ", goodsDetailsDtos=" + goodsDetailsDtos +
                 '}';
     }

+ 89 - 3
kmall-admin/src/main/java/com/kmall/admin/haikong/vo/QueryGoodsVO.java

@@ -1,6 +1,7 @@
 package com.kmall.admin.haikong.vo;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.Objects;
 
 /**
@@ -11,6 +12,11 @@ import java.util.Objects;
 public class QueryGoodsVO {
 
     /**
+     * 商品id
+     */
+    private Long id;
+
+    /**
      * 商品条码
      */
     private String prodBarcode;
@@ -21,9 +27,19 @@ public class QueryGoodsVO {
     private String sku;
 
     /**
+     * 商户编号
+     */
+    private String merchSn;
+
+    /**
+     * 第三方商户编码
+     */
+    private String thirdPartyMerchCode;
+
+    /**
      * 门店id
      */
-    private Integer storeId;
+    private Long storeId;
 
     /**
      * 销售数
@@ -125,6 +141,22 @@ public class QueryGoodsVO {
      */
     private BigDecimal totalPrice;
 
+    /**
+     * 销售时间
+     */
+    private Date lastSaleTime;
+
+    /**
+     * 活动
+     */
+    private String activity;
+
+    /**
+     * 产品id
+     */
+    private String productId;
+
+
     public String getProdBarcode() {
         return prodBarcode;
     }
@@ -141,11 +173,11 @@ public class QueryGoodsVO {
         this.sku = sku;
     }
 
-    public Integer getStoreId() {
+    public Long getStoreId() {
         return storeId;
     }
 
-    public void setStoreId(Integer storeId) {
+    public void setStoreId(Long storeId) {
         this.storeId = storeId;
     }
 
@@ -309,11 +341,62 @@ public class QueryGoodsVO {
         this.totalPrice = totalPrice;
     }
 
+    public Date getLastSaleTime() {
+        return lastSaleTime;
+    }
+
+    public void setLastSaleTime(Date lastSaleTime) {
+        this.lastSaleTime = lastSaleTime;
+    }
+
+    public String getActivity() {
+        return activity;
+    }
+
+    public void setActivity(String activity) {
+        this.activity = activity;
+    }
+
+    public String getMerchSn() {
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getThirdPartyMerchCode() {
+        return thirdPartyMerchCode;
+    }
+
+    public void setThirdPartyMerchCode(String thirdPartyMerchCode) {
+        this.thirdPartyMerchCode = thirdPartyMerchCode;
+    }
+
+    public String getProductId() {
+        return productId;
+    }
+
+    public void setProductId(String productId) {
+        this.productId = productId;
+    }
+
     @Override
     public String toString() {
         return "QueryGoodsVO{" +
                 "prodBarcode='" + prodBarcode + '\'' +
                 ", sku='" + sku + '\'' +
+                ", merchSn='" + merchSn + '\'' +
+                ", id=" + id +
+                ", thirdPartyMerchCode='" + thirdPartyMerchCode + '\'' +
                 ", storeId=" + storeId +
                 ", sellVolume=" + sellVolume +
                 ", retailPrice=" + retailPrice +
@@ -334,7 +417,10 @@ public class QueryGoodsVO {
                 ", ciqProdModel='" + ciqProdModel + '\'' +
                 ", toBeRestored=" + toBeRestored +
                 ", exitRegionNumber=" + exitRegionNumber +
+                ", productId=" + productId +
                 ", totalPrice=" + totalPrice +
+                ", lastSaleTime=" + lastSaleTime +
+                ", activity='" + activity + '\'' +
                 '}';
     }
 

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java

@@ -243,4 +243,11 @@ public interface GoodsService {
      * @return              商品信息
      */
     GoodsEntity queryGoodsInfoByProductBarcodeAndSku(String prodBarcode, String sku);
+
+    /**
+     * 更新园区库存
+     * @param goodsEntity   商品实体
+     * @return              更新数
+     */
+    int updateStockNumberByProductCodeAndSku(GoodsEntity goodsEntity);
 }

+ 7 - 0
kmall-admin/src/main/java/com/kmall/admin/service/OrderGoodsService.java

@@ -3,6 +3,7 @@ package com.kmall.admin.service;
 import com.kmall.admin.dto.OrderGoodsDto;
 import com.kmall.admin.entity.OrderGoodsEntity;
 import com.kmall.api.entity.OrderGoodsRestoreVo;
+import com.kmall.api.entity.OrderGoodsVo;
 
 import java.util.List;
 import java.util.Map;
@@ -46,4 +47,10 @@ public interface OrderGoodsService {
 	 */
 	List<OrderGoodsRestoreVo> queryListByOrderIds(List<Integer> orderIdList);
 
+	/**
+	 * 批量新增订单详情
+	 * @param orderGoodsVos	订单详情
+	 */
+	void saveBatchOrderDetail(List<OrderGoodsVo> orderGoodsVos);
+
 }

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

@@ -157,4 +157,10 @@ public interface ProductStoreRelaService {
      * @param productStoreRelaEntities  门店库存信息
      */
     int restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
+
+    /**
+     * 更新库存
+     * @param productStoreRelaEntity    门店库存实体
+     */
+    void updateStockNum(ProductStoreRelaEntity productStoreRelaEntity);
 }

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

@@ -0,0 +1,38 @@
+package com.kmall.admin.service.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public interface HaiKongMemberOrderSyncResendService {
+
+    /**
+     * 按条件查询
+     * @param resendStatus   条件
+     * @return      实体
+     */
+    List<HaiKongMemberOrderSyncResendEntity> queryList(String resendStatus);
+
+    /**
+     * 批量更新状态
+     * @param entities  实体
+     */
+    void updateBatchResendStatus(List<HaiKongMemberOrderSyncResendEntity> entities);
+
+    /**
+     * 更新
+     * @param haiKongMemberOrderSyncResendEntity    更新的数据
+     */
+    void update(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity);
+
+    /**
+     * 新增
+     * @param haiKongMemberOrderSyncResendEntity    新增的数据
+     */
+    void save(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity);
+}

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

@@ -0,0 +1,29 @@
+package com.kmall.admin.service.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+public interface HaiKongMemberScoreChangeRecordService {
+
+    HaiKongMemberScoreChangeRecordEntity queryObjectByOutBizNo(String outBizNo);
+
+    HaiKongMemberScoreChangeRecordEntity queryObjectByOpenId(String openId);
+
+    Integer queryTotal();
+
+    List<HaiKongMemberScoreChangeRecordEntity> queryList();
+
+    void save(HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity);
+
+    void updateByOutBizNo(HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity);
+
+    void deleteByOutBizNo(String outBizNo);
+
+    void deleteBatchByOutBizNo(List<String> outBizNos);
+}

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -2768,4 +2768,9 @@ public class GoodsServiceImpl implements GoodsService {
     public GoodsEntity queryGoodsInfoByProductBarcodeAndSku(String prodBarcode, String sku) {
         return goodsDao.queryGoodsInfoByProductBarcodeAndSku(prodBarcode, sku);
     }
+
+    @Override
+    public int updateStockNumberByProductCodeAndSku(GoodsEntity goodsEntity) {
+        return goodsDao.updateStockNumberByProductCodeAndSku(goodsEntity);
+    }
 }

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

@@ -87,7 +87,7 @@ public class OfflineCartServiceImpl implements OfflineCartService {
             cartEntity.setMarketPrice(goods.getStoreMarketPrice());
             cartEntity.setRetailPrice(goods.getStoreRetailPrice());
             cartEntity.setNumber(1);
-            cartEntity.setStockNum(Integer.parseInt(goods.getStockNum()));
+            cartEntity.setStockNum(goods.getStockNum());
             cartEntity.setListPicUrl(goods.getListPicUrl());
             cartEntity.setStoreId(goods.getStoreId());
             cartEntity.setCreateTime(new Date());

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

@@ -5,6 +5,7 @@ import com.kmall.admin.dto.OrderGoodsDto;
 import com.kmall.admin.entity.OrderGoodsEntity;
 import com.kmall.admin.service.OrderGoodsService;
 import com.kmall.api.entity.OrderGoodsRestoreVo;
+import com.kmall.api.entity.OrderGoodsVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -82,4 +83,13 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
 		return orderGoodsDao.queryListByOrderIds(orderIdList);
 	}
 
+	/**
+	 * 批量新增订单详情
+	 *
+	 * @param orderGoodsVos 订单详情
+	 */
+	@Override
+	public void saveBatchOrderDetail(List<OrderGoodsVo> orderGoodsVos) {
+		orderGoodsDao.saveBatchOrderDetail(orderGoodsVos);
+	}
 }

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 315 - 431
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java


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

@@ -1295,4 +1295,14 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
     public ProductStoreRelaEntity getByStoreSnAndSku(String storeSn, String sku) {
         return productStoreRelaDao.getByStoreSnAndSku(storeSn,sku);
     }
+
+    /**
+     * 更新库存
+     *
+     * @param productStoreRelaEntity 门店库存实体
+     */
+    @Override
+    public void updateStockNum(ProductStoreRelaEntity productStoreRelaEntity) {
+        productStoreRelaDao.updateStockNum(productStoreRelaEntity);
+    }
 }

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

@@ -0,0 +1,62 @@
+package com.kmall.admin.service.impl.haikong;
+
+import com.kmall.admin.dao.haikong.HaiKongMemberOrderSyncResendDao;
+import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
+import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+@Service("haiKongMemberOrderSyncResendServiceImpl")
+public class HaiKongMemberOrderSyncResendServiceImpl implements HaiKongMemberOrderSyncResendService {
+
+    @Autowired
+    private HaiKongMemberOrderSyncResendDao haiKongMemberOrderSyncResendDao;
+
+    /**
+     * 按条件查询
+     *
+     * @param resendStatus 条件
+     * @return 实体
+     */
+    @Override
+    public List<HaiKongMemberOrderSyncResendEntity> queryList(String resendStatus) {
+        return haiKongMemberOrderSyncResendDao.queryList(resendStatus);
+    }
+
+    /**
+     * 批量更新状态
+     *
+     * @param entities 实体
+     */
+    @Override
+    public void updateBatchResendStatus(List<HaiKongMemberOrderSyncResendEntity> entities) {
+        haiKongMemberOrderSyncResendDao.updateBatchResendStatus(entities);
+    }
+
+    /**
+     * 更新
+     *
+     * @param haiKongMemberOrderSyncResendEntity 更新的数据
+     */
+    @Override
+    public void update(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity) {
+        haiKongMemberOrderSyncResendDao.update(haiKongMemberOrderSyncResendEntity);
+    }
+
+    /**
+     * 新增
+     *
+     * @param haiKongMemberOrderSyncResendEntity 新增的数据
+     */
+    @Override
+    public void save(HaiKongMemberOrderSyncResendEntity haiKongMemberOrderSyncResendEntity) {
+        haiKongMemberOrderSyncResendDao.save(haiKongMemberOrderSyncResendEntity);
+    }
+}

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

@@ -0,0 +1,61 @@
+package com.kmall.admin.service.impl.haikong;
+
+import com.kmall.admin.dao.haikong.HaiKongMemberScoreChangeRecordDao;
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
+import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 会员积分变动业务
+ * @author lhm
+ * @createDate 2021-11-30
+ */
+@Service("haiKongMemberScoreChangeRecordServiceImpl")
+public class HaiKongMemberScoreChangeRecordServiceImpl implements HaiKongMemberScoreChangeRecordService {
+
+    @Autowired
+    private HaiKongMemberScoreChangeRecordDao haiKongMemberScoreChangeRecordDao;
+
+    @Override
+    public HaiKongMemberScoreChangeRecordEntity queryObjectByOutBizNo(String outBizNo) {
+        return haiKongMemberScoreChangeRecordDao.queryObjectByOutBizNo(outBizNo);
+    }
+
+    @Override
+    public HaiKongMemberScoreChangeRecordEntity queryObjectByOpenId(String openId) {
+        return haiKongMemberScoreChangeRecordDao.queryObjectByOpenId(openId);
+    }
+
+    @Override
+    public Integer queryTotal() {
+        return haiKongMemberScoreChangeRecordDao.queryTotal();
+    }
+
+    @Override
+    public List<HaiKongMemberScoreChangeRecordEntity> queryList() {
+        return haiKongMemberScoreChangeRecordDao.queryList();
+    }
+
+    @Override
+    public void save(HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity) {
+        haiKongMemberScoreChangeRecordDao.save(haiKongMemberScoreChangeRecordEntity);
+    }
+
+    @Override
+    public void updateByOutBizNo(HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity) {
+        haiKongMemberScoreChangeRecordDao.updateByOutBizNo(haiKongMemberScoreChangeRecordEntity);
+    }
+
+    @Override
+    public void deleteByOutBizNo(String outBizNo) {
+        haiKongMemberScoreChangeRecordDao.deleteByOutBizNo(outBizNo);
+    }
+
+    @Override
+    public void deleteBatchByOutBizNo(List<String> outBizNos) {
+        haiKongMemberScoreChangeRecordDao.deleteBatchByOutBizNo(outBizNos);
+    }
+}

+ 29 - 29
kmall-admin/src/main/resources/conf/mq.properties

@@ -1,31 +1,31 @@
-# rabbitmq\u76F8\u5173\u914D\u7F6E req_20210826_001
-
-# \u5F00\u53D1\u73AF\u5883\u914D\u7F6E
-mq.host=127.0.0.1
-mq.username=guest
-mq.password=guest
-mq.port=5672
-mq.virtual.host=/
-
-# \u6D4B\u8BD5\u73AF\u5883mq\u76F8\u5173\u914D\u7F6E
+## rabbitmq\u76F8\u5173\u914D\u7F6E req_20210826_001
+#
+## \u5F00\u53D1\u73AF\u5883\u914D\u7F6E
+#mq.host=127.0.0.1
+#mq.username=guest
+#mq.password=guest
 #mq.port=5672
-#mq.host=120.24.174.90
-#mq.username=admin
-#mq.password=Abc-123#
 #mq.virtual.host=/
-
-# \u751F\u4EA7\u73AF\u5883mq\u76F8\u5173\u914D\u7F6E
-#mq.port=5672
-#mq.host=120.76.26.84
-#mq.username=admin
-#mq.password=Abc-123#
-#mq.virtual.host=/
-
-# \u901A\u7528\u914D\u7F6E
-mq.open=false
-mq.channel.cache.size=50
-
-# \u6E05\u5173\u65F6\u6548\u6027\u961F\u5217\u914D\u7F6E
-k.normal.oms.order.to.handle.customs.clearance=k.normal.oms.order.to.handle.customs.clearance
-q.normal.oms.order.to.handle.customs.clearance=q.normal.oms.order.to.handle.customs.clearance
-e.normal.oms.order.to.handle.customs.clearance=e.normal.oms.order.to.handle.customs.clearance
+#
+## \u6D4B\u8BD5\u73AF\u5883mq\u76F8\u5173\u914D\u7F6E
+##mq.port=5672
+##mq.host=120.24.174.90
+##mq.username=admin
+##mq.password=Abc-123#
+##mq.virtual.host=/
+#
+## \u751F\u4EA7\u73AF\u5883mq\u76F8\u5173\u914D\u7F6E
+##mq.port=5672
+##mq.host=120.76.26.84
+##mq.username=admin
+##mq.password=Abc-123#
+##mq.virtual.host=/
+#
+## \u901A\u7528\u914D\u7F6E
+#mq.open=false
+#mq.channel.cache.size=50
+#
+## \u6E05\u5173\u65F6\u6548\u6027\u961F\u5217\u914D\u7F6E
+#k.normal.oms.order.to.handle.customs.clearance=k.normal.oms.order.to.handle.customs.clearance
+#q.normal.oms.order.to.handle.customs.clearance=q.normal.oms.order.to.handle.customs.clearance
+#e.normal.oms.order.to.handle.customs.clearance=e.normal.oms.order.to.handle.customs.clearance

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

@@ -57,7 +57,7 @@
         <result property="supplierId" column="supplier_id"/>
         <result property="stockNum" column="stock_num"/>
         <result property="storeName" column="store_name"/>
-        <result property="productId" column="productId"/>
+        <result property="productId" column="product_id"/>
         <result property="storeId" column="storeId"/>
         <result column="merch_name" property="merchName"/>
         <result column="storeMarketPrice" property="storeMarketPrice"/>
@@ -1112,6 +1112,12 @@
             sku=#{item.sku}
         </foreach>
     </update>
+    <update id="updateStockNumberByProductCodeAndSku">
+        update mall_goods
+        set goods_number = #{goodsNumber}
+        where
+        prod_barcode = #{prodBarcode} and sku = #{sku}
+    </update>
 
     <select id="syncOmsHsCodeGoode" resultType="java.lang.String">
         select sku from mall_goods where id in
@@ -1142,7 +1148,7 @@
 
     <select id="queryGoodsStockByQueryGoodsVoList" resultType="com.kmall.admin.entity.GoodsEntity">
         SELECT
-            a.id,a.sku,a.goods_number,a.goods_sn,a.name,a.list_pic_url,a.prod_barcode,r.market_price storeMarketPrice, r.retail_price as retailPrice,r.retail_price storeRetailPrice ,r.stock_num,s.store_name,r.product_id,s.id 'storeId',a.goods_rate as goodsRate,
+            a.id,a.sku,a.goods_number,a.goods_sn,a.name,a.list_pic_url,a.prod_barcode,r.market_price storeMarketPrice, r.retail_price as retailPrice,r.retail_price storeRetailPrice ,r.stock_num,s.store_name,r.product_id as productId,s.id 'storeId',a.goods_rate as goodsRate,
             a.hs_code as hsCode , a.legal_unit1_qty as legalUnit1Qty , a.legal_unit2_qty as legalUnit2Qty,a.ciq_prod_model as ciqProdModel,a.to_be_restored, r.stock_num, r.exit_region_number as exitRegionNumber,
             a.category_id as categoryId, a.brand_id as brandId
         FROM

+ 62 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml

@@ -183,6 +183,68 @@
         </if>
         )
     </insert>
+    <insert id="saveBatchOrderDetail">
+        insert into mall_order_goods
+        (
+            `order_id`,
+            `goods_id`,
+            `goods_name`,
+            `goods_sn`,
+            `product_id`,
+            `number`,
+            `market_price`,
+            `retail_price`,
+            `discounted_price`,
+            `actual_payment_amount`,
+            `goods_specification_name_value`,
+            `is_real`,
+            `goods_specification_ids`,
+            `list_pic_url`,
+            `is_dist_sell_scan`,
+            `tax_price`,
+            `store_topic_id`,
+            `goods_rate`,
+            `settle_price`,
+            `sku`,
+            `order_biz_type`,
+            `activity`,
+            `creater_sn`,
+            `create_time`,
+            `moder_sn`,
+            `mod_time`
+        )
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+                #{item.order_id},
+                #{item.goods_id},
+                #{item.goods_name},
+                #{item.goods_sn},
+                #{item.product_id},
+                #{item.number},
+                #{item.market_price},
+                #{item.retail_price},
+                #{item.discountedPrice},
+                #{item.actualPaymentAmount},
+                #{item.goods_specification_name_value},
+                #{item.is_real},
+                #{item.goods_specification_ids},
+                #{item.list_pic_url},
+                0,
+                #{item.taxPrice},
+                #{item.storeTopicId},
+                #{item.goodsRate},
+                #{item.settlePrice},
+                #{item.sku,jdbcType=VARCHAR},
+                #{item.orderBizType,jdbcType=VARCHAR},
+                #{item.activity},
+                #{item.createrSn,jdbcType=VARCHAR},
+                #{item.createTime,jdbcType=TIMESTAMP},
+                #{item.moderSn,jdbcType=VARCHAR},
+                #{item.modTime,jdbcType=TIMESTAMP}
+            )
+        </foreach>
+    </insert>
 
 
     <update id="update" parameterType="com.kmall.admin.entity.OrderGoodsEntity">

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

@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kmall.admin.dao.haikong.HaiKongMemberOrderSyncResendDao">
+    <resultMap id="CommonResultMap" type="com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity">
+        <id column="id" property="id" />
+        <result column="order_no" property="orderNo" />
+        <result column="order_amount" property="orderAmount" />
+        <result column="member_score" property="orderScore" />
+        <result column="consume_date" property="consumeDate" />
+        <result column="open_id" property="openId" />
+        <result column="phone" property="phone" />
+        <result column="resend_status" property="resendStatus" />
+        <result column="last_resend_time" property="lastResendTime" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+
+    <select id="queryObject" resultType="com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity">
+        select *
+        from haikong_member_order_sync_resend
+        where haikong_member_order_sync_resend.id = #{id}
+    </select>
+
+    <select id="queryTotal" resultType="int">
+        select count(1)
+        from haikong_member_order_sync_resend
+    </select>
+
+    <select id="queryList" resultType="com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity">
+        select *
+        from haikong_member_order_sync_resend
+        WHERE 1=1
+        <if test="resendStatus != null and resendStatus.trim() != ''">
+            AND name LIKE concat('%',#{resendStatus},'%')
+        </if>
+    </select>
+
+    <insert id="save" parameterType="com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity" useGeneratedKeys="true" keyProperty="id">
+        insert into haikong_member_order_sync_resend(
+        `open_id`,
+        `phone`,
+        `consume_date`,
+        `order_amount`,
+        `order_no`,
+        `order_score`,
+        `resend_status`,
+        `last_resend_time`,
+        `create_time`)
+        values(
+        #{openId},
+        #{phone},
+        #{consumeDate},
+        #{orderAmount},
+        #{orderNo},
+        #{orderScore},
+        #{resendStatus},
+        #{lastResendTime},
+        #{createTime}
+    </insert>
+
+    <update id="update" parameterType="com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity">
+        update haikong_member_order_sync_resend
+        <set>
+            <if test="openId != null">`open_id` = #{openId}, </if>
+            <if test="phone != null">`phone` = #{phone}, </if>
+            <if test="consumeDate != null">`consume_date` = #{consumeDate}, </if>
+            <if test="orderAmount != null">`order_amount` = #{orderAmount}, </if>
+            <if test="orderNo != null">`order_no` = #{orderNo}, </if>
+            <if test="orderScore != null">`order_score` = #{orderScore}, </if>
+            <if test="resendStatus != null">`resend_status` = #{resendStatus}, </if>
+            <if test="lastResendTime != null">`last_resend_time` = #{lastResendTime}</if>
+            <if test="createTime != null">`create_time` = #{createTime}</if>
+        </set>
+        where id = #{id}
+    </update>
+
+    <update id="updateBatchResendStatus">
+        update haikong_member_order_sync_resend
+        <trim prefix="set" suffixOverrides=",">
+            resend_status =
+            <foreach collection="list" item="item" open="case " close=" end,">
+                when id = #{item.id} then #{item.resendStatus}
+            </foreach>
+        </trim>
+        where
+        <foreach collection="list" item="item" open="( " separator=") or (" close=" )">
+            id = #{item.id}
+        </foreach>
+    </update>
+
+    <delete id="delete">
+        delete from haikong_member_order_sync_resend where id = #{id}
+    </delete>
+
+    <delete id="deleteBatch">
+        delete from haikong_member_order_sync_resend where id in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+</mapper>

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

@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kmall.admin.dao.haikong.HaiKongMemberScoreChangeRecordDao">
+    <resultMap id="CommonResultMap" type="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity">
+        <id column="id" property="id" />
+        <result column="open_id" property="openId" />
+        <result column="score" property="score" />
+        <result column="out_biz_no" property="outBizNo" />
+        <result column="change_reason" property="changeReason" />
+        <result column="change_event" property="changeEvent" />
+        <result column="change_id" property="changeId" />
+        <result column="statement_id" property="statementId" />
+        <result column="modify_time" property="modifyTime" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+
+    <select id="queryObjectByOutBizNo" resultType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity">
+        select *
+        from haikong_member_score_change_record
+        where haikong_member_score_change_record.out_biz_no = #{outBizNo}
+    </select>
+
+    <select id="queryObjectByOpenId" resultType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity">
+        select *
+        from haikong_member_score_change_record
+        where haikong_member_score_change_record.open_id = #{openId}
+    </select>
+
+    <select id="queryTotal" resultType="int">
+        select count(1)
+        from haikong_member_score_change_record
+    </select>
+
+    <select id="queryList" resultType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity">
+        select *
+        from haikong_member_score_change_record
+    </select>
+
+    <insert id="save" parameterType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity" useGeneratedKeys="true" keyProperty="id">
+        insert into haikong_member_score_change_record(
+        `open_id`,
+        `score`,
+        `out_biz_no`,
+        `change_reason`,
+        `change_event`,
+        `change_id`,
+        `statement_id`,
+        `modify_time`,
+        `create_time`)
+        values(
+        #{openId},
+        #{score},
+        #{outBizNo},
+        #{changeReason},
+        #{changeId},
+        #{changeEvent},
+        #{statementId},
+        #{modifyTime},
+        #{createTime}
+    </insert>
+
+    <update id="updateByOutBizNo" parameterType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity">
+        update haikong_member_score_change_record
+        <set>
+            <if test="openId != null">`open_id` = #{openId}, </if>
+            <if test="score != null">`score` = #{score}, </if>
+            <if test="outBizNo != null">`out_biz_no` = #{outBizNo}, </if>
+            <if test="changeReason != null">`change_reason` = #{changeReason}, </if>
+            <if test="changeId != null">`change_id` = #{changeId}, </if>
+            <if test="changeEvent != null">`change_event` = #{changeEvent}, </if>
+            <if test="statementId != null">`statement_id` = #{statementId}, </if>
+            <if test="modifyTime != null">`modify_time` = #{modifyTime}</if>
+            <if test="createTime != null">`create_time` = #{createTime}</if>
+        </set>
+        where out_biz_no = #{outBizNo}
+    </update>
+
+    <delete id="deleteByOutBizNo">
+        delete from haikong_member_score_change_record where out_biz_no = #{outBizNo}
+    </delete>
+
+    <delete id="deleteBatchByOutBizNo">
+        delete from haikong_member_score_change_record where out_biz_no in
+        <foreach item="item" collection="list" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </delete>
+
+</mapper>

+ 1 - 1
kmall-admin/src/main/resources/mybatis/mapper/haikong/ScoreConsumeRecordDao.xml

@@ -24,7 +24,7 @@
         from mall_score_consume_record
     </select>
 
-    <select id="queryList" resultType="com.kmall.admin.entity.AdPositionEntity">
+    <select id="queryList" resultType="com.kmall.admin.entity.haikong.ScoreConsumeRecord">
         select *
         from mall_score_consume_record
         WHERE 1=1

+ 33 - 2
kmall-admin/src/main/webapp/js/sale/sale.js

@@ -591,8 +591,23 @@ let vm = new Vue({
         canRefund:true,
         openSku:false,
         // 保存商品详情的list
-        calGoodsList : []
-
+        calGoodsList : [],
+        // 会员码
+        memberCode: '',
+        // 会员手机
+        memberPhone: '',
+        // 订单抵扣积分
+        deductionScore: '',
+        // 积分抵扣金额
+        scoreDeductionPrice: '',
+        // 积分抵扣金额
+        scoreLimit: 0,
+        // 抵扣前积分
+        beforeScore: 0,
+        // 抵扣后积分
+        afterScore: 0,
+        // 会员openid
+        openId: ''
     },
     watch: {
         prodBarcode (){
@@ -1944,6 +1959,14 @@ function toPayOrder(payCode){
                  'goodsList':vm.goodsList,
                  'sessionId':vm.sessionId,
                  'machineCode':vm.machineCode,
+                 'memberCode': vm.memberCode,
+                 'memberPhone': vm.memberPhone,
+                 'deductionScore': vm.deductionScore,
+                 'scoreDeductionPrice': vm.scoreDeductionPrice,
+                 'scoreLimit': vm.scoreLimit,
+                 'beforeScore': vm.beforeScore,
+                 'afterScore': vm.afterScore,
+                 'openId': vm.openId,
                  'cmbProvince':cmbProvince,
                  'cmbCity':cmbCity,
                  'cmbArea':cmbArea,
@@ -2031,6 +2054,14 @@ calculateOrderPrice = function() {
                 vm.goodsList.clear();
                 calGoodsList.forEach(goods => vm.goodsList.push(goods));
                 vm.actualPrice = r.data.orderTotalPrice;
+                vm.memberCode = r.data.memberCode;
+                vm.memberPhone = r.data.memberPhone;
+                vm.openId = r.data.openId;
+                vm.deductionScore = r.data.deductionScore;
+                vm.scoreDeductionPrice = r.data.scoreDeductionPrice;
+                vm.scoreLimit = r.data.scoreLimit;
+                vm.beforeScore = r.data.beforeScore;
+                vm.afterScore = r.data.afterScore;
                 console.log("计算后数据===>" + JSON.stringify(calGoodsList));
                 console.log("替换后数据===>" + JSON.stringify(vm.goodsList));
 

+ 13 - 9
kmall-admin/src/test/java/com/kmall/admin/Test.java

@@ -1,9 +1,13 @@
 package com.kmall.admin;
 
+import com.fasterxml.jackson.core.type.TypeReference;
 import com.kmall.admin.entity.GoodsEntity;
+import com.kmall.admin.haikong.dto.MemberInfoDTO;
 import com.kmall.admin.haikong.utils.ListUtils;
-import com.kmall.admin.haikong.vo.QueryGoodsVo;
+import com.kmall.admin.haikong.utils.Response;
+import com.kmall.admin.haikong.vo.QueryGoodsVO;
 import com.kmall.admin.service.GoodsService;
+import com.kmall.admin.utils.jackson.JacksonUtil;
 import org.junit.runner.RunWith;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -36,20 +40,20 @@ public class Test {
     public void testQueryGoodsStockByQueryGoodsVoList() {
         ListUtils listUtils = BeanUtils.instantiate(ListUtils.class);
 
-        List<QueryGoodsVo> list = new ArrayList<>();
+        List<QueryGoodsVO> list = new ArrayList<>();
 
-        QueryGoodsVo queryGoodsVo = new QueryGoodsVo();
-        queryGoodsVo.setStoreId(171);
+        QueryGoodsVO queryGoodsVo = new QueryGoodsVO();
+        queryGoodsVo.setStoreId(171L);
         queryGoodsVo.setSku("ISZWCW50466");
         queryGoodsVo.setProdBarcode("9421033250865");
 
-        QueryGoodsVo queryGoodsVo1 = new QueryGoodsVo();
-        queryGoodsVo1.setStoreId(163);
-        queryGoodsVo1.setSku("ISZWCW50466");
-        queryGoodsVo1.setProdBarcode("9421033250865");
+        QueryGoodsVO queryGoodsVO1 = new QueryGoodsVO();
+        queryGoodsVO1.setStoreId(163L);
+        queryGoodsVO1.setSku("ISZWCW50466");
+        queryGoodsVO1.setProdBarcode("9421033250865");
 
         list.add(queryGoodsVo);
-        list.add(queryGoodsVo1);
+        list.add(queryGoodsVO1);
 
         List<GoodsEntity> goodsEntityList = goodsService.queryGoodsStockByQueryGoodsVoList(list);
 

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov