1
0
Prechádzať zdrojové kódy

Merge branch 'master' of http://git.ds-bay.com/project/kmall-pt

csk 5 rokov pred
rodič
commit
2a65879a12
100 zmenil súbory, kde vykonal 7690 pridanie a 520 odobranie
  1. 2 18
      kmall-admin/src/main/java/com/kmall/admin/controller/CategoryController.java
  2. 2 18
      kmall-admin/src/main/java/com/kmall/admin/controller/CommentController.java
  3. 33 15
      kmall-admin/src/main/java/com/kmall/admin/controller/CouponController.java
  4. 29 13
      kmall-admin/src/main/java/com/kmall/admin/controller/CouponGoodsController.java
  5. 1 0
      kmall-admin/src/main/java/com/kmall/admin/controller/FootprintController.java
  6. 1 9
      kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java
  7. 7 46
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java
  8. 28 0
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderGoodsController.java
  9. 125 26
      kmall-admin/src/main/java/com/kmall/admin/controller/ProductStoreRelaController.java
  10. 1 10
      kmall-admin/src/main/java/com/kmall/admin/controller/StoreController.java
  11. 1 9
      kmall-admin/src/main/java/com/kmall/admin/controller/SupplierController.java
  12. 53 12
      kmall-admin/src/main/java/com/kmall/admin/controller/ThirdMerchantBizController.java
  13. 13 0
      kmall-admin/src/main/java/com/kmall/admin/controller/UserCouponController.java
  14. 52 6
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkCenterMenuController.java
  15. 123 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkCenterMenuStoreRealController.java
  16. 8 12
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistController.java
  17. 56 70
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistHierController.java
  18. 3 28
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistSellStatisController.java
  19. 235 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreCampMinusController.java
  20. 126 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreCampMinusGoodsController.java
  21. 106 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreCampMinusLevelController.java
  22. 43 36
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStorePromController.java
  23. 72 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStorePromStatController.java
  24. 319 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketDiscountController.java
  25. 113 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketDiscountGoodsController.java
  26. 231 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketGoodsTempController.java
  27. 129 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTopicStatController.java
  28. 1 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/StoreTopicController.java
  29. 2 1
      kmall-admin/src/main/java/com/kmall/admin/dao/AdDao.java
  30. 5 1
      kmall-admin/src/main/java/com/kmall/admin/dao/CouponDao.java
  31. 5 1
      kmall-admin/src/main/java/com/kmall/admin/dao/CouponGoodsDao.java
  32. 2 0
      kmall-admin/src/main/java/com/kmall/admin/dao/GoodsDao.java
  33. 18 1
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java
  34. 5 1
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderGoodsDao.java
  35. 32 0
      kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java
  36. 1 1
      kmall-admin/src/main/java/com/kmall/admin/dao/SupplierDao.java
  37. 20 0
      kmall-admin/src/main/java/com/kmall/admin/dao/UserCampMinusDao.java
  38. 10 0
      kmall-admin/src/main/java/com/kmall/admin/dao/UserCouponDao.java
  39. 5 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkCenterMenuDao.java
  40. 18 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkCenterMenuStoreRealDao.java
  41. 4 1
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/dist/MkDistDao.java
  42. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreCampMinusDao.java
  43. 26 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreCampMinusGoodsDao.java
  44. 34 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreCampMinusLevelDao.java
  45. 20 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStorePromOrderRealDao.java
  46. 16 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketDiscountDao.java
  47. 20 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketDiscountGoodsDao.java
  48. 46 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketGoodsTempDao.java
  49. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTopicStatDao.java
  50. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTopicVisitorsDao.java
  51. 68 0
      kmall-admin/src/main/java/com/kmall/admin/dto/CheckGoodsDto.java
  52. 3 3
      kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDto.java
  53. 54 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeDiscPieceAttrDto.java
  54. 54 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeDiscUnitAttrDto.java
  55. 54 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypePieceAttrDto.java
  56. 64 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypePieceModeDto.java
  57. 54 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeUnitAttrDto.java
  58. 64 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeUnitModeDto.java
  59. 62 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MkCenterMenuTreeDto.java
  60. 22 0
      kmall-admin/src/main/java/com/kmall/admin/entity/AdEntity.java
  61. 10 0
      kmall-admin/src/main/java/com/kmall/admin/entity/GoodsAttributeEntity.java
  62. 28 0
      kmall-admin/src/main/java/com/kmall/admin/entity/GoodsEntity.java
  63. 121 0
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderEntity.java
  64. 20 0
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderGoodsEntity.java
  65. 71 0
      kmall-admin/src/main/java/com/kmall/admin/entity/ProductStoreRelaEntity.java
  66. 13 0
      kmall-admin/src/main/java/com/kmall/admin/entity/StoreEntity.java
  67. 10 0
      kmall-admin/src/main/java/com/kmall/admin/entity/ThirdMerchantBizEntity.java
  68. 257 0
      kmall-admin/src/main/java/com/kmall/admin/entity/UserCampMinusEntity.java
  69. 50 0
      kmall-admin/src/main/java/com/kmall/admin/entity/UserCouponEntity.java
  70. 9 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkCenterMenuEntity.java
  71. 217 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkCenterMenuStoreRealEntity.java
  72. 517 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreCampMinusEntity.java
  73. 276 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreCampMinusGoodsEntity.java
  74. 359 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreCampMinusLevelEntity.java
  75. 10 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromEntity.java
  76. 238 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromOrderRealEntity.java
  77. 57 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromStatEntity.java
  78. 782 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketDiscountEntity.java
  79. 219 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketDiscountGoodsEntity.java
  80. 301 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketGoodsTempEntity.java
  81. 557 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTopicStatEntity.java
  82. 188 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTopicVisitorsEntity.java
  83. 33 15
      kmall-admin/src/main/java/com/kmall/admin/service/CouponGoodsService.java
  84. 37 17
      kmall-admin/src/main/java/com/kmall/admin/service/CouponService.java
  85. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderGoodsService.java
  86. 11 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java
  87. 34 2
      kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java
  88. 4 0
      kmall-admin/src/main/java/com/kmall/admin/service/UserCouponService.java
  89. 5 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/CouponGoodsServiceImpl.java
  90. 5 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/CouponServiceImpl.java
  91. 2 2
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsGroupOpenServiceImpl.java
  92. 53 17
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  93. 8 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderGoodsServiceImpl.java
  94. 206 108
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  95. 112 8
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java
  96. 10 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/UserCouponServiceImpl.java
  97. 9 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkCenterMenuServiceImpl.java
  98. 82 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkCenterMenuStoreRealServiceImpl.java
  99. 12 7
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/dist/MkDistHierServiceImpl.java
  100. 9 4
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/dist/MkDistServiceImpl.java

+ 2 - 18
kmall-admin/src/main/java/com/kmall/admin/controller/CategoryController.java

@@ -33,15 +33,7 @@ public class CategoryController {
     @RequiresPermissions("category:list")
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String categoryName = (String) params.get("categoryName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(categoryName)){
-            try{
-                categoryName = new String(categoryName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("categoryName", categoryName);
-        }
+        ParamUtils.setName(params, "categoryName");
         //查询列表数据
         Query query = new Query(params);
 
@@ -104,15 +96,7 @@ public class CategoryController {
     public R queryAll(@RequestParam Map<String, Object> params) {
 
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String categoryName = (String) params.get("categoryName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(categoryName)){
-            try{
-                categoryName = new String(categoryName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("categoryName", categoryName);
-        }
+        ParamUtils.setName(params, "categoryName");
 
         List<CategoryEntity> list = categoryService.queryList(params);
         //添加顶级菜单

+ 2 - 18
kmall-admin/src/main/java/com/kmall/admin/controller/CommentController.java

@@ -33,24 +33,8 @@ public class CommentController {
     @RequiresPermissions("comment:list")
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String valueName = (String) params.get("valueName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(valueName)){
-            try{
-                valueName = new String(valueName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("valueName", valueName);
-        }
-        String userName = (String) params.get("userName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(userName)){
-            try{
-                userName = new String(userName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("userName", userName);
-        }
+        ParamUtils.setName(params, "valueName");
+        ParamUtils.setName(params, "userName");
         //查询列表数据
         Query query = new Query(params);
 

+ 33 - 15
kmall-admin/src/main/java/com/kmall/admin/controller/CouponController.java

@@ -1,3 +1,4 @@
+/*
 package com.kmall.admin.controller;
 
 import com.kmall.admin.entity.CouponEntity;
@@ -13,22 +14,26 @@ import org.springframework.web.bind.annotation.*;
 import java.util.List;
 import java.util.Map;
 
+*/
 /**
  * 优惠券Controller
  *
  * @author Scott
  * @email
  * @date 2017-08-19 12:53:26
- */
+ *//*
+
 @RestController
 @RequestMapping("coupon")
 public class CouponController {
     @Autowired
     private CouponService couponService;
 
-    /**
+    */
+/**
      * 查看列表
-     */
+     *//*
+
     @RequestMapping("/list")
     @RequiresPermissions("coupon:list")
     public R list(@RequestParam Map<String, Object> params) {
@@ -47,9 +52,11 @@ public class CouponController {
     }
 
 
-    /**
+    */
+/**
      * 查看信息
-     */
+     *//*
+
     @RequestMapping("/info/{id}")
     @RequiresPermissions("coupon:info")
     public R info(@PathVariable("id") Integer id) {
@@ -58,9 +65,11 @@ public class CouponController {
         return R.ok().put("coupon", coupon);
     }
 
-    /**
+    */
+/**
      * 保存
-     */
+     *//*
+
     @RequestMapping("/save")
     @RequiresPermissions("coupon:save")
     public R save(@RequestBody CouponEntity coupon) {
@@ -69,9 +78,11 @@ public class CouponController {
         return R.ok();
     }
 
-    /**
+    */
+/**
      * 修改
-     */
+     *//*
+
     @RequestMapping("/update")
     @RequiresPermissions("coupon:update")
     public R update(@RequestBody CouponEntity coupon) {
@@ -80,9 +91,11 @@ public class CouponController {
         return R.ok();
     }
 
-    /**
+    */
+/**
      * 删除
-     */
+     *//*
+
     @RequestMapping("/delete")
     @RequiresPermissions("coupon:delete")
     public R delete(@RequestBody Integer[] ids) {
@@ -91,9 +104,11 @@ public class CouponController {
         return R.ok();
     }
 
-    /**
+    */
+/**
      * 查看所有列表
-     */
+     *//*
+
     @RequestMapping("/queryAll")
     public R queryAll(@RequestParam Map<String, Object> params) {
 
@@ -104,15 +119,18 @@ public class CouponController {
         return R.ok().put("list", list);
     }
 
-    /**
+    */
+/**
      * 按用户、商品下发优惠券
      *
      * @param params
      * @return
-     */
+     *//*
+
     @RequiresPermissions("coupon:publish")
     @RequestMapping(value = "publish", method = RequestMethod.POST)
     public R publish(@RequestBody Map<String, Object> params) {
         return couponService.publish(params);
     }
 }
+*/

+ 29 - 13
kmall-admin/src/main/java/com/kmall/admin/controller/CouponGoodsController.java

@@ -1,3 +1,4 @@
+/*
 package com.kmall.admin.controller;
 
 import com.kmall.admin.entity.CouponGoodsEntity;
@@ -12,22 +13,26 @@ import org.springframework.web.bind.annotation.*;
 import java.util.List;
 import java.util.Map;
 
+*/
 /**
  * 优惠券关联商品Controller
  *
  * @author Scott
  * @email
  * @date 2017-08-29 21:50:17
- */
+ *//*
+
 @RestController
 @RequestMapping("coupongoods")
 public class CouponGoodsController {
     @Autowired
     private CouponGoodsService couponGoodsService;
 
-    /**
+    */
+/**
      * 查看列表
-     */
+     *//*
+
     @RequestMapping("/list")
     @RequiresPermissions("coupongoods:list")
     public R list(@RequestParam Map<String, Object> params) {
@@ -42,9 +47,11 @@ public class CouponGoodsController {
         return R.ok().put("page", pageUtil);
     }
 
-    /**
+    */
+/**
      * 查看信息
-     */
+     *//*
+
     @RequestMapping("/info/{id}")
     @RequiresPermissions("coupongoods:info")
     public R info(@PathVariable("id") Integer id) {
@@ -53,9 +60,11 @@ public class CouponGoodsController {
         return R.ok().put("couponGoods", couponGoods);
     }
 
-    /**
+    */
+/**
      * 保存
-     */
+     *//*
+
     @RequestMapping("/save")
     @RequiresPermissions("coupongoods:save")
     public R save(@RequestBody CouponGoodsEntity couponGoods) {
@@ -64,9 +73,11 @@ public class CouponGoodsController {
         return R.ok();
     }
 
-    /**
+    */
+/**
      * 修改
-     */
+     *//*
+
     @RequestMapping("/update")
     @RequiresPermissions("coupongoods:update")
     public R update(@RequestBody CouponGoodsEntity couponGoods) {
@@ -75,9 +86,11 @@ public class CouponGoodsController {
         return R.ok();
     }
 
-    /**
+    */
+/**
      * 删除
-     */
+     *//*
+
     @RequestMapping("/delete")
     @RequiresPermissions("coupongoods:delete")
     public R delete(@RequestBody Integer[]ids) {
@@ -86,9 +99,11 @@ public class CouponGoodsController {
         return R.ok();
     }
 
-    /**
+    */
+/**
      * 查看所有列表
-     */
+     *//*
+
     @RequestMapping("/queryAll")
     public R queryAll(@RequestParam Map<String, Object> params) {
 
@@ -97,3 +112,4 @@ public class CouponGoodsController {
         return R.ok().put("list", list);
     }
 }
+*/

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/FootprintController.java

@@ -32,6 +32,7 @@ public class FootprintController {
     @RequiresPermissions("footprint:list")
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setName(params, "name");
         //查询列表数据
         Query query = new Query(params);
 

+ 1 - 9
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsController.java

@@ -51,15 +51,7 @@ public class GoodsController {
     @RequiresPermissions("goods:list")
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeKey", "merchSn", "thirdPartyMerchCode");
-        String goodsName = (String) params.get("name");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(goodsName)){
-            try{
-                goodsName = new String(goodsName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("name", goodsName);
-        }
+        ParamUtils.setName(params, "name");
         //查询列表数据
         Query query = new Query(params);
 

+ 7 - 46
kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java

@@ -73,29 +73,10 @@ public class OrderController {
     @RequiresPermissions("order:list")
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        params = ParamUtils.setTimeMap(params);
         //查询列表数据
         Query query = new Query(params);
         query.put("isOnfiilineOrder", Dict.isOnfflineOrder.item_0.getItem());
-        String startTime = (String) params.get("startTime");
-        String endTime = (String) params.get("endTime");
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(startTime)) {
-            try {
-                startTime = new String(startTime.getBytes("iso-8859-1"), "utf-8");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            startTime = DateUtils.getDate(startTime);
-            query.put("startTime", startTime + " 00:00:00");
-        }
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(endTime)) {
-            try {
-                endTime = new String(endTime.getBytes("iso-8859-1"), "utf-8");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            endTime = DateUtils.getDate(endTime);
-            query.put("endTime", endTime + " 59:59:59");
-        }
         List<OrderEntity> orderList = orderService.queryList(query);
         int total = orderService.queryTotal(query);
 
@@ -434,7 +415,7 @@ public class OrderController {
             orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().doubleValue()));
             orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
             orderRefund.setModTime(new Date());
-            orderRefund.setOutRefundNo(result.getOut_refund_no());
+//            orderRefund.setOutRefundNo(result.getOut_refund_no());
             if (mallOrderRefund != null) {
                 orderRefund.setId(mallOrderRefund.getId());
                 orderRefundService.update(orderRefund);//退款记录
@@ -468,7 +449,7 @@ public class OrderController {
             orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
             orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().doubleValue()));
             orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
-            orderRefund.setOutRefundNo(result.getOut_refund_no());
+//            orderRefund.setOutRefundNo(result.getOut_refund_no());
             orderRefund.setModTime(new Date());
             if (mallOrderRefund != null) {
                 orderRefund.setId(mallOrderRefund.getId());
@@ -517,7 +498,7 @@ public class OrderController {
                     orderRefund.setRefundType(Integer.parseInt(Dict.RefundType.item_1.getItem()));
                     orderRefund.setRefundMoney(BigDecimal.valueOf(orderInfo.getActualPrice().doubleValue()));
                     orderRefund.setRefundStatus(Integer.parseInt(Dict.RefundStatus.item_4.getItem()));
-                    orderRefund.setOutRefundNo(result.getOut_refund_no());
+//                    orderRefund.setOutRefundNo(result.getOut_refund_no());
                     orderRefund.setModTime(new Date());
                     if (mallOrderRefund != null) {
                         orderRefund.setId(mallOrderRefund.getId());
@@ -709,35 +690,14 @@ public class OrderController {
     @RequestMapping(value = "export")
     public Object export(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        params = ParamUtils.setTimeMap(params);
         //查询列表数据
         params.put("isOnfiilineOrder", Dict.isOnfflineOrder.item_0.getItem());
-
-        String startTime = (String) params.get("startTime");
-        String endTime = (String) params.get("endTime");
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(startTime)) {
-            try {
-                startTime = new String(startTime.getBytes("iso-8859-1"), "utf-8");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            startTime = DateUtils.getDate(startTime);
-            params.put("startTime", startTime + " 00:00:00");
-        }
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(endTime)) {
-            try {
-                endTime = new String(endTime.getBytes("iso-8859-1"), "utf-8");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            endTime = DateUtils.getDate(endTime);
-            params.put("endTime", endTime + " 59:59:59");
-        }
-
         List<OrderEntity> orderList = orderService.queryExportList(params);
 
         ExcelExport ee = new ExcelExport("订单信息");
 
-        String[] header = new String[]{"订单编号","商户订单编号", "所属门店", "订单状态", "SKU", "商品名称", "数量", "销售价", "实际支付金额", "保税模式", "快递公司名称", "快递单编号", "海关清单编号", "收货人姓名", "收件人手机", "收件人省份", "收件人城市", "收件人区县", "收件人地址", "下单时间", "支付流水号","身份证号"
+        String[] header = new String[]{"订单编号","商户订单编号", "所属门店", "供应商", "订单状态", "SKU", "商品名称", "数量", "销售价", "实际支付金额", "保税模式", "快递公司名称", "快递单编号", "海关清单编号", "收货人姓名", "收件人手机", "收件人省份", "收件人城市", "收件人区县", "收件人地址", "下单时间", "支付流水号","身份证号"
                 ,"原产国","规格型号","品牌","单位","毛重(kg)","净重"};
 
         List<Map<String, Object>> list = new ArrayList<>();
@@ -750,6 +710,7 @@ public class OrderController {
                 map.put("OrderSn", orderEntity.getOrderSn());
                 map.put("MerchOrderSn", orderEntity.getMerchOrderSn());
                 map.put("StoreName", orderEntity.getStoreName());
+                map.put("SupplierThirdPartyMerchName", orderEntity.getSupplierThirdPartyMerchName());
                 map.put("OrderStatus", StringUtils.isEmpty(orderStatus.toString())? "":Dict.orderStatus.valueOf("item_"+ orderStatus).getItemName());
                 map.put("SKU", orderEntity.getSku());
                 map.put("GoodsName", orderEntity.getGoodsName());

+ 28 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/OrderGoodsController.java

@@ -5,6 +5,7 @@ import com.kmall.admin.service.OrderGoodsService;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
+import com.kmall.common.utils.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -98,4 +99,31 @@ public class OrderGoodsController {
 
 		return R.ok().put("list", list);
 	}
+
+	@RequestMapping("/queryListByOrderId")
+//	@RequiresPermissions("ordergoods:queryListByOrderId")
+	public R queryListByOrderId(@RequestParam Map<String, Object> params){
+		//查询列表数据
+		Integer orderId = Integer.parseInt((String) params.get("id"));
+		List<OrderGoodsEntity> list = orderGoodsService.queryListByOrderId(orderId);
+		if(params.get("promId") != null) {
+			Integer promId = Integer.parseInt((String) params.get("promId"));
+			for (OrderGoodsEntity orderGoodsEntity : list) {
+				//是否属于当前推广渠道商品 0:否 1:是
+				if (orderGoodsEntity.getIsPromGoods() == null) {
+					orderGoodsEntity.setIsPromGoods(0);
+				} else {
+					if (orderGoodsEntity.getPromId().equals(promId)) {
+						orderGoodsEntity.setIsPromGoods(1);
+					} else {
+						orderGoodsEntity.setIsPromGoods(0);
+					}
+				}
+			}
+		}
+
+		PageUtils pageUtil = new PageUtils(list, 1, 5, 1);
+
+		return R.ok().put("page", pageUtil);
+	}
 }

+ 125 - 26
kmall-admin/src/main/java/com/kmall/admin/controller/ProductStoreRelaController.java

@@ -1,22 +1,27 @@
 package com.kmall.admin.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.kmall.admin.entity.ProductStoreRelaEntity;
 import com.kmall.admin.entity.StoreEntity;
 import com.kmall.admin.entity.ThirdMerchantBizEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.ProductStoreRelaService;
 import com.kmall.admin.service.StoreService;
 import com.kmall.admin.service.ThirdMerchantBizService;
 import com.kmall.admin.utils.ParamUtils;
+import com.kmall.admin.utils.ShiroUtils;
 import com.kmall.common.constant.Dict;
-import com.kmall.common.utils.PageUtils;
-import com.kmall.common.utils.Query;
-import com.kmall.common.utils.R;
-import com.kmall.common.utils.StringUtils;
+import com.kmall.common.utils.*;
+import com.kmall.common.utils.file.FileUploadUtil;
+import com.kmall.common.utils.wechat.AccessToken;
+import com.kmall.manager.manager.pay.wxpay.WxPayPropertiesBuilder;
+import com.kmall.manager.manager.wechat.wxtemplate.WxTemplateUtil;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -42,20 +47,12 @@ public class ProductStoreRelaController {
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String goodsName = (String) params.get("goodsName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(goodsName)){
-            try{
-                goodsName = new String(goodsName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("goodsName", goodsName);
-        }
+        ParamUtils.setName(params, "goodsName");
         //查询列表数据
         Query query = new Query(params);
 
         List<ProductStoreRelaEntity> productStoreRelaList = productStoreRelaService.queryList(query);
-        for (ProductStoreRelaEntity pro: productStoreRelaList) {
+        /*for (ProductStoreRelaEntity pro: productStoreRelaList) {
             if(org.apache.commons.lang3.StringUtils.isNotEmpty(pro.getIsStockShare())) {
                 if(org.apache.commons.lang3.StringUtils.isNotEmpty(pro.getGoodsBizType())) {
                     if (pro.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())) {
@@ -65,7 +62,7 @@ public class ProductStoreRelaController {
                     }
                 }
             }
-        }
+        }*/
         int total = productStoreRelaService.queryTotal(query);
 
         PageUtils pageUtil = new PageUtils(productStoreRelaList, total, query.getLimit(), query.getPage());
@@ -102,12 +99,6 @@ public class ProductStoreRelaController {
     @ResponseBody
     public R save(@RequestBody ProductStoreRelaEntity productStoreRela) {
 
-        if (productStoreRela.getStoreId() != null) {
-            StoreEntity store = storeService.queryObject(productStoreRela.getStoreId().intValue());
-            if (store != null) {
-                productStoreRela.setMerchSn(store.getMerchSn());
-            }
-        }
         productStoreRelaService.save(productStoreRela);
 
         return R.ok();
@@ -125,11 +116,6 @@ public class ProductStoreRelaController {
             return R.error("信息不全,保存失败");
         }
 
-        StoreEntity store = storeService.queryObject(productStoreRela.getStoreId().intValue());
-        if (store != null) {
-            productStoreRela.setMerchSn(store.getMerchSn());
-        }
-
         productStoreRelaService.update(productStoreRela);
         return R.ok();
     }
@@ -158,4 +144,117 @@ public class ProductStoreRelaController {
 
         return R.ok().put("list", list);
     }
+
+    /**
+     * 查看优惠券选择商品列表
+     * @param params
+     * @return
+     */
+    @RequestMapping("/queryGoodsRealListByDiscountTid")
+    @ResponseBody
+    public R queryGoodsRealListByDiscountTid(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "id", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setName(params, "goodsName");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<ProductStoreRelaEntity> productStoreRelaList = productStoreRelaService.queryGoodsRealListByDiscountTid(query);
+        for (ProductStoreRelaEntity pro: productStoreRelaList) {
+            if(pro.getIsCheck()==null){
+                pro.setIsCheck(0);//未选中
+            }else{
+                String guid = (String)params.get("guid");
+                if(guid.equalsIgnoreCase(pro.getGuid())) {
+                    pro.setIsCheck(1);
+                }else{
+                    pro.setIsCheck(0);//未选中
+                }
+            }
+            if(org.apache.commons.lang3.StringUtils.isNotEmpty(pro.getIsStockShare())) {
+                if(org.apache.commons.lang3.StringUtils.isNotEmpty(pro.getGoodsBizType())) {
+                    if (pro.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())) {
+                        if (pro.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
+                            pro.setStockNum(pro.getGoodsNumber());
+                        }
+                    }
+                }
+            }
+        }
+        int total = productStoreRelaService.queryGoodsRealListByDiscountTidTotal(query);
+
+        PageUtils pageUtil = new PageUtils(productStoreRelaList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+
+    /**
+     * 根据门店活动id查看门店活动选择商品列表
+     * @param params
+     * @return
+     */
+    @RequestMapping("/queryGoodsRealListByTopicId")
+    @ResponseBody
+    public R queryGoodsRealListByTopicId(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "id", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setName(params, "goodsName");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<ProductStoreRelaEntity> productStoreRelaList = productStoreRelaService.queryGoodsRealListByTopicId(query);
+        for (ProductStoreRelaEntity pro: productStoreRelaList) {
+            if(pro.getIsCheck()==null){
+                pro.setIsCheck(0);//未选中
+            }else{
+                Integer storeTopicId = Integer.parseInt((String)params.get("storeTopicId"));
+                if(storeTopicId.compareTo(pro.getStoreTopicId())==0) {
+                    pro.setIsCheck(1);
+                }else{
+                    pro.setIsCheck(0);//未选中
+                }
+            }
+            if(org.apache.commons.lang3.StringUtils.isNotEmpty(pro.getIsStockShare())) {
+                if(org.apache.commons.lang3.StringUtils.isNotEmpty(pro.getGoodsBizType())) {
+                    if (pro.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())) {
+                        if (pro.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
+                            pro.setStockNum(pro.getGoodsNumber());
+                        }
+                    }
+                }
+            }
+        }
+        int total = productStoreRelaService.queryGoodsRealListByTopicIdTotal(query);
+
+        PageUtils pageUtil = new PageUtils(productStoreRelaList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/qrcodeCanvas/{id}")
+//    @RequiresPermissions("mkstoreprom:qrcodeCanvas")
+    @ResponseBody
+    public R qrcodeCanvas(@PathVariable("id") Integer id) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if (user == null) {
+            throw new RRException("用户登录超时,请重新登录");
+        }
+        ProductStoreRelaEntity productStoreRelaEntity = productStoreRelaService.queryObject(id);
+        if(productStoreRelaEntity==null){
+            throw new RRException("门店商品信息不存在");
+        }
+        AccessToken accessToken = WxTemplateUtil.getAccessToken(WxPayPropertiesBuilder.instance().getAppId(),WxPayPropertiesBuilder.instance().getSecret());
+        if(accessToken == null){
+            throw new RRException("token获取失败");
+        }
+        String token = accessToken.getToken();
+        //构建请求参数
+        Map<Object, Object> params = new HashMap<Object, Object>();
+        params.put("scene", productStoreRelaEntity.getGoodsId()+"&"+productStoreRelaEntity.getStoreId()+"&&"+user.getUserId());//参数
+        params.put("page", "pages/goods/goods");//商品详情页面
+        params.put("width", 430);
+        String mapToXml = JSON.toJSONString(params);
+
+        String url = FileUploadUtil.getUploadUrl(mapToXml, token, id);
+        return R.ok().put("url", url);
+    }
 }

+ 1 - 10
kmall-admin/src/main/java/com/kmall/admin/controller/StoreController.java

@@ -60,16 +60,7 @@ public class StoreController {
     public R list(@RequestParam Map<String, Object> params) {
 
         ParamUtils.setQueryPowerByRoleType(params, "id", "merchSn", "thirdPartyMerchCode");
-
-        String storeName = (String) params.get("storeName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(storeName)){
-            try{
-                storeName = new String(storeName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("storeName", storeName);
-        }
+        ParamUtils.setName(params, "storeName");
         //查询列表数据
         Query query = new Query(params);
 

+ 1 - 9
kmall-admin/src/main/java/com/kmall/admin/controller/SupplierController.java

@@ -35,15 +35,7 @@ public class SupplierController {
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String name = (String) params.get("name");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(name)){
-            try{
-                name = new String(name.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("name", name);
-        }
+        ParamUtils.setName(params, "name");
         //查询列表数据
         Query query = new Query(params);
 

+ 53 - 12
kmall-admin/src/main/java/com/kmall/admin/controller/ThirdMerchantBizController.java

@@ -1,5 +1,6 @@
 package com.kmall.admin.controller;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -33,8 +34,6 @@ public class ThirdMerchantBizController {
     private ThirdMerchantBizService thirdMerchantBizService;
     @Autowired
     private StoreService storeService;
-    private String  ISO = "iso-8859-1";
-    private String  UTF = "utf-8";
 
     /**
      * 查看列表
@@ -44,16 +43,7 @@ public class ThirdMerchantBizController {
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeKey", "merchSn", "thirdPartyMerchCode");
-
-        String thirdPartyName = (String) params.get("name");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(thirdPartyName)){
-            try{
-                thirdPartyName = new String(thirdPartyName.getBytes(ISO), UTF);
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("name", thirdPartyName);
-        }
+        ParamUtils.setName(params, "name");
         //查询列表数据
         Query query = new Query(params);
 
@@ -171,4 +161,55 @@ public class ThirdMerchantBizController {
 
         return R.ok().put("list", list);
     }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAlls")
+    @ResponseBody
+    public R queryAlls(@RequestParam Map<String, Object> params) {
+        List<ThirdMerchantBizEntity> list = thirdMerchantBizService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/getIsSupplierShowByThirdSn")
+    @ResponseBody
+    public R getIsSupplierShowByThirdSn(@RequestParam Map<String, Object> params) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if (user == null) {
+            throw new RRException("用户登录超时,请重新登录");
+        }
+        Boolean isSupplierShow = false;
+        Boolean roleType = false;
+        if (Dict.roleType.item_2.getItem().equals(user.getRoleType())) {
+            ThirdMerchantBizEntity thirdMerchantBizEntity  = thirdMerchantBizService.getThirdMerchangByCode(user.getThirdPartyMerchCode());
+            if(thirdMerchantBizEntity != null){
+                String isSupplierGoods = thirdMerchantBizEntity.getIsSupplierGoods();
+                if(isSupplierGoods.equalsIgnoreCase(Dict.isSupplierGoods.item_1.getItem())){
+                    isSupplierShow = true;
+                }
+            }
+        }
+        if (Dict.roleType.item_3.getItem().equalsIgnoreCase(user.getRoleType()) || Dict.roleType.item_1.getItem().equalsIgnoreCase(user.getRoleType())) {
+            isSupplierShow = true;
+            roleType = true;
+        }
+        if (Dict.roleType.item_4.getItem().equals(user.getRoleType())) {
+            ThirdMerchantBizEntity thirdMerchantBizEntity  = thirdMerchantBizService.getThirdMerchangByCode(user.getThirdPartyMerchCode());
+            if(thirdMerchantBizEntity != null){
+                String isSupplierGoods = thirdMerchantBizEntity.getIsSupplierGoods();
+                if(isSupplierGoods.equalsIgnoreCase(Dict.isSupplierGoods.item_1.getItem())){
+                    isSupplierShow = true;
+                }
+            }
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("isSupplierShow", isSupplierShow);
+        map.put("roleType", roleType);
+        return R.ok().put("map", map);
+    }
 }

+ 13 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/UserCouponController.java

@@ -95,4 +95,17 @@ public class UserCouponController {
 
         return R.ok().put("list", list);
     }
+
+    @RequestMapping("/getUserCouponByDiscIdList")
+    public R getUserCouponByDiscIdList(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<UserCouponEntity> userCouponList = userCouponService.getUserCouponByDiscIdList(query);
+        int total = userCouponService.queryUserCouponByDiscIdTotal(query);
+
+        PageUtils pageUtil = new PageUtils(userCouponList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
 }

+ 52 - 6
kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkCenterMenuController.java

@@ -1,14 +1,22 @@
 package com.kmall.admin.controller.mk;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import com.kmall.admin.dto.MkCenterMenuTreeDto;
 import com.kmall.admin.entity.mk.MkCenterMenuEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.mk.MkCenterMenuService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.constant.Dict;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
 import com.kmall.common.utils.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -26,6 +34,7 @@ import javax.servlet.http.HttpServletRequest;
 @Controller
 @RequestMapping("mkcentermenu")
 public class MkCenterMenuController {
+    private Log logger = LogFactory.getLog(MkCenterMenuController.class);
     @Autowired
     private MkCenterMenuService mkCenterMenuService;
 
@@ -39,7 +48,7 @@ public class MkCenterMenuController {
         //查询列表数据
         Query query = new Query(params);
 
-        List<MkCenterMenuEntity> mkCenterMenuList = mkCenterMenuService.queryList(query);
+        List<MkCenterMenuEntity> mkCenterMenuList = mkCenterMenuService.queryListByStore(query);
         int total = mkCenterMenuService.queryTotal(query);
 
         PageUtils pageUtil = new PageUtils(mkCenterMenuList, total, query.getLimit(), query.getPage());
@@ -101,14 +110,51 @@ public class MkCenterMenuController {
     @RequestMapping("/queryAll")
     @ResponseBody
     public R queryAll(@RequestParam Map<String, Object> params,HttpServletRequest request) {
-        String requestPath = request.getRequestURL().toString().replaceAll("mkcentermenu/queryAll","");
-        List<MkCenterMenuEntity> list = mkCenterMenuService.queryList(params);
-        for (MkCenterMenuEntity mkCenterMenuEntity: list) {
-            if(StringUtils.isNotEmpty(mkCenterMenuEntity.getMenuUrl())) {
-                mkCenterMenuEntity.setMenuUrl(requestPath + mkCenterMenuEntity.getMenuUrl());
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+//        System.out.println(request.getRequestURI());
+//        System.out.println(request.getRequestURL());
+//        System.out.println(request.getContextPath());
+//        String requestPath = request.getRequestURL().toString().replaceAll("mkcentermenu/queryAll","");
+        List<MkCenterMenuEntity> list = new ArrayList<>();
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if(Dict.roleType.item_1.getItem().equals(user.getRoleType())){
+            list = mkCenterMenuService.queryList(params);
+        }else{
+            list = mkCenterMenuService.queryCenterByList(params);
+        }
+        if(list != null && list.size() > 0) {
+            for (MkCenterMenuEntity mkCenterMenuEntity : list) {
+                if (StringUtils.isNotEmpty(mkCenterMenuEntity.getMenuUrl())) {
+                    mkCenterMenuEntity.setMenuUrl(request.getContextPath() + mkCenterMenuEntity.getMenuUrl());
+                }
             }
         }
 
         return R.ok().put("list", list);
     }
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/perms")
+    @ResponseBody
+    public R perms(@RequestParam Map<String, Object> params) {
+        List<MkCenterMenuEntity> list = mkCenterMenuService.queryList(params);
+        List<MkCenterMenuTreeDto> mkCenterMenuTreeDtos = new ArrayList<>();
+        MkCenterMenuTreeDto dto = new MkCenterMenuTreeDto();
+        dto.setCenterMenuId(0);
+        dto.setName("全部");
+        dto.setParentId(0);
+        dto.setParentName("全部");
+        mkCenterMenuTreeDtos.add(dto);
+        for (MkCenterMenuEntity mkCenterMenuEntity: list) {
+            MkCenterMenuTreeDto mkCenterMenuTreeDto = new MkCenterMenuTreeDto();
+            mkCenterMenuTreeDto.setCenterMenuId(mkCenterMenuEntity.getId());
+            mkCenterMenuTreeDto.setParentId(0);
+            mkCenterMenuTreeDto.setParentName("全部");
+            mkCenterMenuTreeDto.setName(mkCenterMenuEntity.getMenuName());
+            mkCenterMenuTreeDtos.add(mkCenterMenuTreeDto);
+        }
+
+        return R.ok().put("list", mkCenterMenuTreeDtos);
+    }
 }

+ 123 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkCenterMenuStoreRealController.java

@@ -0,0 +1,123 @@
+package com.kmall.admin.controller.mk;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.google.common.collect.ImmutableBiMap;
+import com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity;
+import com.kmall.admin.service.mk.MkCenterMenuStoreRealService;
+import com.kmall.common.utils.*;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * 营销中心菜单门店关联表Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-28 10:14:06
+ */
+@Controller
+@RequestMapping("mkcentermenustorereal")
+public class MkCenterMenuStoreRealController {
+    @Autowired
+    private MkCenterMenuStoreRealService mkCenterMenuStoreRealService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkcentermenustorereal:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkCenterMenuStoreRealEntity> mkCenterMenuStoreRealList = mkCenterMenuStoreRealService.queryList(query);
+        int total = mkCenterMenuStoreRealService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkCenterMenuStoreRealList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{id}")
+    @RequiresPermissions("mkcentermenustorereal:info")
+    @ResponseBody
+    public R info(@PathVariable("id") Integer id) {
+        MkCenterMenuStoreRealEntity mkCenterMenuStoreReal = mkCenterMenuStoreRealService.queryObject(id);
+
+        return R.ok().put("mkCenterMenuStoreReal", mkCenterMenuStoreReal);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkcentermenustorereal:save")
+    @ResponseBody
+    public R save(@RequestBody MkCenterMenuStoreRealEntity mkCenterMenuStoreReal) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(mkCenterMenuStoreReal);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("thirdMerchSn", "所属三方商户");
+//        builder.put("storeId", "所属门店");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+        mkCenterMenuStoreRealService.saveOrUpdate(mkCenterMenuStoreReal);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkcentermenustorereal:update")
+    @ResponseBody
+    public R update(@RequestBody MkCenterMenuStoreRealEntity mkCenterMenuStoreReal) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(mkCenterMenuStoreReal);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("thirdMerchSn", "所属三方商户");
+//        builder.put("storeId", "所属门店");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+        mkCenterMenuStoreRealService.update(mkCenterMenuStoreReal);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkcentermenustorereal:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]ids) {
+        mkCenterMenuStoreRealService.deleteBatch(ids);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<MkCenterMenuStoreRealEntity> list = mkCenterMenuStoreRealService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+}

+ 8 - 12
kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistController.java

@@ -35,15 +35,7 @@ public class MkDistController {
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String distName = (String) params.get("distName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(distName)){
-            try{
-                distName = new String(distName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("distName", distName);
-        }
+        ParamUtils.setName(params, "distName");
         //查询列表数据
         Query query = new Query(params);
         List<MkDistEntity> mkDistList = mkDistService.queryList(query);
@@ -157,14 +149,18 @@ public class MkDistController {
     @RequestMapping("/queryDistByGoodsId")
     @ResponseBody
     public R queryDistByGoodsId(@RequestParam Map<String, Object> params) {
-        MkDistEntity mkDistEntity = mkDistService.queryDistByGoodsId(params);
-        return R.ok().put("mkDistEntity", mkDistEntity);
+        if(StringUtils.isNotEmpty((String)params.get("storeId"))) {
+            MkDistEntity mkDistEntity = mkDistService.queryDistByStoreId(params);
+            return R.ok().put("mkDistEntity", mkDistEntity);
+        }
+        return R.ok().put("mkDistEntity", null);
+
     }
 
     @RequestMapping("/queryAllByHier")
     @ResponseBody
     public R queryAllByHier(@RequestParam Map<String, Object> params) {
-        ParamUtils.setQueryPowerByRoleType(params, "storeKey", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
         params.put("hierLvl", "1");
         List<MkDistEntity> list = mkDistService.queryAllByHier(params);
         return R.ok().put("list", list);

+ 56 - 70
kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistHierController.java

@@ -12,12 +12,10 @@ import com.kmall.admin.entity.mk.dist.MkDistEntity;
 import com.kmall.admin.entity.mk.dist.MkDistHierEntity;
 import com.kmall.admin.entity.mk.dist.MkDistHierLvlEntity;
 import com.kmall.admin.entity.mk.dist.MkDistSellAllocationEntity;
-import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.mk.dist.MkDistHierService;
 import com.kmall.admin.service.mk.dist.MkDistSellAllocationService;
 import com.kmall.admin.service.mk.dist.MkDistService;
 import com.kmall.admin.utils.ParamUtils;
-import com.kmall.admin.utils.ShiroUtils;
 import com.kmall.common.utils.*;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,15 +49,7 @@ public class MkDistHierController {
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String distHierName = (String) params.get("distHierName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(distHierName)){
-            try{
-                distHierName = new String(distHierName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("distHierName", distHierName);
-        }
+        ParamUtils.setName(params, "distHierName");
         //查询列表数据
         Query query = new Query(params);
 
@@ -117,7 +107,7 @@ public class MkDistHierController {
         Map<String, Object> valideDate = MapBeanUtil.fromObject(mkDistHier);
         ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
         builder.put("distChnlId", "分销渠道id");
-        builder.put("pdistId", "上级分销商id");
+//        builder.put("pdistId", "上级分销商id");
         builder.put("distId", "分销商id");
         builder.put("hierLvl", "层级级别");
         builder.put("distHierName", "分销商层级名称");
@@ -150,15 +140,7 @@ public class MkDistHierController {
     @ResponseBody
     public R queryAll(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String distHierName = (String) params.get("distHierName");
-        if(org.apache.commons.lang3.StringUtils.isNotEmpty(distHierName)){
-            try{
-                distHierName = new String(distHierName.getBytes("iso-8859-1"),"utf-8");
-            }catch (Exception e){
-                e.printStackTrace();
-            }
-            params.put("distHierName", distHierName);
-        }
+        ParamUtils.setName(params, "distHierName");
         List<MkDistHierEntity> list = mkDistHierService.queryList(params);
         for (MkDistHierEntity distHierEntity: list) {
 //            distHierEntity.setName(distHierEntity.getDistName());
@@ -205,9 +187,16 @@ public class MkDistHierController {
     @ResponseBody
     public R queryAllByTree(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        String distId = (String) params.get("distId");
+        String storeId = (String) params.get("storeId");
+        String goodsId = (String) params.get("goodsId");
+        MkDistEntity distEntity = mkDistService.queryDistByGoodsId(Integer.parseInt(goodsId),Integer.parseInt(storeId));
+        Integer distId = distEntity.getDistId();
+        params.put("distId", distId);
+
         List<MkDistHierEntity> treeList = new ArrayList<>();
 
+        List<ExpendDistDto> expendDistDtoList = new ArrayList<>();
+
         MkDistHierEntity mkDistHierEntity = mkDistHierService.queryObjectByDistMap(params);
         if(mkDistHierEntity != null){
             String lvl = mkDistHierEntity.getHierLvl();
@@ -230,56 +219,53 @@ public class MkDistHierController {
                 treeList.add(lvlList.get(0));
                 pdistId = lvlList.get(0).getPdistId();
             }
-        }
-        List<ExpendDistDto> expendDistDtoList = new ArrayList<>();
 
-        String goodsId = (String) params.get("goodsId");
-        Integer storeId = (Integer) params.get("storeId");
-        Map<String, Object> allocationMap = new HashMap<>();
-        allocationMap.put("goodsId", goodsId);
-        allocationMap.put("storeId", storeId);
-        String expendDistLines = "";
-        List<MkDistSellAllocationEntity> allocationEntityList =  mkDistSellAllocationService.queryAllocationByMap(allocationMap);
-        if(allocationEntityList.size() == 0){
-            SysUserEntity user = ShiroUtils.getUserEntity();
-            Map<String, Object> distHierMap = new HashMap<>();
-            if(StringUtils.isNotEmpty(user.getMerchSn())) {
-                distHierMap.put("merchSn", user.getMerchSn());
-            }
-            if(StringUtils.isNotEmpty(String.valueOf(storeId))) {
-                distHierMap.put("storeId", storeId);
-            }
-            if(StringUtils.isNotEmpty(user.getThirdPartyMerchCode())) {
-                distHierMap.put("thirdPartyMerchCode", user.getThirdPartyMerchCode());
-            }
-            List<MkDistHierEntity> distHierEntityList = mkDistHierService.queryList(distHierMap);
-            for (int i=0; i < distHierEntityList.size(); i++) {
-                MkDistHierEntity distHier = distHierEntityList.get(i);
-                MkDistEntity mkDistEntity = mkDistService.queryObject(distHier.getDistId());
-                ExpendDistDto expendDistDto = new ExpendDistDto();
-                expendDistDto.setExpendDistId(distHier.getDistId());
-                expendDistDto.setExpendDistName(mkDistEntity.getDistName());
-                expendDistDto.setExpendDistLvl(distHier.getHierLvl());
-                expendDistDtoList.add(expendDistDto);
-            }
-        }else{
-            expendDistLines = allocationEntityList.get(0).getExpendDistLines();
-            String[] lines = null;
-            if(StringUtils.isNotEmpty(expendDistLines)){
-                lines = expendDistLines.split(",");
-            }
-            for (int i=0; i < treeList.size(); i++) {
-                MkDistHierEntity distHier = treeList.get(i);
-                MkDistEntity mkDistEntity = mkDistService.queryObject(distHier.getDistId());
-                ExpendDistDto expendDistDto = new ExpendDistDto();
-                expendDistDto.setExpendDistId(distHier.getDistId());
-                expendDistDto.setExpendDistName(mkDistEntity.getDistName());
-                expendDistDto.setExpendDistLvl(distHier.getHierLvl());
-
-                if(treeList.size() == lines.length){
-                    expendDistDto.setExpendDistLine(BigDecimal.valueOf(Double.parseDouble(lines[i])));
+            Map<String, Object> allocationMap = new HashMap<>();
+            allocationMap.put("goodsId", goodsId);
+            allocationMap.put("storeId", storeId);
+            String expendDistLines = "";
+            List<MkDistSellAllocationEntity> allocationEntityList =  mkDistSellAllocationService.queryAllocationByMap(allocationMap);
+            if(allocationEntityList.size() == 0){
+//                SysUserEntity user = ShiroUtils.getUserEntity();
+//                Map<String, Object> distHierMap = new HashMap<>();
+//                if(StringUtils.isNotEmpty(user.getMerchSn())) {
+//                    distHierMap.put("merchSn", user.getMerchSn());
+//                }
+//                if(StringUtils.isNotEmpty(String.valueOf(distEntity.getStoreId()))) {
+//                    distHierMap.put("storeId", distEntity.getStoreId());
+//                }
+//                if(StringUtils.isNotEmpty(user.getThirdPartyMerchCode())) {
+//                    distHierMap.put("thirdPartyMerchCode", user.getThirdPartyMerchCode());
+//                }
+//                List<MkDistHierEntity> distHierEntityList = mkDistHierService.queryList(distHierMap);
+                for (int i=0; i < treeList.size(); i++) {
+                    MkDistHierEntity distHier = treeList.get(i);
+                    MkDistEntity mkDistEntity = mkDistService.queryObject(distHier.getDistId());
+                    ExpendDistDto expendDistDto = new ExpendDistDto();
+                    expendDistDto.setExpendDistId(distHier.getDistId());
+                    expendDistDto.setExpendDistName(mkDistEntity.getDistName());
+                    expendDistDto.setExpendDistLvl(distHier.getHierLvl());
+                    expendDistDtoList.add(expendDistDto);
+                }
+            }else{
+                expendDistLines = allocationEntityList.get(0).getExpendDistLines();
+                String[] lines = null;
+                if(StringUtils.isNotEmpty(expendDistLines)){
+                    lines = expendDistLines.split(",");
+                }
+                for (int i=0; i < treeList.size(); i++) {
+                    MkDistHierEntity distHier = treeList.get(i);
+                    MkDistEntity mkDistEntity = mkDistService.queryObject(distHier.getDistId());
+                    ExpendDistDto expendDistDto = new ExpendDistDto();
+                    expendDistDto.setExpendDistId(distHier.getDistId());
+                    expendDistDto.setExpendDistName(mkDistEntity.getDistName());
+                    expendDistDto.setExpendDistLvl(distHier.getHierLvl());
+
+                    if(treeList.size() == lines.length){
+                        expendDistDto.setExpendDistLine(BigDecimal.valueOf(Double.parseDouble(lines[i])));
+                    }
+                    expendDistDtoList.add(expendDistDto);
                 }
-                expendDistDtoList.add(expendDistDto);
             }
         }
         return R.ok().put("list", expendDistDtoList);

+ 3 - 28
kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistSellStatisController.java

@@ -45,7 +45,7 @@ public class MkDistSellStatisController {
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        params = setTimeMap(params);
+        params = ParamUtils.setTimeMap(params);
         //查询列表数据
         Query query = new Query(params);
 
@@ -112,7 +112,7 @@ public class MkDistSellStatisController {
     @ResponseBody
     public R queryAll(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        params = setTimeMap(params);
+        params = ParamUtils.setTimeMap(params);
 
         List<MkDistSellStatisEntity> list = mkDistSellStatisService.queryList(params);
 
@@ -126,7 +126,7 @@ public class MkDistSellStatisController {
     @RequestMapping(value = "export")
     public Object export(@RequestParam Map<String, Object> params, HttpServletResponse response, HttpServletRequest request) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
-        params = setTimeMap(params);
+        params = ParamUtils.setTimeMap(params);
 
         List<MkDistSellStatisEntity> orderList = mkDistSellStatisService.queryStatisExportList(params);
 
@@ -175,29 +175,4 @@ public class MkDistSellStatisController {
         ee.export(response);
         return R.ok();
     }
-    private Map<String, Object> setTimeMap(Map<String, Object> params){
-        String startTime = (String) params.get("startTime");
-        String endTime = (String) params.get("endTime");
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(startTime)) {
-            try {
-                startTime = new String(startTime.getBytes("iso-8859-1"), "utf-8");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            startTime = DateUtils.getDate(startTime);
-            params.put("startTime", startTime + " 00:00:00");
-        }
-        if(org.apache.commons.lang.StringUtils.isNotEmpty(endTime)) {
-            try {
-                endTime = new String(endTime.getBytes("iso-8859-1"), "utf-8");
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            endTime = DateUtils.getDate(endTime);
-            params.put("endTime", endTime + " 59:59:59");
-        }
-        return params;
-    }
-
-
 }

+ 235 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreCampMinusController.java

@@ -0,0 +1,235 @@
+package com.kmall.admin.controller.mk.store;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.ImmutableBiMap;
+import com.kmall.admin.entity.mk.store.MkStoreCampMinusEntity;
+import com.kmall.admin.entity.mk.store.StoreTopicEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
+import com.kmall.admin.service.mk.store.MkStoreCampMinusService;
+import com.kmall.admin.service.mk.store.StoreTopicService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.utils.*;
+import com.kmall.common.utils.file.FileUploadUtil;
+import com.kmall.common.utils.wechat.AccessToken;
+import com.kmall.manager.manager.pay.wxpay.WxPayPropertiesBuilder;
+import com.kmall.manager.manager.wechat.wxtemplate.WxTemplateUtil;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * 门店满减活动Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 14:43:28
+ */
+@Controller
+@RequestMapping("mkstorecampminus")
+public class MkStoreCampMinusController {
+    @Autowired
+    private MkStoreCampMinusService mkStoreCampMinusService;
+    @Autowired
+    private StoreTopicService storeTopicService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkstorecampminus:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setName(params, "campName");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkStoreCampMinusEntity> mkStoreCampMinusList = mkStoreCampMinusService.queryList(query);
+        int total = mkStoreCampMinusService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkStoreCampMinusList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{campMinusId}")
+    @RequiresPermissions("mkstorecampminus:info")
+    @ResponseBody
+    public R info(@PathVariable("campMinusId") Integer campMinusId) {
+        MkStoreCampMinusEntity mkStoreCampMinus = mkStoreCampMinusService.queryObject(campMinusId);
+
+        return R.ok().put("mkStoreCampMinus", mkStoreCampMinus);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkstorecampminus:save")
+    @ResponseBody
+    public R save(@RequestBody MkStoreCampMinusEntity mkStoreCampMinus) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(mkStoreCampMinus);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("campName", "活动名称");
+        builder.put("campBegTime", "活动起始时间");
+        builder.put("campEndTime", "活动结束时间");
+        builder.put("campMinusType", "减免活动类型");
+        builder.put("thirdMerchSn", "所属三方商户");
+        builder.put("storeId", "所属门店");
+        builder.put("goodsBizType", "货品业务类型");
+        builder.put("applyType", "适用类型");
+        builder.put("advImgUrl", "活动图片url");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+        mkStoreCampMinusService.save(mkStoreCampMinus);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkstorecampminus:update")
+    @ResponseBody
+    public R update(@RequestBody MkStoreCampMinusEntity mkStoreCampMinus) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(mkStoreCampMinus);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("campName", "活动名称");
+        builder.put("campBegTime", "活动起始时间");
+        builder.put("campEndTime", "活动结束时间");
+        builder.put("campMinusType", "减免活动类型");
+        builder.put("thirdMerchSn", "所属三方商户");
+        builder.put("storeId", "所属门店");
+        builder.put("goodsBizType", "货品业务类型");
+        builder.put("applyType", "适用类型");
+        builder.put("advImgUrl", "活动图片url");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+        mkStoreCampMinusService.update(mkStoreCampMinus);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkstorecampminus:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]campMinusIds) {
+        mkStoreCampMinusService.deleteBatch(campMinusIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+
+        List<MkStoreCampMinusEntity> list = mkStoreCampMinusService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+    /**
+     * 结束活动
+     * @param campMinusId
+     * @return
+     */
+    @RequestMapping("/updatePastById")
+//    @RequiresPermissions("mkstorecampminus:updatePastById")
+    @ResponseBody
+    public R updatePastById(@RequestBody Integer campMinusId) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        MkStoreCampMinusEntity campMinusEntity = mkStoreCampMinusService.queryObject(campMinusId);
+        if(campMinusEntity != null) {
+            MkStoreCampMinusEntity entity = new MkStoreCampMinusEntity();
+            entity.setIsPast(Dict.isPast.item_1.getItem());
+            entity.setIsValid(Dict.isValid.item_1.getItem());
+            entity.setCampMinusId(campMinusId);
+            entity.setCampEndTime(new Date());
+            entity.setModTime(new Date());
+            entity.setModerSn(user.getUsername());
+            mkStoreCampMinusService.updatePastById(entity);
+
+            //修改为无效活动
+            StoreTopicEntity storeTopicEntity = new StoreTopicEntity();
+            storeTopicEntity.setId(campMinusEntity.getStoreTopicId());
+            storeTopicEntity.setIsValid(Dict.isValid.item_1.getItem());
+            storeTopicEntity.setModTime(new Date());
+            storeTopicEntity.setModerSn(user.getUsername());
+            storeTopicService.update(storeTopicEntity);
+        }
+        return R.ok();
+    }
+
+    /**
+     * 开始活动
+     * @param campMinusId
+     * @return
+     */
+    @RequestMapping("/updateStartPastById")
+//    @RequiresPermissions("mkstorecampminus:updateStartPastById")
+    @ResponseBody
+    public R updateStartPastById(@RequestBody Integer campMinusId) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        MkStoreCampMinusEntity campMinusEntity = mkStoreCampMinusService.queryObject(campMinusId);
+        if(campMinusEntity != null) {
+            MkStoreCampMinusEntity entity = new MkStoreCampMinusEntity();
+            entity.setIsPast(Dict.isPast.item_0.getItem());
+            entity.setCampMinusId(campMinusId);
+            entity.setCampBegTime(new Date());
+            entity.setModTime(new Date());
+            entity.setModerSn(user.getUsername());
+            mkStoreCampMinusService.updatePastById(entity);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping("/qrcodeCanvasByCampMinus/{campMinusId}")
+//    @RequiresPermissions("mkstorecampminus:qrcodeCanvas")
+    @ResponseBody
+    public R qrcodeCanvasByCampMinus(@PathVariable("campMinusId") Integer campMinusId) {
+        MkStoreCampMinusEntity campMinusEntity = mkStoreCampMinusService.queryObject(campMinusId);
+        if(campMinusEntity==null){
+            throw new RRException("门店满减满折信息不存在");
+        }
+        AccessToken accessToken = WxTemplateUtil.getAccessToken(WxPayPropertiesBuilder.instance().getAppId(),WxPayPropertiesBuilder.instance().getSecret());
+        if(accessToken == null){
+            throw new RRException("token获取失败");
+        }
+        String token = accessToken.getToken();
+
+        //构建请求参数
+        Map<Object, Object> params = new HashMap<Object, Object>();
+        //dictId&storeId&isShare,isShare为0则是分享页进来的
+        params.put("scene", campMinusEntity.getCampMinusId()+"&"+campMinusEntity.getStoreId()+"&0");//参数
+        params.put("page", "pages/ucenter/couponDetail/couponDetail");//优惠券详情页面
+        params.put("width", 430);
+        String mapToXml = JSON.toJSONString(params);
+
+        String url = FileUploadUtil.getUploadUrl(mapToXml, token, campMinusId);
+        return R.ok().put("url", url);
+    }
+}

+ 126 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreCampMinusGoodsController.java

@@ -0,0 +1,126 @@
+package com.kmall.admin.controller.mk.store;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.mk.store.MkStoreCampMinusGoodsEntity;
+import com.kmall.admin.service.mk.store.MkStoreCampMinusGoodsService;
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 门店满减活动商品,参与满减活动的商品Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 14:43:29
+ */
+@Controller
+@RequestMapping("mkstorecampminusgoods")
+public class MkStoreCampMinusGoodsController {
+    @Autowired
+    private MkStoreCampMinusGoodsService mkStoreCampMinusGoodsService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkstorecampminusgoods:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+        List<MkStoreCampMinusGoodsEntity> mkStoreCampMinusGoodsList = mkStoreCampMinusGoodsService.queryList(query);
+        int total = mkStoreCampMinusGoodsService.queryTotal(query);
+        PageUtils pageUtil = new PageUtils(mkStoreCampMinusGoodsList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/queryCampMinusGoodsByIdList")
+    @ResponseBody
+    public R queryCampMinusGoodsByIdList(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+        List<MkStoreCampMinusGoodsEntity> mkStoreCampMinusGoodsList = mkStoreCampMinusGoodsService.queryCampMinusGoodsByIdList(query);
+        int total = mkStoreCampMinusGoodsService.queryCampMinusGoodsByIdTotal(query);
+        PageUtils pageUtil = new PageUtils(mkStoreCampMinusGoodsList, total, query.getLimit(), query.getPage());
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{minusGoodId}")
+    @RequiresPermissions("mkstorecampminusgoods:info")
+    @ResponseBody
+    public R info(@PathVariable("minusGoodId") Integer minusGoodId) {
+        MkStoreCampMinusGoodsEntity mkStoreCampMinusGoods = mkStoreCampMinusGoodsService.queryObject(minusGoodId);
+
+        return R.ok().put("mkStoreCampMinusGoods", mkStoreCampMinusGoods);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkstorecampminusgoods:save")
+    @ResponseBody
+    public R save(@RequestBody MkStoreCampMinusGoodsEntity mkStoreCampMinusGoods) {
+        mkStoreCampMinusGoodsService.save(mkStoreCampMinusGoods);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkstorecampminusgoods:update")
+    @ResponseBody
+    public R update(@RequestBody MkStoreCampMinusGoodsEntity mkStoreCampMinusGoods) {
+        mkStoreCampMinusGoodsService.update(mkStoreCampMinusGoods);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkstorecampminusgoods:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]minusGoodIds) {
+        mkStoreCampMinusGoodsService.deleteBatch(minusGoodIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<MkStoreCampMinusGoodsEntity> list = mkStoreCampMinusGoodsService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+    /**
+     * 保存
+     */
+    @RequestMapping("/batchSaveCampMinusGoods")
+//    @RequiresPermissions("mkstorecampminusgoods:save")
+    @ResponseBody
+    public R batchSaveCampMinusGoods(@RequestBody MkStoreCampMinusGoodsEntity mkStoreCampMinusGoods) {
+        mkStoreCampMinusGoodsService.batchSaveCampMinusGoods(mkStoreCampMinusGoods);
+
+        return R.ok();
+    }
+}

+ 106 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreCampMinusLevelController.java

@@ -0,0 +1,106 @@
+package com.kmall.admin.controller.mk.store;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.mk.store.MkStoreCampMinusLevelEntity;
+import com.kmall.admin.service.mk.store.MkStoreCampMinusLevelService;
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 门店满减活动层级表,活动减免类型为00:按满足最高层级减一次时增加的活动层级数据Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 14:43:29
+ */
+@Controller
+@RequestMapping("mkstorecampminuslevel")
+public class MkStoreCampMinusLevelController {
+    @Autowired
+    private MkStoreCampMinusLevelService mkStoreCampMinusLevelService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkstorecampminuslevel:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkStoreCampMinusLevelEntity> mkStoreCampMinusLevelList = mkStoreCampMinusLevelService.queryList(query);
+        int total = mkStoreCampMinusLevelService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkStoreCampMinusLevelList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{campMinusLevelId}")
+    @RequiresPermissions("mkstorecampminuslevel:info")
+    @ResponseBody
+    public R info(@PathVariable("campMinusId") Integer campMinusLevelId) {
+        MkStoreCampMinusLevelEntity mkStoreCampMinusLevel = mkStoreCampMinusLevelService.queryObject(campMinusLevelId);
+
+        return R.ok().put("mkStoreCampMinusLevel", mkStoreCampMinusLevel);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkstorecampminuslevel:save")
+    @ResponseBody
+    public R save(@RequestBody MkStoreCampMinusLevelEntity mkStoreCampMinusLevel) {
+        mkStoreCampMinusLevelService.save(mkStoreCampMinusLevel);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkstorecampminuslevel:update")
+    @ResponseBody
+    public R update(@RequestBody MkStoreCampMinusLevelEntity mkStoreCampMinusLevel) {
+        mkStoreCampMinusLevelService.update(mkStoreCampMinusLevel);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkstorecampminuslevel:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[] campMinusLevelIds) {
+        mkStoreCampMinusLevelService.deleteBatch(campMinusLevelIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<MkStoreCampMinusLevelEntity> list = mkStoreCampMinusLevelService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+}

+ 43 - 36
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStorePromController.java

@@ -2,6 +2,7 @@ package com.kmall.admin.controller.mk.store;
 
 import java.io.*;
 import java.nio.file.Files;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -10,7 +11,10 @@ import com.alibaba.fastjson.JSON;
 import com.google.common.collect.ImmutableBiMap;
 import com.kmall.admin.entity.mk.store.MkStorePromChnlEntity;
 import com.kmall.admin.entity.mk.store.MkStorePromEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.admin.service.mk.store.MkStorePromService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.admin.utils.ShiroUtils;
 import com.kmall.common.constant.Dict;
 import com.kmall.common.fileserver.util.FileManager;
 import com.kmall.common.utils.*;
@@ -54,46 +58,13 @@ public class MkStorePromController {
     @RequiresPermissions("mkstoreprom:list")
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setName(params, "promName");
         //查询列表数据
         Query query = new Query(params);
 
         List<MkStorePromEntity> mkStorePromList = mkStorePromService.queryList(query);
-        for (MkStorePromEntity mkStorePromEntity : mkStorePromList) {
-            String promStat = "";
-            String promInfo = "";
-            String promPicUrl = "";
 
-            String browseNum = StringUtils.isNotEmpty(String.valueOf(mkStorePromEntity.getBrowseNum())) ? String.valueOf(mkStorePromEntity.getBrowseNum()) : "0";
-            String payOrderNum = StringUtils.isNotEmpty(String.valueOf(mkStorePromEntity.getPayOrderNum())) ? String.valueOf(mkStorePromEntity.getPayOrderNum()) : "0";
-            String receivMoney = StringUtils.isNotEmpty(String.valueOf(mkStorePromEntity.getReceivMoney())) ? String.valueOf(mkStorePromEntity.getReceivMoney()) : "0";
-            String startDate = DateUtils.format(mkStorePromEntity.getPromBegTime(), DateUtils.DATE_TIME_PATTERN);
-            String endDate = DateUtils.format(mkStorePromEntity.getPromEndTime(), DateUtils.DATE_TIME_PATTERN);
-            String inValidDate = startDate + " - " + endDate;
-            if(mkStorePromEntity.getPromType().equalsIgnoreCase(Dict.promType.item_00.getItem())){
-                promStat = "浏览量:" + browseNum;
-                promInfo = "<span style=\"font-weight: bolder\">" + mkStorePromEntity.getPromName() + "</span>\n"
-                        + mkStorePromEntity.getTopicTitle() + "\n推广有效期:"
-                        + inValidDate ;
-
-                if(mkStorePromEntity.getIsFinished().equalsIgnoreCase(Dict.isFinished.item_1.getItem())){
-                    promInfo = promInfo + "&nbsp;&nbsp;&nbsp;&nbsp;<button class='btn btn-outline'style=\"margin-top: -3px;\" onclick='vm.updateFinished(" + mkStorePromEntity.getPromId() + ")'>立即结束</button>";
-                }
-                promPicUrl = mkStorePromEntity.getItemPicUrl();
-            }
-            if(mkStorePromEntity.getPromType().equalsIgnoreCase(Dict.promType.item_10.getItem())){
-                promStat = "浏览量:" + browseNum + "\n支付单数:" + payOrderNum + "\n应收金额:" + receivMoney;
-                promInfo = "<span style=\"font-weight: bolder\">" + mkStorePromEntity.getPromName() + "</span>\n"
-                        + mkStorePromEntity.getGoodsName() + "\n推广有效期:"
-                        + inValidDate;
-                if(mkStorePromEntity.getIsFinished().equalsIgnoreCase(Dict.isFinished.item_1.getItem())){
-                    promInfo = promInfo + "&nbsp;&nbsp;&nbsp;&nbsp;<button class='btn btn-outline'style=\"margin-top: -3px;\" onclick='vm.updateFinished(" + mkStorePromEntity.getPromId() + ")'>立即结束</button>";
-                }
-                promPicUrl = mkStorePromEntity.getListPicUrl();
-            }
-            mkStorePromEntity.setPromStat(promStat);
-            mkStorePromEntity.setPromInfo(promInfo);
-            mkStorePromEntity.setPromPicUrl(promPicUrl);
-        }
         int total = mkStorePromService.queryTotal(query);
         PageUtils pageUtil = new PageUtils(mkStorePromList, total, query.getLimit(), query.getPage());
 
@@ -142,6 +113,9 @@ public class MkStorePromController {
         if (Integer.valueOf(r.get("code").toString()) != 0) {
             throw new RRException(r.get("msg").toString());
         }
+        if(!DateUtils.compareDate(mkStoreProm.getPromBegTime(), mkStoreProm.getPromEndTime())){
+            throw new RRException("结束时间不能超过开始时间");
+        }
 
         mkStorePromService.save(mkStoreProm);
 
@@ -178,6 +152,9 @@ public class MkStorePromController {
         if (Integer.valueOf(r.get("code").toString()) != 0) {
             throw new RRException(r.get("msg").toString());
         }
+        if(!DateUtils.compareDate(mkStoreProm.getPromBegTime(), mkStoreProm.getPromEndTime())){
+            throw new RRException("结束时间不能超过开始时间");
+        }
         mkStorePromService.update(mkStoreProm);
 
         return R.ok();
@@ -199,6 +176,7 @@ public class MkStorePromController {
     @RequiresPermissions("mkstoreprom:update")
     @ResponseBody
     public R updateFinished(@RequestBody Integer promId) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
         MkStorePromEntity mkStorePromEntity = mkStorePromService.queryObject(promId);
         if(mkStorePromEntity != null){
             if(mkStorePromEntity.getIsFinished().equalsIgnoreCase(Dict.isFinished.item_0.getItem())){
@@ -207,7 +185,35 @@ public class MkStorePromController {
                 MkStorePromEntity promEntity = new MkStorePromEntity();
                 promEntity.setPromId(promId);
                 promEntity.setIsFinished(Dict.isFinished.item_0.getItem());
-                mkStorePromService.update(promEntity);
+                promEntity.setPromEndTime(new Date());
+                promEntity.setModTime(new Date());
+                promEntity.setModerSn(user.getUsername());
+                mkStorePromService.updateStartedOrFinished(promEntity);
+            }
+        }
+
+        return R.ok();
+    }
+
+    @RequestMapping("/updateStarted")
+    @RequiresPermissions("mkstoreprom:update")
+    @ResponseBody
+    public R updateStarted(@RequestBody Integer promId) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        MkStorePromEntity mkStorePromEntity = mkStorePromService.queryObject(promId);
+        if(mkStorePromEntity != null){
+            if(mkStorePromEntity.getIsFinished().equalsIgnoreCase(Dict.isFinished.item_0.getItem())){
+                throw new RRException("该推广信息已结束,不能进行操作!");
+            }else if(mkStorePromEntity.getIsFinished().equalsIgnoreCase(Dict.isFinished.item_1.getItem())){
+                throw new RRException("该推广信息正在进行中,不能再次操作!");
+            }else{
+                MkStorePromEntity promEntity = new MkStorePromEntity();
+                promEntity.setPromId(promId);
+                promEntity.setIsFinished(Dict.isFinished.item_1.getItem());
+                promEntity.setPromBegTime(new Date());
+                promEntity.setModTime(new Date());
+                promEntity.setModerSn(user.getUsername());
+                mkStorePromService.updateStartedOrFinished(promEntity);
             }
         }
 
@@ -220,6 +226,7 @@ public class MkStorePromController {
     @RequestMapping("/queryAll")
     @ResponseBody
     public R queryAll(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
 
         List<MkStorePromEntity> list = mkStorePromService.queryList(params);
 

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStorePromStatController.java

@@ -1,10 +1,18 @@
 package com.kmall.admin.controller.mk.store;
 
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.kmall.admin.entity.OrderEntity;
 import com.kmall.admin.entity.mk.store.MkStorePromStatEntity;
+import com.kmall.admin.service.OrderService;
 import com.kmall.admin.service.mk.store.MkStorePromStatService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.utils.StringUtils;
+import com.kmall.common.utils.excel.ExcelExport;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -14,6 +22,8 @@ import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
 
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * 门店推广统计Controller
  *
@@ -27,6 +37,9 @@ public class MkStorePromStatController {
     @Autowired
     private MkStorePromStatService mkStorePromStatService;
 
+    @Autowired
+    private OrderService orderService;
+
     /**
      * 查看列表
      */
@@ -34,6 +47,7 @@ public class MkStorePromStatController {
     @RequiresPermissions("mkstorepromstat:list")
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
         //查询列表数据
         Query query = new Query(params);
 
@@ -99,9 +113,67 @@ public class MkStorePromStatController {
     @RequestMapping("/queryAll")
     @ResponseBody
     public R queryAll(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
 
         List<MkStorePromStatEntity> list = mkStorePromStatService.queryList(params);
 
         return R.ok().put("list", list);
     }
+
+    @RequestMapping("/promOrderList")
+//    @RequiresPermissions("mkstorepromstat:promOrderList")
+    @ResponseBody
+    public R promOrderList(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<OrderEntity> mkStorePromStatList = orderService.promOrderList(query);
+        int total = orderService.queryPromOrderTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkStorePromStatList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    @RequestMapping("/exportPromOrderList")
+//    @RequiresPermissions("mkstorepromstat:exportPromOrderList")
+    public R exportPromOrderList(@RequestParam Map<String, Object> params, HttpServletResponse response) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+
+        List<OrderEntity> orderEntityList = orderService.promOrderListExport(params);
+
+        ExcelExport ee = new ExcelExport("渠道追踪推广订单列表");
+
+        String[] header = new String[]{"推广id", "订单编号", "商品", "商品单价", "订单实付金额", "渠道推广实收金额", "购买数量",  "会员", "商户订单号", "优惠券使用", "运费", "订单状态", "付款状态"};
+
+        List<Map<String, Object>> list = new ArrayList<>();
+
+        if (orderEntityList != null && orderEntityList.size() != 0) {
+            for (OrderEntity orderEntity : orderEntityList) {
+                LinkedHashMap<String, Object> map = new LinkedHashMap<>();
+                map.put("PromId", orderEntity.getPromId());
+                map.put("OrderSn", orderEntity.getOrderSn());
+                map.put("GoodsName", orderEntity.getGoodsName());
+                map.put("RetailPrice", orderEntity.getRetailPrice());
+                map.put("ActualPrice", orderEntity.getActualPrice());
+                map.put("promActualPrice", orderEntity.getPromActualPrice());
+                map.put("Number", orderEntity.getNumber());
+                map.put("UserName", orderEntity.getUserName());
+                map.put("MerchOrderSn", orderEntity.getMerchOrderSn());
+                map.put("ActivityId", orderEntity.getActivityId()==null?"未使用":orderEntity.getActivityId());
+                map.put("FreightPrice", orderEntity.getFreightPrice());
+                map.put("OrderStatus", StringUtils.isNotEmpty(String.valueOf(orderEntity.getOrderStatus()))?
+                        Dict.orderStatus.valueOf("item_"+orderEntity.getOrderStatus()).getItemName():"");
+                map.put("PayStatus", StringUtils.isNotEmpty(String.valueOf(orderEntity.getPayStatus()))?
+                        Dict.payStatus.valueOf("item_"+orderEntity.getPayStatus()).getItemName():"");
+                list.add(map);
+            }
+        }
+
+        ee.addSheetByMap("渠道追踪推广订单列表", list, header);
+        ee.export(response);
+        return R.ok();
+    }
+
 }

+ 319 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketDiscountController.java

@@ -0,0 +1,319 @@
+package com.kmall.admin.controller.mk.store;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSON;
+import com.google.common.collect.ImmutableBiMap;
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity;
+import com.kmall.admin.service.mk.store.MkStoreTicketDiscountService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.utils.*;
+import com.kmall.common.utils.file.FileUploadUtil;
+import com.kmall.common.utils.wechat.AccessToken;
+import com.kmall.manager.manager.pay.wxpay.WxPayPropertiesBuilder;
+import com.kmall.manager.manager.wechat.wxtemplate.WxTemplateUtil;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 门店优惠券活动Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+@Controller
+@RequestMapping("mkstoreticketdiscount")
+public class MkStoreTicketDiscountController {
+    @Autowired
+    private MkStoreTicketDiscountService mkStoreTicketDiscountService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkstoreticketdiscount:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setName(params, "name");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkStoreTicketDiscountEntity> mkStoreTicketDiscountList = mkStoreTicketDiscountService.queryList(query);
+        int total = mkStoreTicketDiscountService.queryTotal(query);
+        for (MkStoreTicketDiscountEntity discountEntity : mkStoreTicketDiscountList) {
+            if(discountEntity.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_00.getItem())){
+                String startDate = DateUtils.format(discountEntity.getFixBegTime(), DateUtils.DATE_PATTERN);
+                String endDate = DateUtils.format(discountEntity.getFixEndTime(), DateUtils.DATE_PATTERN);
+                String inValidDate = startDate + " - " + endDate;
+                discountEntity.setInValidTime(inValidDate);
+                if(discountEntity.getFixEndTime() != null) {
+                    if (DateUtils.compareDate(new Date(), discountEntity.getFixEndTime())) {
+                        discountEntity.setInValidStatus("未过期");
+                        discountEntity.setValidStatus(0);
+                    } else {
+                        discountEntity.setInValidStatus("已过期");
+                        discountEntity.setValidStatus(1);
+                    }
+                }
+            }
+            if(discountEntity.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_01.getItem())){
+                String postponeNum = StringUtils.isNotEmpty(discountEntity.getPostponeNum()) ? discountEntity.getPostponeNum() : "0";
+                String validDayNum = StringUtils.isNotEmpty(discountEntity.getValidDayNum()) ? discountEntity.getValidDayNum() : "0";
+                String inValidDate = "领取后" + postponeNum + "天生效" + validDayNum + "天有效";
+                Integer day = Integer.parseInt(postponeNum) + Integer.parseInt(validDayNum);
+//                Date endDate = DateUtils.addDay(day);
+                Date endDate = DateUtils.addDay(new Date(), day);
+
+                discountEntity.setInValidTime(inValidDate);
+                if(DateUtils.compareDate(new Date(), endDate)) {
+                    discountEntity.setInValidStatus("未过期");
+                    discountEntity.setValidStatus(0);
+                }else{
+                    discountEntity.setInValidStatus("已过期");
+                    discountEntity.setValidStatus(1);
+                }
+            }
+        }
+
+        PageUtils pageUtil = new PageUtils(mkStoreTicketDiscountList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{tickDiscId}")
+    @RequiresPermissions("mkstoreticketdiscount:info")
+    @ResponseBody
+    public R info(@PathVariable("tickDiscId") Integer tickDiscId) {
+        MkStoreTicketDiscountEntity mkStoreTicketDiscount = mkStoreTicketDiscountService.queryObject(tickDiscId);
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_00.getItem())){
+            String startDate = DateUtils.format(mkStoreTicketDiscount.getFixBegTime(), DateUtils.DATE_PATTERN);
+            String endDate = DateUtils.format(mkStoreTicketDiscount.getFixEndTime(), DateUtils.DATE_PATTERN);
+            String inValidDate = startDate + " - " + endDate;
+            mkStoreTicketDiscount.setInValidTime(inValidDate);
+        }
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_01.getItem())){
+            String postponeNum = StringUtils.isNotEmpty(mkStoreTicketDiscount.getPostponeNum()) ? mkStoreTicketDiscount.getPostponeNum() : "0";
+            String validDayNum = StringUtils.isNotEmpty(mkStoreTicketDiscount.getValidDayNum()) ? mkStoreTicketDiscount.getValidDayNum() : "0";
+            String inValidDate = "领取后" + postponeNum + "天生效" + validDayNum + "天有效";
+            Integer day = Integer.parseInt(postponeNum) + Integer.parseInt(validDayNum);
+            mkStoreTicketDiscount.setInValidTime(inValidDate);
+        }
+        return R.ok().put("mkStoreTicketDiscount", mkStoreTicketDiscount);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkstoreticketdiscount:save")
+    @ResponseBody
+    public R save(@RequestBody MkStoreTicketDiscountEntity mkStoreTicketDiscount) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(mkStoreTicketDiscount);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("thirdMerchSn", "所属三方商户");
+        builder.put("storeId", "所属门店");
+        builder.put("name", "优惠券标题");
+        builder.put("effectTimeType", "生效时间");
+        builder.put("tickDiscType", "优惠类型");
+        builder.put("ticketNum", "库存");
+        builder.put("advImgUrl", "活动图片url(小图)");
+        builder.put("storeLogoUrl", "门店logo图url");
+        builder.put("ticketColor", "券面颜色");
+        builder.put("optDecl", "操作说明");
+        builder.put("discDecl", "优惠说明");
+        builder.put("useNoti", "使用须知");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_00.getItem())){
+            builder.put("fixBegTime", "固定开始时间");
+            builder.put("fixEndTime", "固定结束时间");
+        }
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_01.getItem())){
+            builder.put("postponeNum", "领券天数");
+            builder.put("validDayNum", "有效天数");
+        }
+        if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_00.getItem())){
+            builder.put("voucherMoney", "代金券减免金额");
+            builder.put("voucherCond", "代金券使用条件");
+        }
+        if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_01.getItem())){
+            builder.put("discRatio", "折扣券折扣");
+            builder.put("discCond", "折扣券使用条件");
+        }
+        //// TODO: 2019/5/21 代金券暂时无用
+        /*if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_02.getItem())){
+            builder.put("exchCond", "兑换券使用条件");
+        }*/
+        r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_00.getItem())){
+            if(!DateUtils.compareDate(mkStoreTicketDiscount.getFixBegTime(), mkStoreTicketDiscount.getFixEndTime())){
+                throw new RRException("固定结束时间不能超过固定开始时间");
+            }else{
+                String startDate = DateUtils.format(mkStoreTicketDiscount.getFixBegTime())+" 00:00:00";
+                String endDate = DateUtils.format(mkStoreTicketDiscount.getFixEndTime())+" 23:59:59";
+                mkStoreTicketDiscount.setFixBegTime(DateUtils.strToDate(startDate));
+                mkStoreTicketDiscount.setFixEndTime(DateUtils.strToDate(endDate));
+            }
+        }
+
+        if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_00.getItem())){
+            if(mkStoreTicketDiscount.getVoucherMoney().compareTo(mkStoreTicketDiscount.getVoucherCond()) == 1){
+                throw new RRException("代金券减免金额不能大于使用条件");
+            }
+        }
+
+        if(StringUtils.isNotEmpty(mkStoreTicketDiscount.getSvrTel())) {
+            if (!PhoneFormatCheckUtils.isPhoneLegal(mkStoreTicketDiscount.getSvrTel())) {
+                throw new RRException("手机号格式有误");
+            }
+        }
+        mkStoreTicketDiscount.setName(mkStoreTicketDiscount.getName().trim());
+        mkStoreTicketDiscount.setTickDiscSubTitle(mkStoreTicketDiscount.getTickDiscSubTitle().trim());
+        mkStoreTicketDiscountService.save(mkStoreTicketDiscount);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkstoreticketdiscount:update")
+    @ResponseBody
+    public R update(@RequestBody MkStoreTicketDiscountEntity mkStoreTicketDiscount) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(mkStoreTicketDiscount);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("thirdMerchSn", "所属三方商户");
+        builder.put("storeId", "所属门店");
+        builder.put("name", "优惠券标题");
+        builder.put("effectTimeType", "生效时间");
+        builder.put("tickDiscType", "优惠类型");
+        builder.put("ticketNum", "库存");
+        builder.put("advImgUrl", "活动图片url(小图)");
+        builder.put("storeLogoUrl", "门店logo图url");
+        builder.put("ticketColor", "券面颜色");
+        builder.put("optDecl", "操作说明");
+        builder.put("discDecl", "优惠说明");
+        builder.put("useNoti", "使用须知");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_00.getItem())){
+            builder.put("fixBegTime", "固定开始时间");
+            builder.put("fixEndTime", "固定结束时间");
+        }
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_01.getItem())){
+            builder.put("postponeNum", "领券天数");
+            builder.put("validDayNum", "有效天数");
+        }
+        if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_00.getItem())){
+            builder.put("voucherMoney", "代金券减免金额");
+            builder.put("voucherCond", "代金券使用条件");
+        }
+        if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_01.getItem())){
+            builder.put("discRatio", "折扣券折扣");
+            builder.put("discCond", "折扣券使用条件");
+        }
+        //// TODO: 2019/5/21 代金券暂时无用
+        /*if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_02.getItem())){
+            builder.put("exchCond", "兑换券使用条件");
+        }*/
+        r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
+
+        if(mkStoreTicketDiscount.getTickDiscType().equalsIgnoreCase(Dict.tickDiscType.item_00.getItem())){
+            if(mkStoreTicketDiscount.getVoucherMoney().compareTo(mkStoreTicketDiscount.getVoucherCond()) == 1){
+                throw new RRException("代金券减免金额不能大于使用条件");
+            }
+        }
+        if(mkStoreTicketDiscount.getEffectTimeType().equalsIgnoreCase(Dict.effectTimeType.item_00.getItem())){
+            if(!DateUtils.compareDate(mkStoreTicketDiscount.getFixBegTime(), mkStoreTicketDiscount.getFixEndTime())){
+                throw new RRException("固定结束时间不能超过固定开始时间");
+            }else{
+                String startDate = DateUtils.format(mkStoreTicketDiscount.getFixBegTime())+" 00:00:00";
+                String endDate = DateUtils.format(mkStoreTicketDiscount.getFixEndTime())+" 23:59:59";
+                mkStoreTicketDiscount.setFixBegTime(DateUtils.strToDate(startDate));
+                mkStoreTicketDiscount.setFixEndTime(DateUtils.strToDate(endDate));
+            }
+        }
+
+        if(StringUtils.isNotEmpty(mkStoreTicketDiscount.getSvrTel())) {
+            if (!PhoneFormatCheckUtils.isPhoneLegal(mkStoreTicketDiscount.getSvrTel())) {
+                throw new RRException("手机号格式有误");
+            }
+        }
+        mkStoreTicketDiscountService.update(mkStoreTicketDiscount);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkstoreticketdiscount:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]tickDiscIds) {
+        mkStoreTicketDiscountService.deleteBatch(tickDiscIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+
+        List<MkStoreTicketDiscountEntity> list = mkStoreTicketDiscountService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+    @RequestMapping("/qrcodeCanvasByTickDiscId/{tickDiscId}")
+//    @RequiresPermissions("mkstoreticketdiscount:qrcodeCanvasByTickDiscId")
+    @ResponseBody
+    public R qrcodeCanvasByTickDiscId(@PathVariable("tickDiscId") Integer tickDiscId) {
+        MkStoreTicketDiscountEntity ticketDiscountEntity = mkStoreTicketDiscountService.queryObject(tickDiscId);
+        if(ticketDiscountEntity == null){
+            throw new RRException("门店优惠券信息不存在");
+        }
+        AccessToken accessToken = WxTemplateUtil.getAccessToken(WxPayPropertiesBuilder.instance().getAppId(),WxPayPropertiesBuilder.instance().getSecret());
+        if(accessToken == null){
+            throw new RRException("token获取失败");
+        }
+        String token = accessToken.getToken();
+
+        //构建请求参数
+        Map<Object, Object> params = new HashMap<Object, Object>();
+        //dictId&storeId&isShare,isShare为0则是分享页进来的
+        params.put("scene", ticketDiscountEntity.getTickDiscId()+"&"+ticketDiscountEntity.getStoreId()+"&0");//参数
+        params.put("page", "pages/ucenter/couponDetail/couponDetail");//优惠券详情页面
+        params.put("width", 430);
+        String mapToXml = JSON.toJSONString(params);
+
+        String url = FileUploadUtil.getUploadUrl(mapToXml, token, tickDiscId);
+        return R.ok().put("url", url);
+    }
+}

+ 113 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketDiscountGoodsController.java

@@ -0,0 +1,113 @@
+package com.kmall.admin.controller.mk.store;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.dto.CheckGoodsDto;
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity;
+import com.kmall.admin.service.mk.store.MkStoreTicketDiscountGoodsService;
+import com.kmall.common.constant.Dict;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+@Controller
+@RequestMapping("mkstoreticketdiscountgoods")
+public class MkStoreTicketDiscountGoodsController {
+    @Autowired
+    private MkStoreTicketDiscountGoodsService mkStoreTicketDiscountGoodsService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkstoreticketdiscountgoods:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkStoreTicketDiscountGoodsEntity> mkStoreTicketDiscountGoodsList = mkStoreTicketDiscountGoodsService.queryList(query);
+        int total = mkStoreTicketDiscountGoodsService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkStoreTicketDiscountGoodsList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{discGoodId}")
+    @RequiresPermissions("mkstoreticketdiscountgoods:info")
+    @ResponseBody
+    public R info(@PathVariable("discGoodId") Integer discGoodId) {
+        MkStoreTicketDiscountGoodsEntity mkStoreTicketDiscountGoods = mkStoreTicketDiscountGoodsService.queryObject(discGoodId);
+
+        return R.ok().put("mkStoreTicketDiscountGoods", mkStoreTicketDiscountGoods);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkstoreticketdiscountgoods:save")
+    @ResponseBody
+    public R save(@RequestBody MkStoreTicketDiscountGoodsEntity mkStoreTicketDiscountGoods) {
+        mkStoreTicketDiscountGoodsService.save(mkStoreTicketDiscountGoods);
+
+        return R.ok();
+    }
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkstoreticketdiscountgoods:update")
+    @ResponseBody
+    public R update(@RequestBody MkStoreTicketDiscountGoodsEntity mkStoreTicketDiscountGoods) {
+        mkStoreTicketDiscountGoodsService.update(mkStoreTicketDiscountGoods);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkstoreticketdiscountgoods:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]discGoodIds) {
+        mkStoreTicketDiscountGoodsService.deleteBatch(discGoodIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<MkStoreTicketDiscountGoodsEntity> list = mkStoreTicketDiscountGoodsService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+}

+ 231 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketGoodsTempController.java

@@ -0,0 +1,231 @@
+package com.kmall.admin.controller.mk.store;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity;
+import com.kmall.admin.service.mk.store.MkStoreTicketGoodsTempService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.utils.*;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品临时表Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-09 17:33:29
+ */
+@Controller
+@RequestMapping("mkstoreticketgoodstemp")
+public class MkStoreTicketGoodsTempController {
+    @Autowired
+    private MkStoreTicketGoodsTempService mkStoreTicketGoodsTempService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkstoreticketgoodstemp:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkStoreTicketGoodsTempEntity> mkStoreTicketGoodsTempList = mkStoreTicketGoodsTempService.queryList(query);
+        int total = mkStoreTicketGoodsTempService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkStoreTicketGoodsTempList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{discGoodTempId}")
+    @RequiresPermissions("mkstoreticketgoodstemp:info")
+    @ResponseBody
+    public R info(@PathVariable("discGoodTempId") Integer discGoodTempId) {
+        MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp = mkStoreTicketGoodsTempService.queryObject(discGoodTempId);
+
+        return R.ok().put("mkStoreTicketGoodsTemp", mkStoreTicketGoodsTemp);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkstoreticketgoodstemp:save")
+    @ResponseBody
+    public R save(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp) {
+        mkStoreTicketGoodsTempService.save(mkStoreTicketGoodsTemp);
+
+        return R.ok();
+    }
+
+    /**
+     * 弹框中确认按钮批量添加
+     * @param mkStoreTicketDiscountGoods
+     * @return
+     */
+    @RequestMapping("/batchSaveDiscountGoods")
+//    @RequiresPermissions("mkstoreticketgoodstemp:batchSaveDiscountGoods")
+    @ResponseBody
+    public R batchSaveDiscountGoods(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods) {
+        mkStoreTicketGoodsTempService.batchSaveDiscountGoods(mkStoreTicketDiscountGoods);
+        return R.ok();
+    }
+
+    /**
+     * 取消选中当前优惠券商品,将商品状态修改为无效
+     * @param mkStoreTicketDiscountGoods
+     * @return
+     */
+    @RequestMapping("/updateTempByIsValid")
+//    @RequiresPermissions("mkstoreticketgoodstemp:updateTempByIsValid")
+    @ResponseBody
+    public R updateTempByIsValid(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods) {
+        MkStoreTicketGoodsTempEntity entity = mkStoreTicketGoodsTempService.queryGoodsTempByRealId(mkStoreTicketDiscountGoods.getStoreRelaId(), mkStoreTicketDiscountGoods.getGuid());
+        if(entity != null){
+            MkStoreTicketGoodsTempEntity tempEntity = new MkStoreTicketGoodsTempEntity();
+            tempEntity.setIsValid(Dict.isValid.item_1.getItem());
+            tempEntity.setDiscGoodTempId(entity.getDiscGoodTempId());
+            mkStoreTicketGoodsTempService.update(tempEntity);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping("/deleteTemp")
+//    @RequiresPermissions("mkstoreticketgoodstemp:deleteTemp")
+    @ResponseBody
+    public R deleteTemp(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods) {
+        MkStoreTicketGoodsTempEntity entity = mkStoreTicketGoodsTempService.queryGoodsTempByRealId(mkStoreTicketDiscountGoods.getStoreRelaId(), mkStoreTicketDiscountGoods.getGuid());
+        if(entity != null){
+            Integer[] ids = {entity.getDiscGoodTempId()};
+            mkStoreTicketGoodsTempService.deleteBatch(ids);
+        }
+        return R.ok();
+    }
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkstoreticketgoodstemp:update")
+    @ResponseBody
+    public R update(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp) {
+        mkStoreTicketGoodsTempService.update(mkStoreTicketGoodsTemp);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+//    @RequiresPermissions("mkstoreticketgoodstemp:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]discGoodTempIds) {
+        mkStoreTicketGoodsTempService.deleteBatch(discGoodTempIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改选中商品为无效
+     * @param discGoodTempIds
+     * @return
+     */
+    @RequestMapping("/updateIsValidById")
+//    @RequiresPermissions("mkstoreticketgoodstemp:updateIsValidById")
+    @ResponseBody
+    public R updateIsValidById(@RequestBody Integer[]discGoodTempIds) {
+        for (int i =0;i< discGoodTempIds.length; i++){
+            MkStoreTicketGoodsTempEntity tempEntity = new MkStoreTicketGoodsTempEntity();
+            tempEntity.setIsButtonCannel(Dict.isValid.item_1.getItem());//无效
+            tempEntity.setDiscGoodTempId(discGoodTempIds[i]);
+            mkStoreTicketGoodsTempService.update(tempEntity);
+        }
+        return R.ok();
+    }
+
+    /**
+     * 触发优惠券选择商品页面返回按钮时,将返回失效的商品还原为有效
+     * @param mkStoreTicketGoodsTemp
+     * @return
+     */
+    @RequestMapping("/resetIsValidByTemp")
+//    @RequiresPermissions("mkstoreticketgoodstemp:resetIsValidByTemp")
+    @ResponseBody
+    public R resetIsValidByTemp(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp) {
+        mkStoreTicketGoodsTempService.resetDiscTicketIsValidByTemp(mkStoreTicketGoodsTemp);
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+
+        List<MkStoreTicketGoodsTempEntity> list = mkStoreTicketGoodsTempService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+    @RequestMapping("/queryAllDiscountByStoreId")
+    @ResponseBody
+    public R queryAllDiscountByStoreId(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkStoreTicketGoodsTempEntity> list = mkStoreTicketGoodsTempService.queryAllDiscountByStoreId(query);
+
+        int total = mkStoreTicketGoodsTempService.queryTotallDiscountByStoreId(query);
+
+        PageUtils pageUtil = new PageUtils(list, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 触发门店活动选择商品页面分页按钮时保存数据
+     * @param mkStoreTicketDiscountGoods
+     * @return
+     */
+    @RequestMapping("/batchSaveStoreTopicGoods")
+//    @RequiresPermissions("mkstoreticketgoodstemp:batchSaveStoreTopicGoods")
+    @ResponseBody
+    public R batchSaveStoreTopicGoods(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods) {
+        mkStoreTicketGoodsTempService.batchSaveStoreTopicGoods(mkStoreTicketDiscountGoods);
+        return R.ok();
+    }
+
+    /**
+     * 取消选中当前门店活动商品,将商品状态修改为无效
+     * @param mkStoreTicketDiscountGoods
+     * @return
+     */
+    @RequestMapping("/updateTempByStoreTopicIsValid")
+//    @RequiresPermissions("mkstoreticketgoodstemp:updateTempByStoreTopicIsValid")
+    @ResponseBody
+    public R updateTempByStoreTopicIsValid(@RequestBody MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods) {
+        MkStoreTicketGoodsTempEntity entity = mkStoreTicketGoodsTempService.queryGoodsTempByRealIdAndTopicId(mkStoreTicketDiscountGoods.getStoreRelaId(),
+                mkStoreTicketDiscountGoods.getStoreTopicId());
+        if(entity != null){
+            MkStoreTicketGoodsTempEntity tempEntity = new MkStoreTicketGoodsTempEntity();
+            tempEntity.setDiscGoodTempId(entity.getDiscGoodTempId());
+            tempEntity.setIsValid(Dict.isValid.item_1.getItem());
+            mkStoreTicketGoodsTempService.update(tempEntity);
+        }
+        return R.ok();
+    }
+}

+ 129 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTopicStatController.java

@@ -0,0 +1,129 @@
+package com.kmall.admin.controller.mk.store;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.OrderEntity;
+import com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity;
+import com.kmall.admin.service.OrderService;
+import com.kmall.admin.service.mk.store.MkStoreTopicStatService;
+import com.kmall.admin.utils.ParamUtils;
+import com.kmall.common.utils.MapUtils;
+import com.kmall.common.utils.PageUtils;
+import com.kmall.common.utils.Query;
+import com.kmall.common.utils.R;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 门店活动统计Controller
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+@Controller
+@RequestMapping("mkstoretopicstat")
+public class MkStoreTopicStatController {
+    @Autowired
+    private MkStoreTopicStatService mkStoreTopicStatService;
+    @Autowired
+    private OrderService orderService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkstoretopicstat:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkStoreTopicStatEntity> mkStoreTopicStatList = mkStoreTopicStatService.queryList(query);
+        int total = mkStoreTopicStatService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkStoreTopicStatList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{storeTopicStatId}")
+    @RequiresPermissions("mkstoretopicstat:info")
+    @ResponseBody
+    public R info(@PathVariable("storeTopicStatId") Integer storeTopicStatId) {
+        MkStoreTopicStatEntity mkStoreTopicStat = mkStoreTopicStatService.queryObject(storeTopicStatId);
+
+        return R.ok().put("mkStoreTopicStat", mkStoreTopicStat);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkstoretopicstat:save")
+    @ResponseBody
+    public R save(@RequestBody MkStoreTopicStatEntity mkStoreTopicStat) {
+        mkStoreTopicStatService.save(mkStoreTopicStat);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkstoretopicstat:update")
+    @ResponseBody
+    public R update(@RequestBody MkStoreTopicStatEntity mkStoreTopicStat) {
+        mkStoreTopicStatService.update(mkStoreTopicStat);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkstoretopicstat:delete")
+    @ResponseBody
+    public R delete(@RequestBody Integer[]storeTopicStatIds) {
+        mkStoreTopicStatService.deleteBatch(storeTopicStatIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+
+        List<MkStoreTopicStatEntity> list = mkStoreTopicStatService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+    @RequestMapping("/storeTopicOrderList")
+//    @RequiresPermissions("mkstoretopicstat:storeTopicOrderList")
+    @ResponseBody
+    public R storeTopicOrderList(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        //查询列表数据
+        Query query = new Query(params);
+        List<OrderEntity> mkStorePromStatList = orderService.storeTopicOrderList(query);
+        int total = orderService.queryStoreTopicOrderTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkStorePromStatList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+}

+ 1 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/StoreTopicController.java

@@ -35,6 +35,7 @@ public class StoreTopicController {
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
         ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        ParamUtils.setName(params, "name");
         //查询列表数据
         Query query = new Query(params);
 

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

@@ -11,5 +11,6 @@ import com.kmall.manager.dao.BaseDao;
  * @date 2017-08-19 09:37:35
  */
 public interface AdDao extends BaseDao<AdEntity> {
-
+    AdEntity queryAdByTickDiscId(Integer tickDiscId);
+    AdEntity queryAdByStoreTopicId(Integer storeTopicId);
 }

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

@@ -1,15 +1,19 @@
+/*
 package com.kmall.admin.dao;
 
 import com.kmall.admin.entity.CouponEntity;
 import com.kmall.manager.dao.BaseDao;
 
+*/
 /**
  * Dao
  *
  * @author Scott
  * @email
  * @date 2017-08-19 12:53:26
- */
+ *//*
+
 public interface CouponDao extends BaseDao<CouponEntity> {
 
 }
+*/

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

@@ -1,15 +1,19 @@
+/*
 package com.kmall.admin.dao;
 
 import com.kmall.admin.entity.CouponGoodsEntity;
 import com.kmall.manager.dao.BaseDao;
 
+*/
 /**
  * 优惠券关联商品Dao
  *
  * @author Scott
  * @email
  * @date 2017-08-29 21:50:17
- */
+ *//*
+
 public interface CouponGoodsDao extends BaseDao<CouponGoodsEntity> {
 
 }
+*/

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

@@ -24,4 +24,6 @@ public interface GoodsDao extends BaseDao<GoodsEntity> {
     List<GoodsEntity> querySame(Map<String, Object> map);
 
     List<GoodsEntity> queryObjectByProdBarcode(@Param("prodBarcode") String prodBarcode, @Param("merchSn") String merchSn,@Param("goodsId")Long id);
+
+    GoodsEntity queryObjectByStoreId(@Param("id") Long id, @Param("storeId") Long storeId);
 }

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

@@ -20,7 +20,7 @@ public interface OrderDao extends BaseDao<OrderEntity> {
      *
      * @param activityId
      */
-    OrderEntity queryObjectByActivityId(@Param("activityId") Long activityId, @Param("orderType") Integer orderType);
+    List<OrderEntity> queryObjectByActivityId(@Param("activityId") Integer activityId);
 
     OrderEntity queryObjectBySysUser(Long id);
     /**
@@ -74,4 +74,21 @@ public interface OrderDao extends BaseDao<OrderEntity> {
     List<OrderEntity> queryExportList(Map<String, Object> map);
 
     OrderEntity queryObjectByOrderSn(@Param("orderSn")String orderSn);
+
+    List<OrderEntity> promOrderList(Map<String, Object> map);
+
+    int queryPromOrderTotal(Map<String, Object> map);
+
+    List<OrderEntity> promOrderListExport(Map<String, Object> map);
+
+    /**
+     * 获取已排除不是推广订单的且已支付的实收金额
+     * @param map
+     * @return
+     */
+    Double getActualPriceByOutProm(Map<String, Object> map);
+
+    List<OrderEntity> storeTopicOrderList(Map<String, Object> map);
+
+    int queryStoreTopicOrderTotal(Map<String, Object> map);
 }

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

@@ -2,6 +2,10 @@ package com.kmall.admin.dao;
 
 import com.kmall.admin.entity.OrderGoodsEntity;
 import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * 
@@ -11,5 +15,5 @@ import com.kmall.manager.dao.BaseDao;
  * @date 2017-08-13 10:41:09
  */
 public interface OrderGoodsDao extends BaseDao<OrderGoodsEntity> {
-	
+    List<OrderGoodsEntity> queryListByOrderId(Map map);
 }

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

@@ -31,4 +31,36 @@ public interface ProductStoreRelaDao extends BaseDao<ProductStoreRelaEntity> {
     void updateStockNum(ProductStoreRelaEntity productStoreRelaEntity);
 
     void updateSellVolumeNum(ProductStoreRelaEntity productStoreRelaEntity);
+
+    /**
+     * 根据优惠券临时表查询商品分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<ProductStoreRelaEntity> queryGoodsRealListByDiscountTid(Map<String, Object> map);
+
+    /**
+     * 根据优惠券临时表查询商品分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryGoodsRealListByDiscountTidTotal(Map<String, Object> map);
+
+    /**
+     * 根据门店活动临时表查询商品分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<ProductStoreRelaEntity> queryGoodsRealListByTopicId(Map<String, Object> map);
+
+    /**
+     * 根据门店活动临时表查询商品分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryGoodsRealListByTopicIdTotal(Map<String, Object> map);
 }

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

@@ -12,5 +12,5 @@ import org.apache.ibatis.annotations.Param;
  * @date 2018-11-26 15:14:24
  */
 public interface SupplierDao extends BaseDao<SupplierEntity> {
-    SupplierEntity queryObjectByName(@Param("supplierName")String supplierName,@Param("merchSn")String merchSn);
+    SupplierEntity queryObjectByName(@Param("supplierName")String supplierName, @Param("merchSn")String merchSn, @Param("thirdPartyMerchCode")String thirdPartyMerchCode);
 }

+ 20 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/UserCampMinusDao.java

@@ -0,0 +1,20 @@
+package com.kmall.admin.dao;
+
+import com.kmall.admin.entity.UserCampMinusEntity;
+import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 用户满减满折表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-06-13 15:19:58
+ */
+public interface UserCampMinusDao extends BaseDao<UserCampMinusEntity> {
+    UserCampMinusEntity queryUserCampByOrderId(@Param("orderId") Long orderId);
+
+    int cancelUserCampOrder(UserCampMinusEntity vo);
+
+    UserCampMinusEntity queryCampByStoreTopicId(@Param("storeTopicId") Long storeTopicId);
+}

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

@@ -4,6 +4,9 @@ import com.kmall.admin.entity.UserCouponEntity;
 import com.kmall.manager.dao.BaseDao;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * Dao
  *
@@ -15,4 +18,11 @@ public interface UserCouponDao extends BaseDao<UserCouponEntity> {
     UserCouponEntity queryByOrderId(@Param("orderId") Long orderId);
 
     Integer cancelOrder(UserCouponEntity couponVo);
+
+    List<UserCouponEntity> getUserCouponByDiscIdList(Map<String, Object> map);
+
+    List<UserCouponEntity> queryByStoreTopicId(@Param("storeTopicId") Integer storeTopicId);
+
+
+    int queryUserCouponByDiscIdTotal(Map<String, Object> map);
 }

+ 5 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkCenterMenuDao.java

@@ -3,6 +3,9 @@ package com.kmall.admin.dao.mk;
 import com.kmall.admin.entity.mk.MkCenterMenuEntity;
 import com.kmall.manager.dao.BaseDao;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 营销中心菜单表Dao
  *
@@ -11,5 +14,7 @@ import com.kmall.manager.dao.BaseDao;
  * @date 2019-04-15 11:23:38
  */
 public interface MkCenterMenuDao extends BaseDao<MkCenterMenuEntity> {
+    List<MkCenterMenuEntity> queryListByStore(Map<String, Object> map);
 
+    List<MkCenterMenuEntity> queryCenterByList(Map<String, Object> map);
 }

+ 18 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkCenterMenuStoreRealDao.java

@@ -0,0 +1,18 @@
+package com.kmall.admin.dao.mk;
+
+import com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity;
+import com.kmall.manager.dao.BaseDao;
+
+import java.util.List;
+
+/**
+ * 营销中心菜单门店关联表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-28 10:14:06
+ */
+public interface MkCenterMenuStoreRealDao extends BaseDao<MkCenterMenuStoreRealEntity> {
+    Integer deleteByStoreId(Integer storeId);
+    List<MkCenterMenuStoreRealEntity> queryMenuByThirdMerchSn(Integer thirdMerchSn);
+}

+ 4 - 1
kmall-admin/src/main/java/com/kmall/admin/dao/mk/dist/MkDistDao.java

@@ -2,6 +2,7 @@ package com.kmall.admin.dao.mk.dist;
 
 import com.kmall.admin.entity.mk.dist.MkDistEntity;
 import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -16,7 +17,9 @@ import java.util.Map;
 public interface MkDistDao extends BaseDao<MkDistEntity> {
     MkDistEntity queryObjectByDistName(String distName);
 
-    MkDistEntity queryDistByGoodsId(Map<String, Object> map);
+//    MkDistEntity queryDistByStoreId(Map<String, Object> map);
+
+    MkDistEntity queryDistByGoodsId(@Param("goodsId") Integer goodsId, @Param("storeId")Integer storeId);
 
     MkDistEntity queryDistByStoreId(Integer storeId);
 

+ 15 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreCampMinusDao.java

@@ -0,0 +1,15 @@
+package com.kmall.admin.dao.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreCampMinusEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 门店满减活动Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 14:43:28
+ */
+public interface MkStoreCampMinusDao extends BaseDao<MkStoreCampMinusEntity> {
+
+}

+ 26 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreCampMinusGoodsDao.java

@@ -0,0 +1,26 @@
+package com.kmall.admin.dao.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreCampMinusGoodsEntity;
+import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店满减活动商品,参与满减活动的商品Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 14:43:29
+ */
+public interface MkStoreCampMinusGoodsDao extends BaseDao<MkStoreCampMinusGoodsEntity> {
+
+    List<MkStoreCampMinusGoodsEntity> queryCampMinusGoodsByIdList(Map<String, Object> map);
+
+    int queryCampMinusGoodsByIdTotal(Map<String, Object> map);
+
+    MkStoreCampMinusGoodsEntity queryCampMinusStoreTopicById(@Param("minusGoodId") Integer minusGoodId);
+
+    void deleteMinusGoodsByMinusId(@Param("campMinusId") Integer campMinusId);
+}

+ 34 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreCampMinusLevelDao.java

@@ -0,0 +1,34 @@
+package com.kmall.admin.dao.mk.store;
+
+import com.kmall.admin.dto.*;
+import com.kmall.admin.entity.mk.store.MkStoreCampMinusLevelEntity;
+import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 门店满减活动层级表,活动减免类型为00:按满足最高层级减一次时增加的活动层级数据Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 14:43:29
+ */
+public interface MkStoreCampMinusLevelDao extends BaseDao<MkStoreCampMinusLevelEntity> {
+    List<MkStoreCampMinusLevelEntity> queryLevelByCampMinusId(@Param("campMinusId") Integer campMinusId);
+
+    Integer deleteByCampMinusId(@Param("campMinusId") Integer campMinusId);
+
+//    List<MinusTypeUnitAttrDto> queryUnitLevelBy();
+//
+//    List<MinusTypeUnitModeDto> queryUnitMode10LevelBy();
+//
+//    List<MinusTypePieceAttrDto> queryPieceLevelBy();
+//
+//    List<MinusTypePieceModeDto> queryPieceMode10LevelBy();
+//
+//    List<MinusTypeDiscUnitAttrDto> queryDiscUnitLevelBy();
+//
+//    List<MinusTypeDiscPieceAttrDto> queryDiscPieceLevelBy();
+
+}

+ 20 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStorePromOrderRealDao.java

@@ -0,0 +1,20 @@
+package com.kmall.admin.dao.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity;
+import com.kmall.manager.dao.BaseDao;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店推广订单关联表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-04-30 15:02:38
+ */
+public interface MkStorePromOrderRealDao extends BaseDao<MkStorePromOrderRealEntity> {
+    List<MkStorePromOrderRealEntity> queryPromRealListByMap(Map map);
+
+    List<MkStorePromOrderRealEntity> querySubmitNumByPromId(Integer promId);
+}

+ 16 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketDiscountDao.java

@@ -0,0 +1,16 @@
+package com.kmall.admin.dao.mk.store;
+
+
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 门店优惠券活动Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+public interface MkStoreTicketDiscountDao extends BaseDao<MkStoreTicketDiscountEntity> {
+
+}

+ 20 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketDiscountGoodsDao.java

@@ -0,0 +1,20 @@
+package com.kmall.admin.dao.mk.store;
+
+
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity;
+import com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+public interface MkStoreTicketDiscountGoodsDao extends BaseDao<MkStoreTicketDiscountGoodsEntity> {
+    MkStoreTicketDiscountGoodsEntity queryObjectByStoreReal(MkStoreTicketDiscountGoodsEntity ticketDiscountEntity);
+
+    int deleteByTickDistId(Integer tickDistId);
+
+}

+ 46 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketGoodsTempDao.java

@@ -0,0 +1,46 @@
+package com.kmall.admin.dao.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity;
+import com.kmall.manager.dao.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店优惠券活动商品,临时表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-09 17:33:29
+ */
+public interface MkStoreTicketGoodsTempDao extends BaseDao<MkStoreTicketGoodsTempEntity> {
+    List<MkStoreTicketGoodsTempEntity> queryAllDiscountByStoreId(Map<String, Object> map);
+
+    int queryTotallDiscountByStoreId(Map<String, Object> map);
+
+    MkStoreTicketGoodsTempEntity queryGoodsTempByRealId(@Param("storeRelaId") Integer storeRelaId, @Param("guid")String guid);
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempByGuid(@Param("guid")String guid);
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempByGuidAndIsSubmit(MkStoreTicketGoodsTempEntity entity);
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempByIsValid(MkStoreTicketGoodsTempEntity entity);
+
+    /**
+     * 查看排除已选择商品后的商品
+     * @param entity
+     * @return
+     */
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempIdBy(MkStoreTicketGoodsTempEntity entity);
+
+    Integer deleteByGuid(@Param("guid")String guid);
+
+    MkStoreTicketGoodsTempEntity queryGoodsTempByRealIdAndTopicId(@Param("storeRelaId") Integer storeRelaId, @Param("storeTopicId")Integer storeTopicId);
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempByTopicId(@Param("storeTopicId")Integer storeTopicId);
+
+    void deleteByStoreTopicIdAndRealId(@Param("storeRelaId") Integer storeRelaId, @Param("storeTopicId")Integer storeTopicId);
+
+    void deleteByStoreTopicId(@Param("storeTopicId")Integer storeTopicId);
+}

+ 15 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTopicStatDao.java

@@ -0,0 +1,15 @@
+package com.kmall.admin.dao.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 门店活动统计Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+public interface MkStoreTopicStatDao extends BaseDao<MkStoreTopicStatEntity> {
+
+}

+ 15 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTopicVisitorsDao.java

@@ -0,0 +1,15 @@
+package com.kmall.admin.dao.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 门店活动访客记录Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+public interface MkStoreTopicVisitorsDao extends BaseDao<MkStoreTopicVisitorsEntity> {
+
+}

+ 68 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/CheckGoodsDto.java

@@ -0,0 +1,68 @@
+package com.kmall.admin.dto;
+
+/**
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-09 17:04
+ */
+public class CheckGoodsDto {
+    private Integer goodsId;
+
+    private Integer storeRealId;
+
+    private String goodsName;
+
+    private String applyType;
+
+    private String guid;
+
+    private Integer discGoodTempId;
+
+    public Integer getDiscGoodTempId() {
+        return discGoodTempId;
+    }
+
+    public void setDiscGoodTempId(Integer discGoodTempId) {
+        this.discGoodTempId = discGoodTempId;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    public void setGuid(String guid) {
+        this.guid = guid;
+    }
+
+    public Integer getGoodsId() {
+        return goodsId;
+    }
+
+    public void setGoodsId(Integer goodsId) {
+        this.goodsId = goodsId;
+    }
+
+    public Integer getStoreRealId() {
+        return storeRealId;
+    }
+
+    public void setStoreRealId(Integer storeRealId) {
+        this.storeRealId = storeRealId;
+    }
+
+    public String getGoodsName() {
+        return goodsName;
+    }
+
+    public void setGoodsName(String goodsName) {
+        this.goodsName = goodsName;
+    }
+
+    public String getApplyType() {
+        return applyType;
+    }
+
+    public void setApplyType(String applyType) {
+        this.applyType = applyType;
+    }
+}

+ 3 - 3
kmall-admin/src/main/java/com/kmall/admin/dto/GoodsDto.java

@@ -27,7 +27,7 @@ public class GoodsDto implements Serializable {
     //品牌
     private String brand;
     //商品库存
-    private Integer goodsNumber;
+    private String goodsNumber;
     //关键字
     private String keywords;
     //简明介绍
@@ -242,14 +242,14 @@ public class GoodsDto implements Serializable {
     /**
      * 设置:商品序列号
      */
-    public void setGoodsNumber(Integer goodsNumber) {
+    public void setGoodsNumber(String goodsNumber) {
         this.goodsNumber = goodsNumber;
     }
 
     /**
      * 获取:商品序列号
      */
-    public Integer getGoodsNumber() {
+    public String getGoodsNumber() {
         return goodsNumber;
     }
 

+ 54 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeDiscPieceAttrDto.java

@@ -0,0 +1,54 @@
+package com.kmall.admin.dto;
+
+import java.math.BigDecimal;
+
+/**
+ * 满件满折
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-30 17:36
+ */
+public class MinusTypeDiscPieceAttrDto {
+    private Integer pieceDiscConf;
+
+    private String pieceDiscPref;
+
+    private Integer isDelete;
+
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+
+    public Integer getPieceDiscConf() {
+        return pieceDiscConf;
+    }
+
+    public void setPieceDiscConf(Integer pieceDiscConf) {
+        this.pieceDiscConf = pieceDiscConf;
+    }
+
+    public String getPieceDiscPref() {
+        return pieceDiscPref;
+    }
+
+    public void setPieceDiscPref(String pieceDiscPref) {
+        this.pieceDiscPref = pieceDiscPref;
+    }
+
+    public Integer getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Integer isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+}

+ 54 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeDiscUnitAttrDto.java

@@ -0,0 +1,54 @@
+package com.kmall.admin.dto;
+
+import java.math.BigDecimal;
+
+/**
+ * 满元满折
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-30 17:36
+ */
+public class MinusTypeDiscUnitAttrDto {
+    private String yuanDiscCond;
+
+    private String yuanDiscPref;
+
+    private Integer isDelete;
+
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+
+    public String getYuanDiscCond() {
+        return yuanDiscCond;
+    }
+
+    public void setYuanDiscCond(String yuanDiscCond) {
+        this.yuanDiscCond = yuanDiscCond;
+    }
+
+    public String getYuanDiscPref() {
+        return yuanDiscPref;
+    }
+
+    public void setYuanDiscPref(String yuanDiscPref) {
+        this.yuanDiscPref = yuanDiscPref;
+    }
+
+    public Integer getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Integer isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+}

+ 54 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypePieceAttrDto.java

@@ -0,0 +1,54 @@
+package com.kmall.admin.dto;
+
+import java.math.BigDecimal;
+
+/**
+ * 满件满减
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-30 17:36
+ */
+public class MinusTypePieceAttrDto {
+    private Integer pieceMinusConf;
+
+    private String pieceMinusPref;
+
+    private Integer isDelete;
+
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+
+    public Integer getPieceMinusConf() {
+        return pieceMinusConf;
+    }
+
+    public void setPieceMinusConf(Integer pieceMinusConf) {
+        this.pieceMinusConf = pieceMinusConf;
+    }
+
+    public String getPieceMinusPref() {
+        return pieceMinusPref;
+    }
+
+    public void setPieceMinusPref(String pieceMinusPref) {
+        this.pieceMinusPref = pieceMinusPref;
+    }
+
+    public Integer getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Integer isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+}

+ 64 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypePieceModeDto.java

@@ -0,0 +1,64 @@
+package com.kmall.admin.dto;
+
+import java.math.BigDecimal;
+
+/**
+ * 满件满减,且减免类型为每满一次减一次
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-30 17:36
+ */
+public class MinusTypePieceModeDto {
+    private Integer pieceMinusConf;
+
+    private String pieceMinusPref;
+
+    private String pieceMinusEachDisc;
+
+    private Integer isDelete;
+
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+
+    public Integer getPieceMinusConf() {
+        return pieceMinusConf;
+    }
+
+    public void setPieceMinusConf(Integer pieceMinusConf) {
+        this.pieceMinusConf = pieceMinusConf;
+    }
+
+    public String getPieceMinusPref() {
+        return pieceMinusPref;
+    }
+
+    public void setPieceMinusPref(String pieceMinusPref) {
+        this.pieceMinusPref = pieceMinusPref;
+    }
+
+    public String getPieceMinusEachDisc() {
+        return pieceMinusEachDisc;
+    }
+
+    public void setPieceMinusEachDisc(String pieceMinusEachDisc) {
+        this.pieceMinusEachDisc = pieceMinusEachDisc;
+    }
+
+    public Integer getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Integer isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+}

+ 54 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeUnitAttrDto.java

@@ -0,0 +1,54 @@
+package com.kmall.admin.dto;
+
+import java.math.BigDecimal;
+
+/**
+ * 满元满减
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-30 17:36
+ */
+public class MinusTypeUnitAttrDto {
+    private String yuanMinusCond;
+
+    private String yuanMinusPref;
+
+    private Integer isDelete;
+
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+
+    public String getYuanMinusCond() {
+        return yuanMinusCond;
+    }
+
+    public void setYuanMinusCond(String yuanMinusCond) {
+        this.yuanMinusCond = yuanMinusCond;
+    }
+
+    public String getYuanMinusPref() {
+        return yuanMinusPref;
+    }
+
+    public void setYuanMinusPref(String yuanMinusPref) {
+        this.yuanMinusPref = yuanMinusPref;
+    }
+
+    public Integer getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Integer isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+}

+ 64 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/MinusTypeUnitModeDto.java

@@ -0,0 +1,64 @@
+package com.kmall.admin.dto;
+
+import java.math.BigDecimal;
+
+/**
+ * 满元满减,且减免类型为每满一次减一次
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-30 17:36
+ */
+public class MinusTypeUnitModeDto {
+    private String yuanMinusCond;
+
+    private String yuanMinusPref;
+
+    private String pieceMinusEachDisc;
+
+    private Integer isDelete;
+
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+
+    public String getYuanMinusCond() {
+        return yuanMinusCond;
+    }
+
+    public void setYuanMinusCond(String yuanMinusCond) {
+        this.yuanMinusCond = yuanMinusCond;
+    }
+
+    public String getYuanMinusPref() {
+        return yuanMinusPref;
+    }
+
+    public void setYuanMinusPref(String yuanMinusPref) {
+        this.yuanMinusPref = yuanMinusPref;
+    }
+
+    public String getPieceMinusEachDisc() {
+        return pieceMinusEachDisc;
+    }
+
+    public void setPieceMinusEachDisc(String pieceMinusEachDisc) {
+        this.pieceMinusEachDisc = pieceMinusEachDisc;
+    }
+
+    public Integer getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(Integer isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+}

+ 62 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/MkCenterMenuTreeDto.java

@@ -0,0 +1,62 @@
+package com.kmall.admin.dto;
+
+import com.kmall.manager.entity.Tree;
+
+/**
+ * @author huangyq
+ * @version 1.0
+ * 2019-05-28 11:01
+ */
+public class MkCenterMenuTreeDto extends Tree {
+    /**
+     * 菜单ID
+     */
+    private Integer centerMenuId;
+
+    /**
+     * 父菜单ID,一级菜单为0
+     */
+    private Integer parentId;
+
+    /**
+     * 父菜单名称
+     */
+    private String parentName;
+
+    /**
+     * 菜单名称
+     */
+    private String name;
+
+    public Integer getCenterMenuId() {
+        return centerMenuId;
+    }
+
+    public void setCenterMenuId(Integer centerMenuId) {
+        this.centerMenuId = centerMenuId;
+    }
+
+    public Integer getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Integer parentId) {
+        this.parentId = parentId;
+    }
+
+    public String getParentName() {
+        return parentName;
+    }
+
+    public void setParentName(String parentName) {
+        this.parentName = parentName;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

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

@@ -46,6 +46,28 @@ public class AdEntity implements Serializable {
     private Integer storeId;
 
     private String merchSn;
+    /**
+     * 优惠券id
+     */
+    private Integer tickDiscId;
+
+    private Integer storeTopicId;
+
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    public Integer getTickDiscId() {
+        return tickDiscId;
+    }
+
+    public void setTickDiscId(Integer tickDiscId) {
+        this.tickDiscId = tickDiscId;
+    }
 
     public Integer getStoreId() {
         return storeId;

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

@@ -30,6 +30,16 @@ public class GoodsAttributeEntity implements Serializable {
 
     private String merchSn;
 
+    private Integer storeId;
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
     public String getMerchSn() {
         return merchSn;
     }

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

@@ -188,6 +188,34 @@ public class GoodsEntity implements Serializable {
     //净重,kg
     private BigDecimal netWeight;
 
+    private String isSupplierGoods;
+    private String goodsIsStockShare;
+    private String isStockShareBySuppler;
+
+    public String getIsSupplierGoods() {
+        return isSupplierGoods;
+    }
+
+    public void setIsSupplierGoods(String isSupplierGoods) {
+        this.isSupplierGoods = isSupplierGoods;
+    }
+
+    public String getGoodsIsStockShare() {
+        return goodsIsStockShare;
+    }
+
+    public void setGoodsIsStockShare(String goodsIsStockShare) {
+        this.goodsIsStockShare = goodsIsStockShare;
+    }
+
+    public String getIsStockShareBySuppler() {
+        return isStockShareBySuppler;
+    }
+
+    public void setIsStockShareBySuppler(String isStockShareBySuppler) {
+        this.isStockShareBySuppler = isStockShareBySuppler;
+    }
+
     public BigDecimal getGrossWeight() {
         return grossWeight;
     }

+ 121 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderEntity.java

@@ -170,6 +170,127 @@ public class OrderEntity implements Serializable {
      */
     private String unitCode;
 
+    private Integer orderDetailCount;
+
+    private Integer promId;
+
+    private BigDecimal promActualPrice;
+
+    private Integer goodsId;
+
+    private String storeTopicName;
+
+    private String storeTopicType;
+
+    private Integer storeTopicId;
+
+    private String couponName;
+    //订单满减
+    private BigDecimal fullCutPrice;
+
+    private Integer campMinusId;
+
+    private String campName;
+
+    //供应商第三方商户
+    private String supplierThirdPartyMerchName;
+
+    public String getSupplierThirdPartyMerchName() {
+        return supplierThirdPartyMerchName;
+    }
+
+    public void setSupplierThirdPartyMerchName(String supplierThirdPartyMerchName) {
+        this.supplierThirdPartyMerchName = supplierThirdPartyMerchName;
+    }
+
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+
+    public BigDecimal getFullCutPrice() {
+        return fullCutPrice;
+    }
+
+    public void setFullCutPrice(BigDecimal fullCutPrice) {
+        this.fullCutPrice = fullCutPrice;
+    }
+
+    public String getCampName() {
+        return campName;
+    }
+
+    public void setCampName(String campName) {
+        this.campName = campName;
+    }
+
+    public String getCouponName() {
+        return couponName;
+    }
+
+    public void setCouponName(String couponName) {
+        this.couponName = couponName;
+    }
+
+    public String getStoreTopicName() {
+        return storeTopicName;
+    }
+
+    public void setStoreTopicName(String storeTopicName) {
+        this.storeTopicName = storeTopicName;
+    }
+
+    public String getStoreTopicType() {
+        return storeTopicType;
+    }
+
+    public void setStoreTopicType(String storeTopicType) {
+        this.storeTopicType = storeTopicType;
+    }
+
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    public Integer getGoodsId() {
+        return goodsId;
+    }
+
+    public void setGoodsId(Integer goodsId) {
+        this.goodsId = goodsId;
+    }
+
+    public BigDecimal getPromActualPrice() {
+        return promActualPrice;
+    }
+
+    public void setPromActualPrice(BigDecimal promActualPrice) {
+        this.promActualPrice = promActualPrice;
+    }
+
+    public Integer getPromId() {
+        return promId;
+    }
+
+    public void setPromId(Integer promId) {
+        this.promId = promId;
+    }
+
+    public Integer getOrderDetailCount() {
+        return orderDetailCount;
+    }
+
+    public void setOrderDetailCount(Integer orderDetailCount) {
+        this.orderDetailCount = orderDetailCount;
+    }
+
     public String getBrand() {
         return brand;
     }

+ 20 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/OrderGoodsEntity.java

@@ -59,6 +59,26 @@ public class OrderGoodsEntity implements Serializable {
 
 	private BigDecimal goodsRate;
 
+	private Integer isPromGoods;
+
+	private Integer promId;
+
+	public Integer getPromId() {
+		return promId;
+	}
+
+	public void setPromId(Integer promId) {
+		this.promId = promId;
+	}
+
+	public Integer getIsPromGoods() {
+		return isPromGoods;
+	}
+
+	public void setIsPromGoods(Integer isPromGoods) {
+		this.isPromGoods = isPromGoods;
+	}
+
 	public String getGoodsSpecificationNameValue() {
 		return goodsSpecificationNameValue;
 	}

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

@@ -109,6 +109,77 @@ public class ProductStoreRelaEntity implements Serializable {
 
     private Integer goodsSellVolume;
 
+    //为空则活动商品未选中
+    private Integer isCheck;
+
+    private String applyType;
+
+    private Integer discGoodTempId;
+
+    private String guid;
+
+    private Integer storeTopicId;
+
+    private Integer supplierThirdId;
+
+    private String isOnSale;
+
+    public String getIsOnSale() {
+        return isOnSale;
+    }
+
+    public void setIsOnSale(String isOnSale) {
+        this.isOnSale = isOnSale;
+    }
+
+    public Integer getSupplierThirdId() {
+        return supplierThirdId;
+    }
+
+    public void setSupplierThirdId(Integer supplierThirdId) {
+        this.supplierThirdId = supplierThirdId;
+    }
+
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    public String getApplyType() {
+        return applyType;
+    }
+
+    public void setApplyType(String applyType) {
+        this.applyType = applyType;
+    }
+
+    public Integer getDiscGoodTempId() {
+        return discGoodTempId;
+    }
+
+    public void setDiscGoodTempId(Integer discGoodTempId) {
+        this.discGoodTempId = discGoodTempId;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    public void setGuid(String guid) {
+        this.guid = guid;
+    }
+
+    public Integer getIsCheck() {
+        return isCheck;
+    }
+
+    public void setIsCheck(Integer isCheck) {
+        this.isCheck = isCheck;
+    }
+
     private List<GoodsAttributeEntity> attributeEntityList = new ArrayList<>();
 
     public Integer getGoodsSellVolume() {

+ 13 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/StoreEntity.java

@@ -75,10 +75,23 @@ public class StoreEntity implements Serializable {
     private Date tstm;
 
     private String thirdPartyMerchCode;
+
     private String thirdPartyMerchName;
+
     private String exprAgreementType;
+
     private String isValid;
 
+    private String isLoadGoods;
+
+    public String getIsLoadGoods() {
+        return isLoadGoods;
+    }
+
+    public void setIsLoadGoods(String isLoadGoods) {
+        this.isLoadGoods = isLoadGoods;
+    }
+
     public String getIsValid() {
         return isValid;
     }

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

@@ -62,6 +62,16 @@ public class ThirdMerchantBizEntity implements Serializable {
 
     private String isDistSellStart;
 
+    private String isSupplierGoods;
+
+    public String getIsSupplierGoods() {
+        return isSupplierGoods;
+    }
+
+    public void setIsSupplierGoods(String isSupplierGoods) {
+        this.isSupplierGoods = isSupplierGoods;
+    }
+
     public String getIsDistSellStart() {
         return isDistSellStart;
     }

+ 257 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/UserCampMinusEntity.java

@@ -0,0 +1,257 @@
+package com.kmall.admin.entity;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 用户满减满折表实体
+ * 表名 mall_user_camp_minus
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-06-13 15:19:58
+ */
+public class UserCampMinusEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户满减满折id
+     */
+    private Integer userCampId;
+    /**
+     * 门店活动id
+     */
+    private Integer storeTopicId;
+    /**
+     * 活动名称
+     */
+    private String campName;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 使用时间
+     */
+    private Date usedTime;
+    /**
+     * 订单id
+     */
+    private Integer orderId;
+    /**
+     * 失效时间
+     */
+    private Date endTime;
+    /**
+     * 活动金额
+     */
+    private BigDecimal money;
+    /**
+     * 是否已使用 0:否;1:是
+     */
+    private String isUsed;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:用户满减满折id
+     */
+    public void setUserCampId(Integer userCampId) {
+        this.userCampId = userCampId;
+    }
+
+    /**
+     * 获取:用户满减满折id
+     */
+    public Integer getUserCampId() {
+        return userCampId;
+    }
+    /**
+     * 设置:门店活动id
+     */
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    /**
+     * 获取:门店活动id
+     */
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+    /**
+     * 设置:活动名称
+     */
+    public void setCampName(String campName) {
+        this.campName = campName;
+    }
+
+    /**
+     * 获取:活动名称
+     */
+    public String getCampName() {
+        return campName;
+    }
+    /**
+     * 设置:用户id
+     */
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 获取:用户id
+     */
+    public Integer getUserId() {
+        return userId;
+    }
+    /**
+     * 设置:使用时间
+     */
+    public void setUsedTime(Date usedTime) {
+        this.usedTime = usedTime;
+    }
+
+    /**
+     * 获取:使用时间
+     */
+    public Date getUsedTime() {
+        return usedTime;
+    }
+    /**
+     * 设置:订单id
+     */
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    /**
+     * 获取:订单id
+     */
+    public Integer getOrderId() {
+        return orderId;
+    }
+    /**
+     * 设置:失效时间
+     */
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    /**
+     * 获取:失效时间
+     */
+    public Date getEndTime() {
+        return endTime;
+    }
+    /**
+     * 设置:活动金额
+     */
+    public void setMoney(BigDecimal money) {
+        this.money = money;
+    }
+
+    /**
+     * 获取:活动金额
+     */
+    public BigDecimal getMoney() {
+        return money;
+    }
+    /**
+     * 设置:是否已使用 0:否;1:是
+     */
+    public void setIsUsed(String isUsed) {
+        this.isUsed = isUsed;
+    }
+
+    /**
+     * 获取:是否已使用 0:否;1:是
+     */
+    public String getIsUsed() {
+        return isUsed;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间,yyyy-MM-dd HH:mm:ss
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 50 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/UserCouponEntity.java

@@ -44,6 +44,56 @@ public class UserCouponEntity implements Serializable {
 
     private String isUsed;
 
+    private String nickname;
+
+    private String storeName;
+
+    private Date validTime;
+
+    private Date endTime;
+
+    private Date modTime;
+
+    public String getNickname() {
+        return nickname;
+    }
+
+    public void setNickname(String nickname) {
+        this.nickname = nickname;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public Date getValidTime() {
+        return validTime;
+    }
+
+    public void setValidTime(Date validTime) {
+        this.validTime = validTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public Date getModTime() {
+        return modTime;
+    }
+
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
     /**
      * 设置:主键
      */

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkCenterMenuEntity.java

@@ -72,6 +72,15 @@ public class MkCenterMenuEntity implements Serializable {
     private Date tstm;
     private String storeName;
     private String thirdPartyMerchName;
+    private Integer menuStoreRealId;
+
+    public Integer getMenuStoreRealId() {
+        return menuStoreRealId;
+    }
+
+    public void setMenuStoreRealId(Integer menuStoreRealId) {
+        this.menuStoreRealId = menuStoreRealId;
+    }
 
     public String getStoreName() {
         return storeName;

+ 217 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkCenterMenuStoreRealEntity.java

@@ -0,0 +1,217 @@
+package com.kmall.admin.entity.mk;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 营销中心菜单门店关联表实体
+ * 表名 mk_center_menu_store_real
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-28 10:14:06
+ */
+public class MkCenterMenuStoreRealEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private Integer id;
+    /**
+     * 营销菜单id
+     */
+    private Integer centerMenuId;
+    /**
+     * 门店id
+     */
+    private Integer storeId;
+    /**
+     * 第三方商户id
+     */
+    private Integer thirdMerchSn;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+
+    private List<Integer> centerMenuIdList;
+
+    public List<Integer> getCenterMenuIdList() {
+        return centerMenuIdList;
+    }
+
+    public void setCenterMenuIdList(List<Integer> centerMenuIdList) {
+        this.centerMenuIdList = centerMenuIdList;
+    }
+
+    /**
+     * 设置:编号
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 获取:编号
+     */
+    public Integer getId() {
+        return id;
+    }
+    /**
+     * 设置:营销菜单id
+     */
+    public void setCenterMenuId(Integer centerMenuId) {
+        this.centerMenuId = centerMenuId;
+    }
+
+    /**
+     * 获取:营销菜单id
+     */
+    public Integer getCenterMenuId() {
+        return centerMenuId;
+    }
+    /**
+     * 设置:门店id
+     */
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    /**
+     * 获取:门店id
+     */
+    public Integer getStoreId() {
+        return storeId;
+    }
+    /**
+     * 设置:第三方商户id
+     */
+    public void setThirdMerchSn(Integer thirdMerchSn) {
+        this.thirdMerchSn = thirdMerchSn;
+    }
+
+    /**
+     * 获取:第三方商户id
+     */
+    public Integer getThirdMerchSn() {
+        return thirdMerchSn;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 517 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreCampMinusEntity.java

@@ -0,0 +1,517 @@
+package com.kmall.admin.entity.mk.store;
+
+import com.kmall.admin.dto.*;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 门店满减活动实体
+ * 表名 mk_store_camp_minus
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 17:41:04
+ */
+public class MkStoreCampMinusEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+    /**
+     * 活动名称
+     */
+    private String campName;
+    /**
+     * 第三方商户id
+     */
+    private Integer thirdMerchSn;
+    /**
+     * 门店id
+     */
+    private Integer storeId;
+    /**
+     * 活动id
+     */
+    private Integer storeTopicId;
+    /**
+     * 活动起始时间,yyyy-MM-dd HH:mi
+     */
+    private Date campBegTime;
+    /**
+     * 活动结束时间,yyyy-MM-dd HH:mi
+     */
+    private Date campEndTime;
+    /**
+     * 减免活动类型, 00:满x元减,01:满x件减,10:满x元折,11:满x件折,减免活动类型为00,01时,减免方式必选
+     */
+    private String campMinusType;
+    /**
+     * 减免方式【minus_mode,00:满足最高层级减一次,10:每满一次减一次】,1、减免方式选择10时,满件、满元每人最多项必填;2、减免方式为00,如设置每满100(2件)减10元,满200(4件)减20元....等; 按最高层级优惠满减,仅减一次。
+     */
+    private String minusMode;
+    /**
+     * 适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    private String applyType;
+    /**
+     * 活动图片url
+     */
+    private String advImgUrl;
+    /**
+     * 活动说明
+     */
+    private String advDesc;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 是否过期,0:否,1:是
+     */
+    private String isPast;
+    /**
+     * 是否展示在小程序门店首页广告栏,0:否,1:是
+     */
+    private String isStoreShow;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+    /**
+     * 货品业务类型, 00:保税备货, 02:保税展示补货,10:保税展示跨境,11:普通商品
+     */
+    private String goodsBizType;
+
+    private String inValidTime;
+
+    private String minusStat;
+
+    private String storeName;
+
+    private Integer submitNum;
+
+    private Integer browseNum;
+
+    private BigDecimal actMoney;
+
+    public Integer getSubmitNum() {
+        return submitNum;
+    }
+
+    public void setSubmitNum(Integer submitNum) {
+        this.submitNum = submitNum;
+    }
+
+    public Integer getBrowseNum() {
+        return browseNum;
+    }
+
+    public void setBrowseNum(Integer browseNum) {
+        this.browseNum = browseNum;
+    }
+
+    public BigDecimal getActMoney() {
+        return actMoney;
+    }
+
+    public void setActMoney(BigDecimal actMoney) {
+        this.actMoney = actMoney;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public String getInValidTime() {
+        return inValidTime;
+    }
+
+    public void setInValidTime(String inValidTime) {
+        this.inValidTime = inValidTime;
+    }
+
+    public String getMinusStat() {
+        return minusStat;
+    }
+
+    public void setMinusStat(String minusStat) {
+        this.minusStat = minusStat;
+    }
+
+    //满元满减
+    private List<MinusTypeUnitAttrDto> minusTypeUnitAttrList;
+    //满件满减
+    private List<MinusTypePieceAttrDto> minusTypePieceAttrList;
+    //满元满折
+    private List<MinusTypeDiscUnitAttrDto> minusTypeDiscUnitAttrList;
+    //满件满折
+    private List<MinusTypeDiscPieceAttrDto> minusTypeDiscPieceAttrList;
+    //满元满减,且减免类型为每满一次减一次
+    private List<MinusTypeUnitModeDto> minusTypeUnitMode10List;
+    //满件满减,且减免类型为每满一次减一次
+    private List<MinusTypePieceModeDto> minusTypePieceMode10List;
+
+    public List<MinusTypeUnitAttrDto> getMinusTypeUnitAttrList() {
+        return minusTypeUnitAttrList;
+    }
+
+    public void setMinusTypeUnitAttrList(List<MinusTypeUnitAttrDto> minusTypeUnitAttrList) {
+        this.minusTypeUnitAttrList = minusTypeUnitAttrList;
+    }
+
+    public List<MinusTypePieceAttrDto> getMinusTypePieceAttrList() {
+        return minusTypePieceAttrList;
+    }
+
+    public void setMinusTypePieceAttrList(List<MinusTypePieceAttrDto> minusTypePieceAttrList) {
+        this.minusTypePieceAttrList = minusTypePieceAttrList;
+    }
+
+    public List<MinusTypeDiscUnitAttrDto> getMinusTypeDiscUnitAttrList() {
+        return minusTypeDiscUnitAttrList;
+    }
+
+    public void setMinusTypeDiscUnitAttrList(List<MinusTypeDiscUnitAttrDto> minusTypeDiscUnitAttrList) {
+        this.minusTypeDiscUnitAttrList = minusTypeDiscUnitAttrList;
+    }
+
+    public List<MinusTypeDiscPieceAttrDto> getMinusTypeDiscPieceAttrList() {
+        return minusTypeDiscPieceAttrList;
+    }
+
+    public void setMinusTypeDiscPieceAttrList(List<MinusTypeDiscPieceAttrDto> minusTypeDiscPieceAttrList) {
+        this.minusTypeDiscPieceAttrList = minusTypeDiscPieceAttrList;
+    }
+
+    public List<MinusTypeUnitModeDto> getMinusTypeUnitMode10List() {
+        return minusTypeUnitMode10List;
+    }
+
+    public void setMinusTypeUnitMode10List(List<MinusTypeUnitModeDto> minusTypeUnitMode10List) {
+        this.minusTypeUnitMode10List = minusTypeUnitMode10List;
+    }
+
+    public List<MinusTypePieceModeDto> getMinusTypePieceMode10List() {
+        return minusTypePieceMode10List;
+    }
+
+    public void setMinusTypePieceMode10List(List<MinusTypePieceModeDto> minusTypePieceMode10List) {
+        this.minusTypePieceMode10List = minusTypePieceMode10List;
+    }
+
+    /**
+     * 设置:满减活动id
+     */
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+
+    /**
+     * 获取:满减活动id
+     */
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+    /**
+     * 设置:活动名称
+     */
+    public void setCampName(String campName) {
+        this.campName = campName;
+    }
+
+    /**
+     * 获取:活动名称
+     */
+    public String getCampName() {
+        return campName;
+    }
+    /**
+     * 设置:第三方商户id
+     */
+    public void setThirdMerchSn(Integer thirdMerchSn) {
+        this.thirdMerchSn = thirdMerchSn;
+    }
+
+    /**
+     * 获取:第三方商户id
+     */
+    public Integer getThirdMerchSn() {
+        return thirdMerchSn;
+    }
+    /**
+     * 设置:门店id
+     */
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    /**
+     * 获取:门店id
+     */
+    public Integer getStoreId() {
+        return storeId;
+    }
+    /**
+     * 设置:活动id
+     */
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    /**
+     * 获取:活动id
+     */
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+    /**
+     * 设置:活动起始时间,yyyy-MM-dd HH:mi
+     */
+    public void setCampBegTime(Date campBegTime) {
+        this.campBegTime = campBegTime;
+    }
+
+    /**
+     * 获取:活动起始时间,yyyy-MM-dd HH:mi
+     */
+    public Date getCampBegTime() {
+        return campBegTime;
+    }
+    /**
+     * 设置:活动结束时间,yyyy-MM-dd HH:mi
+     */
+    public void setCampEndTime(Date campEndTime) {
+        this.campEndTime = campEndTime;
+    }
+
+    /**
+     * 获取:活动结束时间,yyyy-MM-dd HH:mi
+     */
+    public Date getCampEndTime() {
+        return campEndTime;
+    }
+    /**
+     * 设置:减免活动类型, 00:满x元减,01:满x件减,10:满x元折,11:满x件折,减免活动类型为00,01时,减免方式必选
+     */
+    public void setCampMinusType(String campMinusType) {
+        this.campMinusType = campMinusType;
+    }
+
+    /**
+     * 获取:减免活动类型, 00:满x元减,01:满x件减,10:满x元折,11:满x件折,减免活动类型为00,01时,减免方式必选
+     */
+    public String getCampMinusType() {
+        return campMinusType;
+    }
+    /**
+     * 设置:减免方式【minus_mode,00:满足最高层级减一次,10:每满一次减一次】,1、减免方式选择10时,满件、满元每人最多项必填;2、减免方式为00,如设置每满100(2件)减10元,满200(4件)减20元....等; 按最高层级优惠满减,仅减一次。
+     */
+    public void setMinusMode(String minusMode) {
+        this.minusMode = minusMode;
+    }
+
+    /**
+     * 获取:减免方式【minus_mode,00:满足最高层级减一次,10:每满一次减一次】,1、减免方式选择10时,满件、满元每人最多项必填;2、减免方式为00,如设置每满100(2件)减10元,满200(4件)减20元....等; 按最高层级优惠满减,仅减一次。
+     */
+    public String getMinusMode() {
+        return minusMode;
+    }
+    /**
+     * 设置:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public void setApplyType(String applyType) {
+        this.applyType = applyType;
+    }
+
+    /**
+     * 获取:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public String getApplyType() {
+        return applyType;
+    }
+    /**
+     * 设置:活动图片url
+     */
+    public void setAdvImgUrl(String advImgUrl) {
+        this.advImgUrl = advImgUrl;
+    }
+
+    /**
+     * 获取:活动图片url
+     */
+    public String getAdvImgUrl() {
+        return advImgUrl;
+    }
+    /**
+     * 设置:活动说明
+     */
+    public void setAdvDesc(String advDesc) {
+        this.advDesc = advDesc;
+    }
+
+    /**
+     * 获取:活动说明
+     */
+    public String getAdvDesc() {
+        return advDesc;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:是否过期,0:否,1:是
+     */
+    public void setIsPast(String isPast) {
+        this.isPast = isPast;
+    }
+
+    /**
+     * 获取:是否过期,0:否,1:是
+     */
+    public String getIsPast() {
+        return isPast;
+    }
+    /**
+     * 设置:是否展示在小程序门店首页广告栏,0:否,1:是
+     */
+    public void setIsStoreShow(String isStoreShow) {
+        this.isStoreShow = isStoreShow;
+    }
+
+    /**
+     * 获取:是否展示在小程序门店首页广告栏,0:否,1:是
+     */
+    public String getIsStoreShow() {
+        return isStoreShow;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+    /**
+     * 设置:货品业务类型, 00:保税备货, 02:保税展示补货,10:保税展示跨境,11:普通商品
+     */
+    public void setGoodsBizType(String goodsBizType) {
+        this.goodsBizType = goodsBizType;
+    }
+
+    /**
+     * 获取:货品业务类型, 00:保税备货, 02:保税展示补货,10:保税展示跨境,11:普通商品
+     */
+    public String getGoodsBizType() {
+        return goodsBizType;
+    }
+}

+ 276 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreCampMinusGoodsEntity.java

@@ -0,0 +1,276 @@
+package com.kmall.admin.entity.mk.store;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 门店满减活动商品,参与满减活动的商品实体
+ * 表名 mk_store_camp_minus_goods
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 14:43:29
+ */
+public class MkStoreCampMinusGoodsEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 满减活动商品id
+     */
+    private Integer minusGoodId;
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+    /**
+     * 适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    private String applyType;
+    /**
+     * 门店商品id,当满减适用类型为00时,门店商品id可以为空,否则必填
+     */
+    private Integer storeRelaId;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    private String goodsName;
+
+    private String storeName;
+
+    private BigDecimal retailPrice;
+
+    private BigDecimal marketPrice;
+
+    private BigDecimal actualTotalPrice;
+
+    private String isOnSale;
+
+    private Integer storeTopicId;
+
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    public String getGoodsName() {
+        return goodsName;
+    }
+
+    public void setGoodsName(String goodsName) {
+        this.goodsName = goodsName;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public BigDecimal getRetailPrice() {
+        return retailPrice;
+    }
+
+    public void setRetailPrice(BigDecimal retailPrice) {
+        this.retailPrice = retailPrice;
+    }
+
+    public BigDecimal getMarketPrice() {
+        return marketPrice;
+    }
+
+    public void setMarketPrice(BigDecimal marketPrice) {
+        this.marketPrice = marketPrice;
+    }
+
+    public BigDecimal getActualTotalPrice() {
+        return actualTotalPrice;
+    }
+
+    public void setActualTotalPrice(BigDecimal actualTotalPrice) {
+        this.actualTotalPrice = actualTotalPrice;
+    }
+
+    public String getIsOnSale() {
+        return isOnSale;
+    }
+
+    public void setIsOnSale(String isOnSale) {
+        this.isOnSale = isOnSale;
+    }
+
+    /**
+     * 设置:满减活动商品id
+     */
+    public void setMinusGoodId(Integer minusGoodId) {
+        this.minusGoodId = minusGoodId;
+    }
+
+    /**
+     * 获取:满减活动商品id
+     */
+    public Integer getMinusGoodId() {
+        return minusGoodId;
+    }
+    /**
+     * 设置:满减活动id
+     */
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+
+    /**
+     * 获取:满减活动id
+     */
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+    /**
+     * 设置:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public void setApplyType(String applyType) {
+        this.applyType = applyType;
+    }
+
+    /**
+     * 获取:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public String getApplyType() {
+        return applyType;
+    }
+    /**
+     * 设置:门店商品id,当满减适用类型为00时,门店商品id可以为空,否则必填
+     */
+    public void setStoreRelaId(Integer storeRelaId) {
+        this.storeRelaId = storeRelaId;
+    }
+
+    /**
+     * 获取:门店商品id,当满减适用类型为00时,门店商品id可以为空,否则必填
+     */
+    public Integer getStoreRelaId() {
+        return storeRelaId;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 359 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreCampMinusLevelEntity.java

@@ -0,0 +1,359 @@
+package com.kmall.admin.entity.mk.store;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 门店满减活动层级表,活动减免类型为00:按满足最高层级减一次时增加的活动层级数据实体
+ * 表名 mk_store_camp_minus_level
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-29 17:41:04
+ */
+public class MkStoreCampMinusLevelEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 满减活动层级id
+     */
+    private Integer campMinusLevelId;
+    /**
+     * 减免活动类型, 00:满x元减,01:满x件减,10:满x元折,11:满x件折,减免活动类型为00,01时,减免方式必选
+     */
+    private String campMinusType;
+    /**
+     * 满减活动id
+     */
+    private Integer campMinusId;
+    /**
+     * 减免方式【minus_mode,00:满足最高层级减一次,10:每满一次减一次】,1、减免方式选择10时,满件、满元每人最多项必填;2、减免方式为00,如设置每满100(2件)减10元,满200(4件)减20元....等; 按最高层级优惠满减,仅减一次。
+     */
+    private String minusMode;
+    /**
+     * 满元减条件(元)
+     */
+    private BigDecimal yuanMinusCond;
+    /**
+     * 满元减优惠(元)
+     */
+    private BigDecimal yuanMinusPref;
+    /**
+     * 满件减条件(件)
+     */
+    private Integer pieceMinusConf;
+    /**
+     * 满件减优惠(元)
+     */
+    private BigDecimal pieceMinusPref;
+    /**
+     * 满减件每人优惠(元),填0代表不设置上限,减免活动类型为10,且减免方式选择10时,满件每人最多项必填。
+     */
+    private BigDecimal pieceMinusEachDisc;
+    /**
+     * 满元折条件(元),大于等于0的2位小数
+     */
+    private BigDecimal yuanDiscCond;
+    /**
+     * 满元折优惠(折),大于0且小于10的1位小数。
+     */
+    private BigDecimal yuanDiscPref;
+    /**
+     * 满件折条件(件),大于等于0的整数
+     */
+    private Integer pieceDiscConf;
+    /**
+     * 满件折优惠(折),大于0且小于10的数,可带1位小数。
+     */
+    private BigDecimal pieceDiscPref;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:满减活动层级id
+     */
+    public void setCampMinusLevelId(Integer campMinusLevelId) {
+        this.campMinusLevelId = campMinusLevelId;
+    }
+
+    /**
+     * 获取:满减活动层级id
+     */
+    public Integer getCampMinusLevelId() {
+        return campMinusLevelId;
+    }
+    /**
+     * 设置:减免活动类型, 00:满x元减,01:满x件减,10:满x元折,11:满x件折,减免活动类型为00,01时,减免方式必选
+     */
+    public void setCampMinusType(String campMinusType) {
+        this.campMinusType = campMinusType;
+    }
+
+    /**
+     * 获取:减免活动类型, 00:满x元减,01:满x件减,10:满x元折,11:满x件折,减免活动类型为00,01时,减免方式必选
+     */
+    public String getCampMinusType() {
+        return campMinusType;
+    }
+    /**
+     * 设置:满减活动id
+     */
+    public void setCampMinusId(Integer campMinusId) {
+        this.campMinusId = campMinusId;
+    }
+
+    /**
+     * 获取:满减活动id
+     */
+    public Integer getCampMinusId() {
+        return campMinusId;
+    }
+    /**
+     * 设置:减免方式【minus_mode,00:满足最高层级减一次,10:每满一次减一次】,1、减免方式选择10时,满件、满元每人最多项必填;2、减免方式为00,如设置每满100(2件)减10元,满200(4件)减20元....等; 按最高层级优惠满减,仅减一次。
+     */
+    public void setMinusMode(String minusMode) {
+        this.minusMode = minusMode;
+    }
+
+    /**
+     * 获取:减免方式【minus_mode,00:满足最高层级减一次,10:每满一次减一次】,1、减免方式选择10时,满件、满元每人最多项必填;2、减免方式为00,如设置每满100(2件)减10元,满200(4件)减20元....等; 按最高层级优惠满减,仅减一次。
+     */
+    public String getMinusMode() {
+        return minusMode;
+    }
+    /**
+     * 设置:满元减条件(元)
+     */
+    public void setYuanMinusCond(BigDecimal yuanMinusCond) {
+        this.yuanMinusCond = yuanMinusCond;
+    }
+
+    /**
+     * 获取:满元减条件(元)
+     */
+    public BigDecimal getYuanMinusCond() {
+        return yuanMinusCond;
+    }
+    /**
+     * 设置:满元减优惠(元)
+     */
+    public void setYuanMinusPref(BigDecimal yuanMinusPref) {
+        this.yuanMinusPref = yuanMinusPref;
+    }
+
+    /**
+     * 获取:满元减优惠(元)
+     */
+    public BigDecimal getYuanMinusPref() {
+        return yuanMinusPref;
+    }
+    /**
+     * 设置:满件减条件(件)
+     */
+    public void setPieceMinusConf(Integer pieceMinusConf) {
+        this.pieceMinusConf = pieceMinusConf;
+    }
+
+    /**
+     * 获取:满件减条件(件)
+     */
+    public Integer getPieceMinusConf() {
+        return pieceMinusConf;
+    }
+    /**
+     * 设置:满件减优惠(元)
+     */
+    public void setPieceMinusPref(BigDecimal pieceMinusPref) {
+        this.pieceMinusPref = pieceMinusPref;
+    }
+
+    /**
+     * 获取:满件减优惠(元)
+     */
+    public BigDecimal getPieceMinusPref() {
+        return pieceMinusPref;
+    }
+    /**
+     * 设置:满减件每人优惠(元),填0代表不设置上限,减免活动类型为10,且减免方式选择10时,满件每人最多项必填。
+     */
+    public void setPieceMinusEachDisc(BigDecimal pieceMinusEachDisc) {
+        this.pieceMinusEachDisc = pieceMinusEachDisc;
+    }
+
+    /**
+     * 获取:满减件每人优惠(元),填0代表不设置上限,减免活动类型为10,且减免方式选择10时,满件每人最多项必填。
+     */
+    public BigDecimal getPieceMinusEachDisc() {
+        return pieceMinusEachDisc;
+    }
+    /**
+     * 设置:满元折条件(元),大于等于0的2位小数
+     */
+    public void setYuanDiscCond(BigDecimal yuanDiscCond) {
+        this.yuanDiscCond = yuanDiscCond;
+    }
+
+    /**
+     * 获取:满元折条件(元),大于等于0的2位小数
+     */
+    public BigDecimal getYuanDiscCond() {
+        return yuanDiscCond;
+    }
+    /**
+     * 设置:满元折优惠(折),大于0且小于10的1位小数。
+     */
+    public void setYuanDiscPref(BigDecimal yuanDiscPref) {
+        this.yuanDiscPref = yuanDiscPref;
+    }
+
+    /**
+     * 获取:满元折优惠(折),大于0且小于10的1位小数。
+     */
+    public BigDecimal getYuanDiscPref() {
+        return yuanDiscPref;
+    }
+    /**
+     * 设置:满件折条件(件),大于等于0的整数
+     */
+    public void setPieceDiscConf(Integer pieceDiscConf) {
+        this.pieceDiscConf = pieceDiscConf;
+    }
+
+    /**
+     * 获取:满件折条件(件),大于等于0的整数
+     */
+    public Integer getPieceDiscConf() {
+        return pieceDiscConf;
+    }
+    /**
+     * 设置:满件折优惠(折),大于0且小于10的数,可带1位小数。
+     */
+    public void setPieceDiscPref(BigDecimal pieceDiscPref) {
+        this.pieceDiscPref = pieceDiscPref;
+    }
+
+    /**
+     * 获取:满件折优惠(折),大于0且小于10的数,可带1位小数。
+     */
+    public BigDecimal getPieceDiscPref() {
+        return pieceDiscPref;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 10 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromEntity.java

@@ -127,6 +127,16 @@ public class MkStorePromEntity implements Serializable {
 
     private String listPicUrl;//商品图片
 
+    private String actMoney;//实收金额
+
+    public String getActMoney() {
+        return actMoney;
+    }
+
+    public void setActMoney(String actMoney) {
+        this.actMoney = actMoney;
+    }
+
     public String getPromPicUrl() {
         return promPicUrl;
     }

+ 238 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromOrderRealEntity.java

@@ -0,0 +1,238 @@
+package com.kmall.admin.entity.mk.store;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 门店推广订单关联表实体
+ * 表名 mk_store_prom_order_real
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-04-30 15:02:38
+ */
+public class MkStorePromOrderRealEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 推广订单关联id
+     */
+    private Integer promOrderRealId;
+    /**
+     * 推广id
+     */
+    private Integer promId;
+    /**
+     * 购物车id
+     */
+    private Integer cartId;
+    /**
+     * 订单id
+     */
+    private Integer orderId;
+    /**
+     * 订单明细id
+     */
+    private Integer orderGoodsId;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    //购买用户id
+    private Integer userId;
+
+    private String isPromStatScan;
+
+    public String getIsPromStatScan() {
+        return isPromStatScan;
+    }
+
+    public void setIsPromStatScan(String isPromStatScan) {
+        this.isPromStatScan = isPromStatScan;
+    }
+
+    public Integer getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    public Integer getOrderGoodsId() {
+        return orderGoodsId;
+    }
+
+    public void setOrderGoodsId(Integer orderGoodsId) {
+        this.orderGoodsId = orderGoodsId;
+    }
+
+    /**
+     * 设置:推广订单关联id
+     */
+    public void setPromOrderRealId(Integer promOrderRealId) {
+        this.promOrderRealId = promOrderRealId;
+    }
+
+    /**
+     * 获取:推广订单关联id
+     */
+    public Integer getPromOrderRealId() {
+        return promOrderRealId;
+    }
+    /**
+     * 设置:推广id
+     */
+    public void setPromId(Integer promId) {
+        this.promId = promId;
+    }
+
+    /**
+     * 获取:推广id
+     */
+    public Integer getPromId() {
+        return promId;
+    }
+    /**
+     * 设置:购物车id
+     */
+    public void setCartId(Integer cartId) {
+        this.cartId = cartId;
+    }
+
+    /**
+     * 获取:购物车id
+     */
+    public Integer getCartId() {
+        return cartId;
+    }
+    /**
+     * 设置:订单id
+     */
+    public void setOrderId(Integer orderId) {
+        this.orderId = orderId;
+    }
+
+    /**
+     * 获取:订单id
+     */
+    public Integer getOrderId() {
+        return orderId;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 57 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromStatEntity.java

@@ -132,6 +132,63 @@ public class MkStorePromStatEntity implements Serializable {
      */
     private Date tstm;
 
+    private String referrer;
+    private String shareUserName;
+    private String storeName;
+    private String promName;
+
+
+    private Integer submitOrderNum;
+    private Integer submitNum;
+
+    public Integer getSubmitOrderNum() {
+        return submitOrderNum;
+    }
+
+    public void setSubmitOrderNum(Integer submitOrderNum) {
+        this.submitOrderNum = submitOrderNum;
+    }
+
+    public Integer getSubmitNum() {
+        return submitNum;
+    }
+
+    public void setSubmitNum(Integer submitNum) {
+        this.submitNum = submitNum;
+    }
+
+    public String getReferrer() {
+        return referrer;
+    }
+
+    public void setReferrer(String referrer) {
+        this.referrer = referrer;
+    }
+
+    public String getShareUserName() {
+        return shareUserName;
+    }
+
+    public void setShareUserName(String shareUserName) {
+        this.shareUserName = shareUserName;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public String getPromName() {
+        return promName;
+    }
+
+    public void setPromName(String promName) {
+        this.promName = promName;
+    }
+
     /**
      * 设置:推广统计ID
      */

+ 782 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketDiscountEntity.java

@@ -0,0 +1,782 @@
+package com.kmall.admin.entity.mk.store;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 门店优惠券活动实体
+ * 表名 mk_store_ticket_discount
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+public class MkStoreTicketDiscountEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 优惠券id
+     */
+    private Integer tickDiscId;
+    /**
+     * 优惠类型,【tick_disc_type,00:代金券,01:折扣券,02:兑换券】
+     */
+    private String tickDiscType;
+    /**
+     * 优惠券副标题
+     */
+    private String tickDiscSubTitle;
+    /**
+     * 商户编号
+     */
+    private String merchSn;
+    /**
+     * 第三方商户id
+     */
+    private Integer thirdMerchSn;
+    /**
+     * 门店id
+     */
+    private Integer storeId;
+    /**
+     * 活动id
+     */
+    private Integer storeTopicId;
+    /**
+     * 优惠券标题
+     */
+    private String name;
+    /**
+     * 代金券减免金额(元)
+     */
+    private BigDecimal voucherMoney;
+    /**
+     * 代金券使用条件(元),消费金额满多少使用
+     */
+    private BigDecimal voucherCond;
+    /**
+     * 折扣券折扣(折),1-9.9之间的数字,精确到小数点后1位
+     */
+    private BigDecimal discRatio;
+    /**
+     * 折扣券使用条件(元),),消费金额满多少使用
+     */
+    private BigDecimal discCond;
+    /**
+     * 兑换券使用条件(元),消费金额满多少使用
+            
+     */
+    private BigDecimal exchCond;
+    /**
+     * 生效时间类型,【effect_time_type,00:固定时间,01:领取后生效】
+     */
+    private String effectTimeType;
+    /**
+     * 固定开始时间,yyyy-MM-dd
+     */
+    private Date fixBegTime;
+    /**
+     * 固定结束时间,yyyy-MM-dd
+     */
+    private Date fixEndTime;
+    /**
+     * 领券延期生效天数(天)
+     */
+    private String postponeNum;
+    /**
+     * 领券使用有效天数(天)
+     */
+    private String validDayNum;
+    /**
+     * 库存
+     */
+    private Integer ticketNum;
+    /**
+     * 适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    private String applyType;
+    /**
+     * 领取入口,格式:1,2,...,n,【get_enter,1:商品详情页/购物车等商城页面】
+     */
+    private String getEnter;
+    /**
+     * 能否分享领取,【can_share_get,0:能,1:否】
+     */
+    private String canShareGet;
+    /**
+     * 每人限领数(张),每个用户领券上限,如不填则默认为1
+     */
+    private Integer limitNum;
+    /**
+     * 活动图片url(小图)
+     */
+    private String advImgUrl;
+    /**
+     * 门店logo图url
+     */
+    private String storeLogoUrl;
+    /**
+     * 门店名称,默认填写商户门店名称
+     */
+    private String storeName;
+    /**
+     * 券面颜色,如:#ababab
+     */
+    private String ticketColor;
+    /**
+     * 操作说明
+     */
+    private String optDecl;
+    /**
+     * 优惠说明
+     */
+    private String discDecl;
+    /**
+     * 使用须知
+     */
+    private String useNoti;
+    /**
+     * 客服电话,手机或固话
+     */
+    private String svrTel;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+    /**
+     * 发放方式 0:按订单发放 1:按用户发放(通用优惠券,用户点击领取) 2:商品转发送券 3:按商品发放 4:新用户注册 5:线下发放 6评价好评红包(固定或随机红包) 7包邮(不入会员优惠券表)
+     */
+    private Integer sendType;
+    /**
+     * 折扣最多优惠(件)
+     */
+    private Integer discSellCount;
+    /**
+     * 折扣最多优惠(元)
+     */
+    private BigDecimal discSellDoller;
+
+    private String inValidTime;
+
+    private String inValidStatus;
+
+    private Integer validStatus;
+
+    private String guid;
+
+    private String goodsBizType;
+
+    private String isPast;
+
+    /**
+     * 是否展示在小程序门店首页广告栏 0:否,1:是
+     */
+    private String isStoreShow;
+
+    public String getIsStoreShow() {
+        return isStoreShow;
+    }
+
+    public void setIsStoreShow(String isStoreShow) {
+        this.isStoreShow = isStoreShow;
+    }
+
+    public String getIsPast() {
+        return isPast;
+    }
+
+    public void setIsPast(String isPast) {
+        this.isPast = isPast;
+    }
+
+    public String getGoodsBizType() {
+        return goodsBizType;
+    }
+
+    public void setGoodsBizType(String goodsBizType) {
+        this.goodsBizType = goodsBizType;
+    }
+
+    public Integer getValidStatus() {
+        return validStatus;
+    }
+
+    public void setValidStatus(Integer validStatus) {
+        this.validStatus = validStatus;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    public void setGuid(String guid) {
+        this.guid = guid;
+    }
+
+    public String getInValidTime() {
+        return inValidTime;
+    }
+
+    public void setInValidTime(String inValidTime) {
+        this.inValidTime = inValidTime;
+    }
+
+    public String getInValidStatus() {
+        return inValidStatus;
+    }
+
+    public void setInValidStatus(String inValidStatus) {
+        this.inValidStatus = inValidStatus;
+    }
+
+    /**
+     * 设置:优惠券id
+     */
+    public void setTickDiscId(Integer tickDiscId) {
+        this.tickDiscId = tickDiscId;
+    }
+
+    /**
+     * 获取:优惠券id
+     */
+    public Integer getTickDiscId() {
+        return tickDiscId;
+    }
+    /**
+     * 设置:优惠类型,【tick_disc_type,00:代金券,01:折扣券,02:兑换券】
+     */
+    public void setTickDiscType(String tickDiscType) {
+        this.tickDiscType = tickDiscType;
+    }
+
+    /**
+     * 获取:优惠类型,【tick_disc_type,00:代金券,01:折扣券,02:兑换券】
+     */
+    public String getTickDiscType() {
+        return tickDiscType;
+    }
+    /**
+     * 设置:优惠券副标题
+     */
+    public void setTickDiscSubTitle(String tickDiscSubTitle) {
+        this.tickDiscSubTitle = tickDiscSubTitle;
+    }
+
+    /**
+     * 获取:优惠券副标题
+     */
+    public String getTickDiscSubTitle() {
+        return tickDiscSubTitle;
+    }
+    /**
+     * 设置:商户编号
+     */
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    /**
+     * 获取:商户编号
+     */
+    public String getMerchSn() {
+        return merchSn;
+    }
+    /**
+     * 设置:第三方商户id
+     */
+    public void setThirdMerchSn(Integer thirdMerchSn) {
+        this.thirdMerchSn = thirdMerchSn;
+    }
+
+    /**
+     * 获取:第三方商户id
+     */
+    public Integer getThirdMerchSn() {
+        return thirdMerchSn;
+    }
+    /**
+     * 设置:门店id
+     */
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    /**
+     * 获取:门店id
+     */
+    public Integer getStoreId() {
+        return storeId;
+    }
+    /**
+     * 设置:活动id
+     */
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    /**
+     * 获取:活动id
+     */
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+    /**
+     * 设置:优惠券标题
+     */
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * 获取:优惠券标题
+     */
+    public String getName() {
+        return name;
+    }
+    /**
+     * 设置:代金券减免金额(元)
+     */
+    public void setVoucherMoney(BigDecimal voucherMoney) {
+        this.voucherMoney = voucherMoney;
+    }
+
+    /**
+     * 获取:代金券减免金额(元)
+     */
+    public BigDecimal getVoucherMoney() {
+        return voucherMoney;
+    }
+    /**
+     * 设置:代金券使用条件(元),消费金额满多少使用
+     */
+    public void setVoucherCond(BigDecimal voucherCond) {
+        this.voucherCond = voucherCond;
+    }
+
+    /**
+     * 获取:代金券使用条件(元),消费金额满多少使用
+     */
+    public BigDecimal getVoucherCond() {
+        return voucherCond;
+    }
+    /**
+     * 设置:折扣券折扣(折),1-9.9之间的数字,精确到小数点后1位
+     */
+    public void setDiscRatio(BigDecimal discRatio) {
+        this.discRatio = discRatio;
+    }
+
+    /**
+     * 获取:折扣券折扣(折),1-9.9之间的数字,精确到小数点后1位
+     */
+    public BigDecimal getDiscRatio() {
+        return discRatio;
+    }
+    /**
+     * 设置:折扣券使用条件(元),),消费金额满多少使用
+     */
+    public void setDiscCond(BigDecimal discCond) {
+        this.discCond = discCond;
+    }
+
+    /**
+     * 获取:折扣券使用条件(元),),消费金额满多少使用
+     */
+    public BigDecimal getDiscCond() {
+        return discCond;
+    }
+    /**
+     * 设置:兑换券使用条件(元),消费金额满多少使用
+            
+     */
+    public void setExchCond(BigDecimal exchCond) {
+        this.exchCond = exchCond;
+    }
+
+    /**
+     * 获取:兑换券使用条件(元),消费金额满多少使用
+            
+     */
+    public BigDecimal getExchCond() {
+        return exchCond;
+    }
+    /**
+     * 设置:生效时间类型,【effect_time_type,00:固定时间,01:领取后生效】
+     */
+    public void setEffectTimeType(String effectTimeType) {
+        this.effectTimeType = effectTimeType;
+    }
+
+    /**
+     * 获取:生效时间类型,【effect_time_type,00:固定时间,01:领取后生效】
+     */
+    public String getEffectTimeType() {
+        return effectTimeType;
+    }
+    /**
+     * 设置:固定开始时间,yyyy-MM-dd
+     */
+    public void setFixBegTime(Date fixBegTime) {
+        this.fixBegTime = fixBegTime;
+    }
+
+    /**
+     * 获取:固定开始时间,yyyy-MM-dd
+     */
+    public Date getFixBegTime() {
+        return fixBegTime;
+    }
+    /**
+     * 设置:固定结束时间,yyyy-MM-dd
+     */
+    public void setFixEndTime(Date fixEndTime) {
+        this.fixEndTime = fixEndTime;
+    }
+
+    /**
+     * 获取:固定结束时间,yyyy-MM-dd
+     */
+    public Date getFixEndTime() {
+        return fixEndTime;
+    }
+    /**
+     * 设置:领券延期生效天数(天)
+     */
+    public void setPostponeNum(String postponeNum) {
+        this.postponeNum = postponeNum;
+    }
+
+    /**
+     * 获取:领券延期生效天数(天)
+     */
+    public String getPostponeNum() {
+        return postponeNum;
+    }
+    /**
+     * 设置:领券使用有效天数(天)
+     */
+    public void setValidDayNum(String validDayNum) {
+        this.validDayNum = validDayNum;
+    }
+
+    /**
+     * 获取:领券使用有效天数(天)
+     */
+    public String getValidDayNum() {
+        return validDayNum;
+    }
+    /**
+     * 设置:库存
+     */
+    public void setTicketNum(Integer ticketNum) {
+        this.ticketNum = ticketNum;
+    }
+
+    /**
+     * 获取:库存
+     */
+    public Integer getTicketNum() {
+        return ticketNum;
+    }
+    /**
+     * 设置:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public void setApplyType(String applyType) {
+        this.applyType = applyType;
+    }
+
+    /**
+     * 获取:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public String getApplyType() {
+        return applyType;
+    }
+    /**
+     * 设置:领取入口,格式:1,2,...,n,【get_enter,1:商品详情页/购物车等商城页面】
+     */
+    public void setGetEnter(String getEnter) {
+        this.getEnter = getEnter;
+    }
+
+    /**
+     * 获取:领取入口,格式:1,2,...,n,【get_enter,1:商品详情页/购物车等商城页面】
+     */
+    public String getGetEnter() {
+        return getEnter;
+    }
+    /**
+     * 设置:能否分享领取,【can_share_get,0:能,1:否】
+     */
+    public void setCanShareGet(String canShareGet) {
+        this.canShareGet = canShareGet;
+    }
+
+    /**
+     * 获取:能否分享领取,【can_share_get,0:能,1:否】
+     */
+    public String getCanShareGet() {
+        return canShareGet;
+    }
+    /**
+     * 设置:每人限领数(张),每个用户领券上限,如不填则默认为1
+     */
+    public void setLimitNum(Integer limitNum) {
+        this.limitNum = limitNum;
+    }
+
+    /**
+     * 获取:每人限领数(张),每个用户领券上限,如不填则默认为1
+     */
+    public Integer getLimitNum() {
+        return limitNum;
+    }
+    /**
+     * 设置:活动图片url(小图)
+     */
+    public void setAdvImgUrl(String advImgUrl) {
+        this.advImgUrl = advImgUrl;
+    }
+
+    /**
+     * 获取:活动图片url(小图)
+     */
+    public String getAdvImgUrl() {
+        return advImgUrl;
+    }
+    /**
+     * 设置:门店logo图url
+     */
+    public void setStoreLogoUrl(String storeLogoUrl) {
+        this.storeLogoUrl = storeLogoUrl;
+    }
+
+    /**
+     * 获取:门店logo图url
+     */
+    public String getStoreLogoUrl() {
+        return storeLogoUrl;
+    }
+    /**
+     * 设置:门店名称,默认填写商户门店名称
+     */
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    /**
+     * 获取:门店名称,默认填写商户门店名称
+     */
+    public String getStoreName() {
+        return storeName;
+    }
+    /**
+     * 设置:券面颜色,如:#ababab
+     */
+    public void setTicketColor(String ticketColor) {
+        this.ticketColor = ticketColor;
+    }
+
+    /**
+     * 获取:券面颜色,如:#ababab
+     */
+    public String getTicketColor() {
+        return ticketColor;
+    }
+    /**
+     * 设置:操作说明
+     */
+    public void setOptDecl(String optDecl) {
+        this.optDecl = optDecl;
+    }
+
+    /**
+     * 获取:操作说明
+     */
+    public String getOptDecl() {
+        return optDecl;
+    }
+    /**
+     * 设置:优惠说明
+     */
+    public void setDiscDecl(String discDecl) {
+        this.discDecl = discDecl;
+    }
+
+    /**
+     * 获取:优惠说明
+     */
+    public String getDiscDecl() {
+        return discDecl;
+    }
+    /**
+     * 设置:使用须知
+     */
+    public void setUseNoti(String useNoti) {
+        this.useNoti = useNoti;
+    }
+
+    /**
+     * 获取:使用须知
+     */
+    public String getUseNoti() {
+        return useNoti;
+    }
+    /**
+     * 设置:客服电话,手机或固话
+     */
+    public void setSvrTel(String svrTel) {
+        this.svrTel = svrTel;
+    }
+
+    /**
+     * 获取:客服电话,手机或固话
+     */
+    public String getSvrTel() {
+        return svrTel;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+    /**
+     * 设置:发放方式 0:按订单发放 1:按用户发放(通用优惠券,用户点击领取) 2:商品转发送券 3:按商品发放 4:新用户注册 5:线下发放 6评价好评红包(固定或随机红包) 7包邮(不入会员优惠券表)
+     */
+    public void setSendType(Integer sendType) {
+        this.sendType = sendType;
+    }
+
+    /**
+     * 获取:发放方式 0:按订单发放 1:按用户发放(通用优惠券,用户点击领取) 2:商品转发送券 3:按商品发放 4:新用户注册 5:线下发放 6评价好评红包(固定或随机红包) 7包邮(不入会员优惠券表)
+     */
+    public Integer getSendType() {
+        return sendType;
+    }
+
+    public Integer getDiscSellCount() {
+        return discSellCount;
+    }
+
+    public void setDiscSellCount(Integer discSellCount) {
+        this.discSellCount = discSellCount;
+    }
+
+    public BigDecimal getDiscSellDoller() {
+        return discSellDoller;
+    }
+
+    public void setDiscSellDoller(BigDecimal discSellDoller) {
+        this.discSellDoller = discSellDoller;
+    }
+}

+ 219 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketDiscountGoodsEntity.java

@@ -0,0 +1,219 @@
+package com.kmall.admin.entity.mk.store;
+
+import com.kmall.admin.dto.CheckGoodsDto;
+import com.kmall.admin.entity.ProductStoreRelaEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品实体
+ * 表名 mk_store_ticket_discount_goods
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+public class MkStoreTicketDiscountGoodsEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 优惠券商品id
+     */
+    private Integer discGoodId;
+    /**
+     * 优惠券id
+     */
+    private Integer tickDiscId;
+    /**
+     * 适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    private String applyType;
+    /**
+     * 门店商品id
+     */
+    private Integer storeRelaId;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    private List<CheckGoodsDto> checkGoodsList;
+
+    public List<CheckGoodsDto> getCheckGoodsList() {
+        return checkGoodsList;
+    }
+
+    public void setCheckGoodsList(List<CheckGoodsDto> checkGoodsList) {
+        this.checkGoodsList = checkGoodsList;
+    }
+
+    /**
+     * 设置:优惠券商品id
+     */
+    public void setDiscGoodId(Integer discGoodId) {
+        this.discGoodId = discGoodId;
+    }
+
+    /**
+     * 获取:优惠券商品id
+     */
+    public Integer getDiscGoodId() {
+        return discGoodId;
+    }
+    /**
+     * 设置:优惠券id
+     */
+    public void setTickDiscId(Integer tickDiscId) {
+        this.tickDiscId = tickDiscId;
+    }
+
+    /**
+     * 获取:优惠券id
+     */
+    public Integer getTickDiscId() {
+        return tickDiscId;
+    }
+    /**
+     * 设置:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public void setApplyType(String applyType) {
+        this.applyType = applyType;
+    }
+
+    /**
+     * 获取:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public String getApplyType() {
+        return applyType;
+    }
+    /**
+     * 设置:门店商品id
+     */
+    public void setStoreRelaId(Integer storeRelaId) {
+        this.storeRelaId = storeRelaId;
+    }
+
+    /**
+     * 获取:门店商品id
+     */
+    public Integer getStoreRelaId() {
+        return storeRelaId;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 301 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketGoodsTempEntity.java

@@ -0,0 +1,301 @@
+package com.kmall.admin.entity.mk.store;
+
+import com.kmall.admin.dto.CheckGoodsDto;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 门店优惠券活动商品,临时表
+ * 表名 mk_store_topic_goods_temp
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-09 17:33:29
+ */
+public class MkStoreTicketGoodsTempEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 优惠券商品id
+     */
+    private Integer discGoodTempId;
+    /**
+     * 适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    private String applyType;
+    /**
+     * 门店商品id
+     */
+    private Integer storeRelaId;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    private String goodsName;
+
+    private String guid;
+
+    private String isSubmit;
+
+    private Integer storeId;
+
+    private Integer goodsId;
+
+    private String isButtonCannel;
+
+    private Integer tickDiscId;
+
+    private List<Integer> storeRelaIdList;
+
+    private Integer storeTopicId;
+
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    public List<Integer> getStoreRelaIdList() {
+        return storeRelaIdList;
+    }
+
+    public void setStoreRelaIdList(List<Integer> storeRelaIdList) {
+        this.storeRelaIdList = storeRelaIdList;
+    }
+
+    public Integer getTickDiscId() {
+        return tickDiscId;
+    }
+
+    public void setTickDiscId(Integer tickDiscId) {
+        this.tickDiscId = tickDiscId;
+    }
+
+    public String getIsButtonCannel() {
+        return isButtonCannel;
+    }
+
+    public void setIsButtonCannel(String isButtonCannel) {
+        this.isButtonCannel = isButtonCannel;
+    }
+
+    public Integer getGoodsId() {
+        return goodsId;
+    }
+
+    public void setGoodsId(Integer goodsId) {
+        this.goodsId = goodsId;
+    }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getIsSubmit() {
+        return isSubmit;
+    }
+
+    public void setIsSubmit(String isSubmit) {
+        this.isSubmit = isSubmit;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    public void setGuid(String guid) {
+        this.guid = guid;
+    }
+
+    private List<CheckGoodsDto> checkGoodsList;
+
+    private BigDecimal retailPrice;
+
+    public BigDecimal getRetailPrice() {
+        return retailPrice;
+    }
+
+    public void setRetailPrice(BigDecimal retailPrice) {
+        this.retailPrice = retailPrice;
+    }
+
+    public String getGoodsName() {
+        return goodsName;
+    }
+
+    public void setGoodsName(String goodsName) {
+        this.goodsName = goodsName;
+    }
+
+    public List<CheckGoodsDto> getCheckGoodsList() {
+        return checkGoodsList;
+    }
+
+    public void setCheckGoodsList(List<CheckGoodsDto> checkGoodsList) {
+        this.checkGoodsList = checkGoodsList;
+    }
+    /**
+     * 设置:优惠券商品id
+     */
+    public void setDiscGoodTempId(Integer discGoodTempId) {
+        this.discGoodTempId = discGoodTempId;
+    }
+
+    /**
+     * 获取:优惠券商品id
+     */
+    public Integer getDiscGoodTempId() {
+        return discGoodTempId;
+    }
+    /**
+     * 设置:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public void setApplyType(String applyType) {
+        this.applyType = applyType;
+    }
+
+    /**
+     * 获取:适用类型,【apply_type,00:全部商品参与,01:指定商品参与,02:指定商品不参与】
+     */
+    public String getApplyType() {
+        return applyType;
+    }
+    /**
+     * 设置:门店商品id
+     */
+    public void setStoreRelaId(Integer storeRelaId) {
+        this.storeRelaId = storeRelaId;
+    }
+
+    /**
+     * 获取:门店商品id
+     */
+    public Integer getStoreRelaId() {
+        return storeRelaId;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 557 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTopicStatEntity.java

@@ -0,0 +1,557 @@
+package com.kmall.admin.entity.mk.store;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 门店活动统计实体
+ * 表名 mk_store_topic_stat
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+public class MkStoreTopicStatEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 活动统计ID
+     */
+    private Integer storeTopicStatId;
+    /**
+     * 活动id
+     */
+    private Integer storeTopicId;
+    /**
+     * 门店id
+     */
+    private Integer storeId;
+    /**
+     * 浏览数
+     */
+    private Integer browseNum;
+    /**
+     * 访客量
+     */
+    private Integer visitNum;
+    /**
+     * 领取量
+     */
+    private Integer receiveNum;
+    /**
+     * 连带浏览量
+     */
+    private Integer relaBrowseNum;
+    /**
+     * 连带访客量
+     */
+    private Integer relaVisitorNum;
+    /**
+     * 页面访问深度
+     */
+    private Integer visitPageDeep;
+    /**
+     * 转发访客量
+     */
+    private Integer transVisitorNum;
+    /**
+     * 下单单数
+     */
+    private Integer submitOrderNum;
+    /**
+     * 下单人数
+     */
+    private Integer submitNum;
+    /**
+     * 支付单数
+     */
+    private Integer payOrderNum;
+    /**
+     * 连带支付单数
+     */
+    private Integer relaPayOrderNum;
+    /**
+     * 支付人数
+     */
+    private Integer payerNum;
+    /**
+     * 连带支付人数
+     */
+    private Integer relaPayerNum;
+    /**
+     * 支付件数
+     */
+    private Integer payCaseNum;
+    /**
+     * 连带支付件数
+     */
+    private Integer relaPayCaseNum;
+    /**
+     * 应收金额
+     */
+    private BigDecimal receivMoney;
+    /**
+     * 连带应收金额
+     */
+    private BigDecimal relaReceivMoney;
+    /**
+     * 实收金额
+     */
+    private BigDecimal actMoney;
+    /**
+     * 连带实收金额
+     */
+    private BigDecimal relaActMoney;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    private String storeTopicName;//活动名称
+
+    private String storeTopicType;//活动类型
+
+    private String storeName;//门店名称
+
+    private String userName;//用户名称
+
+    private Integer promTypeId;
+
+    public Integer getPromTypeId() {
+        return promTypeId;
+    }
+
+    public void setPromTypeId(Integer promTypeId) {
+        this.promTypeId = promTypeId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getStoreTopicName() {
+        return storeTopicName;
+    }
+
+    public void setStoreTopicName(String storeTopicName) {
+        this.storeTopicName = storeTopicName;
+    }
+
+    public String getStoreTopicType() {
+        return storeTopicType;
+    }
+
+    public void setStoreTopicType(String storeTopicType) {
+        this.storeTopicType = storeTopicType;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public Integer getReceiveNum() {
+        return receiveNum;
+    }
+
+    public void setReceiveNum(Integer receiveNum) {
+        this.receiveNum = receiveNum;
+    }
+
+    /**
+     * 设置:活动统计ID
+     */
+    public void setStoreTopicStatId(Integer storeTopicStatId) {
+        this.storeTopicStatId = storeTopicStatId;
+    }
+
+    /**
+     * 获取:活动统计ID
+     */
+    public Integer getStoreTopicStatId() {
+        return storeTopicStatId;
+    }
+    /**
+     * 设置:活动id
+     */
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    /**
+     * 获取:活动id
+     */
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+    /**
+     * 设置:门店id
+     */
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    /**
+     * 获取:门店id
+     */
+    public Integer getStoreId() {
+        return storeId;
+    }
+    /**
+     * 设置:浏览数
+     */
+    public void setBrowseNum(Integer browseNum) {
+        this.browseNum = browseNum;
+    }
+
+    /**
+     * 获取:浏览数
+     */
+    public Integer getBrowseNum() {
+        return browseNum;
+    }
+    /**
+     * 设置:访客量
+     */
+    public void setVisitNum(Integer visitNum) {
+        this.visitNum = visitNum;
+    }
+
+    /**
+     * 获取:访客量
+     */
+    public Integer getVisitNum() {
+        return visitNum;
+    }
+    /**
+     * 设置:连带浏览量
+     */
+    public void setRelaBrowseNum(Integer relaBrowseNum) {
+        this.relaBrowseNum = relaBrowseNum;
+    }
+
+    /**
+     * 获取:连带浏览量
+     */
+    public Integer getRelaBrowseNum() {
+        return relaBrowseNum;
+    }
+    /**
+     * 设置:连带访客量
+     */
+    public void setRelaVisitorNum(Integer relaVisitorNum) {
+        this.relaVisitorNum = relaVisitorNum;
+    }
+
+    /**
+     * 获取:连带访客量
+     */
+    public Integer getRelaVisitorNum() {
+        return relaVisitorNum;
+    }
+    /**
+     * 设置:页面访问深度
+     */
+    public void setVisitPageDeep(Integer visitPageDeep) {
+        this.visitPageDeep = visitPageDeep;
+    }
+
+    /**
+     * 获取:页面访问深度
+     */
+    public Integer getVisitPageDeep() {
+        return visitPageDeep;
+    }
+    /**
+     * 设置:转发访客量
+     */
+    public void setTransVisitorNum(Integer transVisitorNum) {
+        this.transVisitorNum = transVisitorNum;
+    }
+
+    /**
+     * 获取:转发访客量
+     */
+    public Integer getTransVisitorNum() {
+        return transVisitorNum;
+    }
+    /**
+     * 设置:下单单数
+     */
+    public void setSubmitOrderNum(Integer submitOrderNum) {
+        this.submitOrderNum = submitOrderNum;
+    }
+
+    /**
+     * 获取:下单单数
+     */
+    public Integer getSubmitOrderNum() {
+        return submitOrderNum;
+    }
+    /**
+     * 设置:下单人数
+     */
+    public void setSubmitNum(Integer submitNum) {
+        this.submitNum = submitNum;
+    }
+
+    /**
+     * 获取:下单人数
+     */
+    public Integer getSubmitNum() {
+        return submitNum;
+    }
+    /**
+     * 设置:支付单数
+     */
+    public void setPayOrderNum(Integer payOrderNum) {
+        this.payOrderNum = payOrderNum;
+    }
+
+    /**
+     * 获取:支付单数
+     */
+    public Integer getPayOrderNum() {
+        return payOrderNum;
+    }
+    /**
+     * 设置:连带支付单数
+     */
+    public void setRelaPayOrderNum(Integer relaPayOrderNum) {
+        this.relaPayOrderNum = relaPayOrderNum;
+    }
+
+    /**
+     * 获取:连带支付单数
+     */
+    public Integer getRelaPayOrderNum() {
+        return relaPayOrderNum;
+    }
+    /**
+     * 设置:支付人数
+     */
+    public void setPayerNum(Integer payerNum) {
+        this.payerNum = payerNum;
+    }
+
+    /**
+     * 获取:支付人数
+     */
+    public Integer getPayerNum() {
+        return payerNum;
+    }
+    /**
+     * 设置:连带支付人数
+     */
+    public void setRelaPayerNum(Integer relaPayerNum) {
+        this.relaPayerNum = relaPayerNum;
+    }
+
+    /**
+     * 获取:连带支付人数
+     */
+    public Integer getRelaPayerNum() {
+        return relaPayerNum;
+    }
+    /**
+     * 设置:支付件数
+     */
+    public void setPayCaseNum(Integer payCaseNum) {
+        this.payCaseNum = payCaseNum;
+    }
+
+    /**
+     * 获取:支付件数
+     */
+    public Integer getPayCaseNum() {
+        return payCaseNum;
+    }
+    /**
+     * 设置:连带支付件数
+     */
+    public void setRelaPayCaseNum(Integer relaPayCaseNum) {
+        this.relaPayCaseNum = relaPayCaseNum;
+    }
+
+    /**
+     * 获取:连带支付件数
+     */
+    public Integer getRelaPayCaseNum() {
+        return relaPayCaseNum;
+    }
+    /**
+     * 设置:应收金额
+     */
+    public void setReceivMoney(BigDecimal receivMoney) {
+        this.receivMoney = receivMoney;
+    }
+
+    /**
+     * 获取:应收金额
+     */
+    public BigDecimal getReceivMoney() {
+        return receivMoney;
+    }
+    /**
+     * 设置:连带应收金额
+     */
+    public void setRelaReceivMoney(BigDecimal relaReceivMoney) {
+        this.relaReceivMoney = relaReceivMoney;
+    }
+
+    /**
+     * 获取:连带应收金额
+     */
+    public BigDecimal getRelaReceivMoney() {
+        return relaReceivMoney;
+    }
+    /**
+     * 设置:实收金额
+     */
+    public void setActMoney(BigDecimal actMoney) {
+        this.actMoney = actMoney;
+    }
+
+    /**
+     * 获取:实收金额
+     */
+    public BigDecimal getActMoney() {
+        return actMoney;
+    }
+    /**
+     * 设置:连带实收金额
+     */
+    public void setRelaActMoney(BigDecimal relaActMoney) {
+        this.relaActMoney = relaActMoney;
+    }
+
+    /**
+     * 获取:连带实收金额
+     */
+    public BigDecimal getRelaActMoney() {
+        return relaActMoney;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 188 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTopicVisitorsEntity.java

@@ -0,0 +1,188 @@
+package com.kmall.admin.entity.mk.store;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 门店活动访客记录实体
+ * 表名 mk_store_topic_visitors
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+public class MkStoreTopicVisitorsEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 门店活动访客id
+     */
+    private Integer topicVisitorsId;
+    /**
+     * 活动id
+     */
+    private Integer storeTopicId;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+    /**
+     * 是否有效,0:有效,1:无效
+     */
+    private String isValid;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+    /**
+     * 修改时间
+     */
+    private Date modTime;
+    /**
+     * 时间戳
+     */
+    private Date tstm;
+
+    /**
+     * 设置:门店活动访客id
+     */
+    public void setTopicVisitorsId(Integer topicVisitorsId) {
+        this.topicVisitorsId = topicVisitorsId;
+    }
+
+    /**
+     * 获取:门店活动访客id
+     */
+    public Integer getTopicVisitorsId() {
+        return topicVisitorsId;
+    }
+    /**
+     * 设置:活动id
+     */
+    public void setStoreTopicId(Integer storeTopicId) {
+        this.storeTopicId = storeTopicId;
+    }
+
+    /**
+     * 获取:活动id
+     */
+    public Integer getStoreTopicId() {
+        return storeTopicId;
+    }
+    /**
+     * 设置:用户id
+     */
+    public void setUserId(Integer userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 获取:用户id
+     */
+    public Integer getUserId() {
+        return userId;
+    }
+    /**
+     * 设置:是否有效,0:有效,1:无效
+     */
+    public void setIsValid(String isValid) {
+        this.isValid = isValid;
+    }
+
+    /**
+     * 获取:是否有效,0:有效,1:无效
+     */
+    public String getIsValid() {
+        return isValid;
+    }
+    /**
+     * 设置:备注
+     */
+    public void setNote(String note) {
+        this.note = note;
+    }
+
+    /**
+     * 获取:备注
+     */
+    public String getNote() {
+        return note;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getModTime() {
+        return modTime;
+    }
+    /**
+     * 设置:时间戳
+     */
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    /**
+     * 获取:时间戳
+     */
+    public Date getTstm() {
+        return tstm;
+    }
+}

+ 33 - 15
kmall-admin/src/main/java/com/kmall/admin/service/CouponGoodsService.java

@@ -1,3 +1,4 @@
+/*
 package com.kmall.admin.service;
 
 import com.kmall.admin.entity.CouponGoodsEntity;
@@ -5,68 +6,85 @@ import com.kmall.admin.entity.CouponGoodsEntity;
 import java.util.List;
 import java.util.Map;
 
+*/
 /**
  * 优惠券关联商品Service接口
  *
  * @author Scott
  * @email
  * @date 2017-08-29 21:50:17
- */
+ *//*
+
 public interface CouponGoodsService {
 
-    /**
+    */
+/**
      * 根据主键查询实体
      *
      * @param id 主键
      * @return 实体
-     */
+     *//*
+
     CouponGoodsEntity queryObject(Integer id);
 
-    /**
+    */
+/**
      * 分页查询
      *
      * @param map 参数
      * @return list
-     */
+     *//*
+
     List<CouponGoodsEntity> queryList(Map<String, Object> map);
 
-    /**
+    */
+/**
      * 分页统计总数
      *
      * @param map 参数
      * @return 总数
-     */
+     *//*
+
     int queryTotal(Map<String, Object> map);
 
-    /**
+    */
+/**
      * 保存实体
      *
      * @param couponGoods 实体
      * @return 保存条数
-     */
+     *//*
+
     int save(CouponGoodsEntity couponGoods);
 
-    /**
+    */
+/**
      * 根据主键更新实体
      *
      * @param couponGoods 实体
      * @return 更新条数
-     */
+     *//*
+
     int update(CouponGoodsEntity couponGoods);
 
-    /**
+    */
+/**
      * 根据主键删除
      *
      * @param id
      * @return 删除条数
-     */
+     *//*
+
     int delete(Integer id);
 
-    /**
+    */
+/**
      * 根据主键批量删除
      *
      * @param ids
      * @return 删除条数
-     */
+     *//*
+
     int deleteBatch(Integer[] ids);
 }
+*/

+ 37 - 17
kmall-admin/src/main/java/com/kmall/admin/service/CouponService.java

@@ -1,3 +1,4 @@
+/*
 package com.kmall.admin.service;
 
 import com.kmall.admin.entity.CouponEntity;
@@ -6,76 +7,95 @@ import com.kmall.common.utils.R;
 import java.util.List;
 import java.util.Map;
 
+*/
 /**
  * Service接口
  *
  * @author Scott
  * @email
  * @date 2017-08-19 12:53:26
- */
+ *//*
+
 public interface CouponService {
 
-    /**
+    */
+/**
      * 根据主键查询实体
      *
      * @param id 主键
      * @return 实体
-     */
+     *//*
+
     CouponEntity queryObject(Integer id);
 
-    /**
+    */
+/**
      * 分页查询
      *
      * @param map 参数
      * @return list
-     */
+     *//*
+
     List<CouponEntity> queryList(Map<String, Object> map);
 
-    /**
+    */
+/**
      * 分页统计总数
      *
      * @param map 参数
      * @return 总数
-     */
+     *//*
+
     int queryTotal(Map<String, Object> map);
 
-    /**
+    */
+/**
      * 保存实体
      *
      * @param coupon 实体
      * @return 保存条数
-     */
+     *//*
+
     int save(CouponEntity coupon);
 
-    /**
+    */
+/**
      * 根据主键更新实体
      *
      * @param coupon 实体
      * @return 更新条数
-     */
+     *//*
+
     int update(CouponEntity coupon);
 
-    /**
+    */
+/**
      * 根据主键删除
      *
      * @param id
      * @return 删除条数
-     */
+     *//*
+
     int delete(Integer id);
 
-    /**
+    */
+/**
      * 根据主键批量删除
      *
      * @param ids
      * @return 删除条数
-     */
+     *//*
+
     int deleteBatch(Integer[] ids);
 
-    /**
+    */
+/**
      * 按用户、商品下发优惠券
      *
      * @param params
      * @return
-     */
+     *//*
+
     R publish(Map<String, Object> params);
 }
+*/

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

@@ -27,4 +27,6 @@ public interface OrderGoodsService {
 	void delete(Integer id);
 	
 	void deleteBatch(Integer[] ids);
+
+	List<OrderGoodsEntity> queryListByOrderId(Integer orderId);
 }

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

@@ -106,4 +106,15 @@ public interface OrderService {
      * @return
      */
     int uploadExcel(List<OrderExpressDto> orderExpressDtoList);
+
+    List<OrderEntity> promOrderList(Map<String, Object> map);
+
+    int queryPromOrderTotal(Map<String, Object> map);
+
+    List<OrderEntity> promOrderListExport(Map<String, Object> map);
+
+    List<OrderEntity> storeTopicOrderList(Map<String, Object> map);
+
+    int queryStoreTopicOrderTotal(Map<String, Object> map);
+
 }

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

@@ -35,8 +35,6 @@ public interface ProductStoreRelaService {
      */
     List<ProductStoreRelaEntity> queryList(Map<String, Object> map);
 
-    List<ProductStoreRelaEntity> querySameList(Map<String, Object> map);
-
     /**
      * 分页统计总数
      *
@@ -45,6 +43,8 @@ public interface ProductStoreRelaService {
      */
     int queryTotal(Map<String, Object> map);
 
+    List<ProductStoreRelaEntity> querySameList(Map<String, Object> map);
+
     /**
      * 保存实体
      *
@@ -76,4 +76,36 @@ public interface ProductStoreRelaService {
      * @return 删除条数
      */
     int deleteBatch(Integer[] ids);
+
+    /**
+     * 根据优惠券临时表查询商品分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<ProductStoreRelaEntity> queryGoodsRealListByDiscountTid(Map<String, Object> map);
+
+    /**
+     * 根据优惠券临时表查询商品分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryGoodsRealListByDiscountTidTotal(Map<String, Object> map);
+
+    /**
+     * 根据门店活动临时表查询商品分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<ProductStoreRelaEntity> queryGoodsRealListByTopicId(Map<String, Object> map);
+
+    /**
+     * 根据门店活动临时表查询商品分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryGoodsRealListByTopicIdTotal(Map<String, Object> map);
 }

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

@@ -69,4 +69,8 @@ public interface UserCouponService {
      * @return 删除条数
      */
     int deleteBatch(Integer[] ids);
+
+    List<UserCouponEntity> getUserCouponByDiscIdList(Map<String, Object> map);
+
+    int queryUserCouponByDiscIdTotal(Map<String, Object> map);
 }

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

@@ -1,3 +1,4 @@
+/*
 package com.kmall.admin.service.impl;
 
 import com.kmall.admin.dao.CouponGoodsDao;
@@ -9,13 +10,15 @@ import org.springframework.stereotype.Service;
 import java.util.List;
 import java.util.Map;
 
+*/
 /**
  * 优惠券关联商品Service实现类
  *
  * @author Scott
  * @email
  * @date 2017-08-29 21:50:17
- */
+ *//*
+
 @Service("couponGoodsService")
 public class CouponGoodsServiceImpl implements CouponGoodsService {
     @Autowired
@@ -56,3 +59,4 @@ public class CouponGoodsServiceImpl implements CouponGoodsService {
         return couponGoodsDao.deleteBatch(ids);
     }
 }
+*/

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

@@ -1,3 +1,4 @@
+/*
 package com.kmall.admin.service.impl;
 
 import com.google.common.collect.ImmutableBiMap;
@@ -23,13 +24,15 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
+*/
 /**
  * Service实现类
  *
  * @author Scott
  * @email
  * @date 2017-08-19 12:53:26
- */
+ *//*
+
 @Service("couponService")
 public class CouponServiceImpl implements CouponService {
     @Autowired
@@ -151,3 +154,4 @@ public class CouponServiceImpl implements CouponService {
         return R.ok("发放成功");
     }
 }
+*/

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

@@ -86,7 +86,7 @@ public class GoodsGroupOpenServiceImpl implements GoodsGroupOpenService {
         Map detailMap = Maps.newHashMap();
         detailMap.put("openId", id);
         List<GoodsGroupOpenDetailEntity> openDetailEntityList = goodsGroupOpenDetailDao.queryList(detailMap);
-        if (null != openDetailEntityList && openDetailEntityList.size() > 0) {
+       /* if (null != openDetailEntityList && openDetailEntityList.size() > 0) {
             for (GoodsGroupOpenDetailEntity detailEntity : openDetailEntityList) {
                 // 参团状态 0待付款  1拼团中 2拼团成功 3拼团失败
                 if (detailEntity.getAttendStatus() == 0) {
@@ -131,7 +131,7 @@ public class GoodsGroupOpenServiceImpl implements GoodsGroupOpenService {
                             0.01, 0.01);
                 }
             }
-        }
+        }*/
         result = 1;
         return result;
     }

+ 53 - 17
kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java

@@ -29,10 +29,6 @@ public class GoodsServiceImpl implements GoodsService {
     @Autowired
     private GoodsDao goodsDao;
     @Autowired
-    private GoodsAttributeDao goodsAttributeDao;
-    @Autowired
-    private AttributeDao attributeDao;
-    @Autowired
     private ProductDao productDao;
     @Autowired
     private GoodsGalleryDao goodsGalleryDao;
@@ -49,16 +45,10 @@ public class GoodsServiceImpl implements GoodsService {
     @Autowired
     private SupplierDao supplierDao;
     @Autowired
-    private BrandDao brandDao;
-    @Autowired
-    private FreightDao freightDao;
-    @Autowired
     private SysCusNationCodeDao sysCusNationCodeDao;
     @Autowired
     private SysCusUnitCodeDao sysCusUnitCodeDao;
     @Autowired
-    private MerchDao merchDao;
-    @Autowired
     private ExportExceptionDataDao exportExceptionDataDao;
     @Autowired
     private CartDao cartDao;
@@ -118,6 +108,7 @@ public class GoodsServiceImpl implements GoodsService {
 //        builder.put("brandId", "品牌");
         builder.put("supplierId", "供应商");
 //        builder.put("freightId", "运费模版");
+        builder.put("goodsNumber", "商品总库存");
         builder.put("primaryPicUrl", "商品主图");
         builder.put("listPicUrl", "商品列表图");
         builder.put("goodsDesc", "商品描述");
@@ -146,7 +137,7 @@ public class GoodsServiceImpl implements GoodsService {
                 throw new RRException(r.get("msg").toString());
             }
         }
-        ThirdMerchantBizEntity thirdMerchantBizEntity = thirdMerchantBizDao.getThirdMerchangByCode(goods.getThirdPartyMerchCode());
+        /*ThirdMerchantBizEntity thirdMerchantBizEntity = thirdMerchantBizDao.getThirdMerchangByCode(goods.getThirdPartyMerchCode());
         if(thirdMerchantBizEntity == null){
             throw new RRException("第三方商户信息不存在");
         }
@@ -155,7 +146,7 @@ public class GoodsServiceImpl implements GoodsService {
             if(Dict.isStockShare.item_1.getItem().equalsIgnoreCase(thirdMerchantBizEntity.getIsStockShare())){
                 builder.put("goodsNumber", "商品库存");
             }
-        }
+        }*/
         r = ValidatorUtil.isEmpty(builder.build(), valideDate);
         if (Integer.valueOf(r.get("code").toString()) != 0) {
             throw new RRException(r.get("msg").toString());
@@ -289,6 +280,7 @@ public class GoodsServiceImpl implements GoodsService {
         builder.put("goodsBizType", "货品业务类型");
 //        builder.put("brandId", "品牌");
         builder.put("supplierId", "供应商");
+        builder.put("goodsNumber", "商品总库存");
 //        builder.put("freightId", "运费模版");
         builder.put("primaryPicUrl", "商品主图");
         builder.put("listPicUrl", "商品列表图");
@@ -319,17 +311,21 @@ public class GoodsServiceImpl implements GoodsService {
                 throw new RRException(r.get("msg").toString());
             }
         }
+        /*ThirdMerchantBizEntity thirdMerchantBizEntity = thirdMerchantBizDao.getThirdMerchangByCode(goods.getThirdPartyMerchCode());
+        if(thirdMerchantBizEntity == null){
+            throw new RRException("所属第三方商户不存在");
+        }*/
         GoodsEntity goodsEntity = goodsDao.queryObject(goods.getId());
         if(goodsEntity != null){
-            if(Dict.orderBizType.item_00.getItem().equalsIgnoreCase(goods.getGoodsBizType())){
-                if(Dict.isStockShare.item_1.getItem().equalsIgnoreCase(goodsEntity.getIsStockShare())){
+            /*if(Dict.orderBizType.item_00.getItem().equalsIgnoreCase(goods.getGoodsBizType())){
+                if(Dict.isStockShare.item_1.getItem().equalsIgnoreCase(thirdMerchantBizEntity.getIsStockShare())){
                     builder.put("goodsNumber", "商品库存");
                 }
             }
             r = ValidatorUtil.isEmpty(builder.build(), valideDate);
             if (Integer.valueOf(r.get("code").toString()) != 0) {
                 throw new RRException(r.get("msg").toString());
-            }
+            }*/
         }else{
             throw new RRException("商品不存在");
         }
@@ -339,6 +335,21 @@ public class GoodsServiceImpl implements GoodsService {
         if (galleryEntityList == null || galleryEntityList.size() <= 0) {
             throw new RRException("至少保留一张商品轮播图!");
         }
+        List<ProductStoreRelaEntity> proStoreList = productStoreRelaDao.queryByGoodsId(goodsEntity.getId());
+        Long[] storeIds = new Long[proStoreList.size()];
+        if(goodsEntity.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
+            Integer goodsNumber = goods.getGoodsNumber();//商品总库存
+            Integer storeTotalGoodsNumber = 0;//商品分配库存
+            for (int i = 0; i < proStoreList.size(); i++) {
+                ProductStoreRelaEntity relaEntity = proStoreList.get(i);
+                storeTotalGoodsNumber = storeTotalGoodsNumber + relaEntity.getStockNum();
+                storeIds[i] = relaEntity.getStoreId();
+            }
+            if (goodsNumber < storeTotalGoodsNumber) {
+                throw new RRException("该商品已在各门店分配库存" + storeTotalGoodsNumber + ",当前商品总库存不能小于分配库存总额!请先修改门店库存!");
+            }
+        }
+
         List<GoodsEntity> prodbarGoodsList = goodsDao.queryObjectByProdBarcode(goods.getProdBarcode(),goods.getMerchSn(),goods.getId());
         if(prodbarGoodsList != null && prodbarGoodsList.size() > 0){
             throw new RRException("不能有重复的产品条码信息!");
@@ -369,6 +380,9 @@ public class GoodsServiceImpl implements GoodsService {
         if(goods.getGoodsNumber()==null){
             goods.setGoodsNumber(0);
         }else{
+            if(goodsEntity.getGoodsNumber() == null){
+                goodsEntity.setGoodsNumber(0);
+            }
             MngChangeEntity mngChangeEntity = new MngChangeEntity();
             mngChangeEntity.setGoodsId(Integer.parseInt(String.valueOf(goods.getId())));
             mngChangeEntity.setThirdPartyMerchCode(goods.getThirdPartyMerchCode());
@@ -526,9 +540,29 @@ public class GoodsServiceImpl implements GoodsService {
                 return productDao.update(product);
             }
         }
+        //更新门店商品是否有修改字段
+        if(storeIds.length > 0){
+            for(int i=0;i<storeIds.length;i++){
+                updateLoadGoodsByStoreId(storeIds[i], user);
+            }
+        }
         return 1;
     }
 
+    /**
+     * 更新门店商品是否有修改字段
+     * @param storeId
+     * @param user
+     */
+    private void updateLoadGoodsByStoreId(Long storeId, SysUserEntity user){
+        StoreEntity storeEntity = new StoreEntity();
+        storeEntity.setIsLoadGoods("1");
+        storeEntity.setModerSn(user.getUsername());
+        storeEntity.setModTime(new Date());
+        storeEntity.setId(storeId);
+        storeDao.update(storeEntity);
+    }
+
     @Override
     public int delete(Integer id) {
         SysUserEntity user = ShiroUtils.getUserEntity();
@@ -668,6 +702,7 @@ public class GoodsServiceImpl implements GoodsService {
 //                builder.put("marketPrice", "市场价");
 //                builder.put("retailPrice", "零售价");
                 builder.put("supplierName", "供应商");
+                builder.put("goodsNumber", "商品总库存");
                 R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
                 if (Integer.valueOf(r.get("code").toString()) != 0) {
                     throw new RRException(r.get("msg").toString());
@@ -746,7 +781,7 @@ public class GoodsServiceImpl implements GoodsService {
                     }
                 }
                 if(thirdMerchantBizEntity != null) {
-                    SupplierEntity supplierEntity = supplierDao.queryObjectByName(goodsDto.getSupplierName(), thirdMerchantBizEntity.getMerchSn());
+                    SupplierEntity supplierEntity = supplierDao.queryObjectByName(goodsDto.getSupplierName(), thirdMerchantBizEntity.getMerchSn(),thirdMerchantBizEntity.getThirdPartyMerchCode());
                     if (supplierEntity == null) {
                         isFail = true;
                         failSuppGoodsSnList.add(goodsDto.getGoodsSn());
@@ -800,7 +835,7 @@ public class GoodsServiceImpl implements GoodsService {
                     } else {
                         goodsEntity.setOriCntCode(sysCusNationCodeEntity.getCode());
                     }
-                    goodsEntity.setGoodsRate(BigDecimal.valueOf(Integer.valueOf(goodsDto.getGoodsRate())));
+                    goodsEntity.setGoodsRate(BigDecimal.valueOf(Double.valueOf(goodsDto.getGoodsRate())));
                 }
                 goodsEntity.setIsOnSale(Integer.parseInt(goodsDto.getIsOnSaleStr()));
                 goodsEntity.setIsHot(Integer.parseInt(goodsDto.getIsHotStr()));
@@ -823,6 +858,7 @@ public class GoodsServiceImpl implements GoodsService {
                 goodsEntity.setCreateTime(new Date());
                 goodsEntity.setUpdateTime(new Date());
                 goodsEntity.setModTime(new Date());
+                goodsEntity.setGoodsNumber(Integer.parseInt(goodsDto.getGoodsNumber()));
 
                 if(!isFail){
                     GoodsEntity goods = goodsDao.queryObjectBySn(goodsDto.getGoodsSn());

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

@@ -6,6 +6,7 @@ import com.kmall.admin.service.OrderGoodsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -49,5 +50,12 @@ public class OrderGoodsServiceImpl implements OrderGoodsService {
 	public void deleteBatch(Integer[] ids){
 		orderGoodsDao.deleteBatch(ids);
 	}
+
+	@Override
+	public List<OrderGoodsEntity> queryListByOrderId(Integer orderId){
+		Map map = new HashMap();
+		map.put("orderId", orderId);
+		return orderGoodsDao.queryListByOrderId(map);
+	}
 	
 }

+ 206 - 108
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -4,9 +4,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.google.common.collect.ImmutableBiMap;
 import com.google.common.collect.Maps;
 import com.kmall.admin.dao.*;
+import com.kmall.admin.dao.mk.store.MkStorePromOrderRealDao;
 import com.kmall.admin.dto.OrderExpressDto;
 import com.kmall.admin.entity.*;
 import com.kmall.admin.entity.OrderProcessRecordEntity;
+import com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity;
+import com.kmall.api.entity.mk.MkStorePromOrderRealVo;
 import com.kmall.manager.manager.express.sf.properties.SFPropertiesBuilder;
 import com.kmall.manager.manager.express.sf.properties.SFUtil;
 import com.kmall.manager.manager.express.sf.entity.SfRouteServiceResponseEntity;
@@ -68,6 +71,10 @@ public class OrderServiceImpl implements OrderService {
     private StoreMngChangeDao storeMngChangeDao;
     @Autowired
     private ThirdMerchExpressDao thirdMerchExpressDao;
+    @Autowired
+    private MkStorePromOrderRealDao mkStorePromOrderRealDao;
+    @Autowired
+    private UserCampMinusDao userCampMinusDao;
 
     @Override
     public OrderEntity queryObject(Long id) {
@@ -110,18 +117,22 @@ public class OrderServiceImpl implements OrderService {
         if (order.getOrderStatus() == Integer.parseInt(Dict.orderStatus.item_0.getItem())) {
             order.setOrderStatus(Integer.parseInt(Dict.orderStatus.item_101.getItem()));
         }
-        // 判断是否有优惠券
-        UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
-        if (null != couponVo) {
-            userCouponDao.cancelOrder(couponVo);
-        }
         orderDao.update(order);
-
         if (!needUpdateStock) {
             return;
         }
         // 更新库存
         updateStock(order, "管理后台取消订单");
+        // 释放优惠券
+        UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
+        if (null != couponVo) {
+            userCouponDao.cancelOrder(couponVo);
+        }
+        //释放促销满减券
+        UserCampMinusEntity userCampMinusVo = userCampMinusDao.queryUserCampByOrderId(order.getId());
+        if (null != userCampMinusVo) {
+            userCampMinusDao.cancelUserCampOrder(userCampMinusVo);
+        }
     }
 
     @Override
@@ -293,7 +304,8 @@ public class OrderServiceImpl implements OrderService {
             }
         }
         orderDao.update(order);//修改为退款中
-        // 判断是否有优惠券
+        // TODO: 2019/6/13 定时任务查询退款成功后释放库存、优惠券
+        /*// 判断是否有优惠券
         UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
         if (null != couponVo) {
             userCouponDao.cancelOrder(couponVo);
@@ -303,7 +315,9 @@ public class OrderServiceImpl implements OrderService {
             return;
         }
         // 更新库存
-        updateStock(order, "管理后台订单退款");
+        updateStock(order, "管理后台订单退款");*/
+
+        queryStorePromRealUpdateIsScan(order);
     }
 
     /**
@@ -337,7 +351,8 @@ public class OrderServiceImpl implements OrderService {
             orderRefundDao.save(orderRefund);//退款记录
         }
         orderDao.update(order);//修改为退款中
-        // 判断是否有优惠券
+        // TODO: 2019/6/13 定时任务查询退款成功后释放库存、优惠券
+        /*// 判断是否有优惠券
         UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
         if (null != couponVo) {
             userCouponDao.cancelOrder(couponVo);
@@ -347,7 +362,9 @@ public class OrderServiceImpl implements OrderService {
             return;
         }
         // 更新库存
-        updateStock(order, "管理后台平安退款订单");
+        updateStock(order, "管理后台平安退款订单");*/
+
+        queryStorePromRealUpdateIsScan(order);
     }
 
     /**
@@ -394,7 +411,8 @@ public class OrderServiceImpl implements OrderService {
             orderRefundDao.save(orderRefund);//退款记录
         }
         orderDao.update(order);//修改为退款中
-        // 判断是否有优惠券
+        // TODO: 2019/6/13 定时任务查询退款成功后释放库存、优惠券
+        /*// 判断是否有优惠券
         UserCouponEntity couponVo = userCouponDao.queryByOrderId(order.getId());
         if (null != couponVo) {
             userCouponDao.cancelOrder(couponVo);
@@ -404,7 +422,9 @@ public class OrderServiceImpl implements OrderService {
             return;
         }
         // 更新库存
-        updateStock(order, "管理后台微信国际退款订单");
+        updateStock(order, "管理后台微信国际退款订单");*/
+
+        queryStorePromRealUpdateIsScan(order);
     }
 
     private void updateStock(OrderEntity order, String changeReason){
@@ -425,92 +445,106 @@ public class OrderServiceImpl implements OrderService {
 
             Integer stockNum = 0;
             // TODO: 2019/3/5  普通商品不受共享库存影响,直接取门店配置库存
-            if(storeRelaEntity.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
-                if (storeRelaEntity.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
-                    //还原商户商品库存
-                    stockNum = storeRelaEntity.getGoodsNumber();
-                    GoodsEntity goodsEntity = goodsDao.queryObject(storeRelaEntity.getGoodsId());
-                    if(goodsEntity!=null){
-                        goodsEntity.setGoodsNumber(stockNum + orderGoodsEntity.getNumber());
-//                        goodsEntity.setSellVolume(Integer.parseInt(goodsSellVolume.toString()));
-                        goodsDao.update(goodsEntity);
-
-                        storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
-                        productStoreRelaDao.update(storeRelaEntity);
-                        
-                        MngChangeEntity mngChangeEntity = new MngChangeEntity();
-                        mngChangeEntity.setGoodsId(Integer.parseInt(String.valueOf(goodsEntity.getId())));
-                        mngChangeEntity.setThirdPartyMerchCode(goodsEntity.getThirdPartyMerchCode());
-                        mngChangeEntity.setChangeReason(changeReason);
-                        mngChangeEntity.setChangeType(Dict.changeType.item_0.getItem());
-                        mngChangeEntity.setChangeNum(orderGoodsEntity.getNumber());//变化数
-                        mngChangeEntity.setOriginalNum(stockNum);//原库存数
-                        mngChangeEntity.setValidNum(stockNum + orderGoodsEntity.getNumber());//可用数
-                        mngChangeEntity.setCreateTime(new Date());
-                        mngChangeEntity.setModTime(new Date());
-                        mngChangeEntity.setCreaterSn(user.getUsername());
-                        mngChangeEntity.setModerSn(user.getUsername());
-                        mngChangeEntity.setIsValid(0);
-                        mngChangeEntity.setMerchSn(goodsEntity.getMerchSn());
-                        mngChangeDao.save(mngChangeEntity);
-                    }
-                }
-                if (storeRelaEntity.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
-                    //还原门店库存
-                    if (null == storeRelaEntity.getStockNum()) {
-                        stockNum = 0;
-                    }else{
-                        stockNum = storeRelaEntity.getStockNum();
-                    }
-                    storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
-                    storeRelaEntity.setStockNum(stockNum + orderGoodsEntity.getNumber());//库存数量
-                    productStoreRelaDao.update(storeRelaEntity);
-
-                    StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
-                    storeMngChangeEntity.setChangeType(Dict.changeType.item_0.getItem());
-                    storeMngChangeEntity.setChangeReason(changeReason);
-                    storeMngChangeEntity.setGoodsId(Integer.parseInt(String.valueOf(storeRelaEntity.getGoodsId())));
-                    storeMngChangeEntity.setStoreId(Integer.parseInt(String.valueOf(storeRelaEntity.getStoreId())));
-                    storeMngChangeEntity.setMerchSn(storeRelaEntity.getMerchSn());
-                    storeMngChangeEntity.setCreateTime(new Date());
-                    storeMngChangeEntity.setModTime(new Date());
-                    storeMngChangeEntity.setStoreChangeNum(orderGoodsEntity.getNumber());
-                    storeMngChangeEntity.setStoreOriginalNum(stockNum);
-                    storeMngChangeEntity.setStoreValidNum(stockNum + orderGoodsEntity.getNumber());
-                    storeMngChangeEntity.setCreaterSn(user.getUsername());
-                    storeMngChangeEntity.setModerSn(user.getUsername());
-                    storeMngChangeEntity.setIsValid(0);
-                    storeMngChangeDao.save(storeMngChangeEntity);
-                }
-            }else {
+            if (null != storeRelaEntity.getStockNum()) {
+                stockNum = storeRelaEntity.getStockNum();
                 //还原门店库存
-                if (null == storeRelaEntity.getStockNum()) {
-                    stockNum = 0;
-                }else{
-                    stockNum = storeRelaEntity.getStockNum();
-                }
-                storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
-                storeRelaEntity.setStockNum(stockNum + orderGoodsEntity.getNumber());//库存数量
-                productStoreRelaDao.update(storeRelaEntity);
-
-                StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
-                storeMngChangeEntity.setChangeType(Dict.changeType.item_0.getItem());
-                storeMngChangeEntity.setChangeReason(changeReason);
-                storeMngChangeEntity.setGoodsId(Integer.parseInt(String.valueOf(storeRelaEntity.getGoodsId())));
-                storeMngChangeEntity.setStoreId(Integer.parseInt(String.valueOf(storeRelaEntity.getStoreId())));
-                storeMngChangeEntity.setMerchSn(storeRelaEntity.getMerchSn());
-                storeMngChangeEntity.setStoreChangeNum(orderGoodsEntity.getNumber());
-                storeMngChangeEntity.setStoreOriginalNum(stockNum);
-                storeMngChangeEntity.setStoreValidNum(stockNum + orderGoodsEntity.getNumber());
-                storeMngChangeEntity.setCreateTime(new Date());
-                storeMngChangeEntity.setModTime(new Date());
-                storeMngChangeEntity.setCreaterSn(user.getUsername());
-                storeMngChangeEntity.setModerSn(user.getUsername());
-                storeMngChangeEntity.setIsValid(0);
-                storeMngChangeDao.save(storeMngChangeEntity);
+                resetStoreGoodsStock(stockNum, storeRelaEntity, orderGoodsEntity, sellVolume, changeReason, user);
+            }
+            GoodsEntity goodsEntity = goodsDao.queryObject(orderGoodsEntity.getGoodsId());
+            if(goodsEntity != null){
+                stockNum = goodsEntity.getGoodsNumber();
+                //还原商户商品库存
+                resetGoodsStock(stockNum, storeRelaEntity, orderGoodsEntity, sellVolume, changeReason, user);
             }
         }
     }
+
+    /**
+     * 还原商品总库存
+     * @param stockNum
+     * @param storeRelaEntity
+     * @param orderGoodsEntity
+     * @param sellVolume
+     * @param changeReason
+     * @param user
+     */
+    private void resetGoodsStock(Integer stockNum, ProductStoreRelaEntity storeRelaEntity,
+                                 OrderGoodsEntity orderGoodsEntity, BigDecimal sellVolume, String changeReason, SysUserEntity user){
+        GoodsEntity goodsEntity = goodsDao.queryObject(storeRelaEntity.getGoodsId());
+        if(goodsEntity!=null){
+            goodsEntity.setGoodsNumber(stockNum + orderGoodsEntity.getNumber());
+//                        goodsEntity.setSellVolume(Integer.parseInt(goodsSellVolume.toString()));
+            goodsDao.update(goodsEntity);
+
+//            storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
+//            productStoreRelaDao.update(storeRelaEntity);
+
+            MngChangeEntity mngChangeEntity = new MngChangeEntity();
+            mngChangeEntity.setGoodsId(Integer.parseInt(String.valueOf(goodsEntity.getId())));
+            mngChangeEntity.setThirdPartyMerchCode(goodsEntity.getThirdPartyMerchCode());
+            mngChangeEntity.setChangeReason(changeReason);
+            mngChangeEntity.setChangeType(Dict.changeType.item_0.getItem());
+            mngChangeEntity.setChangeNum(orderGoodsEntity.getNumber());//变化数
+            mngChangeEntity.setOriginalNum(stockNum);//原库存数
+            mngChangeEntity.setValidNum(stockNum + orderGoodsEntity.getNumber());//可用数
+            mngChangeEntity.setCreateTime(new Date());
+            mngChangeEntity.setModTime(new Date());
+            mngChangeEntity.setCreaterSn(user.getUsername());
+            mngChangeEntity.setModerSn(user.getUsername());
+            mngChangeEntity.setIsValid(0);
+            mngChangeEntity.setMerchSn(goodsEntity.getMerchSn());
+            mngChangeDao.save(mngChangeEntity);
+        }
+    }
+
+    /**
+     * 还原门店商品库存
+     * @param stockNum
+     * @param storeRelaEntity
+     * @param orderGoodsEntity
+     * @param sellVolume
+     * @param changeReason
+     * @param user
+     */
+    private void resetStoreGoodsStock(Integer stockNum, ProductStoreRelaEntity storeRelaEntity,
+                                 OrderGoodsEntity orderGoodsEntity, BigDecimal sellVolume, String changeReason, SysUserEntity user){
+        storeRelaEntity.setSellVolume(Integer.parseInt(sellVolume.toString()));
+        storeRelaEntity.setStockNum(stockNum + orderGoodsEntity.getNumber());//库存数量
+        productStoreRelaDao.update(storeRelaEntity);
+
+        StoreMngChangeEntity storeMngChangeEntity = new StoreMngChangeEntity();
+        storeMngChangeEntity.setChangeType(Dict.changeType.item_0.getItem());
+        storeMngChangeEntity.setChangeReason(changeReason);
+        storeMngChangeEntity.setGoodsId(Integer.parseInt(String.valueOf(storeRelaEntity.getGoodsId())));
+        storeMngChangeEntity.setStoreId(Integer.parseInt(String.valueOf(storeRelaEntity.getStoreId())));
+        storeMngChangeEntity.setMerchSn(storeRelaEntity.getMerchSn());
+        storeMngChangeEntity.setStoreChangeNum(orderGoodsEntity.getNumber());
+        storeMngChangeEntity.setStoreOriginalNum(stockNum);
+        storeMngChangeEntity.setStoreValidNum(stockNum + orderGoodsEntity.getNumber());
+        storeMngChangeEntity.setCreateTime(new Date());
+        storeMngChangeEntity.setModTime(new Date());
+        storeMngChangeEntity.setCreaterSn(user.getUsername());
+        storeMngChangeEntity.setModerSn(user.getUsername());
+        storeMngChangeEntity.setIsValid(0);
+        storeMngChangeDao.save(storeMngChangeEntity);
+    }
+
+    /**
+     * 查询该退款订单编号是否是推广渠道订单,是则修改渠道定时扫描状态
+     * @param orderInfo
+     */
+    private void queryStorePromRealUpdateIsScan(OrderEntity orderInfo){
+        Map map = new HashMap();
+        map.put("orderId", orderInfo.getId());
+        List<MkStorePromOrderRealEntity> list = mkStorePromOrderRealDao.queryPromRealListByMap(map);
+        if(list.size() > 0) {
+            for (MkStorePromOrderRealEntity mkStorePromOrderRealEntity : list) {
+                mkStorePromOrderRealEntity.setIsPromStatScan(Dict.isDistSellScan.item_0.getItem());
+                mkStorePromOrderRealDao.update(mkStorePromOrderRealEntity);
+            }
+        }
+    }
+
     /**
      * 处理用户退款申请
      *
@@ -528,7 +562,7 @@ public class OrderServiceImpl implements OrderService {
             }
             if (refundEntity.getRefundStatus() == 2) {
                 orderInfo.setOrderStatus(401);
-                UserEntity entity = userDao.queryObject(orderInfo.getUserId());
+//                UserEntity entity = userDao.queryObject(orderInfo.getUserId());
             } else {
                 orderInfo.setOrderStatus(201);
             }
@@ -623,21 +657,27 @@ public class OrderServiceImpl implements OrderService {
 //                    SfRouteServiceResponseEntity entity = SFUtil.routeService("254355029325", thirdMerchExpressEntity.getExpressAccount(),
 //                    thirdMerchExpressEntity.getExpressPwd(), SFPropertiesBuilder.instance().getUrl());//444072971585
                     if(entity.getHead().equalsIgnoreCase("OK")){
-                        if(entity.getBody() != null && entity.getBody().getRouteResponse() != null){
-                            RouteResponseEntity routeResponseEntity =  entity.getBody().getRouteResponse().get(0);
-                            if(routeResponseEntity != null){
-                                List<RouteEntity> entityList = routeResponseEntity.getRouteResponse();
-                                for (RouteEntity route : entityList) {
-                                    WuliuEntity wuliuEntity = new WuliuEntity();
-                                    wuliuEntity.setAcceptTime(route.getAccept_time());
-                                    wuliuEntity.setAcceptStation(route.getAccept_address() + route.getRemark());
-                                    wuliuEntityList.add(wuliuEntity);
-                                }
-                            }
-                        }else{
+                        if(entity.getBody() == null){
                             WuliuEntity wuliuEntity = new WuliuEntity();
                             wuliuEntity.setAcceptStation("暂无物流轨迹");
                             wuliuEntityList.add(wuliuEntity);
+                        }else{
+                            if(entity.getBody().getRouteResponse() == null){
+                                WuliuEntity wuliuEntity = new WuliuEntity();
+                                wuliuEntity.setAcceptStation("暂无物流轨迹");
+                                wuliuEntityList.add(wuliuEntity);
+                            }else{
+                                RouteResponseEntity routeResponseEntity =  entity.getBody().getRouteResponse().get(0);
+                                if(routeResponseEntity != null){
+                                    List<RouteEntity> entityList = routeResponseEntity.getRouteResponse();
+                                    for (RouteEntity route : entityList) {
+                                        WuliuEntity wuliuEntity = new WuliuEntity();
+                                        wuliuEntity.setAcceptTime(route.getAccept_time());
+                                        wuliuEntity.setAcceptStation(route.getAccept_address() + route.getRemark());
+                                        wuliuEntityList.add(wuliuEntity);
+                                    }
+                                }
+                            }
                         }
                     }else{
                         throw new RRException("查询顺丰订单异常,"+entity.getErrors());
@@ -769,7 +809,8 @@ public class OrderServiceImpl implements OrderService {
             }
             // 检查库存和更新库存
             for (OfflineCartEntity cartEntity : offlineCartEntityList) {
-                if (goodsDao.queryObject(cartEntity.getGoodsId()) == null) {
+                GoodsEntity goodsEntity = goodsDao.queryObject(cartEntity.getGoodsId());
+                if (goodsEntity == null) {
                     resultObj.put("errno", 400);
                     resultObj.put("errmsg", "订单提交失败:商品不存在");
                     return resultObj;
@@ -788,6 +829,11 @@ public class OrderServiceImpl implements OrderService {
                         productInfo.setStoreId(Long.valueOf(storeId));
                         productInfo.addSellVolume();
                         productStoreRelaDao.updateStockNum(productInfo);//修改普通商品库存
+
+                        if(goodsEntity != null) {
+                            goodsEntity.setGoodsNumber(goodsEntity.getGoodsNumber() - cartEntity.getNumber());
+                            goodsDao.update(goodsEntity);
+                        }
                     }
                 }
             }
@@ -1067,4 +1113,56 @@ public class OrderServiceImpl implements OrderService {
         }
         return 1;
     }
+
+    @Override
+    public List<OrderEntity> promOrderList(Map<String, Object> map) {
+        Integer[] statusList = {201};
+        List<OrderEntity> list = orderDao.promOrderList(map);
+        for (OrderEntity orderEntity: list) {
+            Map<String, Object> queryMap = new HashMap<>();
+            queryMap.put("goodsId", orderEntity.getGoodsId());
+            queryMap.put("statusList", statusList);
+            queryMap.put("orderId", orderEntity.getId());
+            Double promActualPrice = orderDao.getActualPriceByOutProm(queryMap);
+            if(promActualPrice == null){
+                promActualPrice = 0d;
+            }
+            orderEntity.setPromActualPrice(BigDecimal.valueOf(promActualPrice));
+        }
+        return list;
+    }
+
+    @Override
+    public int queryPromOrderTotal(Map<String, Object> map) {
+        return orderDao.queryPromOrderTotal(map);
+    }
+
+    @Override
+    public List<OrderEntity> promOrderListExport(Map<String, Object> map){
+        Integer[] statusList = {201};
+        List<OrderEntity> list = orderDao.promOrderListExport(map);
+        for (OrderEntity orderEntity: list) {
+            Map<String, Object> queryMap = new HashMap<>();
+            queryMap.put("goodsId", orderEntity.getGoodsId());
+            queryMap.put("orderId", orderEntity.getId());
+            queryMap.put("statusList", statusList);
+            Double promActualPrice = orderDao.getActualPriceByOutProm(queryMap);
+            if(promActualPrice == null){
+                promActualPrice = 0d;
+            }
+            orderEntity.setPromActualPrice(BigDecimal.valueOf(promActualPrice));
+        }
+        return list;
+    }
+
+    @Override
+    public List<OrderEntity> storeTopicOrderList(Map<String, Object> map) {
+        List<OrderEntity> list = orderDao.storeTopicOrderList(map);
+        return list;
+    }
+
+    @Override
+    public int queryStoreTopicOrderTotal(Map<String, Object> map) {
+        return orderDao.queryStoreTopicOrderTotal(map);
+    }
 }

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

@@ -8,6 +8,7 @@ import com.kmall.admin.entity.*;
 import com.kmall.admin.entity.mk.dist.MkDistSellAllocationEntity;
 import com.kmall.admin.service.ProductStoreRelaService;
 import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.api.util.StockUtil;
 import com.kmall.common.constant.Dict;
 import com.kmall.admin.fromcomm.entity.SysUserEntity;
 import com.kmall.common.utils.*;
@@ -56,12 +57,15 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
     private StoreMngChangeDao storeMngChangeDao;
     @Autowired
     private MkDistSellAllocationDao mkDistSellAllocationDao;
+    @Autowired
+    private StoreDao storeDao;
 
     @Override
     public ProductStoreRelaEntity queryObject(Integer id) {
         ProductStoreRelaEntity productStoreRelaEntity = productStoreRelaDao.queryObject(id);
 
         Map<String, Object> map = new HashMap<String, Object>();
+        map.put("storeId", productStoreRelaEntity.getStoreId());
         map.put("goodsId", productStoreRelaEntity.getGoodsId());
         List<GoodsAttributeEntity> attributeEntities = goodsAttributeDao.queryList(map);
         productStoreRelaEntity.setAttributeEntityList(attributeEntities);
@@ -92,6 +96,7 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
     @Override
     public int save(ProductStoreRelaEntity productStoreRela) {
         GoodsEntity goodsEntity = null;
+        String isStockShare = "";
         Map<String, Object> valideDate = MapBeanUtil.fromObject(productStoreRela);
         ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
         builder.put("storeId", "门店");
@@ -106,8 +111,10 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
             throw new RRException(r.get("msg").toString());
         } else {
             goodsEntity = goodsDao.queryObject(productStoreRela.getGoodsId());
-            if(Dict.orderBizType.item_00.getItem().equalsIgnoreCase(goodsEntity.getGoodsBizType())){
-                if(Dict.isStockShare.item_0.getItem().equalsIgnoreCase(goodsEntity.getIsStockShare())){
+            isStockShare = StockUtil.getIsStockShareByGoodsEntity(goodsEntity.getIsSupplierGoods(),
+                    goodsEntity.getIsStockShare(), goodsEntity.getIsStockShare());
+            if(goodsEntity.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
+                if(isStockShare.equalsIgnoreCase(Dict.isStockShare.item_0.getItem())){
                     builder.put("stockNum", "库存");
                 }
             }else{
@@ -137,12 +144,20 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
                 throw new RRException("该商品轮播图不能为空!请先在商品管理》所有商品中维护商品编号为【"+goodsEntity.getGoodsSn()+"】的商品详情轮播图信息,再来操作门店商品数据");
             }
         }
+        if (productStoreRela.getStoreId() != null) {
+            StoreEntity store = storeDao.queryObject(productStoreRela.getStoreId().intValue());
+            if (store != null) {
+                productStoreRela.setMerchSn(store.getMerchSn());
+            }
+        }
         if(!goodsEntity.getMerchSn().equalsIgnoreCase(productStoreRela.getMerchSn())) {
             throw new RRException("该商品所属商户不属于该门店所属商户!");
         }
+        //校验总库存
+        checkStockNum(productStoreRela, goodsEntity, isStockShare);
+
         String storeId = String.valueOf(productStoreRela.getStoreId());
         String goodsId = String.valueOf(goodsEntity.getId());
-
         Map<String, Object> map = Maps.newHashMap();
         map.put("goodsId", goodsId);
         map.put("storeId", storeId);
@@ -198,6 +213,7 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
             for (GoodsAttributeEntity item : attributeEntityList) {
                 if (item.getIsDelete() == 0) {
                     if (item.getId() == null && item.getAttributeId() != null && com.kmall.common.utils.StringUtils.isNotEmpty(item.getValue())) {
+                        item.setStoreId(Integer.parseInt(String.valueOf(productStoreRela.getStoreId())));
                         item.setGoodsId(goodsEntity.getId());
                         item.setMerchSn(goodsEntity.getMerchSn());
                         goodsAttributeDao.save(item);
@@ -227,6 +243,9 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
         storeMngChangeEntity.setIsValid(0);
         storeMngChangeDao.save(storeMngChangeEntity);
 
+        //更新门店商品是否有修改字段
+        updateLoadGoodsByStoreId(storeId, user);
+
         productStoreRela.setAttributeCategory(categoryDao.queryObject(productStoreRela.getCategoryId()).getParentId());
         productStoreRela.setProductId(product.getId());
         productStoreRela.setGoodsBizType(goodsEntity.getGoodsBizType());
@@ -246,6 +265,7 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
     @Override
     public int update(ProductStoreRelaEntity productStoreRela) {
         GoodsEntity goodsEntity = null;
+        String isStockShare = "";
         Map<String, Object> valideDate = MapBeanUtil.fromObject(productStoreRela);
         ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
         builder.put("storeId", "门店");
@@ -260,9 +280,17 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
         if (Integer.valueOf(r.get("code").toString()) != 0) {
             throw new RRException(r.get("msg").toString());
         } else {
-            goodsEntity = goodsDao.queryObject(productStoreRela.getGoodsId());
+            StoreEntity store = storeDao.queryObject(productStoreRela.getStoreId().intValue());
+            if (store != null) {
+                productStoreRela.setMerchSn(store.getMerchSn());
+            }else{
+                throw new RRException("门店信息不存在!");
+            }
+            goodsEntity = goodsDao.queryObjectByStoreId(productStoreRela.getGoodsId(), productStoreRela.getStoreId());
+            isStockShare = StockUtil.getIsStockShareByGoodsEntity(goodsEntity.getIsSupplierGoods(),
+                    goodsEntity.getIsStockShare(), goodsEntity.getIsStockShareBySuppler());
             if(Dict.orderBizType.item_00.getItem().equalsIgnoreCase(goodsEntity.getGoodsBizType())){
-                if(Dict.isStockShare.item_0.getItem().equalsIgnoreCase(goodsEntity.getIsStockShare())){
+                if(Dict.isStockShare.item_0.getItem().equalsIgnoreCase(isStockShare)){
                     builder.put("stockNum", "库存");
                 }
             }else{
@@ -283,10 +311,11 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
         if(!goodsEntity.getMerchSn().equalsIgnoreCase(productStoreRela.getMerchSn())) {
             throw new RRException("该商品所属商户不属于该门店所属商户!");
         }
+        //校验总库存
+        checkStockNum(productStoreRela, goodsEntity, isStockShare);
 
         String storeId = String.valueOf(productStoreRela.getStoreId());
         String goodsId = String.valueOf(goodsEntity.getId());
-
         Map<String, Object> map = Maps.newHashMap();
         map.put("goodsId", goodsId);
         map.put("storeId", storeId);
@@ -353,10 +382,12 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
                 if (item.getIsDelete() == 0) {
                     if (item.getId() != null) {
                         item.setMerchSn(goodsEntity.getMerchSn());
+                        item.setStoreId(Integer.parseInt(String.valueOf(productStoreRela.getStoreId())));
                         goodsAttributeDao.update(item);
                     } else if (item.getId() == null && item.getAttributeId() != null && com.kmall.common.utils.StringUtils.isNotEmpty(item.getValue())) {
                         item.setMerchSn(goodsEntity.getMerchSn());
                         item.setGoodsId(goodsEntity.getId());
+                        item.setStoreId(Integer.parseInt(String.valueOf(productStoreRela.getStoreId())));
                         goodsAttributeDao.save(item);
                     } else if (item.getId() == null && item.getAttributeId() != null && com.kmall.common.utils.StringUtils.isNullOrEmpty(item.getValue())) {
                         throw new RRException("商品属性【" + attributeDao.queryObject(item.getAttributeId()).getName() + "】值不能为空!");
@@ -393,8 +424,8 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
         storeMngChangeEntity.setCreaterSn(user.getUsername());
         storeMngChangeEntity.setModerSn(user.getUsername());
 
-        Integer orginalNum = productStoreRelaEntity.getStockNum();//原有库存
-        Integer changeNum = productStoreRela.getStockNum();//前端变化库存
+        Integer orginalNum = productStoreRelaEntity.getStockNum()==null?0:productStoreRelaEntity.getStockNum();//原有库存
+        Integer changeNum = productStoreRela.getStockNum()==null ? 0 : productStoreRela.getStockNum();//前端变化库存
         if(changeNum != orginalNum) {
             if (orginalNum > changeNum) {
                 storeMngChangeEntity.setStoreChangeNum(orginalNum - changeNum);//变化数
@@ -407,6 +438,8 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
             storeMngChangeEntity.setStoreValidNum(changeNum);//可用数
             storeMngChangeDao.save(storeMngChangeEntity);
         }
+        //更新门店商品是否有修改字段
+        updateLoadGoodsByStoreId(storeId, user);
 
         productStoreRela.setAttributeCategory(categoryDao.queryObject(productStoreRela.getCategoryId()).getParentId());
         productStoreRela.setModerSn(user.getUserId().toString());
@@ -415,6 +448,55 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
         return productStoreRelaDao.update(productStoreRela);
     }
 
+    /**
+     * 更新门店商品是否有修改字段
+     * @param storeId
+     * @param user
+     */
+    private void updateLoadGoodsByStoreId(String storeId, SysUserEntity user){
+        StoreEntity storeEntity = new StoreEntity();
+        storeEntity.setIsLoadGoods("1");
+        storeEntity.setModerSn(user.getUsername());
+        storeEntity.setModTime(new Date());
+        storeEntity.setId(Long.valueOf(storeId));
+        storeDao.update(storeEntity);
+    }
+
+    /**
+     * 校验总库存
+     * @param productStoreRela
+     * @param goodsEntity
+     * @param isStockShare
+     */
+    private void checkStockNum(ProductStoreRelaEntity productStoreRela, GoodsEntity goodsEntity, String isStockShare){
+        if(goodsEntity.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem()) && isStockShare.equalsIgnoreCase(Dict.isStockShare.item_1.getItem())){
+            Integer stockNum = productStoreRela.getStockNum();
+            Integer goodsNumber = goodsEntity.getGoodsNumber();//商品总库存
+            if (stockNum.intValue() != goodsNumber.intValue()) {
+                throw new RRException("当前门店商品分配库存不等于商品总库存!当前门店属于共享库存,需与总库存一致,该商品总库存【" + goodsNumber + "】");
+            } else {
+                productStoreRela.setStockNum(goodsEntity.getGoodsNumber());
+            }
+        }
+        if((!goodsEntity.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem()) && isStockShare.equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) ||
+                isStockShare.equalsIgnoreCase(Dict.isStockShare.item_0.getItem())){
+            Integer stockNum = productStoreRela.getStockNum();
+            Integer goodsNumber = goodsEntity.getGoodsNumber();//商品总库存
+            Integer storeTotalStockNum = 0;//商品分配库存
+            List<ProductStoreRelaEntity> proStoreList = productStoreRelaDao.queryByGoodsId(goodsEntity.getId());
+            for(ProductStoreRelaEntity relaEntity: proStoreList){
+                if(relaEntity.getStoreId().intValue() != productStoreRela.getStoreId().intValue()) {
+                    storeTotalStockNum = storeTotalStockNum + relaEntity.getStockNum();
+                }
+            }
+            Integer totalStockNum = storeTotalStockNum + stockNum;
+            if(goodsNumber < totalStockNum){
+                throw new RRException("当前门店商品分配库存已超过商品总库存!当前门店商品分配库存【" + stockNum + "】,已在各门店分配库存总额【"+
+                        storeTotalStockNum + "】,该商品总库存【" + goodsNumber + "】");
+            }
+        }
+    }
+
     @Override
     public int delete(Integer id) {
         return productStoreRelaDao.delete(id);
@@ -424,4 +506,26 @@ public class ProductStoreRelaServiceImpl implements ProductStoreRelaService {
     public int deleteBatch(Integer[] ids) {
         return productStoreRelaDao.deleteBatch(ids);
     }
+
+
+    @Override
+    public List<ProductStoreRelaEntity> queryGoodsRealListByDiscountTid(Map<String, Object> map) {
+        return productStoreRelaDao.queryGoodsRealListByDiscountTid(map);
+    }
+
+    @Override
+    public int queryGoodsRealListByDiscountTidTotal(Map<String, Object> map) {
+        return productStoreRelaDao.queryGoodsRealListByDiscountTidTotal(map);
+    }
+
+    @Override
+    public List<ProductStoreRelaEntity> queryGoodsRealListByTopicId(Map<String, Object> map) {
+        return productStoreRelaDao.queryGoodsRealListByTopicId(map);
+    }
+
+    @Override
+    public int queryGoodsRealListByTopicIdTotal(Map<String, Object> map) {
+        return productStoreRelaDao.queryGoodsRealListByTopicIdTotal(map);
+    }
+
 }

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

@@ -37,6 +37,16 @@ public class UserCouponServiceImpl implements UserCouponService {
     }
 
     @Override
+    public List<UserCouponEntity> getUserCouponByDiscIdList(Map<String, Object> map) {
+        return userCouponDao.getUserCouponByDiscIdList(map);
+    }
+
+    @Override
+    public int queryUserCouponByDiscIdTotal(Map<String, Object> map) {
+        return userCouponDao.queryUserCouponByDiscIdTotal(map);
+    }
+
+    @Override
     public int save(UserCouponEntity userCoupon) {
         return userCouponDao.save(userCoupon);
     }

+ 9 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkCenterMenuServiceImpl.java

@@ -34,6 +34,15 @@ public class MkCenterMenuServiceImpl implements MkCenterMenuService {
     }
 
     @Override
+    public List<MkCenterMenuEntity> queryCenterByList(Map<String, Object> map) {
+        return mkCenterMenuDao.queryCenterByList(map);
+    }
+
+    @Override
+    public List<MkCenterMenuEntity> queryListByStore(Map<String, Object> map) {
+        return mkCenterMenuDao.queryListByStore(map);
+    }
+    @Override
     public int queryTotal(Map<String, Object> map) {
         return mkCenterMenuDao.queryTotal(map);
     }

+ 82 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkCenterMenuStoreRealServiceImpl.java

@@ -0,0 +1,82 @@
+package com.kmall.admin.service.impl.mk;
+
+import com.kmall.admin.dao.mk.MkCenterMenuStoreRealDao;
+import com.kmall.admin.entity.mk.MkCenterMenuEntity;
+import com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity;
+import com.kmall.admin.service.mk.MkCenterMenuStoreRealService;
+import com.kmall.common.utils.RRException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 营销中心菜单门店关联表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-28 10:14:06
+ */
+@Service("mkCenterMenuStoreRealService")
+public class MkCenterMenuStoreRealServiceImpl implements MkCenterMenuStoreRealService {
+    @Autowired
+    private MkCenterMenuStoreRealDao mkCenterMenuStoreRealDao;
+
+    @Override
+    public MkCenterMenuStoreRealEntity queryObject(Integer id) {
+        MkCenterMenuStoreRealEntity entity = mkCenterMenuStoreRealDao.queryObject(id);
+        List<Integer> centerIdList = new ArrayList<>();
+        List<MkCenterMenuStoreRealEntity> storeRealEntityList = mkCenterMenuStoreRealDao.queryMenuByThirdMerchSn(entity.getThirdMerchSn());
+        for(MkCenterMenuStoreRealEntity realEntity : storeRealEntityList){
+            centerIdList.add(realEntity.getCenterMenuId());
+        }
+        entity.setCenterMenuIdList(centerIdList);
+        return entity;
+    }
+
+    @Override
+    public List<MkCenterMenuStoreRealEntity> queryList(Map<String, Object> map) {
+        return mkCenterMenuStoreRealDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkCenterMenuStoreRealDao.queryTotal(map);
+    }
+
+    @Override
+    public int saveOrUpdate(MkCenterMenuStoreRealEntity mkCenterMenuStoreReal) {
+        List<Integer> idList = mkCenterMenuStoreReal.getCenterMenuIdList();
+        if (idList == null || idList.size() <= 0) {
+            throw new RRException("营销菜单不能为空!");
+        }
+        mkCenterMenuStoreRealDao.deleteByStoreId(mkCenterMenuStoreReal.getStoreId());
+
+        List<Integer> centerIdList = new ArrayList<>();
+        for (Integer centerId: idList){
+            if(centerId != 0){
+                centerIdList.add(centerId);
+            }
+        }
+        mkCenterMenuStoreReal.setCenterMenuIdList(centerIdList);
+        return mkCenterMenuStoreRealDao.save(mkCenterMenuStoreReal);
+    }
+
+    @Override
+    public int update(MkCenterMenuStoreRealEntity mkCenterMenuStoreReal) {
+        return mkCenterMenuStoreRealDao.update(mkCenterMenuStoreReal);
+    }
+
+    @Override
+    public int delete(Integer id) {
+        return mkCenterMenuStoreRealDao.delete(id);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]ids) {
+        return mkCenterMenuStoreRealDao.deleteBatch(ids);
+    }
+}

+ 12 - 7
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/dist/MkDistHierServiceImpl.java

@@ -222,7 +222,12 @@ public class MkDistHierServiceImpl implements MkDistHierService {
 
     @Override
     public int update(MkDistHierEntity mkDistHier) {
-        MkDistEntity pdistEntity = mkDistDao.queryObject(mkDistHier.getPdistId());//父级分销商
+        MkDistHierEntity hierEntityById = mkDistHierDao.queryObject(mkDistHier.getDistHierId());//父级分销商
+        if (hierEntityById == null) {
+            throw new RRException("分销层级信息不存在");
+        }
+
+        MkDistEntity pdistEntity = mkDistDao.queryObject(hierEntityById.getPdistId());//父级分销商
         MkDistEntity distEntity = mkDistDao.queryObject(mkDistHier.getDistId());//子级分销商
         MkDistChnlEntity distChnlEntity = mkDistChnlDao.queryObject(mkDistHier.getDistChnlId());
         if (distChnlEntity == null) {
@@ -234,7 +239,7 @@ public class MkDistHierServiceImpl implements MkDistHierService {
 
         //查询当前上下级分销商是否已存在层级关系
         Map<String, Object> pdistMap = new HashMap<>();
-        pdistMap.put("pdistId", mkDistHier.getPdistId());
+        pdistMap.put("pdistId", hierEntityById.getPdistId());
         pdistMap.put("distId", mkDistHier.getDistId());
         MkDistHierEntity mkDistHierEntity = queryObjectByDistMap(pdistMap);
         if (mkDistHierEntity != null && !mkDistHierEntity.getDistHierId().equals(mkDistHier.getDistHierId())) {
@@ -243,7 +248,7 @@ public class MkDistHierServiceImpl implements MkDistHierService {
         //交叉查询当前上下级分销商,判断是否已已存在上下层级关系
         Map<String, Object> isChildMap = new HashMap<>();
         isChildMap.put("pdistId", mkDistHier.getDistId());
-        isChildMap.put("distId", mkDistHier.getPdistId());
+        isChildMap.put("distId", hierEntityById.getPdistId());
         MkDistHierEntity distHierEntity = queryObjectByDistMap(isChildMap);
         if (distHierEntity != null && !distHierEntity.getDistHierId().equals(mkDistHier.getDistHierId())) {
             throw new RRException("上级分销商【"+ pdistName +"】,下级分销商【"+ distName +"】已存在上下层级关系,不能再次交叉添加");
@@ -254,7 +259,7 @@ public class MkDistHierServiceImpl implements MkDistHierService {
             if(hierByChnlIdAndOneLvl == null){
                 throw new RRException("分销渠道【"+ chnlName +"】的一级分销商不存在,不能跨一级以上创建,请先创建该分销渠道的一级分销商,层级级别选择1");
             }
-            if(mkDistHier.getPdistId().equals(mkDistHier.getDistId())){
+            if(hierEntityById.getPdistId().equals(mkDistHier.getDistId())){
                 throw new RRException(mkDistHier.getHierLvl() + "级层级级别的上级分销商【"+ pdistName +"】与子级分销商【"+ distName +"】不能选一致的");
             }
         }else{
@@ -263,7 +268,7 @@ public class MkDistHierServiceImpl implements MkDistHierService {
             }
         }
         //判断分销渠道与上级分销商的创建关系
-        MkDistHierEntity oneLvlEntity = getOneLvlDistByCurrentDistId(mkDistHier.getDistId(), mkDistHier.getPdistId());
+        MkDistHierEntity oneLvlEntity = getOneLvlDistByCurrentDistId(mkDistHier.getDistId(), hierEntityById.getPdistId());
         if(oneLvlEntity != null){
             Integer distChnlId = oneLvlEntity.getDistChnlId();
             if(!mkDistHier.getDistChnlId().equals(distChnlId)){
@@ -280,7 +285,7 @@ public class MkDistHierServiceImpl implements MkDistHierService {
 
         //判断该上级分销商的层级是否已存在
         Map hierMap = new HashMap();
-        hierMap.put("pdistId",mkDistHier.getPdistId());
+        hierMap.put("pdistId",hierEntityById.getPdistId());
         hierMap.put("distId",mkDistHier.getDistId());
         hierMap.put("distChnlId",mkDistHier.getDistChnlId());
         hierMap.put("hierLvl", mkDistHier.getHierLvl());
@@ -311,7 +316,7 @@ public class MkDistHierServiceImpl implements MkDistHierService {
         String value = MapUtils.getString("value", configMap);
         if(StringUtils.isNotEmpty(value)) {
             //查询上级分销商已存在的层级信息
-            MkDistHierEntity distByPdistIdEntity = mkDistHierDao.selectDistHierByDistId(mkDistHier.getPdistId());
+            MkDistHierEntity distByPdistIdEntity = mkDistHierDao.selectDistHierByDistId(hierEntityById.getPdistId());
             if(distByPdistIdEntity != null && !distByPdistIdEntity.getDistHierId().equals(mkDistHier.getDistHierId())){
                 Integer distHierLvl = Integer.parseInt(distByPdistIdEntity.getHierLvl());
                 if(distHierLvl == Integer.parseInt(value)){

+ 9 - 4
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/dist/MkDistServiceImpl.java

@@ -46,8 +46,13 @@ public class MkDistServiceImpl implements MkDistService {
 
 
     @Override
-    public MkDistEntity queryDistByGoodsId(Map<String, Object> map){
-        return mkDistDao.queryDistByGoodsId(map);
+    public MkDistEntity queryDistByGoodsId(Integer goodsId,Integer storeId){
+        return mkDistDao.queryDistByGoodsId(goodsId,storeId);
+    }
+
+    @Override
+    public MkDistEntity queryDistByStoreId(Map<String, Object> map){
+        return mkDistDao.queryDistByStoreId(Integer.parseInt((String)map.get("storeId")));
     }
     @Override
     public int queryTotal(Map<String, Object> map) {
@@ -62,7 +67,7 @@ public class MkDistServiceImpl implements MkDistService {
         }
         MkDistEntity distEntity = mkDistDao.queryDistByStoreId(mkDist.getStoreId());
         if (distEntity != null) {
-            throw new RRException("该门店已与其他分销商已创建关系,请重新选择门店");
+            throw new RRException("该门店已已创建分销商关系,请重新选择门店");
         }
 
         mkDist.setCreaterSn(ShiroUtils.getUserEntity().getUsername());
@@ -78,7 +83,7 @@ public class MkDistServiceImpl implements MkDistService {
         }
         MkDistEntity distEntity = mkDistDao.queryDistByStoreId(mkDist.getStoreId());
         if (distEntity != null && !distEntity.getDistId().equals(mkDist.getDistId())) {
-            throw new RRException("该门店已与其他分销商已创建关系,请重新选择门店");
+            throw new RRException("该门店已已创建分销商关系,请重新选择门店");
         }
         mkDist.setModerSn(ShiroUtils.getUserEntity().getUsername());
         mkDist.setModTime(new Date());

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