1
0
Просмотр исходного кода

Merge remote-tracking branch 'upsteam/master' into dev

zhh 3 лет назад
Родитель
Сommit
605392797d
83 измененных файлов с 3441 добавлено и 699 удалено
  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. 12 11
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java
  7. 7 6
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderProcessRecordExternalController.java
  8. 1 1
      kmall-admin/src/main/java/com/kmall/admin/controller/vip/Mall2PointsRulesController.java
  9. 7 0
      kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java
  10. 12 0
      kmall-admin/src/main/java/com/kmall/admin/dao/HaiKongResendMsgDao.java
  11. 3 1
      kmall-admin/src/main/java/com/kmall/admin/dao/MallVmcSendLogDao.java
  12. 7 0
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderGoodsDao.java
  13. 3 2
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderProcessRecordDao.java
  14. 1 1
      kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java
  15. 69 0
      kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberOrderSyncResendDao.java
  16. 42 0
      kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberScoreChangeRecordDao.java
  17. 17 5
      kmall-admin/src/main/java/com/kmall/admin/dto/TemporaryPromotionalItemsDto.java
  18. 4 4
      kmall-admin/src/main/java/com/kmall/admin/entity/GoodsEntity.java
  19. 55 0
      kmall-admin/src/main/java/com/kmall/admin/entity/HaiKongResendMsgEntity.java
  20. 23 12
      kmall-admin/src/main/java/com/kmall/admin/entity/MkActivitiesPromotionEntity.java
  21. 10 0
      kmall-admin/src/main/java/com/kmall/admin/entity/MngChangeEntity.java
  22. 12 0
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderProcessRecordEntity.java
  23. 1 1
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderProcessRecordHkEntity.java
  24. 757 0
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderProcessRecordHkNewEntity.java
  25. 8 0
      kmall-admin/src/main/java/com/kmall/admin/entity/ProductStoreRelaEntity.java
  26. 10 0
      kmall-admin/src/main/java/com/kmall/admin/entity/StoreMngChangeEntity.java
  27. 26 0
      kmall-admin/src/main/java/com/kmall/admin/entity/UserEntity.java
  28. 165 0
      kmall-admin/src/main/java/com/kmall/admin/entity/haikong/HaiKongMemberOrderSyncResendEntity.java
  29. 162 0
      kmall-admin/src/main/java/com/kmall/admin/entity/haikong/HaiKongMemberScoreChangeRecordEntity.java
  30. 30 0
      kmall-admin/src/main/java/com/kmall/admin/entity/haikong/IntegralGoBackEntity.java
  31. 22 0
      kmall-admin/src/main/java/com/kmall/admin/entity/vip/Mall2PointsRulesEntity.java
  32. 17 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/client/HaiKongMemberTemplate.java
  33. 26 26
      kmall-admin/src/main/java/com/kmall/admin/haikong/client/VmcShopTemplate.java
  34. 1 1
      kmall-admin/src/main/java/com/kmall/admin/haikong/config/HaiKongConfig.java
  35. 44 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/constant/HaiKongMemberOrderResendStatusEnum.java
  36. 28 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/constant/HaiKongMemberScoreChangeEventEnum.java
  37. 14 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberInfoDTO.java
  38. 102 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberScoreChangeDTO.java
  39. 51 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/dto/MemberScoreChangeResponseDTO.java
  40. 88 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberOrderSyncResendTask.java
  41. 88 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/task/MemberScoreChangeResendTask.java
  42. 19 4
      kmall-admin/src/main/java/com/kmall/admin/haikong/utils/ListUtils.java
  43. 9 6
      kmall-admin/src/main/java/com/kmall/admin/haikong/utils/Message.java
  44. 97 0
      kmall-admin/src/main/java/com/kmall/admin/haikong/vo/CalculateOrderDiscountPriceResponseVO.java
  45. 89 3
      kmall-admin/src/main/java/com/kmall/admin/haikong/vo/QueryGoodsVO.java
  46. 7 0
      kmall-admin/src/main/java/com/kmall/admin/service/GoodsService.java
  47. 7 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderGoodsService.java
  48. 2 1
      kmall-admin/src/main/java/com/kmall/admin/service/OrderProcessRecordService.java
  49. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java
  50. 6 0
      kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java
  51. 42 0
      kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberOrderSyncResendService.java
  52. 40 0
      kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberScoreChangeRecordService.java
  53. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  54. 4 2
      kmall-admin/src/main/java/com/kmall/admin/service/impl/MkActivitiesPromotionServiceImpl.java
  55. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OfflineCartServiceImpl.java
  56. 10 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderGoodsServiceImpl.java
  57. 27 9
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderProcessRecordServiceImpl.java
  58. 296 453
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  59. 10 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java
  60. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberOrderSyncResendServiceImpl.java
  61. 80 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberScoreChangeRecordServiceImpl.java
  62. 3 2
      kmall-admin/src/main/resources/XmlTemplate/TemporaryPromotionalItemsDtoList.xml
  63. 29 29
      kmall-admin/src/main/resources/conf/mq.properties
  64. 8 2
      kmall-admin/src/main/resources/mybatis/mapper/GoodsDao.xml
  65. 32 0
      kmall-admin/src/main/resources/mybatis/mapper/HaiKongResendMsgDao.xml
  66. 19 10
      kmall-admin/src/main/resources/mybatis/mapper/MkActivitiesPromotionDao.xml
  67. 4 2
      kmall-admin/src/main/resources/mybatis/mapper/MngChangeDao.xml
  68. 62 0
      kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml
  69. 124 26
      kmall-admin/src/main/resources/mybatis/mapper/OrderProcessRecordDao.xml
  70. 2 2
      kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml
  71. 4 2
      kmall-admin/src/main/resources/mybatis/mapper/StoreMngChangeDao.xml
  72. 131 0
      kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberOrderSyncResendDao.xml
  73. 132 0
      kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberScoreChangeRecordDao.xml
  74. 1 1
      kmall-admin/src/main/resources/mybatis/mapper/haikong/ScoreConsumeRecordDao.xml
  75. 6 1
      kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2PointsRulesDao.xml
  76. 5 2
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivitiespromotion.html
  77. 20 13
      kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html
  78. 12 5
      kmall-admin/src/main/webapp/WEB-INF/page/vip/mall2pointsrules.html
  79. 10 1
      kmall-admin/src/main/webapp/js/mk/mkactivitiespromotion.js
  80. 39 15
      kmall-admin/src/main/webapp/js/sale/sale.js
  81. 15 10
      kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js
  82. BIN
      kmall-admin/src/main/webapp/statics/file/activities_promotion_yyyy_mm_dd_v1.0.0.xlsx
  83. 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());
     }

+ 12 - 11
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -302,10 +302,17 @@ public class OrderController {
 
     @RequestMapping("/printMsgAndChangeCode")
     public R printMsgAndChangeCode(@RequestBody Map param) {
-        Integer id = (Integer) param.get("id");
-        String sessionId = (String) param.get("sessionId");
-        Ticket ticket = orderService.printMsg(id.longValue(),sessionId);
+        Ticket ticket = null;
+        try{
+            Integer id = (Integer) param.get("id");
+            String sessionId = (String) param.get("sessionId");
+             ticket = orderService.printMsg(id.longValue(),sessionId);
+            return R.ok().put("ticket", ticket);
+        }catch (Exception e){
+            logger.error("[printMsgAndChangeCode-----核销小票打印失败]",e);
+        }
         return R.ok().put("ticket", ticket);
+
     }
 
     /**
@@ -333,11 +340,6 @@ public class OrderController {
         return R.ok().put("ticket", map);
     }
 
-
-
-
-
-
     /**
      * 订单取消请求
      */
@@ -1088,10 +1090,9 @@ public class OrderController {
             return orderService.orderRefund(orderInfo,sessionId,user);
         } catch (Exception e) {
             e.printStackTrace();
-            logger.error("[海控退款异常]"+orderInfo.getOrderSn());
+            logger.error("[orderHkRefund-----海控退款异常]"+orderInfo.getOrderSn(),e);
+            return R.error(500,"退款失败");
         }
-        return R.ok();
-
     }
 
     @RequestMapping("/resendOrderToCCNET/{orderSn}/{resendType}")

+ 7 - 6
kmall-admin/src/main/java/com/kmall/admin/controller/OrderProcessRecordExternalController.java

@@ -3,6 +3,7 @@ package com.kmall.admin.controller;
 import com.alibaba.fastjson.JSON;
 import com.kmall.admin.entity.OrderProcessRecordEntity;
 import com.kmall.admin.entity.OrderProcessRecordHkEntity;
+import com.kmall.admin.entity.OrderProcessRecordHkNewEntity;
 import com.kmall.admin.fromcomm.service.SysConfigService;
 import com.kmall.admin.haikong.utils.Message;
 import com.kmall.admin.haikong.utils.OutRequestMessage;
@@ -50,14 +51,14 @@ public class OrderProcessRecordExternalController {
             String key = sysConfigService.getValueHk("HK_NOTICE_KEY");
             Integer dataNum = Integer.valueOf(sysConfigService.getValueHk("HK_NOTICE_NUM"));
             if(strSign.equals("")||timestamp.equals("")){
-                return Message.success(false,"参数错误");
+                return Message.error("参数错误");
             }
             if(!strSign.equals(checkMsg(timestamp,key))){
-                return Message.success(false,"签名错误");
+                return Message.error("签名错误");
             }
-            List<OrderProcessRecordEntity> orderProcessRecordList = orderProcessRecordHkEntity.getRecordHkList();
+            List<OrderProcessRecordHkNewEntity> orderProcessRecordList = orderProcessRecordHkEntity.getRecordHkList();
             if(orderProcessRecordList.size()>dataNum){
-                return Message.success(false,"通知数据最多"+dataNum+"条,请分批通知");
+                return Message.error("通知数据最多"+dataNum+"条,请分批通知");
             }
             // 根据指定属性分组,并统计数量(key:指定属性,value:数量)
             Map<Object, Long> mapGroup = orderProcessRecordList.stream().collect(Collectors.groupingBy(recordEntity -> recordEntity.getOrderSn(), Collectors.counting()));
@@ -65,12 +66,12 @@ public class OrderProcessRecordExternalController {
             Stream<Object> stringStream = mapGroup.entrySet().stream().filter(entry -> entry.getValue() > 1).map(entry -> entry.getKey());
             Long num = stringStream.count();
             if(num>0L){
-                return Message.success(false,"订单数据存在重复");
+                return Message.error("订单数据存在重复");
             }
             return orderProcessRecordService.saveHkNoticeMsg(orderProcessRecordList);
         }catch (Exception e){
             logger.error("hknoticeMsg---订单流转信息回调通知接口数据="+ JSON.toJSONString(outRequestMessage),e);
-            return Message.success(false,"参数错误");
+            return Message.error("参数错误");
         }
     }
 

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/controller/vip/Mall2PointsRulesController.java

@@ -60,7 +60,7 @@ public class Mall2PointsRulesController {
     @ResponseBody
     public R info(@PathVariable("mprId") Integer mprId) {
         Mall2PointsRulesEntity mall2PointsRules = mall2PointsRulesService.queryObject(mprId);
-
+        mall2PointsRules.setPointsTypeStr(mall2PointsRules.getPointsType()+"");
         return R.ok().put("mall2PointsRules", mall2PointsRules);
     }
 

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

+ 12 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/HaiKongResendMsgDao.java

@@ -0,0 +1,12 @@
+package com.kmall.admin.dao;
+
+import com.kmall.admin.entity.HaiKongResendMsgEntity;
+
+public interface HaiKongResendMsgDao {
+
+    /**
+     * 保存重发信息
+     * @param haiKongResendMsgEntity
+     */
+    public void saveResendMsg(HaiKongResendMsgEntity haiKongResendMsgEntity);
+}

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

@@ -1,11 +1,13 @@
 package com.kmall.admin.dao;
 
+import com.kmall.admin.entity.MallVmcSendlogEntity;
+
 public interface MallVmcSendLogDao {
 
     /**
      * 新增免税mall请求日志
      * @param mallVmcSendlogEntity
      */
-    public void saveVmcSend(com.kmall.admin.entity.MallVmcSendlogEntity mallVmcSendlogEntity);
+    public void saveVmcSend(MallVmcSendlogEntity mallVmcSendlogEntity);
 
 }

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

+ 3 - 2
kmall-admin/src/main/java/com/kmall/admin/dao/OrderProcessRecordDao.java

@@ -1,6 +1,7 @@
 package com.kmall.admin.dao;
 
 import com.kmall.admin.entity.OrderProcessRecordEntity;
+import com.kmall.admin.entity.OrderProcessRecordHkNewEntity;
 import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
@@ -19,7 +20,7 @@ public interface OrderProcessRecordDao extends BaseDao<OrderProcessRecordEntity>
 
     List<OrderProcessRecordEntity> queryListBySendSmsStatus(@Param("customsSendSmsStatus") String customsSendSmsStatus);
 
-    void updateHkNoticeMsg(List<OrderProcessRecordEntity> orderProcessRecordList);
+    void updateHkNoticeMsg(List<OrderProcessRecordHkNewEntity> orderProcessRecordList);
 
-    Integer queryHkOrderTotal(List<OrderProcessRecordEntity> orderProcessRecordList);
+    Integer queryHkOrderTotal(List<OrderProcessRecordHkNewEntity> orderProcessRecordList);
 }

+ 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);
 

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

@@ -0,0 +1,69 @@
+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);
+
+    List<HaiKongMemberOrderSyncResendEntity> queryListByResendStatus();
+
+    void updateResendStatusBatch(List<HaiKongMemberOrderSyncResendEntity> entities);
+}

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

@@ -0,0 +1,42 @@
+package com.kmall.admin.dao.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
+import com.kmall.admin.entity.haikong.IntegralGoBackEntity;
+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);
+
+    IntegralGoBackEntity queryIntegralGoBack(String orderSn);
+
+
+    List<HaiKongMemberScoreChangeRecordEntity> queryListByResendStatus();
+
+    /**
+     * 批量更新重发状态
+     */
+    void updateResendStatusBatch(List<HaiKongMemberScoreChangeRecordEntity> entities);
+
+}

+ 17 - 5
kmall-admin/src/main/java/com/kmall/admin/dto/TemporaryPromotionalItemsDto.java

@@ -13,12 +13,16 @@ public class TemporaryPromotionalItemsDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private String storeId; // 门店编号
-    private String goodsSn; // 商品编码
+    private String sku; // 商品编码
     private String barCode; // 商品条码
     private String goodsName; // 产品名称
     private String goodsEnglishName; // 产品英文名称
     private String daliyPrice; // 日常价格
     private String activitiesPrice; // 活动价格
+    /**
+     * 是否参与积分抵扣,0:参与 1:不参与
+     */
+    private String rejectScore;
     private String deadline; // 截止日期
 
 
@@ -30,12 +34,12 @@ public class TemporaryPromotionalItemsDto implements Serializable {
         this.storeId = storeId;
     }
 
-    public String getGoodsSn() {
-        return goodsSn;
+    public String getSku() {
+        return sku;
     }
 
-    public void setGoodsSn(String goodsSn) {
-        this.goodsSn = goodsSn;
+    public void setSku(String sku) {
+        this.sku = sku;
     }
 
     public String getBarCode() {
@@ -85,4 +89,12 @@ public class TemporaryPromotionalItemsDto implements Serializable {
     public void setDeadline(String deadline) {
         this.deadline = deadline;
     }
+
+    public String getRejectScore() {
+        return rejectScore;
+    }
+
+    public void setRejectScore(String rejectScore) {
+        this.rejectScore = rejectScore;
+    }
 }

+ 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;
     }
 

+ 55 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/HaiKongResendMsgEntity.java

@@ -0,0 +1,55 @@
+package com.kmall.admin.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 接口重发实体类
+ */
+@Data
+public class HaiKongResendMsgEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    private Integer id;
+    /**
+     * 会员唯一标识
+     */
+    private String openId;
+    /**
+     * 订单编号
+     */
+    private String orderSn;
+    /**
+     * 接口类型
+     */
+    private String interfaceType;
+    /**
+     * 请求信息
+     */
+    private String requestMsg;
+    /**
+     * 响应信息
+     */
+    private String responseMsg;
+    /**
+     * 重发次数
+     */
+    private Integer resendNum;
+    /**
+     * 重发时间
+     */
+    private Date resendTime;
+    /**
+     * 最后重发时间
+     */
+    private Date lastResendTime;
+    /**
+     * 是否重发:1重发;2不重发
+     */
+    private Integer isValid;
+}

+ 23 - 12
kmall-admin/src/main/java/com/kmall/admin/entity/MkActivitiesPromotionEntity.java

@@ -32,9 +32,9 @@ public class MkActivitiesPromotionEntity implements Serializable {
      */
     private String shopSn;
     /**
-     * 商品编码
+     * sku
      */
-    private String goodsSn;
+    private String sku;
     /**
      * 条形码
      */
@@ -51,6 +51,12 @@ public class MkActivitiesPromotionEntity implements Serializable {
      * 营销活动编号
      */
     private Long mkaId;
+
+    /**
+     * 是否与积分抵扣互斥,0:不互斥 1:互斥
+     */
+    private String rejectScore;
+
     /**
      * 截止日期
      */
@@ -124,19 +130,15 @@ public class MkActivitiesPromotionEntity implements Serializable {
     public String getShopSn() {
         return shopSn;
     }
-    /**
-     * 设置:商品编码
-     */
-    public void setGoodsSn(String goodsSn) {
-        this.goodsSn = goodsSn;
+
+    public String getSku() {
+        return sku;
     }
 
-    /**
-     * 获取:商品编码
-     */
-    public String getGoodsSn() {
-        return goodsSn;
+    public void setSku(String sku) {
+        this.sku = sku;
     }
+
     /**
      * 设置:条形码
      */
@@ -189,6 +191,15 @@ public class MkActivitiesPromotionEntity implements Serializable {
     public Long getMkaId() {
         return mkaId;
     }
+
+    public String getRejectScore() {
+        return rejectScore;
+    }
+
+    public void setRejectScore(String rejectScore) {
+        this.rejectScore = rejectScore;
+    }
+
     /**
      * 设置:截止日期
      */

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/MngChangeEntity.java

@@ -80,6 +80,8 @@ public class MngChangeEntity implements Serializable {
     private String merchName;
 
     private String thirdPartyMerchName;
+    //订单编号
+    private String orderSn;
 
     public String getGoodsName() {
         return goodsName;
@@ -300,4 +302,12 @@ public class MngChangeEntity implements Serializable {
     public Date getTstm() {
         return tstm;
     }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
 }

+ 12 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderProcessRecordEntity.java

@@ -210,6 +210,10 @@ public class OrderProcessRecordEntity implements Serializable {
      * 海关清关类型 ,1:放行:2:查验;3:清关失败; 4:其他
      */
     private String clearType;
+    /**
+     *海关清关结果
+     */
+    private String clearMsg;
 
     public String getCustomsSendSmsStatus() {
         return customsSendSmsStatus;
@@ -741,4 +745,12 @@ public class OrderProcessRecordEntity implements Serializable {
     public void setClearType(String clearType) {
         this.clearType = clearType;
     }
+
+    public String getClearMsg() {
+        return clearMsg;
+    }
+
+    public void setClearMsg(String clearMsg) {
+        this.clearMsg = clearMsg;
+    }
 }

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/entity/OrderProcessRecordHkEntity.java

@@ -10,5 +10,5 @@ public class OrderProcessRecordHkEntity implements Serializable{
 
     private static final long serialVersionUID = 1L;
 
-    List<OrderProcessRecordEntity> recordHkList;
+    List<OrderProcessRecordHkNewEntity> recordHkList;
 }

+ 757 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderProcessRecordHkNewEntity.java

@@ -0,0 +1,757 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 订单流转过程记录表实体
+ * 表名 mall_order_process_record
+ *
+ * @author huangyq
+ * @email admin@qhdswl.com
+ * @date 2018-10-30 17:05:03
+ */
+public class OrderProcessRecordHkNewEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    private Integer id;
+    /**
+     * 订单编号
+     */
+    private String orderSn;
+    /**
+     * 用户编号
+     */
+    private Integer userId;
+    /**
+     * 订单业务类型:00:保税备货, 02:保税展示补货,10:保税展示跨境,11:普通商品
+     */
+    private String orderBizType;
+    /**
+     * 下单开始时间
+     */
+    private Date addOrderStartTime;
+    /**
+     * 下单成功时间
+     */
+    private Date addOrderSuccTime;
+    /**
+     * 下单发送状态 0:失败;1:成功
+     */
+    private String isAddOrderSend;
+    /**
+     * 支付开始时间
+     */
+    private Date payStartTime;
+    /**
+     * 支付成功时间
+     */
+    private Date paySuccTime;
+    /**
+     * 支付单开始时间
+     */
+    private Date paymentStartTime;
+    /**
+     * 支付单成功时间
+     */
+    private Date paymentSuccTime;
+    /**
+     * 支付单状态 0:失败;1:成功;2:支付单单申报中
+     */
+    private String isPaymentSend;
+    /**
+     * 电子订单开始时间
+     */
+    private Date eleOrderStartTime;
+    /**
+     * 电子订单成功时间
+     */
+    private Date eleOrderSuccTime;
+    /**
+     * 电子订单状态 0:失败;1:成功;2:电子订单申报中
+     */
+    private String isEleOrderSend;
+    /**
+     * 运单开始时间
+     */
+    private Date waybillStartTime;
+    /**
+     * 运单成功时间
+     */
+    private Date waybillSuccTime;
+    /**
+     * 运单编号
+     */
+    private String logisticsNo;
+    /**
+     * 清单开始时间
+     */
+    private Date customsStartTime;
+
+    /**
+     * 清单成功时间string
+     */
+    private String customsSuccTime;
+    /**
+     * 清单编号
+     */
+    private String invtNo;
+    /**
+     * 清关状态 0:失败;1:成功;2:清关中
+     */
+    private String isCustomsSend;
+    /**
+     * 出货开始时间
+     */
+    private Date shipmentStartTime;
+    /**
+     * 出货成功时间
+     */
+    private Date shipmentSuccTime;
+    /**
+     * 订单流转信息
+     */
+    private String processContent;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    private String payTransactionId;
+
+    /**
+     * 下单开始时间
+     */
+    private String addOrderStartTimeStr;
+    /**
+     * 下单成功时间
+     */
+    private String addOrderSuccTimeStr;
+    /**
+     * 支付开始时间
+     */
+    private String payStartTimeStr;
+    /**
+     * 支付成功时间
+     */
+    private String paySuccTimeStr;
+    /**
+     * 支付单开始时间
+     */
+    private String paymentStartTimeStr;
+    /**
+     * 支付单成功时间
+     */
+    private String paymentSuccTimeStr;
+    /**
+     * 电子订单开始时间
+     */
+    private String eleOrderStartTimeStr;
+    /**
+     * 电子订单成功时间
+     */
+    private String eleOrderSuccTimeStr;
+    /**
+     * 运单开始时间
+     */
+    private String waybillStartTimeStr;
+    /**
+     * 运单成功时间
+     */
+    private String waybillSuccTimeStr;
+    /**
+     * 清单开始时间
+     */
+    private String customsStartTimeStr;
+    /**
+     * 清单成功时间
+     */
+    private String customsSuccTimeStr;
+    /**
+     * 出货开始时间
+     */
+    private String shipmentStartTimeStr;
+    /**
+     * 出货成功时间
+     */
+    private String shipmentSuccTimeStr;
+
+    private String payMobile;
+
+
+    private String customsSendSmsStatus;
+    /**
+     * 订单申报时间
+     */
+    private Date orderDeclarationTime;
+    /**
+     * 订单申报状态
+     */
+    private String orderDeclareStatus;
+    /**
+     * 快递公司简称
+     */
+    private String shippingCode;
+    /**
+     * 快递公司名称
+     */
+    private String shippingName;
+    /**
+     * 运单申报时间String
+     */
+    private String ewbStartTime;
+    /**
+     * 清单编号
+     */
+    private String clearNo;
+    /**
+     * 海关清关类型 ,1:放行:2:查验;3:清关失败; 4:其他
+     */
+    private String clearType;
+    /**
+     *海关清关结果
+     */
+    private String clearMsg;
+
+    public String getCustomsSendSmsStatus() {
+        return customsSendSmsStatus;
+    }
+
+    public void setCustomsSendSmsStatus(String customsSendSmsStatus) {
+        this.customsSendSmsStatus = customsSendSmsStatus;
+    }
+
+    public String getPayMobile() {
+        return payMobile;
+    }
+
+    public void setPayMobile(String payMobile) {
+        this.payMobile = payMobile;
+    }
+
+    public String getPayTransactionId() {
+        return payTransactionId;
+    }
+
+    public void setPayTransactionId(String payTransactionId) {
+        this.payTransactionId = payTransactionId;
+    }
+
+    public String getAddOrderStartTimeStr() {
+        return addOrderStartTimeStr;
+    }
+
+    public void setAddOrderStartTimeStr(String addOrderStartTimeStr) {
+        this.addOrderStartTimeStr = addOrderStartTimeStr;
+    }
+
+    public String getAddOrderSuccTimeStr() {
+        return addOrderSuccTimeStr;
+    }
+
+    public void setAddOrderSuccTimeStr(String addOrderSuccTimeStr) {
+        this.addOrderSuccTimeStr = addOrderSuccTimeStr;
+    }
+
+    public String getPayStartTimeStr() {
+        return payStartTimeStr;
+    }
+
+    public void setPayStartTimeStr(String payStartTimeStr) {
+        this.payStartTimeStr = payStartTimeStr;
+    }
+
+    public String getPaySuccTimeStr() {
+        return paySuccTimeStr;
+    }
+
+    public void setPaySuccTimeStr(String paySuccTimeStr) {
+        this.paySuccTimeStr = paySuccTimeStr;
+    }
+
+    public String getPaymentStartTimeStr() {
+        return paymentStartTimeStr;
+    }
+
+    public void setPaymentStartTimeStr(String paymentStartTimeStr) {
+        this.paymentStartTimeStr = paymentStartTimeStr;
+    }
+
+    public String getPaymentSuccTimeStr() {
+        return paymentSuccTimeStr;
+    }
+
+    public void setPaymentSuccTimeStr(String paymentSuccTimeStr) {
+        this.paymentSuccTimeStr = paymentSuccTimeStr;
+    }
+
+    public String getEleOrderStartTimeStr() {
+        return eleOrderStartTimeStr;
+    }
+
+    public void setEleOrderStartTimeStr(String eleOrderStartTimeStr) {
+        this.eleOrderStartTimeStr = eleOrderStartTimeStr;
+    }
+
+    public String getEleOrderSuccTimeStr() {
+        return eleOrderSuccTimeStr;
+    }
+
+    public void setEleOrderSuccTimeStr(String eleOrderSuccTimeStr) {
+        this.eleOrderSuccTimeStr = eleOrderSuccTimeStr;
+    }
+
+    public String getWaybillStartTimeStr() {
+        return waybillStartTimeStr;
+    }
+
+    public void setWaybillStartTimeStr(String waybillStartTimeStr) {
+        this.waybillStartTimeStr = waybillStartTimeStr;
+    }
+
+    public String getWaybillSuccTimeStr() {
+        return waybillSuccTimeStr;
+    }
+
+    public void setWaybillSuccTimeStr(String waybillSuccTimeStr) {
+        this.waybillSuccTimeStr = waybillSuccTimeStr;
+    }
+
+    public String getCustomsStartTimeStr() {
+        return customsStartTimeStr;
+    }
+
+    public void setCustomsStartTimeStr(String customsStartTimeStr) {
+        this.customsStartTimeStr = customsStartTimeStr;
+    }
+
+    public String getCustomsSuccTimeStr() {
+        return customsSuccTimeStr;
+    }
+
+    public void setCustomsSuccTimeStr(String customsSuccTimeStr) {
+        this.customsSuccTimeStr = customsSuccTimeStr;
+    }
+
+    public String getShipmentStartTimeStr() {
+        return shipmentStartTimeStr;
+    }
+
+    public void setShipmentStartTimeStr(String shipmentStartTimeStr) {
+        this.shipmentStartTimeStr = shipmentStartTimeStr;
+    }
+
+    public String getShipmentSuccTimeStr() {
+        return shipmentSuccTimeStr;
+    }
+
+    public void setShipmentSuccTimeStr(String shipmentSuccTimeStr) {
+        this.shipmentSuccTimeStr = shipmentSuccTimeStr;
+    }
+
+    /**
+     * 设置:
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 获取:
+     */
+    public Integer getId() {
+        return id;
+    }
+    /**
+     * 设置:订单编号
+     */
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    /**
+     * 获取:订单编号
+     */
+    public String getOrderSn() {
+        return orderSn;
+    }
+    /**
+     * 设置:用户编号
+     */
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 获取:用户编号
+     */
+    public Integer getUserId() {
+        return userId;
+    }
+    /**
+     * 设置:订单业务类型:00:保税备货, 02:保税展示补货,10:保税展示跨境,11:普通商品
+     */
+    public void setOrderBizType(String orderBizType) {
+        this.orderBizType = orderBizType;
+    }
+
+    /**
+     * 获取:订单业务类型:00:保税备货, 02:保税展示补货,10:保税展示跨境,11:普通商品
+     */
+    public String getOrderBizType() {
+        return orderBizType;
+    }
+    /**
+     * 设置:下单开始时间
+     */
+    public void setAddOrderStartTime(Date addOrderStartTime) {
+        this.addOrderStartTime = addOrderStartTime;
+    }
+
+    /**
+     * 获取:下单开始时间
+     */
+    public Date getAddOrderStartTime() {
+        return addOrderStartTime;
+    }
+    /**
+     * 设置:下单成功时间
+     */
+    public void setAddOrderSuccTime(Date addOrderSuccTime) {
+        this.addOrderSuccTime = addOrderSuccTime;
+    }
+
+    /**
+     * 获取:下单成功时间
+     */
+    public Date getAddOrderSuccTime() {
+        return addOrderSuccTime;
+    }
+    /**
+     * 设置:下单发送状态 0:失败;1:成功
+     */
+    public void setIsAddOrderSend(String isAddOrderSend) {
+        this.isAddOrderSend = isAddOrderSend;
+    }
+
+    /**
+     * 获取:下单发送状态 0:失败;1:成功
+     */
+    public String getIsAddOrderSend() {
+        return isAddOrderSend;
+    }
+    /**
+     * 设置:支付开始时间
+     */
+    public void setPayStartTime(Date payStartTime) {
+        this.payStartTime = payStartTime;
+    }
+
+    /**
+     * 获取:支付开始时间
+     */
+    public Date getPayStartTime() {
+        return payStartTime;
+    }
+    /**
+     * 设置:支付成功时间
+     */
+    public void setPaySuccTime(Date paySuccTime) {
+        this.paySuccTime = paySuccTime;
+    }
+
+    /**
+     * 获取:支付成功时间
+     */
+    public Date getPaySuccTime() {
+        return paySuccTime;
+    }
+    /**
+     * 设置:支付单开始时间
+     */
+    public void setPaymentStartTime(Date paymentStartTime) {
+        this.paymentStartTime = paymentStartTime;
+    }
+
+    /**
+     * 获取:支付单开始时间
+     */
+    public Date getPaymentStartTime() {
+        return paymentStartTime;
+    }
+    /**
+     * 设置:支付单成功时间
+     */
+    public void setPaymentSuccTime(Date paymentSuccTime) {
+        this.paymentSuccTime = paymentSuccTime;
+    }
+
+    /**
+     * 获取:支付单成功时间
+     */
+    public Date getPaymentSuccTime() {
+        return paymentSuccTime;
+    }
+    /**
+     * 设置:支付单状态 0:失败;1:成功;2:支付单单申报中
+     */
+    public void setIsPaymentSend(String isPaymentSend) {
+        this.isPaymentSend = isPaymentSend;
+    }
+
+    /**
+     * 获取:支付单状态 0:失败;1:成功;2:支付单单申报中
+     */
+    public String getIsPaymentSend() {
+        return isPaymentSend;
+    }
+    /**
+     * 设置:电子订单开始时间
+     */
+    public void setEleOrderStartTime(Date eleOrderStartTime) {
+        this.eleOrderStartTime = eleOrderStartTime;
+    }
+
+    /**
+     * 获取:电子订单开始时间
+     */
+    public Date getEleOrderStartTime() {
+        return eleOrderStartTime;
+    }
+    /**
+     * 设置:电子订单成功时间
+     */
+    public void setEleOrderSuccTime(Date eleOrderSuccTime) {
+        this.eleOrderSuccTime = eleOrderSuccTime;
+    }
+
+    /**
+     * 获取:电子订单成功时间
+     */
+    public Date getEleOrderSuccTime() {
+        return eleOrderSuccTime;
+    }
+    /**
+     * 设置:电子订单状态 0:失败;1:成功;2:电子订单申报中
+     */
+    public void setIsEleOrderSend(String isEleOrderSend) {
+        this.isEleOrderSend = isEleOrderSend;
+    }
+
+    /**
+     * 获取:电子订单状态 0:失败;1:成功;2:电子订单申报中
+     */
+    public String getIsEleOrderSend() {
+        return isEleOrderSend;
+    }
+    /**
+     * 设置:运单开始时间
+     */
+    public void setWaybillStartTime(Date waybillStartTime) {
+        this.waybillStartTime = waybillStartTime;
+    }
+
+    /**
+     * 获取:运单开始时间
+     */
+    public Date getWaybillStartTime() {
+        return waybillStartTime;
+    }
+    /**
+     * 设置:运单成功时间
+     */
+    public void setWaybillSuccTime(Date waybillSuccTime) {
+        this.waybillSuccTime = waybillSuccTime;
+    }
+
+    /**
+     * 获取:运单成功时间
+     */
+    public Date getWaybillSuccTime() {
+        return waybillSuccTime;
+    }
+    /**
+     * 设置:运单编号
+     */
+    public void setLogisticsNo(String logisticsNo) {
+        this.logisticsNo = logisticsNo;
+    }
+
+    /**
+     * 获取:运单编号
+     */
+    public String getLogisticsNo() {
+        return logisticsNo;
+    }
+    /**
+     * 设置:清单开始时间
+     */
+    public void setCustomsStartTime(Date customsStartTime) {
+        this.customsStartTime = customsStartTime;
+    }
+
+    /**
+     * 获取:清单开始时间
+     */
+    public Date getCustomsStartTime() {
+        return customsStartTime;
+    }
+    /**
+     * 设置:清单成功时间
+     */
+    public void setCustomsSuccTime(String customsSuccTime) {
+        this.customsSuccTime = customsSuccTime;
+    }
+
+    /**
+     * 获取:清单成功时间
+     */
+    public String getCustomsSuccTime() {
+        return customsSuccTime;
+    }
+    /**
+     * 设置:清单编号
+     */
+    public void setInvtNo(String invtNo) {
+        this.invtNo = invtNo;
+    }
+
+    /**
+     * 获取:清单编号
+     */
+    public String getInvtNo() {
+        return invtNo;
+    }
+    /**
+     * 设置:清关状态 0:失败;1:成功;2:清关中
+     */
+    public void setIsCustomsSend(String isCustomsSend) {
+        this.isCustomsSend = isCustomsSend;
+    }
+
+    /**
+     * 获取:清关状态 0:失败;1:成功;2:清关中
+     */
+    public String getIsCustomsSend() {
+        return isCustomsSend;
+    }
+    /**
+     * 设置:出货开始时间
+     */
+    public void setShipmentStartTime(Date shipmentStartTime) {
+        this.shipmentStartTime = shipmentStartTime;
+    }
+
+    /**
+     * 获取:出货开始时间
+     */
+    public Date getShipmentStartTime() {
+        return shipmentStartTime;
+    }
+    /**
+     * 设置:出货成功时间
+     */
+    public void setShipmentSuccTime(Date shipmentSuccTime) {
+        this.shipmentSuccTime = shipmentSuccTime;
+    }
+
+    /**
+     * 获取:出货成功时间
+     */
+    public Date getShipmentSuccTime() {
+        return shipmentSuccTime;
+    }
+    /**
+     * 设置:订单流转信息
+     */
+    public void setProcessContent(String processContent) {
+        this.processContent = processContent;
+    }
+
+    /**
+     * 获取:订单流转信息
+     */
+    public String getProcessContent() {
+        return processContent;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+
+    public Date getOrderDeclarationTime() {
+        return orderDeclarationTime;
+    }
+
+    public void setOrderDeclarationTime(Date orderDeclarationTime) {
+        this.orderDeclarationTime = orderDeclarationTime;
+    }
+
+    public String getOrderDeclareStatus() {
+        return orderDeclareStatus;
+    }
+
+    public void setOrderDeclareStatus(String orderDeclareStatus) {
+        this.orderDeclareStatus = orderDeclareStatus;
+    }
+
+    public String getShippingCode() {
+        return shippingCode;
+    }
+
+    public void setShippingCode(String shippingCode) {
+        this.shippingCode = shippingCode;
+    }
+
+    public String getShippingName() {
+        return shippingName;
+    }
+
+    public void setShippingName(String shippingName) {
+        this.shippingName = shippingName;
+    }
+
+    public String getEwbStartTime() {
+        return ewbStartTime;
+    }
+
+    public void setEwbStartTime(String ewbStartTime) {
+        this.ewbStartTime = ewbStartTime;
+    }
+
+    public String getClearNo() {
+        return clearNo;
+    }
+
+    public void setClearNo(String clearNo) {
+        this.clearNo = clearNo;
+    }
+
+    public String getClearType() {
+        return clearType;
+    }
+
+    public void setClearType(String clearType) {
+        this.clearType = clearType;
+    }
+
+    public String getClearMsg() {
+        return clearMsg;
+    }
+
+    public void setClearMsg(String clearMsg) {
+        this.clearMsg = clearMsg;
+    }
+}

+ 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;

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/StoreMngChangeEntity.java

@@ -81,6 +81,8 @@ public class StoreMngChangeEntity implements Serializable {
     private String merchName;
 
     private String storeName;
+    //订单编号
+    private String orderSn;
 
     public String getGoodsName() {
         return goodsName;
@@ -301,4 +303,12 @@ public class StoreMngChangeEntity implements Serializable {
     public Date getTstm() {
         return tstm;
     }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
 }

+ 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;
+    }
 }

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

@@ -0,0 +1,165 @@
+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;
+
+    /**
+     * 会员系统订单id,请求成功后返回
+     */
+    private Long memberSysOrderId;
+
+    /**
+     * 重发状态,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;
+    }
+
+    public Long getMemberSysOrderId() {
+        return memberSysOrderId;
+    }
+
+    public void setMemberSysOrderId(Long memberSysOrderId) {
+        this.memberSysOrderId = memberSysOrderId;
+    }
+
+    @Override
+    public String toString() {
+        return "HaiKongMemberOrderSyncResendEntity{" +
+                "id=" + id +
+                ", openId='" + openId + '\'' +
+                ", phone='" + phone + '\'' +
+                ", consumeDate=" + consumeDate +
+                ", orderAmount=" + orderAmount +
+                ", orderNo='" + orderNo + '\'' +
+                ", orderScore=" + orderScore +
+                ", memberSysOrderId=" + memberSysOrderId +
+                ", resendStatus='" + resendStatus + '\'' +
+                ", lastResendTime=" + lastResendTime +
+                ", createTime=" + createTime +
+                '}';
+    }
+}

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

@@ -0,0 +1,162 @@
+package com.kmall.admin.entity.haikong;
+
+import com.kmall.admin.haikong.constant.HaiKongMemberScoreChangeEventEnum;
+
+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 HaiKongMemberScoreChangeEventEnum}
+     */
+    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 +
+                '}';
+    }
+}

+ 30 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/haikong/IntegralGoBackEntity.java

@@ -0,0 +1,30 @@
+package com.kmall.admin.entity.haikong;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 积分全量回退实体类
+ */
+@Data
+public class IntegralGoBackEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 会员唯一标识或者电话
+     */
+    private String open_id;
+    /**
+     * 积分变动流水Id
+     */
+    private String statement_id;
+    /**
+     * 回退积分数量
+     */
+    private String rollback_score;
+    /**
+     * 渠道自定义积分变动唯一标识,用于平台幂等性保证
+     */
+    private String change_id;
+}

+ 22 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/vip/Mall2PointsRulesEntity.java

@@ -24,6 +24,10 @@ public class Mall2PointsRulesEntity implements Serializable {
      */
     private Integer pointsType;
     /**
+     * 积分类型 :0.门店 ,1.商品类别,2.门店商品'
+     */
+    private String pointsTypeStr;
+    /**
      * 积分规则适用开始时间
      */
     private Date pointsBeginTime;
@@ -65,6 +69,8 @@ public class Mall2PointsRulesEntity implements Serializable {
     private String pointsRulesNum;
     //赠送积分
     private String handselIntegral;
+    //积分比例
+    private BigDecimal pointsProportion;
     /**
      * 设置:主键
      */
@@ -227,4 +233,20 @@ public class Mall2PointsRulesEntity implements Serializable {
     public void setHandselIntegral(String handselIntegral) {
         this.handselIntegral = handselIntegral;
     }
+
+    public BigDecimal getPointsProportion() {
+        return pointsProportion;
+    }
+
+    public void setPointsProportion(BigDecimal pointsProportion) {
+        this.pointsProportion = pointsProportion;
+    }
+
+    public String getPointsTypeStr() {
+        return pointsTypeStr;
+    }
+
+    public void setPointsTypeStr(String pointsTypeStr) {
+        this.pointsTypeStr = pointsTypeStr;
+    }
 }

+ 17 - 0
kmall-admin/src/main/java/com/kmall/admin/haikong/client/HaiKongMemberTemplate.java

@@ -223,6 +223,23 @@ public class HaiKongMemberTemplate {
         return response;
     }
 
+    /**
+     * 会员积分回退接口
+     * @param body  请求体
+     * @return  结果
+     */
+    public String rollbackMemberScore(String body) throws Exception {
+        log.info("请求会员积分回退接口......");
+        String url = haiKongProperties.getMemberUrl() + appendQueryParam(HaiKongMemberSystemUrlEnum.ROLLBACK_MEMBER_SCORE.getUrl(), getCacheAccessToken());
+        url = getSignUrl(url, body);
+        Request request = new Request.Builder()
+                .post(requestBody(body))
+                .url(url)
+                .build();
+        String response = OkHttpUtils.retry(request, haiKongProperties.getRetry());
+        log.info("请求会员积分回退接口......");
+        return response;
+    }
 
 
     public static void main(String[] args) throws Exception {

+ 26 - 26
kmall-admin/src/main/java/com/kmall/admin/haikong/client/VmcShopTemplate.java

@@ -31,15 +31,15 @@ public class VmcShopTemplate {
 
     /**
      * 获取免税MALL请求结果
-     * @param methodParams
+     * @param json
      * @param method
      * @return
      */
-    public String vmcconnectSign(String methodParams,String method){
+    public String vmcconnectSign(String json,String method){
         Map<String,String> params = new HashMap<>();
         params.put("appid",haiKongProperties.getVmcconnectAppId());
         params.put("method", method);
-        params.put("method_params",methodParams);
+        params.put("method_params",json);//json
         params.put("timestamp",String.valueOf(System.currentTimeMillis()/1000));
         params.put("sign", VmcconnectSignUtils.createSign(params,haiKongProperties.getVmcconnectSecretKey()));
         return JSON.toJSONString(params);
@@ -52,7 +52,7 @@ public class VmcShopTemplate {
      */
     public String sendOrder(String body) {
         Request request = new Request.Builder()
-                .post(requestBody(vmcconnectSign(body, VmcconnectUrlEnum.ORDERS_CREATE_ORDER.getMethod())))
+                .post(requestBody(vmcconnectSign(body, VmcconnectUrlEnum.ORDERS_CREATE_ORDER.getMode())))
                 .url(haiKongProperties.getVmcconnectUrl())
                 .build();
         return OkHttpUtils.retry(request,haiKongProperties.getRequestRetry());
@@ -65,7 +65,7 @@ public class VmcShopTemplate {
      */
     public String resendOrder(String body) {
         Request request = new Request.Builder()
-                .post(requestBody(vmcconnectSign(body, VmcconnectUrlEnum.ORDERS_RETRY_ORDER.getMethod())))
+                .post(requestBody(vmcconnectSign(body, VmcconnectUrlEnum.ORDERS_RETRY_ORDER.getMode())))
                 .url(haiKongProperties.getVmcconnectUrl())
                 .build();
         return OkHttpUtils.retry(request,haiKongProperties.getRequestRetry());
@@ -78,7 +78,7 @@ public class VmcShopTemplate {
      */
     public String refundOrder(String body) {
         Request request = new Request.Builder()
-                .post(requestBody(vmcconnectSign(body,VmcconnectUrlEnum.ORDERS_CANCEL_ORDER.getMethod())))
+                .post(requestBody(vmcconnectSign(body,VmcconnectUrlEnum.ORDERS_CANCEL_ORDER.getMode())))
                 .url(haiKongProperties.getVmcconnectUrl())
                 .build();
         return OkHttpUtils.retry(request,haiKongProperties.getRequestRetry());
@@ -89,31 +89,31 @@ public class VmcShopTemplate {
      */
     public String ordersOuterStatus(String body){
         Request request = new Request.Builder()
-                .post(requestBody(vmcconnectSign(body,VmcconnectUrlEnum.ORDERS_OUTER_STATUS.getMethod())))
+                .post(requestBody(vmcconnectSign(body,VmcconnectUrlEnum.ORDERS_OUTER_STATUS.getMode())))
                 .url(haiKongProperties.getVmcconnectUrl())
                 .build();
         return OkHttpUtils.retry(request,haiKongProperties.getRequestRetry());
     }
 
 
-//    public static void main(String[] args) {
-//        Map<String,String> params2 = new HashMap<>();
-//        params2.put("outer_order_no","HK57746599");
-//        //.replaceAll("\\\\","")
-//        Map<String,String> params = new HashMap<>();
-//        params.put("appid","5");
-//        params.put("method", "vmc.orders.retry.order");
-//        params.put("method_params", JSON.toJSONString(params2));
-//        params.put("timestamp",String.valueOf(System.currentTimeMillis()/1000));
-//        String sign = VmcconnectSignUtils.createSign(params,"GXfc6ZtDlnxHxmmAHvfRfqvrqgfwRiJX");
-//        params.put("sign",sign);
-//        Request request = new Request.Builder()
-//                .post(RequestBody.create(MediaType.parse(org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE), JSON.toJSONString(params)))
-//                .url("https://testmall.greedc.com/openapi/vmcconnect/json")
-//                .build();
-//        String s = OkHttpUtils.retry(request, 1);
-//        Map<String,String> res = JSON.parseObject(s,Map.class);
-//        System.out.println(res);
-//    }
+    public static void main(String[] args) {
+        Map<String,String> params2 = new HashMap<>();
+        params2.put("outer_order_no","HK57746599");
+        //.replaceAll("\\\\","")
+        Map<String,String> params = new HashMap<>();
+        params.put("appid","5");
+        params.put("method", "vmc.orders.cancel.order");
+        params.put("method_params", JSON.toJSONString(params2));
+        params.put("timestamp",String.valueOf(System.currentTimeMillis()/1000));
+        String sign = VmcconnectSignUtils.createSign(params,"GXfc6ZtDlnxHxmmAHvfRfqvrqgfwRiJX");
+        params.put("sign",sign);
+        Request request = new Request.Builder()
+                .post(RequestBody.create(MediaType.parse(org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE), JSON.toJSONString(params)))
+                .url("https://testmall.greedc.com/openapi/vmcconnect/json")
+                .build();
+        String s = OkHttpUtils.retry(request, 3);
+        Map<String,String> res = JSON.parseObject(s,Map.class);
+        System.out.println(res);
+    }
 
 }

+ 1 - 1
kmall-admin/src/main/java/com/kmall/admin/haikong/config/HaiKongConfig.java

@@ -30,7 +30,7 @@ public class HaiKongConfig {
         haiKongProperties.setVmcconnectUrl(environment.getProperty("haikong.vmcconnect.url"));
         haiKongProperties.setVmcconnectAppId(environment.getProperty("haikong.vmcconnect.appId"));
         haiKongProperties.setVmcconnectSecretKey(environment.getProperty("haikong.vmcconnect.secretKey"));
-        haiKongProperties.setVmcconnectSecretKey(environment.getProperty("haikong.vmcconnect.requestRetry"));
+        haiKongProperties.setRequestRetry(Integer.parseInt(environment.getProperty("haikong.vmcconnect.requestRetry")));
         return haiKongProperties;
     }
 

+ 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 + '\'' +
+                '}';
+    }
+}

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

@@ -0,0 +1,88 @@
+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<HaiKongMemberOrderSyncResendEntity> successList = new ArrayList<>();
+        List<HaiKongMemberOrderSyncResendEntity> failedList = 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<Long> response = JacksonUtil.fromListJson(responseJson, new TypeReference<Response<Long>>() {});
+                if (Objects.nonNull(response) && response.getSuccess()) {
+                    haiKongMemberOrderSyncResendEntity.setMemberSysOrderId(response.getData());
+                    haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
+                    successList.add(haiKongMemberOrderSyncResendEntity);
+                    log.info("【重发】请求会员消费订单同步接口成功!响应数据:{}", responseJson);
+                } else {
+                    haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+                    failedList.add(haiKongMemberOrderSyncResendEntity);
+                    log.error("【重发】请求会员消费订单同步接口失败!响应:{}", responseJson);
+                }
+            } catch (Exception e) {
+                haiKongMemberOrderSyncResendEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+                failedList.add(haiKongMemberOrderSyncResendEntity);
+                log.error("【重发】请求会员消费订单同步接口失败!异常:", e);
+            }
+        });
+
+        if (!CollectionUtils.isEmpty(successList)) {
+            haiKongMemberOrderSyncResendService.updateResendStatusBatch(successList);
+        }
+
+        if (!CollectionUtils.isEmpty(failedList)) {
+            haiKongMemberOrderSyncResendService.updateResendStatusBatch(failedList);
+        }
+        log.info("【重发】此次重发会员消费订单同步接口!成功【{}】条,失败【{}】条!", successList.size(), failedList.size());
+    }
+
+
+}

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

@@ -0,0 +1,88 @@
+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<HaiKongMemberScoreChangeRecordEntity> successList = new ArrayList<>();
+        List<HaiKongMemberScoreChangeRecordEntity> failedList = 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();
+                    haiKongMemberScoreChangeRecordEntity.setStatementId(responseData.getStatementId());
+                    haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_SUCCESS.getStatus());
+                    successList.add(haiKongMemberScoreChangeRecordEntity);
+                    log.info("【重发】请求会员系统积分变动接口成功!响应数据:{}", responseJson);
+                } else {
+                    haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+                    failedList.add(haiKongMemberScoreChangeRecordEntity);
+                    log.error("【重发】请求会员系统积分变动接口失败!响应:{}", responseJson);
+                }
+            } catch (Exception e) {
+                haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.RESEND_FAILED.getStatus());
+                failedList.add(haiKongMemberScoreChangeRecordEntity);
+                log.error("【重发】请求会员系统积分变动接口失败!异常:", e);
+            }
+        });
+
+        if (!CollectionUtils.isEmpty(successList)) {
+            haiKongMemberScoreChangeRecordService.updateResendStatusBatch(successList);
+        }
+
+        if (!CollectionUtils.isEmpty(failedList)) {
+            haiKongMemberScoreChangeRecordService.updateResendStatusBatch(failedList);
+        }
+        log.info("【重发】此次重发会员积分变动接口!成功【{}】条,失败【{}】条!", successList.size(), failedList.size());
+    }
+
+
+}

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

+ 9 - 6
kmall-admin/src/main/java/com/kmall/admin/haikong/utils/Message.java

@@ -64,13 +64,12 @@ public class Message implements Serializable {
 		return new Builder().build();
 	}
 
-	public static Message success(boolean Success, String Message) {
-		return new Builder(Success, Message).build();
+	public static Message error(String Message) {
+		return new Builder(Message).build();
 	}
 
-	//--- 错误----------
-	public static Message error(boolean Success, String Message) {
-		return new Builder(Success, Message).build();
+	public static Message success(boolean Success,String Message) {
+		return new Builder(Success,Message).build();
 	}
 
 
@@ -90,7 +89,11 @@ public class Message implements Serializable {
 			this.Message = MessageCode.SUCCESS_MSG;
 		}
 
-		public Builder(boolean Success, String Message) {
+		public Builder(String Message) {
+			this.Success = false;
+			this.Message = Message;
+		}
+		public Builder(boolean Success,String Message) {
 			this.Success = Success;
 			this.Message = Message;
 		}

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

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

@@ -2,6 +2,7 @@ package com.kmall.admin.service;
 
 
 import com.kmall.admin.entity.OrderProcessRecordEntity;
+import com.kmall.admin.entity.OrderProcessRecordHkNewEntity;
 import com.kmall.admin.haikong.utils.Message;
 
 import java.util.List;
@@ -81,5 +82,5 @@ public interface OrderProcessRecordService {
      * @param orderProcessRecordList
      * @return
      */
-    Message saveHkNoticeMsg(List<OrderProcessRecordEntity> orderProcessRecordList);
+    Message saveHkNoticeMsg(List<OrderProcessRecordHkNewEntity> orderProcessRecordList);
 }

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

@@ -69,7 +69,7 @@ public interface OrderService {
      */
     Ticket printMsg(Long id);
 
-    Ticket printMsg(Long id,String sessionId);
+    Ticket printMsg(Long id,String sessionId) throws Exception;
 
     void refund(OrderEntity orderInfo);
     /**

+ 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 updateStockNumByStoreIdAndSku(ProductStoreRelaEntity productStoreRelaEntity);
 }

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

@@ -0,0 +1,42 @@
+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);
+
+    List<HaiKongMemberOrderSyncResendEntity> queryListByResendStatus();
+
+    void updateResendStatusBatch(List<HaiKongMemberOrderSyncResendEntity> entities);
+}

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

@@ -0,0 +1,40 @@
+package com.kmall.admin.service.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
+import com.kmall.admin.entity.haikong.IntegralGoBackEntity;
+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);
+
+    IntegralGoBackEntity queryIntegralGoBack(String orderSn);
+
+    List<HaiKongMemberScoreChangeRecordEntity> queryListByResendStatus();
+
+    /**
+     * 批量更新重发状态
+     */
+    void updateResendStatusBatch(List<HaiKongMemberScoreChangeRecordEntity> entities);
+
+}

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

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

@@ -83,10 +83,11 @@ public class MkActivitiesPromotionServiceImpl implements MkActivitiesPromotionSe
                 // 校验excel传入的数据
                 ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
                 builder.put("storeId", "门店编号");
-                builder.put("goodsSn", "商品编码");
+                builder.put("sku", "商品SKU");
                 builder.put("barCode", "商品条码");
                 builder.put("goodsName", "产品名称");
                 builder.put("goodsEnglishName", "产品英文名称");
+                builder.put("rejectScore", "是否参与积分抵扣");
                 builder.put("activitiesPrice", "活动价格");
                 builder.put("deadline", "截止日期");
 
@@ -105,8 +106,9 @@ public class MkActivitiesPromotionServiceImpl implements MkActivitiesPromotionSe
                 mkActivitiesPromotionEntity.setProductName(temporaryPromotionalItemsDto.getGoodsName()); // 商品名称
                 mkActivitiesPromotionEntity.setActivityPrice(new BigDecimal(temporaryPromotionalItemsDto.getActivitiesPrice())); // 活动价
                 mkActivitiesPromotionEntity.setShopSn(storeId); // 门店编号
-                mkActivitiesPromotionEntity.setGoodsSn(temporaryPromotionalItemsDto.getGoodsSn()); // 商品编号
+                mkActivitiesPromotionEntity.setSku(temporaryPromotionalItemsDto.getSku()); // 商品编号
                 mkActivitiesPromotionEntity.setBarcode(temporaryPromotionalItemsDto.getBarCode()); // 商品条码
+                mkActivitiesPromotionEntity.setRejectScore(temporaryPromotionalItemsDto.getRejectScore());
                 mkActivitiesPromotionEntity.setDeadline(temporaryPromotionalItemsDto.getDeadline());// 商品截止日期
                 mkActivitiesPromotionEntity.setMkaId(Long.parseLong(mkaId));
 

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

+ 27 - 9
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderProcessRecordServiceImpl.java

@@ -1,13 +1,11 @@
 package com.kmall.admin.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.kmall.admin.dao.MallVmcSendLogDao;
 import com.kmall.admin.dao.OrderDao;
 import com.kmall.admin.dao.OrderProcessRecordDao;
 import com.kmall.admin.dao.StoreSmsConfigDao;
-import com.kmall.admin.entity.OrderEntity;
-import com.kmall.admin.entity.OrderProcessRecordEntity;
-import com.kmall.admin.entity.PickUpCodeEntity;
-import com.kmall.admin.entity.StoreSmsConfigEntity;
+import com.kmall.admin.entity.*;
 import com.kmall.admin.haikong.utils.Message;
 import com.kmall.admin.service.OrderProcessRecordService;
 import com.kmall.admin.service.PickUpCodeService;
@@ -42,7 +40,11 @@ public class OrderProcessRecordServiceImpl implements OrderProcessRecordService
 
     @Autowired
     private OrderDao orderDao;
-
+    /**
+     * 免税mall日志记录
+     */
+    @Autowired
+    private MallVmcSendLogDao mallVmcSendLogDao;
 
 
 
@@ -159,23 +161,39 @@ public class OrderProcessRecordServiceImpl implements OrderProcessRecordService
     }
 
     /**
-     * 海控通知回调接口
+     * 免税MALL通知回调接口
      * @param orderProcessRecordList
      * @return
      */
     @Override
-    public Message saveHkNoticeMsg(List<OrderProcessRecordEntity> orderProcessRecordList) {
+    public Message saveHkNoticeMsg(List<OrderProcessRecordHkNewEntity> orderProcessRecordList) {
        try{
+           saveVmcSend("hkNotice","hkNotice",JSON.toJSONString(orderProcessRecordList),"免税MALL通知回调接口");
            Integer count = orderProcessRecordDao.queryHkOrderTotal(orderProcessRecordList);
            if(orderProcessRecordList.size()!=count){
-               return Message.success(false,"订单不存在");
+               return Message.error("订单不存在");
            }else{
                orderProcessRecordDao.updateHkNoticeMsg(orderProcessRecordList);
            }
        }catch (Exception e){
            logger.error("saveHkNoticeMsg---海控通知回调接口插入错误="+ JSON.toJSONString(orderProcessRecordList),e);
-           return Message.success(false,"参数错误");
+           return Message.error("参数错误");
        }
         return Message.success(true,"成功");
     }
+
+    /**
+     * 记录免税Mall通知日志
+     * @param orderSn
+     * @param requestMsg
+     * @param response
+     */
+    private void saveVmcSend(String orderSn,String urlType,String requestMsg,String response){
+        MallVmcSendlogEntity mallVmcSendlogEntity = new MallVmcSendlogEntity();
+        mallVmcSendlogEntity.setOrderSn(orderSn);
+        mallVmcSendlogEntity.setVmcType(urlType);
+        mallVmcSendlogEntity.setRequestMsg(requestMsg);
+        mallVmcSendlogEntity.setResponseMsg(response);
+        mallVmcSendLogDao.saveVmcSend(mallVmcSendlogEntity);
+    }
 }

Разница между файлами не показана из-за своего большого размера
+ 296 - 453
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 updateStockNumByStoreIdAndSku(ProductStoreRelaEntity productStoreRelaEntity) {
+        productStoreRelaDao.updateStockNumByStoreIdAndSku(productStoreRelaEntity);
+    }
 }

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

@@ -0,0 +1,72 @@
+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);
+    }
+
+    @Override
+    public List<HaiKongMemberOrderSyncResendEntity> queryListByResendStatus() {
+        return haiKongMemberOrderSyncResendDao.queryListByResendStatus();
+    }
+
+    @Override
+    public void updateResendStatusBatch(List<HaiKongMemberOrderSyncResendEntity> entities) {
+        haiKongMemberOrderSyncResendDao.updateResendStatusBatch(entities);
+    }
+}

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

@@ -0,0 +1,80 @@
+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.entity.haikong.IntegralGoBackEntity;
+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);
+    }
+
+    @Override
+    public IntegralGoBackEntity queryIntegralGoBack(String orderSn) {
+        return haiKongMemberScoreChangeRecordDao.queryIntegralGoBack(orderSn);
+    }
+
+    @Override
+    public List<HaiKongMemberScoreChangeRecordEntity> queryListByResendStatus() {
+        return haiKongMemberScoreChangeRecordDao.queryListByResendStatus();
+    }
+
+    /**
+     * 批量更新重发状态
+     */
+    @Override
+    public void updateResendStatusBatch(List<HaiKongMemberScoreChangeRecordEntity> entities) {
+        haiKongMemberScoreChangeRecordDao.updateResendStatusBatch(entities);
+    }
+}

+ 3 - 2
kmall-admin/src/main/resources/XmlTemplate/TemporaryPromotionalItemsDtoList.xml

@@ -6,12 +6,13 @@
               varType="com.kmall.admin.dto.TemporaryPromotionalItemsDto">
             <section startRow="1" endRow="1">
                 <mapping row="1" col="0">TemporaryPromotionalItemsDto.storeId</mapping>
-                <mapping row="1" col="1">TemporaryPromotionalItemsDto.goodsSn</mapping>
+                <mapping row="1" col="1">TemporaryPromotionalItemsDto.sku</mapping>
                 <mapping row="1" col="2">TemporaryPromotionalItemsDto.barCode</mapping>
                 <mapping row="1" col="4">TemporaryPromotionalItemsDto.goodsEnglishName</mapping>
                 <mapping row="1" col="3">TemporaryPromotionalItemsDto.goodsName</mapping>
                 <mapping row="1" col="5">TemporaryPromotionalItemsDto.activitiesPrice</mapping>
-                <mapping row="1" col="6">TemporaryPromotionalItemsDto.deadline</mapping>
+                <mapping row="1" col="6">TemporaryPromotionalItemsDto.rejectScore</mapping>
+                <mapping row="1" col="7">TemporaryPromotionalItemsDto.deadline</mapping>
             </section>
             <loopbreakcondition>
                 <rowcheck offset="0">

+ 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

+ 32 - 0
kmall-admin/src/main/resources/mybatis/mapper/HaiKongResendMsgDao.xml

@@ -0,0 +1,32 @@
+<?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.HaiKongResendMsgDao">
+
+	<insert id="saveResendMsg" parameterType="com.kmall.admin.entity.HaiKongResendMsgEntity" >
+		insert into haikong_resend_msg
+		(
+			open_id,
+			order_sn,
+			interface_type,
+			request_msg,
+			response_msg,
+			resend_num,
+			resend_time,
+			last_resend_time,
+			is_valid
+		)
+		values
+		(
+			#{openId},
+			#{orderSn},
+			#{interfaceType},
+			#{requestMsg},
+			#{responseMsg},
+			#{isValid}
+		)
+	</insert>
+	 
+
+
+</mapper>

+ 19 - 10
kmall-admin/src/main/resources/mybatis/mapper/MkActivitiesPromotionDao.xml

@@ -8,11 +8,12 @@
         <result property="productName" column="product_name"/>
         <result property="activityPrice" column="activity_price"/>
         <result property="shopSn" column="shop_sn"/>
-        <result property="goodsSn" column="goods_sn"/>
+        <result property="sku" column="sku"/>
         <result property="barcode" column="barcode"/>
         <result property="productBrand" column="product_brand"/>
         <result property="productSeries" column="product_series"/>
         <result property="mkaId" column="mka_id"/>
+        <result property="rejectScore" column="reject_score"/>
         <result property="deadline" column="deadline"/>
         <result property="createTime" column="create_time"/>
         <result property="createrSn" column="creater_sn"/>
@@ -26,11 +27,12 @@
 			`product_name`,
 			`activity_price`,
 			`shop_sn`,
-			`goods_sn`,
+			`sku`,
 			`barcode`,
 			`product_brand`,
 			`product_series`,
 			`mka_id`,
+			`reject_score`,
 			`deadline`,
 			`create_time`,
 			`creater_sn`,
@@ -46,11 +48,12 @@
     		`product_name`,
     		`activity_price`,
     		`shop_sn`,
-    		`goods_sn`,
+    		`sku`,
     		`barcode`,
     		`product_brand`,
     		`product_series`,
     		`mka_id`,
+    		`reject_score`,
     		`deadline`,
     		`create_time`,
     		`creater_sn`,
@@ -99,11 +102,12 @@
 			`product_name`,
 			`activity_price`,
 			`shop_sn`,
-			`goods_sn`,
+			`sku`,
 			`barcode`,
 			`product_brand`,
 			`product_series`,
 			`mka_id`,
+			`reject_score`,
 			`deadline`,
 			`create_time`,
 			`creater_sn`,
@@ -113,11 +117,12 @@
 			#{productName},
 			#{activityPrice},
 			#{shopSn},
-			#{goodsSn},
+			#{sku},
 			#{barcode},
 			#{productBrand},
 			#{productSeries},
 			#{mkaId},
+			#{rejectScore},
 			#{deadline},
 			#{createTime},
 			#{createrSn},
@@ -131,11 +136,12 @@
 			<if test="productName != null">`product_name` = #{productName}, </if>
 			<if test="activityPrice != null">`activity_price` = #{activityPrice}, </if>
 			<if test="shopSn != null">`shop_sn` = #{shopSn}, </if>
-			<if test="goodsSn != null">`goods_sn` = #{goodsSn}, </if>
+			<if test="sku != null">`sku` = #{sku}, </if>
 			<if test="barcode != null">`barcode` = #{barcode}, </if>
 			<if test="productBrand != null">`product_brand` = #{productBrand}, </if>
 			<if test="productSeries != null">`product_series` = #{productSeries}, </if>
 			<if test="mkaId != null">`mka_id` = #{mkaId}, </if>
+			<if test="rejectScore != null">`reject_score` = #{rejectScore}, </if>
 			<if test="deadline != null">`deadline` = #{deadline}, </if>
 			<if test="createTime != null">`create_time` = #{createTime}, </if>
 			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
@@ -162,11 +168,12 @@
 			`product_name`,
 			`activity_price`,
 			`shop_sn`,
-			`goods_sn`,
+			`sku`,
 			`barcode`,
 			`product_brand`,
 			`product_series`,
 			`mka_id`,
+			`reject_score`,
 			`deadline`,
 			`create_time`,
 			`creater_sn`,
@@ -183,11 +190,12 @@
 			pro.product_name,
 			pro.activity_price,
 			pro.shop_sn,
-			pro.goods_sn,
+			pro.sku,
 			pro.barcode,
 			pro.product_brand,
 			pro.product_series,
 			pro.mka_id,
+			pro.reject_score,
 			pro.deadline,
 			pro.create_time,
 			pro.creater_sn,
@@ -210,11 +218,12 @@
 			product_name,
 			activity_price,
 			shop_sn,
-			goods_sn,
+			sku,
 			barcode,
 			product_brand,
 			product_series,
 			mka_id,
+			reject_score,
 			deadline,
 			create_time,
 			creater_sn,
@@ -226,7 +235,7 @@
 
 
     <update id="updatePriceBySku" >
-		update mk_activities_promotion set activity_price = #{updatePrice} where goods_sn = #{sku}
+		update mk_activities_promotion set activity_price = #{updatePrice} where sku = #{sku}
 		and mka_id = #{mkaId}
 	</update>
 

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

@@ -152,7 +152,8 @@
 			`create_time`,
 			`moder_sn`,
 			`mod_time`,
-			`tstm`)
+			`tstm`,
+			order_sn)
 		values(
 			#{changeNum},
 			#{originalNum},
@@ -167,7 +168,8 @@
 			#{createTime},
 			#{moderSn},
 			#{modTime},
-			#{tstm})
+			#{tstm},
+			#{orderSn})
 	</insert>
 
 	<update id="update" parameterType="com.kmall.admin.entity.MngChangeEntity">

+ 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">

+ 124 - 26
kmall-admin/src/main/resources/mybatis/mapper/OrderProcessRecordDao.xml

@@ -292,25 +292,122 @@ select
 	</delete>
 
 
+	<select id="queryHkOrderTotal" parameterType="java.util.List" resultType="java.lang.Integer">
+		select
+		 count(*)
+		from mall_order_process_record
+		where
+		<if test="list != null">
+			 order_sn in
+			<foreach collection="list" item="item" open="(" separator="," close=")">
+				#{item.orderSn}
+			</foreach>
+		</if>
+	</select>
 
-	<!--批量修改-->
-	<update id="updateHkNoticeMsg" parameterType="list">
+	<update id="updateHkNoticeMsg" parameterType="java.util.List">
 		update mall_order_process_record
 		<trim prefix="set" suffixOverrides=",">
-			<trim prefix="points_rules_id =case" suffix="end,">
+			<trim prefix="logistics_no =case" suffix="end,">
+				<foreach collection="list" item="item" index="index">
+					<if test="item.logisticsNo!=null">
+						when order_sn=#{item.orderSn}
+						then #{item.logisticsNo}
+					</if>
+					<if test="item.logisticsNo==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.logistics_no
+					</if>
+				</foreach>
+			</trim>
+
+			<trim prefix="shipping_code =case" suffix="end,">
+				<foreach collection="list" item="item" index="index">
+					<if test="item.shippingCode!=null">
+						when order_sn=#{item.orderSn}
+						then #{item.shippingCode}
+					</if>
+					<if test="item.shippingCode==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.shipping_code
+					</if>
+				</foreach>
+			</trim>
+
+			<trim prefix="shipping_name =case" suffix="end,">
+				<foreach collection="list" item="item" index="index">
+					<if test="item.shippingName!=null">
+						when order_sn=#{item.orderSn}
+						then #{item.shippingName}
+					</if>
+					<if test="item.shippingName==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.shipping_name
+					</if>
+				</foreach>
+			</trim>
+
+			<trim prefix="waybill_succ_time =case" suffix="end,">
+				<foreach collection="list" item="item" index="index">
+					<if test="item.ewbStartTime!=null">
+						when order_sn=#{item.orderSn}
+						then #{item.ewbStartTime}
+					</if>
+					<if test="item.ewbStartTime==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.waybill_succ_time
+					</if>
+				</foreach>
+			</trim>
+
+			<trim prefix="invt_no =case" suffix="end,">
 				<foreach collection="list" item="item" index="index">
+					<if test="item.clearNo!=null">
 						when order_sn=#{item.orderSn}
-						then
-							<if test="eleOrderStartTime != null">`ele_order_start_time` = #{item.eleOrderStartTime}, </if>
-							<if test="eleOrderSuccTime != null">`ele_order_succ_time` = #{item.eleOrderSuccTime}, </if>
-							<if test="isEleOrderSend != null">`is_ele_order_send` = #{item.isEleOrderSend}, </if>
-							<if test="waybillStartTime != null">`waybill_start_time` = #{item.waybillStartTime}, </if>
-							<if test="waybillSuccTime != null">`waybill_succ_time` = #{item.waybillSuccTime}, </if>
-							<if test="logisticsNo != null">`logistics_no` = #{item.logisticsNo}, </if>
-							<if test="customsStartTime != null">`customs_start_time` = #{item.customsStartTime}, </if>
-							<if test="customsSuccTime != null">`customs_succ_time` = #{item.customsSuccTime}, </if>
-							<if test="invtNo != null">`invt_no` = #{item.invtNo}, </if>
-							<if test="isCustomsSend != null">`is_customs_send` = #{item.isCustomsSend}, </if>
+						then #{item.clearNo}
+					</if>
+					<if test="item.clearNo==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.invt_no
+					</if>
+				</foreach>
+			</trim>
+
+			<trim prefix="is_customs_send =case" suffix="end,">
+				<foreach collection="list" item="item" index="index">
+					<if test="item.clearType!=null">
+						when order_sn=#{item.orderSn}
+						then #{item.clearType}
+					</if>
+					<if test="item.clearType==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.is_customs_send
+					</if>
+				</foreach>
+			</trim>
+			<trim prefix="customs_succ_time =case" suffix="end,">
+				<foreach collection="list" item="item" index="index">
+					<if test="item.customsSuccTime!=null">
+						when order_sn=#{item.orderSn}
+						then #{item.customsSuccTime}
+					</if>
+					<if test="item.customsSuccTime==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.customs_succ_time
+					</if>
+				</foreach>
+			</trim>
+
+			<trim prefix="customs_msg =case" suffix="end,">
+				<foreach collection="list" item="item" index="index">
+					<if test="item.clearMsg!=null">
+						when order_sn=#{item.orderSn}
+						then #{item.clearMsg}
+					</if>
+					<if test="item.clearMsg==null">
+						when order_sn=#{item.orderSn}
+						then mall_order_process_record.customs_msg
+					</if>
 				</foreach>
 			</trim>
 		</trim>
@@ -320,17 +417,18 @@ select
 		</foreach>
 	</update>
 
-	<select id="queryHkOrderTotal" parameterType="java.util.List" resultType="java.lang.Integer">
-		select
-		 count(*)
-		from mall_order_process_record
-		where
-		<if test="list != null">
-			 order_sn in
-			<foreach collection="list" item="item" open="(" separator="," close=")">
-				#{item.orderSn}
-			</foreach>
-		</if>
-	</select>
+<!--	<update id="updateHkNoticeMsg"  parameterType="java.util.List">-->
+<!--		<foreach collection="list" item="item" index="index" open="" close="" separator=";">-->
+<!--			update mall_order_process_record-->
+<!--			<set>-->
+<!--			<if test="item.ewbStartTime != null">`waybill_succ_time` = #{item.ewbStartTime}, </if>-->
+<!--			<if test="item.logisticsNo != null">`logistics_no` = #{item.logisticsNo}, </if>-->
+<!--			<if test="item.customsSuccTime != null">`customs_succ_time` = #{item.customsSuccTime}, </if>-->
+<!--			<if test="item.invtNo != null">`invt_no` = #{item.invtNo}, </if>-->
+<!--			<if test="item.clearType != null">`is_customs_send` = #{item.clearType}, </if>-->
+<!--			</set>-->
+<!--			where order_sn = ${item.orderSn}-->
+<!--		</foreach>-->
+<!--	</update>-->
 
 </mapper>

+ 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">

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

@@ -151,7 +151,8 @@
 			`create_time`,
 			`moder_sn`,
 			`mod_time`,
-			`tstm`)
+			`tstm`,
+			order_sn))
 		values(
 			#{storeChangeNum},
 			#{storeOriginalNum},
@@ -166,7 +167,8 @@
 			#{createTime},
 			#{moderSn},
 			#{modTime},
-			#{tstm})
+			#{tstm},
+			#{orderSn})
 	</insert>
 
 	<update id="update" parameterType="com.kmall.admin.entity.StoreMngChangeEntity">

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

@@ -0,0 +1,131 @@
+<?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="member_sys_order_id" property="memberSysOrderId" />
+        <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>
+    <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
+        (
+            `open_id`,
+            `phone`,
+            `consume_date`,
+            `order_amount`,
+            `order_no`,
+            `order_score`,
+            `member_sys_order_id`,
+            `resend_status`,
+            `last_resend_time`,
+            `create_time`
+        )
+        values
+        (
+            #{openId},
+            #{phone},
+            #{consumeDate},
+            #{orderAmount},
+            #{orderNo},
+            #{orderScore},
+            #{memberSysOrderId},
+            #{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>
+    <update id="updateResendStatusBatch">
+        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>
+            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=")">
+            #{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>

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

@@ -0,0 +1,132 @@
+<?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="resend_status" property="resendStatus" />
+        <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>
+    <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
+        (
+            `open_id`,
+            `score`,
+            `out_biz_no`,
+            `change_reason`,
+            `change_event`,
+            `change_id`,
+            `statement_id`,
+            `resend_status`,
+            `modify_time`,
+            `create_time`
+        )
+        values
+        (
+            #{openId},
+            #{score},
+            #{outBizNo},
+            #{changeReason},
+            #{changeEvent},
+            #{changeId},
+            #{statementId},
+            #{resendStatus},
+            #{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="resendStatus != null">`resend_status` = #{resendStatus}, </if>
+            <if test="modifyTime != null">`modify_time` = #{modifyTime}</if>
+            <if test="createTime != null">`create_time` = #{createTime}</if>
+        </set>
+        where out_biz_no = #{outBizNo}
+    </update>
+
+    <update id="updateResendStatusBatch">
+        update haikong_member_score_change_record
+        <trim prefix="set" suffixOverrides=",">
+            resend_status =
+            <foreach collection="list" item="item" open="case " close=" end,">
+                when id = #{item.id} then #{item.resendStatus}
+            </foreach>
+            statement_id =
+            <foreach collection="list" item="item" open="case " close=" end,">
+                when id = #{item.id} then #{item.statementId}
+            </foreach>
+        </trim>
+        where id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item.id}
+        </foreach>
+    </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>
+
+    <select id="queryIntegralGoBack" resultType="com.kmall.admin.entity.haikong.IntegralGoBackEntity">
+        SELECT
+            open_id,
+            score as rollback_score,
+            statement_id,
+            change_id
+        FROM
+	        haikong_member_score_change_record
+        where out_biz_no = #{orderSn}
+    </select>
+
+</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

+ 6 - 1
kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2PointsRulesDao.xml

@@ -19,11 +19,12 @@
 	<select id="queryObject" resultType="com.kmall.admin.entity.vip.Mall2PointsRulesEntity">
 		select
 			`mpr_id`,
-			`points_type`,
+			 points_type as pointsType,
 			 points_rules_money as pointsRulesMoney,
 			 points_rules_num as pointsRulesNum,
 			`points_begin_time`,
 			`points_end_time`,
+			 points_proportion as pointsProportion,
 			`is_valid`,
 			`creater_sn`,
 			`create_time`,
@@ -42,6 +43,7 @@
 			 points_rules_num as pointsRulesNum,
     		`points_begin_time`,
     		`points_end_time`,
+		     points_proportion as pointsProportion,
     		`is_valid`,
     		`creater_sn`,
     		`create_time`,
@@ -82,6 +84,7 @@
 			 points_rules_num,
 			`points_begin_time`,
 			`points_end_time`,
+			 points_proportion,
 			`is_valid`,
 			`creater_sn`,
 			`create_time`,
@@ -95,6 +98,7 @@
 			#{pointsRulesNum},
 			#{pointsBeginTime},
 			#{pointsEndTime},
+			#{pointsProportion},
 			#{isValid},
 			#{createrSn},
 			#{createTime},
@@ -111,6 +115,7 @@
 			<if test="pointsRulesNum != null">`points_rules_num` = #{pointsRulesNum}, </if>
 			<if test="pointsBeginTime != null">`points_begin_time` = #{pointsBeginTime}, </if>
 			<if test="pointsEndTime != null">`points_end_time` = #{pointsEndTime}, </if>
+			<if test="pointsProportion != null">`points_proportion` = #{pointsProportion}, </if>
 			<if test="isValid != null">`is_valid` = #{isValid}, </if>
 			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
 			<if test="createTime != null">`create_time` = #{createTime}, </if>

+ 5 - 2
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivitiespromotion.html

@@ -46,8 +46,8 @@
             <Form-item label="活动价格" prop="activityPrice">
                 <i-input v-model="mkActivitiesPromotion.activityPrice" placeholder="活动价格"/>
             </Form-item>
-            <Form-item label="商品编码" prop="goodsSn">
-                <i-input v-model="mkActivitiesPromotion.goodsSn" placeholder="商品编码"/>
+            <Form-item label="sku" prop="sku">
+                <i-input v-model="mkActivitiesPromotion.sku" placeholder="sku"/>
             </Form-item>
             <Form-item label="条形码" prop="barcode">
                 <i-input v-model="mkActivitiesPromotion.barcode" placeholder="条形码"/>
@@ -55,6 +55,9 @@
             <Form-item label="商品品牌" prop="productBrand">
                 <i-input v-model="mkActivitiesPromotion.productBrand" placeholder="商品品牌"/>
             </Form-item>
+            <Form-item label="是否参与积分抵扣" prop="rejectScore">
+                <i-input v-model="mkActivitiesPromotion.rejectScore" placeholder="是否参与积分抵扣,0:参与,1:不参与"/>
+            </Form-item>
             <Form-item label="商品系列" prop="productSeries">
                 <i-input v-model="mkActivitiesPromotion.productSeries" placeholder="商品系列"/>
             </Form-item>

+ 20 - 13
kmall-admin/src/main/webapp/WEB-INF/page/sale/sale.html

@@ -376,29 +376,24 @@
                                     <div class="col-md-3" id="inventoryNo">清单编号: {{orderProcessRecord.invtNo}}</div>
                                 </div>
                                 <div class="row" style="border:0">
-                                    <div class="col-md-3" id="orderDeclarationTime">订单申报时间: {{orderProcessRecord.eleOrderStartTime}}</div>
+<!--                                    <div class="col-md-3" id="orderDeclarationTime">订单申报时间: {{orderProcessRecord.eleOrderStartTime}}</div>-->
                                     <div class="col-md-3" id="payDeclarationTime">支付单申报时间: {{orderProcessRecord.paymentStartTime}}</div>
                                     <div class="col-md-3" id="waybillDeclarationTime">运单申报时间: {{orderProcessRecord.waybillStartTime}}</div>
                                     <div class="col-md-3" id="inventoryDeclarationTime">清单放行时间: {{orderProcessRecord.customsSuccTime}}</div>
+                                    <div class="col-md-3" id="orderSubmitTime">订单提交时间: {{orderProcessRecord.addOrderStartTime}}</div>
                                 </div>
                             <div class="row" style="border:0">
-                                <div class="col-md-3" id="orderSubmitTime">订单提交时间: {{orderProcessRecord.addOrderStartTime}}</div>
+<!--                                <div class="col-md-3" id="orderSubmitTime">订单提交时间: {{orderProcessRecord.addOrderStartTime}}</div>-->
                                 <div class="col-md-3" id="payStatus">支付状态:
                                     <span v-if="orderEntity.payStatus == 0">未付款</span>
                                     <span v-if="orderEntity.payStatus == 1">付款中</span>
                                     <span v-if="orderEntity.payStatus == 2">已付款</span>
                                 </div>
                                 <div class="col-md-3" id="inventoryStatus">清关状态:
-                                    <span v-if="orderProcessRecord.isCustomsSend == 0">失败</span>
-                                    <span v-if="orderProcessRecord.isCustomsSend == 1">成功</span>
-                                    <span v-if="orderProcessRecord.isCustomsSend == 2">清关中</span>
-                                </div>
-                            </div>
-                            <div class="row" style="border:0">
-                                <div class="col-md-3" id="orderDeclareStatus">订单申报状态:
-                                    <span v-if="orderProcessRecord.isEleOrderSend == 0">失败</span>
-                                    <span v-if="orderProcessRecord.isEleOrderSend == 1">成功</span>
-                                    <span v-if="orderProcessRecord.isEleOrderSend == 2">申报中</span>
+                                    <span v-if="orderProcessRecord.isCustomsSend == 1">放行</span>
+                                    <span v-if="orderProcessRecord.isCustomsSend == 2">查验</span>
+                                    <span v-if="orderProcessRecord.isCustomsSend == 3">清关失败</span>
+                                    <span v-if="orderProcessRecord.isCustomsSend == 4">其他</span>
                                 </div>
                                 <div class="col-md-3" id="payOrderDeclareStatus">支付单申报状态:
                                     <span v-if="orderProcessRecord.isPaymentSend == 0">失败</span>
@@ -406,6 +401,18 @@
                                     <span v-if="orderProcessRecord.isPaymentSend == 2">申报中</span>
                                 </div>
                             </div>
+<!--                            <div class="row" style="border:0">-->
+<!--                                <div class="col-md-3" id="orderDeclareStatus">订单申报状态:-->
+<!--                                    <span v-if="orderProcessRecord.isEleOrderSend == 0">失败</span>-->
+<!--                                    <span v-if="orderProcessRecord.isEleOrderSend == 1">成功</span>-->
+<!--                                    <span v-if="orderProcessRecord.isEleOrderSend == 2">申报中</span>-->
+<!--                                </div>-->
+<!--                                <div class="col-md-3" id="payOrderDeclareStatus">支付单申报状态:-->
+<!--                                    <span v-if="orderProcessRecord.isPaymentSend == 0">失败</span>-->
+<!--                                    <span v-if="orderProcessRecord.isPaymentSend == 1">成功</span>-->
+<!--                                    <span v-if="orderProcessRecord.isPaymentSend == 2">申报中</span>-->
+<!--                                </div>-->
+<!--                            </div>-->
                             <div class="row" style="border:0">
                                 <div class="col-md-3" id="orderTotal">订单总金额: {{orderEntity.orderPrice}}</div>
                                 <div class="col-md-3" id="actualPrice">订单实际支付金额: {{orderEntity.actualPrice}}</div>
@@ -449,7 +456,7 @@
                         <div class="modal-footer">
                             <button v-if="canRefund" type="button" style="margin:0 30px 0 20px;font-size: 20px;float: left" class="btn ivu-btn-error" @click="refundOrder()" id="refundOrder" data-dismiss="modal">退款</button>
                             <button v-else disabled type="button" style="margin:0 30px 0 25px;font-size: 20px;float: left" class="btn ivu-btn-error" @click="refundOrder()"  data-dismiss="modal">退款</button>
-                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-warning" @click="confirmDelivery" id="confirmDelivery" data-dismiss="modal">确定提货</button>
+<!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-warning" @click="confirmDelivery" id="confirmDelivery" data-dismiss="modal">确定提货</button>-->
 <!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="resendNotice" id="resendNotice" data-dismiss="modal">重发通知</button>-->
 <!--                            <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="resendWaybill" id="resendWaybill" data-dismiss="modal">重发运单</button>-->
                             <button type="button" style="margin:0 30px 0 20px;font-size: 25px;" class="btn btn-primary" @click="resendorder" id="resendorder" data-dismiss="modal">重发订单</button>

+ 12 - 5
kmall-admin/src/main/webapp/WEB-INF/page/vip/mall2pointsrules.html

@@ -34,10 +34,8 @@
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
 		<i-form ref="formValidate" :model="mall2PointsRules" :rules="ruleValidate" :label-width="80">
-
-            <Form-item  label="积分类型" prop="pointsRulesId" style="height: 30px;">
-                <i-select v-model="mall2PointsRules.pointsType" placeholder="积分类型" @on-change="changeCategories"
-                          label-in-value style="width: 268px;height: 30px;">
+            <Form-item  label="积分类型" prop="pointsTypeStr" style="height: 30px;">
+                <i-select v-model="mall2PointsRules.pointsTypeStr" placeholder="积分类型" label-in-value>
                     <i-option v-for="category in categories" :value="category.value"
                               :key="category.value">{{category.name}}
                     </i-option>
@@ -55,8 +53,17 @@
             <Form-item label="适用结束时间" prop="pointsEndTime">
                 <i-input type="date"  v-model="mall2PointsRules.pointsEndTime" placeholder="积分规则适用结束时间"/>
             </Form-item>
+            <Form-item label="积分比例" prop="pointsProportion">
+                <i-input v-model="mall2PointsRules.pointsProportion" placeholder="积分比例" />
+            </Form-item>
             <Form-item label="是否有效" prop="isValid">
-                <i-input v-model="mall2PointsRules.isValid" placeholder="积分规则是否有效"/>
+                <i-select v-model="mall2PointsRules.isValid" placeholder="是否有效"
+                          label-in-value style="width: 268px;height: 30px;">
+                    <i-option v-for="categoryValid in isValidMsgCategories" :value="categoryValid.value"
+                              :key="categoryValid.value">{{categoryValid.name}}
+                    </i-option>
+                </i-select>
+<!--                <i-input v-model="mall2PointsRules.isValid" placeholder="积分规则是否有效"/>-->
             </Form-item>
             <Form-item>
                 <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>

+ 10 - 1
kmall-admin/src/main/webapp/js/mk/mkactivitiespromotion.js

@@ -26,9 +26,18 @@ $(function () {
 			{label: 'mapId', name: 'mapId', index: 'map_id', key: true, hidden: true},
 			{label: '产品中文名', name: 'productName', index: 'product_name', width: 80, align: 'center'},
 			{label: '活动价格', name: 'activityPrice', index: 'activity_price', width: 80, align: 'center'},
-			{label: '商品编码', name: 'goodsSn', index: 'goods_sn', width: 80, align: 'center'},
+			{label: 'sku', name: 'sku', index: 'sku', width: 80, align: 'center'},
 			{label: '条形码', name: 'barcode', index: 'barcode', width: 80, align: 'center'},
 			{label: '商品品牌', name: 'productBrand', index: 'product_brand', width: 80, align: 'center'},
+			{label: '是否参与积分抵扣', name: 'rejectScore', index: 'reject_score', width: 80, align: 'center', formatter:
+				function (value) {
+					if (value === '0') {
+						return "参与";
+					} else {
+						return "不参与";
+					}
+				}
+			},
 			{label: '商品系列', name: 'productSeries', index: 'product_series', width: 80, align: 'center'},
 			{label: '截止日期', name: 'deadline', index: 'deadline', width: 80, align: 'center'}],
 		viewrecords: true,

+ 39 - 15
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 (){
@@ -1179,17 +1194,6 @@ let vm = new Vue({
                 });
             })
         },
-        resendOrder:function(){
-            confirm('确认重发订单吗?', function () {
-                $.get("../order/resendOrderHkMall/"+vm.orderEntity.orderSn, function (r) {
-                    if(r.code == "0"){
-                        alert(r.msg);
-                    } else {
-                        alert(r.msg);
-                    }
-                });
-            })
-        },
         forceSendToOms:function(){
             confirm('确认强制推送清关吗?', function () {
                 $.get("../order/resendOrderToCCNET/"+vm.orderEntity.orderSn+"/forceSend", function (r) {
@@ -1199,8 +1203,12 @@ let vm = new Vue({
         },
         resendorder:function(){
             confirm('确认重发订单吗?', function () {
-                $.get("../order/resendOrderToCCNET/"+vm.orderEntity.orderSn+"/resendOrder", function (r) {
-                    alert(r.msg);
+                $.get("../order/resendOrderHkMall/"+vm.orderEntity.orderSn, function (r) {
+                    if(r.code == "0"){
+                        alert(r.msg);
+                    } else {
+                        alert(r.msg);
+                    }
                 });
             })
         },
@@ -1944,6 +1952,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 +2047,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));
 

+ 15 - 10
kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js

@@ -30,6 +30,7 @@ $(function () {
 					return transDate(value, 'yyyy-MM-dd');
 				}
 			},
+			{label: '积分比例', name: 'pointsProportion', index: 'points_proportion', width: 80},
 			{
 				label: '是否有效', name: 'isValid', index: 'is_valid', width: 80, formatter: function (value) {
 					if (value === '0' || value === 0) {
@@ -81,7 +82,11 @@ let vm = new Vue({
         showList: true,
         title: null,
 		categories: [],//一级分类
+		isValidMsgCategories: [],//是否一致
+		brands: [],
+		brandsIsValid:[],
 		categoriesTwo: [],
+		isValidMsgCategoriesTwo:[],
 		mall2PointsRules: {},
 		ruleValidate: {
 			name: [
@@ -100,7 +105,10 @@ let vm = new Vue({
 			vm.showList = false;
 			vm.title = "新增";
 			vm.mall2PointsRules = {};
+			vm.isValidMsgCategories=[],
+			vm.brands=[],
 			vm.getCategories();
+			vm.getIsValiDCategories();
 		},
 		update: function (event) {
             let mprId = getSelectedRow();
@@ -110,6 +118,7 @@ let vm = new Vue({
 			vm.showList = false;
             vm.title = "修改";
 			vm.getCategories();
+			vm.getIsValiDCategories();
             vm.getInfo(mprId)
 		},
 		saveOrUpdate: function (event) {
@@ -172,16 +181,6 @@ let vm = new Vue({
             }
             vm.reload();
 		},
-		changeCategories: function (opt) {
-			var value = opt.value;
-			vm.brands = [];
-			if(value){
-				vm.getBrand(value);
-				$.get("./sys/macro/getPointRulesDetil?parentId=" + value, function (r) {
-					vm.categoriesTwo = r.list;
-				});
-			}
-		},
 		getCategories: function () {
 			$.get("../sys/macro/queryMacrosByValueRuRules?id=70", function (r) {
 				vm.categories = r.list;
@@ -192,6 +191,12 @@ let vm = new Vue({
 				vm.brands = r.list;
 			});
 		},
+		getIsValiDCategories: function () {
+			$.get("../sys/macro/queryMacrosByValueRuRules?id=79", function (r) {
+				vm.isValidMsgCategories = r.list;
+			});
+		},
+
 		reload: function (event) {
 			vm.showList = true;
 			let page = event;

BIN
kmall-admin/src/main/webapp/statics/file/activities_promotion_yyyy_mm_dd_v1.0.0.xlsx


+ 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);
 

Некоторые файлы не были показаны из-за большого количества измененных файлов