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

新增渠道追踪、优惠券前后端代码,渠道追踪、优惠券定时任务代码,以及小程序前后端代码

hyq 5 роки тому
батько
коміт
46f9129018
100 змінених файлів з 8117 додано та 253 видалено
  1. 33 15
      kmall-admin/src/main/java/com/kmall/admin/controller/CouponController.java
  2. 29 13
      kmall-admin/src/main/java/com/kmall/admin/controller/CouponGoodsController.java
  3. 3 3
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderController.java
  4. 28 0
      kmall-admin/src/main/java/com/kmall/admin/controller/OrderGoodsController.java
  5. 50 0
      kmall-admin/src/main/java/com/kmall/admin/controller/ProductStoreRelaController.java
  6. 13 0
      kmall-admin/src/main/java/com/kmall/admin/controller/UserCouponController.java
  7. 52 6
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkCenterMenuController.java
  8. 115 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkCenterMenuStoreRealController.java
  9. 6 2
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistController.java
  10. 54 52
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistHierController.java
  11. 20 2
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStorePromController.java
  12. 72 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStorePromStatController.java
  13. 318 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketDiscountController.java
  14. 113 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketDiscountGoodsController.java
  15. 209 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTicketGoodsTempController.java
  16. 128 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStoreTopicStatController.java
  17. 1 1
      kmall-admin/src/main/java/com/kmall/admin/dao/AdDao.java
  18. 5 1
      kmall-admin/src/main/java/com/kmall/admin/dao/CouponDao.java
  19. 5 1
      kmall-admin/src/main/java/com/kmall/admin/dao/CouponGoodsDao.java
  20. 17 0
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java
  21. 5 1
      kmall-admin/src/main/java/com/kmall/admin/dao/OrderGoodsDao.java
  22. 16 0
      kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java
  23. 1 1
      kmall-admin/src/main/java/com/kmall/admin/dao/SupplierDao.java
  24. 7 0
      kmall-admin/src/main/java/com/kmall/admin/dao/UserCouponDao.java
  25. 4 1
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkCenterMenuDao.java
  26. 18 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkCenterMenuStoreRealDao.java
  27. 4 1
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/dist/MkDistDao.java
  28. 20 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStorePromOrderRealDao.java
  29. 16 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketDiscountDao.java
  30. 20 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketDiscountGoodsDao.java
  31. 38 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTicketGoodsTempDao.java
  32. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTopicStatDao.java
  33. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/store/MkStoreTopicVisitorsDao.java
  34. 68 0
      kmall-admin/src/main/java/com/kmall/admin/dto/CheckGoodsDto.java
  35. 62 0
      kmall-admin/src/main/java/com/kmall/admin/dto/MkCenterMenuTreeDto.java
  36. 12 0
      kmall-admin/src/main/java/com/kmall/admin/entity/AdEntity.java
  37. 70 0
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderEntity.java
  38. 20 0
      kmall-admin/src/main/java/com/kmall/admin/entity/OrderGoodsEntity.java
  39. 40 0
      kmall-admin/src/main/java/com/kmall/admin/entity/ProductStoreRelaEntity.java
  40. 50 0
      kmall-admin/src/main/java/com/kmall/admin/entity/UserCouponEntity.java
  41. 9 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkCenterMenuEntity.java
  42. 217 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkCenterMenuStoreRealEntity.java
  43. 10 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromEntity.java
  44. 238 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromOrderRealEntity.java
  45. 57 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStorePromStatEntity.java
  46. 782 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketDiscountEntity.java
  47. 219 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketDiscountGoodsEntity.java
  48. 291 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTicketGoodsTempEntity.java
  49. 547 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTopicStatEntity.java
  50. 188 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/store/MkStoreTopicVisitorsEntity.java
  51. 33 15
      kmall-admin/src/main/java/com/kmall/admin/service/CouponGoodsService.java
  52. 37 17
      kmall-admin/src/main/java/com/kmall/admin/service/CouponService.java
  53. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderGoodsService.java
  54. 11 0
      kmall-admin/src/main/java/com/kmall/admin/service/OrderService.java
  55. 18 2
      kmall-admin/src/main/java/com/kmall/admin/service/ProductStoreRelaService.java
  56. 4 0
      kmall-admin/src/main/java/com/kmall/admin/service/UserCouponService.java
  57. 5 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/CouponGoodsServiceImpl.java
  58. 5 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/CouponServiceImpl.java
  59. 1 1
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsServiceImpl.java
  60. 8 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderGoodsServiceImpl.java
  61. 98 12
      kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java
  62. 12 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/ProductStoreRelaServiceImpl.java
  63. 10 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/UserCouponServiceImpl.java
  64. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkCenterMenuServiceImpl.java
  65. 82 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkCenterMenuStoreRealServiceImpl.java
  66. 12 7
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/dist/MkDistHierServiceImpl.java
  67. 9 4
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/dist/MkDistServiceImpl.java
  68. 59 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTicketDiscountGoodsServiceImpl.java
  69. 304 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTicketDiscountServiceImpl.java
  70. 241 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTicketGoodsTempServiceImpl.java
  71. 58 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTopicStatServiceImpl.java
  72. 58 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTopicVisitorsServiceImpl.java
  73. 9 1
      kmall-admin/src/main/java/com/kmall/admin/service/mk/MkCenterMenuService.java
  74. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/MkCenterMenuStoreRealService.java
  75. 3 1
      kmall-admin/src/main/java/com/kmall/admin/service/mk/dist/MkDistService.java
  76. 0 1
      kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStorePromStatService.java
  77. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTicketDiscountGoodsService.java
  78. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTicketDiscountService.java
  79. 90 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTicketGoodsTempService.java
  80. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTopicStatService.java
  81. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTopicVisitorsService.java
  82. 21 0
      kmall-admin/src/main/resources/mybatis/mapper/AdDao.xml
  83. 390 0
      kmall-admin/src/main/resources/mybatis/mapper/OrderDao.xml
  84. 19 0
      kmall-admin/src/main/resources/mybatis/mapper/OrderGoodsDao.xml
  85. 67 1
      kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml
  86. 54 1
      kmall-admin/src/main/resources/mybatis/mapper/UserCouponDao.xml
  87. 39 25
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkCenterMenuDao.xml
  88. 154 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkCenterMenuStoreRealDao.xml
  89. 11 10
      kmall-admin/src/main/resources/mybatis/mapper/mk/dist/MkDistDao.xml
  90. 6 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromChnlDao.xml
  91. 57 6
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromDao.xml
  92. 181 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromOrderRealDao.xml
  93. 63 35
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromStatDao.xml
  94. 339 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTicketDiscountDao.xml
  95. 153 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTicketDiscountGoodsDao.xml
  96. 274 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTicketGoodsTempDao.xml
  97. 255 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTopicStatDao.xml
  98. 123 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTopicVisitorsDao.xml
  99. 42 11
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mkcentermenu.html
  100. 5 1
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mkdisthier.html

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

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

@@ -434,7 +434,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 +468,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 +517,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());

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

+ 50 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/ProductStoreRelaController.java

@@ -158,4 +158,54 @@ 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");
+        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);
+        }
+        //查询列表数据
+        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);
+    }
 }

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

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

@@ -0,0 +1,115 @@
+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) {
+        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);
+    }
+}

+ 6 - 2
kmall-admin/src/main/java/com/kmall/admin/controller/mk/dist/MkDistController.java

@@ -157,8 +157,12 @@ 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")

+ 54 - 52
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;
@@ -117,7 +115,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", "分销商层级名称");
@@ -205,9 +203,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 +235,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);

+ 20 - 2
kmall-admin/src/main/java/com/kmall/admin/controller/mk/store/MkStorePromController.java

@@ -11,6 +11,7 @@ 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.service.mk.store.MkStorePromService;
+import com.kmall.admin.utils.ParamUtils;
 import com.kmall.common.constant.Dict;
 import com.kmall.common.fileserver.util.FileManager;
 import com.kmall.common.utils.*;
@@ -54,6 +55,16 @@ public class MkStorePromController {
     @RequiresPermissions("mkstoreprom:list")
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
+        ParamUtils.setQueryPowerByRoleType(params, "storeId", "merchSn", "thirdPartyMerchCode");
+        String promName = (String) params.get("promName");
+        if(org.apache.commons.lang3.StringUtils.isNotEmpty(promName)){
+            try{
+                promName = new String(promName.getBytes("iso-8859-1"),"utf-8");
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+            params.put("promName", promName);
+        }
         //查询列表数据
         Query query = new Query(params);
 
@@ -65,7 +76,7 @@ public class MkStorePromController {
 
             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 actMoney = StringUtils.isNotEmpty(String.valueOf(mkStorePromEntity.getActMoney())) ? String.valueOf(mkStorePromEntity.getActMoney()) : "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;
@@ -81,7 +92,7 @@ public class MkStorePromController {
                 promPicUrl = mkStorePromEntity.getItemPicUrl();
             }
             if(mkStorePromEntity.getPromType().equalsIgnoreCase(Dict.promType.item_10.getItem())){
-                promStat = "浏览量:" + browseNum + "\n支付单数:" + payOrderNum + "\n应收金额:" + receivMoney;
+                promStat = "浏览量:" + browseNum + "\n支付单数:" + payOrderNum + "\n实收金额:" + actMoney;
                 promInfo = "<span style=\"font-weight: bolder\">" + mkStorePromEntity.getPromName() + "</span>\n"
                         + mkStorePromEntity.getGoodsName() + "\n推广有效期:"
                         + inValidDate;
@@ -142,6 +153,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 +192,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();
@@ -220,6 +237,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();
+    }
+
 }

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

@@ -0,0 +1,318 @@
+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");
+        //查询列表数据
+        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);
+    }
+}

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

@@ -0,0 +1,209 @@
+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();
+    }
+//    /**
+//     * 查看已提交选中的商品
+//     */
+//    @RequestMapping("/queryGoodsTempByGuidAndSubmit")
+//    @ResponseBody
+//    public R queryGoodsTempByGuidAndSubmit(@RequestParam Map<String, Object> params) {
+//        MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods = new MkStoreTicketGoodsTempEntity();
+//        String guid = (String)params.get("guid");
+//        String storeId = (String)params.get("storeId");
+//        String applyType = (String)params.get("applyType");
+//        mkStoreTicketDiscountGoods.setStoreId(Integer.parseInt(storeId));
+//        mkStoreTicketDiscountGoods.setIsSubmit(Dict.isSubmit.item_0.getItem());
+//        mkStoreTicketDiscountGoods.setGuid(guid);
+//        mkStoreTicketDiscountGoods.setApplyType(applyType);
+//        List<MkStoreTicketGoodsTempEntity> tempEntityList = mkStoreTicketGoodsTempService.queryGoodsTempByGuidAndIsSubmit(mkStoreTicketDiscountGoods);
+//
+//        return R.ok().put("list", tempEntityList);
+//    }
+
+    @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.resetIsValidByTemp(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);
+    }
+}

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

@@ -0,0 +1,128 @@
+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.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 - 1
kmall-admin/src/main/java/com/kmall/admin/dao/AdDao.java

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

+ 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> {
 
 }
+*/

+ 17 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/OrderDao.java

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

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

@@ -31,4 +31,20 @@ 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);
 }

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

+ 7 - 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,8 @@ public interface UserCouponDao extends BaseDao<UserCouponEntity> {
     UserCouponEntity queryByOrderId(@Param("orderId") Long orderId);
 
     Integer cancelOrder(UserCouponEntity couponVo);
+
+    List<UserCouponEntity> getUserCouponByDiscIdList(Map<String, Object> map);
+
+    int queryUserCouponByDiscIdTotal(Map<String, Object> map);
 }

+ 4 - 1
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,5 @@ 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);
 }

+ 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> queryMenuByStoreId(Integer storeId);
+}

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

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

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

@@ -0,0 +1,38 @@
+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("storeRealId") Integer storeRealId, @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);
+}

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

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

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

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

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

@@ -170,6 +170,76 @@ 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;
+
+    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;
 	}

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

@@ -109,6 +109,46 @@ public class ProductStoreRelaEntity implements Serializable {
 
     private Integer goodsSellVolume;
 
+    private Integer isCheck;
+
+    private String applyType;
+
+    private Integer discGoodTempId;
+
+    private String guid;
+
+    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() {

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

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

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

@@ -0,0 +1,291 @@
+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_ticket_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;
+
+    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;
+    }
+}

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

@@ -0,0 +1,547 @@
+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;//用户名称
+
+    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);
+
 }

+ 18 - 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,20 @@ 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);
 }

+ 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("发放成功");
     }
 }
+*/

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

@@ -746,7 +746,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());

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

+ 98 - 12
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,8 @@ public class OrderServiceImpl implements OrderService {
     private StoreMngChangeDao storeMngChangeDao;
     @Autowired
     private ThirdMerchExpressDao thirdMerchExpressDao;
+    @Autowired
+    private MkStorePromOrderRealDao mkStorePromOrderRealDao;
 
     @Override
     public OrderEntity queryObject(Long id) {
@@ -304,6 +309,8 @@ public class OrderServiceImpl implements OrderService {
         }
         // 更新库存
         updateStock(order, "管理后台订单退款");
+
+        queryStorePromRealUpdateIsScan(order);
     }
 
     /**
@@ -348,6 +355,8 @@ public class OrderServiceImpl implements OrderService {
         }
         // 更新库存
         updateStock(order, "管理后台平安退款订单");
+
+        queryStorePromRealUpdateIsScan(order);
     }
 
     /**
@@ -405,6 +414,8 @@ public class OrderServiceImpl implements OrderService {
         }
         // 更新库存
         updateStock(order, "管理后台微信国际退款订单");
+
+        queryStorePromRealUpdateIsScan(order);
     }
 
     private void updateStock(OrderEntity order, String changeReason){
@@ -511,6 +522,23 @@ public class OrderServiceImpl implements OrderService {
             }
         }
     }
+
+    /**
+     * 查询该退款订单编号是否是推广渠道订单,是则修改渠道定时扫描状态
+     * @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);
+            }
+        }
+    }
+
     /**
      * 处理用户退款申请
      *
@@ -623,21 +651,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());
@@ -1067,4 +1101,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);
+    }
 }

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

@@ -424,4 +424,16 @@ 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);
+    }
+
 }

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

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

@@ -34,6 +34,11 @@ public class MkCenterMenuServiceImpl implements MkCenterMenuService {
     }
 
     @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.queryMenuByStoreId(entity.getStoreId());
+        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());

+ 59 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTicketDiscountGoodsServiceImpl.java

@@ -0,0 +1,59 @@
+package com.kmall.admin.service.impl.mk.store;
+
+import com.kmall.admin.dao.mk.store.MkStoreTicketDiscountGoodsDao;
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity;
+import com.kmall.admin.service.mk.store.MkStoreTicketDiscountGoodsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+@Service("mkStoreTicketDiscountGoodsService")
+public class MkStoreTicketDiscountGoodsServiceImpl implements MkStoreTicketDiscountGoodsService {
+    @Autowired
+    private MkStoreTicketDiscountGoodsDao mkStoreTicketDiscountGoodsDao;
+
+    @Override
+    public MkStoreTicketDiscountGoodsEntity queryObject(Integer discGoodId) {
+        return mkStoreTicketDiscountGoodsDao.queryObject(discGoodId);
+    }
+
+    @Override
+    public List<MkStoreTicketDiscountGoodsEntity> queryList(Map<String, Object> map) {
+        return mkStoreTicketDiscountGoodsDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkStoreTicketDiscountGoodsDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(MkStoreTicketDiscountGoodsEntity mkStoreTicketDiscountGoods) {
+        return mkStoreTicketDiscountGoodsDao.save(mkStoreTicketDiscountGoods);
+    }
+
+    @Override
+    public int update(MkStoreTicketDiscountGoodsEntity mkStoreTicketDiscountGoods) {
+        return mkStoreTicketDiscountGoodsDao.update(mkStoreTicketDiscountGoods);
+    }
+
+    @Override
+    public int delete(Integer discGoodId) {
+        return mkStoreTicketDiscountGoodsDao.delete(discGoodId);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]discGoodIds) {
+        return mkStoreTicketDiscountGoodsDao.deleteBatch(discGoodIds);
+    }
+}

+ 304 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTicketDiscountServiceImpl.java

@@ -0,0 +1,304 @@
+package com.kmall.admin.service.impl.mk.store;
+
+import com.kmall.admin.dao.AdDao;
+import com.kmall.admin.dao.StoreDao;
+import com.kmall.admin.dao.mk.store.MkStoreTicketDiscountDao;
+import com.kmall.admin.dao.mk.store.MkStoreTicketDiscountGoodsDao;
+import com.kmall.admin.dao.mk.store.MkStoreTicketGoodsTempDao;
+import com.kmall.admin.dao.mk.store.StoreTopicDao;
+import com.kmall.admin.entity.AdEntity;
+import com.kmall.admin.entity.StoreEntity;
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity;
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity;
+import com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity;
+import com.kmall.admin.entity.mk.store.StoreTopicEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
+import com.kmall.admin.service.mk.store.MkStoreTicketDiscountService;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.api.service.wxGlobal.ApiWxGlobalPayService;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.utils.RRException;
+import com.kmall.common.utils.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 门店优惠券活动Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+@Service("mkStoreTicketDiscountService")
+public class MkStoreTicketDiscountServiceImpl implements MkStoreTicketDiscountService {
+    @Autowired
+    private MkStoreTicketDiscountDao mkStoreTicketDiscountDao;
+    @Autowired
+    private StoreTopicDao storeTopicDao;
+    @Autowired
+    private MkStoreTicketGoodsTempDao mkStoreTicketGoodsTempDao;
+    @Autowired
+    private MkStoreTicketDiscountGoodsDao mkStoreTicketDiscountGoodsDao;
+    @Autowired
+    private StoreDao storeDao;
+    @Autowired
+    private AdDao adDao;
+
+    @Override
+    public MkStoreTicketDiscountEntity queryObject(Integer tickDiscId) {
+        return mkStoreTicketDiscountDao.queryObject(tickDiscId);
+    }
+
+    @Override
+    public List<MkStoreTicketDiscountEntity> queryList(Map<String, Object> map) {
+        return mkStoreTicketDiscountDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkStoreTicketDiscountDao.queryTotal(map);
+    }
+
+    @Transactional
+    @Override
+    public int save(MkStoreTicketDiscountEntity mkStoreTicketDiscount) {
+        if(!StringUtils.isNotEmpty(String.valueOf(mkStoreTicketDiscount.getLimitNum()))){
+            mkStoreTicketDiscount.setLimitNum(1);
+        }
+        StoreEntity storeEntity = storeDao.queryObject(mkStoreTicketDiscount.getStoreId());
+        if(storeEntity == null){
+            throw new RRException("门店信息不存在");
+        }else{
+            mkStoreTicketDiscount.setStoreName(storeEntity.getStoreName());
+        }
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        List<MkStoreTicketGoodsTempEntity> tempEntityList = new ArrayList<>();
+        if(!mkStoreTicketDiscount.getApplyType().equalsIgnoreCase(Dict.applyType.item_00.getItem())){
+            //根据唯一id、门店id、试用商品类型、是否有效查询临时表是否有数据,没有数据则提示“指定商品参与商品数据为空,请选择”“指定商品不参与商品数据为空,请选择”
+            MkStoreTicketGoodsTempEntity entity = new MkStoreTicketGoodsTempEntity();
+            entity.setStoreId(mkStoreTicketDiscount.getStoreId());
+//            entity.setApplyType(mkStoreTicketDiscount.getApplyType());
+            entity.setGuid(mkStoreTicketDiscount.getGuid());
+            entity.setIsValid(Dict.isValid.item_0.getItem());
+            entity.setIsButtonCannel(Dict.isValid.item_0.getItem());
+            tempEntityList = mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(entity);
+            if(tempEntityList.size() == 0){
+                if(Dict.applyType.item_01.getItem().equalsIgnoreCase(mkStoreTicketDiscount.getApplyType())) {
+                    throw new RRException("指定商品参与商品数据为空,请选择");
+                }
+                if(Dict.applyType.item_02.getItem().equalsIgnoreCase(mkStoreTicketDiscount.getApplyType())) {
+                    throw new RRException("指定商品不参与商品数据为空,请选择");
+                }
+            }
+        }
+        StoreTopicEntity storeTopicEntity = saveStoreTopic(mkStoreTicketDiscount, user);
+        if(storeTopicEntity != null) {
+            mkStoreTicketDiscount.setCreateTime(new Date());
+            mkStoreTicketDiscount.setCreaterSn(user.getUsername());
+            mkStoreTicketDiscount.setModTime(new Date());
+            mkStoreTicketDiscount.setModerSn(user.getUsername());
+            mkStoreTicketDiscount.setStoreTopicId(storeTopicEntity.getId());
+            mkStoreTicketDiscount.setIsPast("0");//未过期
+            mkStoreTicketDiscountDao.save(mkStoreTicketDiscount);
+            if(tempEntityList.size() > 0){
+                for(MkStoreTicketGoodsTempEntity tempEntity: tempEntityList) {
+                    MkStoreTicketDiscountGoodsEntity discountGoodsEntity = new MkStoreTicketDiscountGoodsEntity();
+                    discountGoodsEntity.setTickDiscId(mkStoreTicketDiscount.getTickDiscId());
+                    discountGoodsEntity.setStoreRelaId(tempEntity.getStoreRelaId());
+                    discountGoodsEntity.setApplyType(mkStoreTicketDiscount.getApplyType());
+                    discountGoodsEntity.setIsValid(Dict.isValid.item_0.getItem());
+                    discountGoodsEntity.setCreaterSn(user.getUsername());
+                    discountGoodsEntity.setCreateTime(new Date());
+                    discountGoodsEntity.setModerSn(user.getUsername());
+                    discountGoodsEntity.setModTime(new Date());
+                    mkStoreTicketDiscountGoodsDao.save(discountGoodsEntity);
+
+                    MkStoreTicketGoodsTempEntity entity = new MkStoreTicketGoodsTempEntity();
+                    entity.setDiscGoodTempId(tempEntity.getDiscGoodTempId());
+                    entity.setApplyType(mkStoreTicketDiscount.getApplyType());
+                    mkStoreTicketGoodsTempDao.update(entity);
+                }
+            }
+//            是否展示在小程序门店首页广告栏,为1则新增广告信息广告位
+            if(mkStoreTicketDiscount.getIsStoreShow().equalsIgnoreCase("1")) {
+                AdEntity adEntity = new AdEntity();
+                adEntity.setStoreId(mkStoreTicketDiscount.getStoreId());
+                adEntity.setContent(mkStoreTicketDiscount.getName());
+                adEntity.setMerchSn(storeEntity.getMerchSn());
+                adEntity.setImageUrl(mkStoreTicketDiscount.getStoreLogoUrl());
+                adEntity.setName(mkStoreTicketDiscount.getName());
+                adEntity.setLink("/pages/ucenter/couponDetail/couponDetail?discId=" + mkStoreTicketDiscount.getTickDiscId() + "&&storeId=" + mkStoreTicketDiscount.getStoreId() + "&&isShare==0");
+                adEntity.setEnabled(1);
+                adEntity.setAdPositionId(1);
+                adEntity.setMediaType(1);
+                adEntity.setTickDiscId(mkStoreTicketDiscount.getTickDiscId());
+                adDao.save(adEntity);
+            }
+            return 1;
+        }else {
+            return 0;
+        }
+    }
+
+    @Transactional
+    @Override
+    public int update(MkStoreTicketDiscountEntity mkStoreTicketDiscount) {
+        MkStoreTicketDiscountEntity discountEntity = queryObject(mkStoreTicketDiscount.getTickDiscId());
+        if(discountEntity == null){
+            throw new RRException("优惠券信息不存在");
+        }
+        if(mkStoreTicketDiscount.getFixEndTime()!= null){
+            if(mkStoreTicketDiscount.getFixEndTime().getTime() < discountEntity.getFixEndTime().getTime()){
+                throw new RRException("不可缩短优惠券有效期");
+            }
+        }
+        if(!StringUtils.isNotEmpty(String.valueOf(mkStoreTicketDiscount.getLimitNum()))){
+            mkStoreTicketDiscount.setLimitNum(1);
+        }
+        StoreEntity storeEntity = storeDao.queryObject(mkStoreTicketDiscount.getStoreId());
+        if(storeEntity == null){
+            throw new RRException("门店信息不存在");
+        }else{
+            mkStoreTicketDiscount.setStoreName(storeEntity.getStoreName());
+        }
+
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        List<MkStoreTicketGoodsTempEntity> tempEntityList = new ArrayList<>();
+        if(!mkStoreTicketDiscount.getApplyType().equalsIgnoreCase(Dict.applyType.item_00.getItem())){
+            //根据唯一id、门店id、试用商品类型、是否有效查询临时表是否有数据,没有数据则提示“指定商品参与商品数据为空,请选择”“指定商品不参与商品数据为空,请选择”
+            MkStoreTicketGoodsTempEntity entity = new MkStoreTicketGoodsTempEntity();
+            entity.setStoreId(mkStoreTicketDiscount.getStoreId());
+//            entity.setApplyType(mkStoreTicketDiscount.getApplyType());
+            entity.setIsValid(Dict.isValid.item_0.getItem());
+            entity.setIsButtonCannel(Dict.isValid.item_0.getItem());
+            entity.setGuid(mkStoreTicketDiscount.getGuid());
+            tempEntityList = mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(entity);
+            if(tempEntityList.size() == 0){
+                if(Dict.applyType.item_02.getItem().equalsIgnoreCase(mkStoreTicketDiscount.getApplyType())) {
+                    throw new RRException("指定商品不参与商品数据为空,请选择");
+                }
+                if(Dict.applyType.item_01.getItem().equalsIgnoreCase(mkStoreTicketDiscount.getApplyType())) {
+                    throw new RRException("指定商品参与商品数据为空,请选择");
+                }
+            }
+        }
+        deleteTemp(mkStoreTicketDiscount);
+        StoreTopicEntity storeTopicEntity = storeTopicDao.queryObject(mkStoreTicketDiscount.getStoreTopicId());
+        if(storeTopicEntity != null) {
+            storeTopicEntity.setTitle(mkStoreTicketDiscount.getName());
+            storeTopicDao.update(storeTopicEntity);
+
+            mkStoreTicketDiscount.setCreateTime(new Date());
+            mkStoreTicketDiscount.setCreaterSn(user.getUsername());
+            mkStoreTicketDiscount.setModTime(new Date());
+            mkStoreTicketDiscount.setModerSn(user.getUsername());
+            mkStoreTicketDiscountDao.update(mkStoreTicketDiscount);
+            if(tempEntityList.size() > 0){
+                mkStoreTicketDiscountGoodsDao.deleteByTickDistId(mkStoreTicketDiscount.getTickDiscId());
+
+                for (MkStoreTicketGoodsTempEntity tempEntity : tempEntityList) {
+                           /* MkStoreTicketDiscountGoodsEntity ticketDiscountEntity = new MkStoreTicketDiscountGoodsEntity();
+                            ticketDiscountEntity.setTickDiscId(mkStoreTicketDiscount.getTickDiscId());
+                            ticketDiscountEntity.setApplyType(mkStoreTicketDiscount.getApplyType());
+                            ticketDiscountEntity.setStoreRelaId(tempEntity.getStoreRelaId());
+                            MkStoreTicketDiscountGoodsEntity ticketDiscountGoodsEntity = mkStoreTicketDiscountGoodsDao.queryObjectByStoreReal(ticketDiscountEntity);*/
+                    MkStoreTicketDiscountGoodsEntity discountGoodsEntity = new MkStoreTicketDiscountGoodsEntity();
+                    discountGoodsEntity.setStoreRelaId(tempEntity.getStoreRelaId());
+                    discountGoodsEntity.setApplyType(mkStoreTicketDiscount.getApplyType());
+                    discountGoodsEntity.setCreaterSn(user.getUsername());
+                    discountGoodsEntity.setCreateTime(new Date());
+                    discountGoodsEntity.setModerSn(user.getUsername());
+                    discountGoodsEntity.setModTime(new Date());
+                    discountGoodsEntity.setTickDiscId(mkStoreTicketDiscount.getTickDiscId());
+                    discountGoodsEntity.setIsValid(Dict.isValid.item_0.getItem());
+                    mkStoreTicketDiscountGoodsDao.save(discountGoodsEntity);
+
+                    MkStoreTicketGoodsTempEntity entity = new MkStoreTicketGoodsTempEntity();
+                    entity.setDiscGoodTempId(tempEntity.getDiscGoodTempId());
+                    entity.setApplyType(mkStoreTicketDiscount.getApplyType());
+                    mkStoreTicketGoodsTempDao.update(entity);
+                }
+            }
+            AdEntity ad = adDao.queryAdByTickDiscId(mkStoreTicketDiscount.getTickDiscId());
+//            是否展示在小程序门店首页广告栏,为1则新增广告信息广告位
+            if(mkStoreTicketDiscount.getIsStoreShow().equalsIgnoreCase("1")) {
+                AdEntity adEntity = new AdEntity();
+                adEntity.setContent(mkStoreTicketDiscount.getName());
+                adEntity.setImageUrl(mkStoreTicketDiscount.getStoreLogoUrl());
+                adEntity.setName(mkStoreTicketDiscount.getName());
+                adEntity.setLink("/pages/ucenter/couponDetail/couponDetail?discId=" + mkStoreTicketDiscount.getTickDiscId() + "&&storeId=" + mkStoreTicketDiscount.getStoreId() + "&&isShare==0");
+                adEntity.setEnabled(1);
+                if(ad != null){
+                    adEntity.setId(ad.getId());
+                    adDao.update(adEntity);
+                }else{
+                    adEntity.setStoreId(mkStoreTicketDiscount.getStoreId());
+                    adEntity.setMerchSn(storeEntity.getMerchSn());
+                    adEntity.setAdPositionId(1);
+                    adEntity.setMediaType(1);
+                    adEntity.setTickDiscId(mkStoreTicketDiscount.getTickDiscId());
+                    adDao.save(adEntity);
+                }
+            }
+//            为0则将已有的广告位隐藏
+            if(mkStoreTicketDiscount.getIsStoreShow().equalsIgnoreCase("0")) {
+                if(ad != null) {
+                    AdEntity adEntity = new AdEntity();
+                    adEntity.setEnabled(0);
+                    adEntity.setId(ad.getId());
+                    adDao.update(adEntity);
+                }
+            }
+            return 1;
+        }else {
+            return 0;
+        }
+    }
+
+    private void deleteTemp(MkStoreTicketDiscountEntity mkStoreTicketDiscount){
+        MkStoreTicketGoodsTempEntity entity = new MkStoreTicketGoodsTempEntity();
+        entity.setStoreId(mkStoreTicketDiscount.getStoreId());
+        entity.setApplyType(mkStoreTicketDiscount.getApplyType());
+        entity.setIsButtonCannel(Dict.isValid.item_1.getItem());
+        entity.setGuid(mkStoreTicketDiscount.getGuid());
+        List<MkStoreTicketGoodsTempEntity> tempEntityList = mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(entity);
+        Integer[] tempIds = new Integer[tempEntityList.size()];
+        for (int i=0; i<tempEntityList.size(); i++) {
+            tempIds[i] = tempEntityList.get(i).getDiscGoodTempId();
+        }
+        if(tempIds.length > 0){
+            mkStoreTicketGoodsTempDao.deleteBatch(tempIds);
+        }
+    }
+
+    private StoreTopicEntity saveStoreTopic(MkStoreTicketDiscountEntity mkStoreTicketDiscount, SysUserEntity user){
+        StoreTopicEntity storeTopicEntity = new StoreTopicEntity();
+        storeTopicEntity.setTitle(mkStoreTicketDiscount.getName());
+        storeTopicEntity.setContent(mkStoreTicketDiscount.getUseNoti());
+        storeTopicEntity.setSubtitle(mkStoreTicketDiscount.getTickDiscSubTitle());
+        storeTopicEntity.setStoreId(mkStoreTicketDiscount.getStoreId());
+        storeTopicEntity.setThirdMerchSn(mkStoreTicketDiscount.getThirdMerchSn());
+        storeTopicEntity.setIsValid("0");
+        storeTopicEntity.setCreateTime(new Date());
+        storeTopicEntity.setCreaterSn(user.getUsername());
+        storeTopicEntity.setModTime(new Date());
+        storeTopicEntity.setModerSn(user.getUsername());
+        storeTopicDao.save(storeTopicEntity);
+        return storeTopicEntity;
+    }
+
+    @Override
+    public int delete(Integer tickDiscId) {
+        return mkStoreTicketDiscountDao.delete(tickDiscId);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]tickDiscIds) {
+        return mkStoreTicketDiscountDao.deleteBatch(tickDiscIds);
+    }
+}

+ 241 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTicketGoodsTempServiceImpl.java

@@ -0,0 +1,241 @@
+package com.kmall.admin.service.impl.mk.store;
+
+import com.kmall.admin.dao.mk.store.MkStoreTicketGoodsTempDao;
+import com.kmall.admin.dto.CheckGoodsDto;
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity;
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity;
+import com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
+import com.kmall.admin.service.mk.store.MkStoreTicketDiscountGoodsService;
+import com.kmall.admin.service.mk.store.MkStoreTicketDiscountService;
+import com.kmall.admin.service.mk.store.MkStoreTicketGoodsTempService;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.constant.Dict;
+import com.kmall.common.utils.RRException;
+import com.kmall.common.utils.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品临时表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-09 17:33:29
+ */
+@Service("mkStoreTicketGoodsTempService")
+public class MkStoreTicketGoodsTempServiceImpl implements MkStoreTicketGoodsTempService {
+    @Autowired
+    private MkStoreTicketGoodsTempDao mkStoreTicketGoodsTempDao;
+    @Autowired
+    private MkStoreTicketDiscountGoodsService mkStoreTicketDiscountGoodsService;
+    @Autowired
+    private MkStoreTicketDiscountService mkStoreTicketDiscountService;
+
+    @Override
+    public MkStoreTicketGoodsTempEntity queryObject(Integer discGoodTempId) {
+        return mkStoreTicketGoodsTempDao.queryObject(discGoodTempId);
+    }
+
+    @Override
+    public MkStoreTicketGoodsTempEntity queryGoodsTempByRealId(Integer discGoodTempId, String guid) {
+        return mkStoreTicketGoodsTempDao.queryGoodsTempByRealId(discGoodTempId, guid);
+    }
+
+    @Override
+    public List<MkStoreTicketGoodsTempEntity> queryGoodsTempByGuid(String guid) {
+        return mkStoreTicketGoodsTempDao.queryGoodsTempByGuid(guid);
+    }
+
+    @Override
+    public List<MkStoreTicketGoodsTempEntity> queryGoodsTempByIsValid(MkStoreTicketGoodsTempEntity entity) {
+        return mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(entity);
+    }
+
+    @Override
+    public List<MkStoreTicketGoodsTempEntity> queryGoodsTempByGuidAndIsSubmit(MkStoreTicketGoodsTempEntity entity) {
+        return mkStoreTicketGoodsTempDao.queryGoodsTempByGuidAndIsSubmit(entity);
+    }
+
+    @Override
+    public List<MkStoreTicketGoodsTempEntity> queryList(Map<String, Object> map) {
+        return mkStoreTicketGoodsTempDao.queryList(map);
+    }
+
+    @Override
+    public List<MkStoreTicketGoodsTempEntity> queryAllDiscountByStoreId(Map<String, Object> map) {
+        return mkStoreTicketGoodsTempDao.queryAllDiscountByStoreId(map);
+    }
+
+    @Override
+    public int queryTotallDiscountByStoreId(Map<String, Object> map) {
+        return mkStoreTicketGoodsTempDao.queryTotallDiscountByStoreId(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkStoreTicketGoodsTempDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp) {
+        return mkStoreTicketGoodsTempDao.save(mkStoreTicketGoodsTemp);
+    }
+
+    @Override
+    public int update(MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp) {
+        return mkStoreTicketGoodsTempDao.update(mkStoreTicketGoodsTemp);
+    }
+
+    @Override
+    public int delete(Integer discGoodTempId) {
+        return mkStoreTicketGoodsTempDao.delete(discGoodTempId);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]discGoodTempIds) {
+        return mkStoreTicketGoodsTempDao.deleteBatch(discGoodTempIds);
+    }
+
+    @Transactional
+    @Override
+    public void batchSaveDiscountGoods(MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods){
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if(mkStoreTicketDiscountGoods.getCheckGoodsList().size() > 0){
+            List<CheckGoodsDto> list = mkStoreTicketDiscountGoods.getCheckGoodsList();
+
+            //如前端获取选中数组为空,则查询出无效字段进行删除
+            MkStoreTicketGoodsTempEntity entity = new MkStoreTicketGoodsTempEntity();
+            entity.setStoreId(mkStoreTicketDiscountGoods.getStoreId());
+            entity.setApplyType(mkStoreTicketDiscountGoods.getApplyType());
+            entity.setGuid(mkStoreTicketDiscountGoods.getGuid());
+            entity.setIsValid(Dict.isValid.item_1.getItem());
+            List<MkStoreTicketGoodsTempEntity> tempEntityList = mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(entity);
+            if(tempEntityList.size() > 0){
+                deleteBatchTemp(tempEntityList);
+            }
+            for(int i=0; i < list.size(); i++){
+                CheckGoodsDto checkGoodsDto = list.get(i);
+                MkStoreTicketGoodsTempEntity ticketGoodsTempEntity = mkStoreTicketGoodsTempDao.queryGoodsTempByRealId(checkGoodsDto.getStoreRealId(),checkGoodsDto.getGuid());
+                mkStoreTicketDiscountGoods.setCreateTime(new Date());
+                mkStoreTicketDiscountGoods.setModTime(new Date());
+                mkStoreTicketDiscountGoods.setCreaterSn(user.getUsername());
+                mkStoreTicketDiscountGoods.setModerSn(user.getUsername());
+                mkStoreTicketDiscountGoods.setGuid(checkGoodsDto.getGuid());
+                mkStoreTicketDiscountGoods.setApplyType(checkGoodsDto.getApplyType());
+                mkStoreTicketDiscountGoods.setStoreRelaId(checkGoodsDto.getStoreRealId());
+                mkStoreTicketDiscountGoods.setIsButtonCannel("0");
+                if(ticketGoodsTempEntity == null) {
+                    mkStoreTicketDiscountGoods.setIsValid(Dict.isValid.item_0.getItem());
+                    mkStoreTicketDiscountGoods.setIsSubmit(mkStoreTicketDiscountGoods.getIsSubmit());
+                    mkStoreTicketGoodsTempDao.save(mkStoreTicketDiscountGoods);
+                }else{
+                    mkStoreTicketDiscountGoods.setIsValid(Dict.isValid.item_0.getItem());
+                    mkStoreTicketDiscountGoods.setIsSubmit(Dict.isSubmit.item_0.getItem());
+                    mkStoreTicketDiscountGoods.setDiscGoodTempId(ticketGoodsTempEntity.getDiscGoodTempId());
+                    mkStoreTicketGoodsTempDao.update(mkStoreTicketDiscountGoods);
+                }
+            }
+        }else{
+            mkStoreTicketDiscountGoods.setStoreId(mkStoreTicketDiscountGoods.getStoreId());
+            mkStoreTicketDiscountGoods.setApplyType(mkStoreTicketDiscountGoods.getApplyType());
+            mkStoreTicketDiscountGoods.setGuid(mkStoreTicketDiscountGoods.getGuid());
+            if(mkStoreTicketDiscountGoods.getIsSubmit().equalsIgnoreCase(Dict.isSubmit.item_0.getItem())){//确定按钮
+                //如前端获取选中数组为空,则查询出无效字段进行删除
+                mkStoreTicketDiscountGoods.setIsValid(Dict.isValid.item_1.getItem());
+                List<MkStoreTicketGoodsTempEntity> tempEntityList = mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(mkStoreTicketDiscountGoods);
+                deleteBatchTemp(tempEntityList);
+            }else{//取消按钮
+                mkStoreTicketDiscountGoods.setIsSubmit(Dict.isSubmit.item_1.getItem());//取消按钮
+                List<MkStoreTicketGoodsTempEntity> tempEntityList = mkStoreTicketGoodsTempDao.queryGoodsTempByGuidAndIsSubmit(mkStoreTicketDiscountGoods);
+                //删除定为弹框取消按钮触发选中的商品
+                deleteBatchTemp(tempEntityList);
+
+                //点击取消按钮,查询无效商品恢复为有效商品
+                mkStoreTicketDiscountGoods.setIsValid(Dict.isValid.item_1.getItem());
+                List<MkStoreTicketGoodsTempEntity> tempByIsValidList = mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(mkStoreTicketDiscountGoods);
+                for(int i=0; i < tempByIsValidList.size(); i++){
+                    //修改为有效
+                    MkStoreTicketGoodsTempEntity tempEntity = new MkStoreTicketGoodsTempEntity();
+                    tempEntity.setIsValid(Dict.isValid.item_0.getItem());
+                    tempEntity.setDiscGoodTempId(tempByIsValidList.get(i).getDiscGoodTempId());
+                    mkStoreTicketGoodsTempDao.update(tempEntity);
+                }
+            }
+        }
+    }
+
+    private void deleteBatchTemp(List<MkStoreTicketGoodsTempEntity> tempEntityList){
+        if(tempEntityList.size() > 0) {
+            Integer[] ids = new Integer[tempEntityList.size()];
+            for (int i = 0; i < tempEntityList.size(); i++) {
+                ids[i] = tempEntityList.get(i).getDiscGoodTempId();
+            }
+            mkStoreTicketGoodsTempDao.deleteBatch(ids);
+        }
+    }
+
+    @Override
+    public List<MkStoreTicketGoodsTempEntity> queryGoodsTempIdBy(MkStoreTicketGoodsTempEntity entity) {
+        return mkStoreTicketGoodsTempDao.queryGoodsTempIdBy(entity);
+    }
+
+    @Transactional
+    @Override
+    public void resetIsValidByTemp(MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp){
+        if(StringUtils.isNotEmpty(mkStoreTicketGoodsTemp.getGuid())){
+            mkStoreTicketGoodsTempDao.deleteByGuid(mkStoreTicketGoodsTemp.getGuid());//删除
+        }
+        if(mkStoreTicketGoodsTemp.getTickDiscId() != null){
+            MkStoreTicketDiscountEntity mkStoreTicketDiscountEntity = mkStoreTicketDiscountService.queryObject(mkStoreTicketGoodsTemp.getTickDiscId());
+            if(mkStoreTicketDiscountEntity == null){
+                throw new RRException("优惠券信息不存在");
+            }
+            //点击取消按钮,则恢复被删除的无效商品为有效商品
+            mkStoreTicketGoodsTemp.setStoreId(mkStoreTicketDiscountEntity.getStoreId());
+            mkStoreTicketGoodsTemp.setApplyType(mkStoreTicketDiscountEntity.getApplyType());
+            mkStoreTicketGoodsTemp.setGuid(mkStoreTicketDiscountEntity.getGuid());
+            mkStoreTicketGoodsTemp.setIsButtonCannel("1");//点击页面取消按钮设置为无效的商品
+            //查询页面无效商品
+            List<MkStoreTicketGoodsTempEntity> tempByIsValidList = mkStoreTicketGoodsTempDao.queryGoodsTempByIsValid(mkStoreTicketGoodsTemp);
+            for(int i=0; i < tempByIsValidList.size(); i++){
+                MkStoreTicketGoodsTempEntity tempEntity = new MkStoreTicketGoodsTempEntity();
+                tempEntity.setDiscGoodTempId(tempByIsValidList.get(i).getDiscGoodTempId());
+                tempEntity.setIsButtonCannel("0");//点击页面取消按钮设置为有效的商品
+                mkStoreTicketGoodsTempDao.update(tempEntity);//修改为有效
+            }
+            /**
+             * 当在修改优惠券商品页选择了其他商品后,触发页面返回按钮,则将该商品在临时表中删除
+             */
+            mkStoreTicketGoodsTemp.setIsValid("0");
+            mkStoreTicketGoodsTemp.setIsButtonCannel("0");
+            //根据适用商品类型、优惠券id查询优惠券商品
+            Map goodsMap = new HashMap();
+            goodsMap.put("tickDiscId", mkStoreTicketDiscountEntity.getTickDiscId());
+            goodsMap.put("applyType", mkStoreTicketDiscountEntity.getApplyType());
+            List<MkStoreTicketDiscountGoodsEntity> discountGoodsList = mkStoreTicketDiscountGoodsService.queryList(goodsMap);
+            List<Integer> storeRelaIdList = null;
+            if(discountGoodsList.size() > 0) {
+                storeRelaIdList = new ArrayList<>();
+                for (MkStoreTicketDiscountGoodsEntity entity : discountGoodsList) {
+                    storeRelaIdList.add(entity.getStoreRelaId());
+                }
+            }
+            mkStoreTicketGoodsTemp.setStoreRelaIdList(storeRelaIdList);
+            //查询排除掉优惠券商品表中已存在的(storeRelaIdList)优惠券商品临时数据
+            List<MkStoreTicketGoodsTempEntity> tempIdList = mkStoreTicketGoodsTempDao.queryGoodsTempIdBy(mkStoreTicketGoodsTemp);
+            Integer[] ids = new Integer[tempIdList.size()];
+            if(tempIdList.size() > 0) {
+                for (int i = 0; i < tempIdList.size(); i++) {
+                    ids[i] = tempIdList.get(i).getDiscGoodTempId();
+                }
+                if (ids.length > 0) {
+                    mkStoreTicketGoodsTempDao.deleteBatch(ids);//删除
+                }
+            }
+        }
+    }
+}

+ 58 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTopicStatServiceImpl.java

@@ -0,0 +1,58 @@
+package com.kmall.admin.service.impl.mk.store;
+
+import com.kmall.admin.dao.mk.store.MkStoreTopicStatDao;
+import com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity;
+import com.kmall.admin.service.mk.store.MkStoreTopicStatService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店活动统计Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+@Service("mkStoreTopicStatService")
+public class MkStoreTopicStatServiceImpl implements MkStoreTopicStatService {
+    @Autowired
+    private MkStoreTopicStatDao mkStoreTopicStatDao;
+
+    @Override
+    public MkStoreTopicStatEntity queryObject(Integer storeTopicStatId) {
+        return mkStoreTopicStatDao.queryObject(storeTopicStatId);
+    }
+
+    @Override
+    public List<MkStoreTopicStatEntity> queryList(Map<String, Object> map) {
+        return mkStoreTopicStatDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkStoreTopicStatDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(MkStoreTopicStatEntity mkStoreTopicStat) {
+        return mkStoreTopicStatDao.save(mkStoreTopicStat);
+    }
+
+    @Override
+    public int update(MkStoreTopicStatEntity mkStoreTopicStat) {
+        return mkStoreTopicStatDao.update(mkStoreTopicStat);
+    }
+
+    @Override
+    public int delete(Integer storeTopicStatId) {
+        return mkStoreTopicStatDao.delete(storeTopicStatId);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]storeTopicStatIds) {
+        return mkStoreTopicStatDao.deleteBatch(storeTopicStatIds);
+    }
+}

+ 58 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/store/MkStoreTopicVisitorsServiceImpl.java

@@ -0,0 +1,58 @@
+package com.kmall.admin.service.impl.mk.store;
+
+import com.kmall.admin.dao.mk.store.MkStoreTopicVisitorsDao;
+import com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity;
+import com.kmall.admin.service.mk.store.MkStoreTopicVisitorsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店活动访客记录Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+@Service("mkStoreTopicVisitorsService")
+public class MkStoreTopicVisitorsServiceImpl implements MkStoreTopicVisitorsService {
+    @Autowired
+    private MkStoreTopicVisitorsDao mkStoreTopicVisitorsDao;
+
+    @Override
+    public MkStoreTopicVisitorsEntity queryObject(Integer topicVisitorsId) {
+        return mkStoreTopicVisitorsDao.queryObject(topicVisitorsId);
+    }
+
+    @Override
+    public List<MkStoreTopicVisitorsEntity> queryList(Map<String, Object> map) {
+        return mkStoreTopicVisitorsDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkStoreTopicVisitorsDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(MkStoreTopicVisitorsEntity mkStoreTopicVisitors) {
+        return mkStoreTopicVisitorsDao.save(mkStoreTopicVisitors);
+    }
+
+    @Override
+    public int update(MkStoreTopicVisitorsEntity mkStoreTopicVisitors) {
+        return mkStoreTopicVisitorsDao.update(mkStoreTopicVisitors);
+    }
+
+    @Override
+    public int delete(Integer topicVisitorsId) {
+        return mkStoreTopicVisitorsDao.delete(topicVisitorsId);
+    }
+
+    @Override
+    public int deleteBatch(Integer[]topicVisitorsIds) {
+        return mkStoreTopicVisitorsDao.deleteBatch(topicVisitorsIds);
+    }
+}

+ 9 - 1
kmall-admin/src/main/java/com/kmall/admin/service/mk/MkCenterMenuService.java

@@ -23,7 +23,7 @@ public interface MkCenterMenuService {
     MkCenterMenuEntity queryObject(Integer id);
 
     /**
-     * 分页查询
+     * 查询全部
      *
      * @param map 参数
      * @return list
@@ -31,6 +31,14 @@ public interface MkCenterMenuService {
     List<MkCenterMenuEntity> queryList(Map<String, Object> map);
 
     /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkCenterMenuEntity> queryListByStore(Map<String, Object> map);
+
+    /**
      * 分页统计总数
      *
      * @param map 参数

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/MkCenterMenuStoreRealService.java

@@ -0,0 +1,72 @@
+package com.kmall.admin.service.mk;
+
+import com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 营销中心菜单门店关联表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-28 10:14:06
+ */
+public interface MkCenterMenuStoreRealService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param id 主键
+     * @return 实体
+     */
+    MkCenterMenuStoreRealEntity queryObject(Integer id);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkCenterMenuStoreRealEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkCenterMenuStoreReal 实体
+     * @return 保存条数
+     */
+    int saveOrUpdate(MkCenterMenuStoreRealEntity mkCenterMenuStoreReal);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkCenterMenuStoreReal 实体
+     * @return 更新条数
+     */
+    int update(MkCenterMenuStoreRealEntity mkCenterMenuStoreReal);
+
+    /**
+     * 根据主键删除
+     *
+     * @param id
+     * @return 删除条数
+     */
+    int delete(Integer id);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param ids
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] ids);
+}

+ 3 - 1
kmall-admin/src/main/java/com/kmall/admin/service/mk/dist/MkDistService.java

@@ -69,7 +69,9 @@ public interface MkDistService {
      */
     int deleteBatch(Integer[] distIds);
 
-    MkDistEntity queryDistByGoodsId(Map<String, Object> map);
+    MkDistEntity queryDistByGoodsId(Integer goodsId,Integer storeId);
+
+    MkDistEntity queryDistByStoreId(Map<String, Object> map);
 
     List<MkDistEntity> queryAllByHier(Map<String, Object> map);
 }

+ 0 - 1
kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStorePromStatService.java

@@ -37,7 +37,6 @@ public interface MkStorePromStatService {
      * @return 总数
      */
     int queryTotal(Map<String, Object> map);
-
     /**
      * 保存实体
      *

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTicketDiscountGoodsService.java

@@ -0,0 +1,72 @@
+package com.kmall.admin.service.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+public interface MkStoreTicketDiscountGoodsService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param discGoodId 主键
+     * @return 实体
+     */
+    MkStoreTicketDiscountGoodsEntity queryObject(Integer discGoodId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkStoreTicketDiscountGoodsEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkStoreTicketDiscountGoods 实体
+     * @return 保存条数
+     */
+    int save(MkStoreTicketDiscountGoodsEntity mkStoreTicketDiscountGoods);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkStoreTicketDiscountGoods 实体
+     * @return 更新条数
+     */
+    int update(MkStoreTicketDiscountGoodsEntity mkStoreTicketDiscountGoods);
+
+    /**
+     * 根据主键删除
+     *
+     * @param discGoodId
+     * @return 删除条数
+     */
+    int delete(Integer discGoodId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param discGoodIds
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] discGoodIds);
+}

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTicketDiscountService.java

@@ -0,0 +1,72 @@
+package com.kmall.admin.service.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店优惠券活动Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-07 16:06:28
+ */
+public interface MkStoreTicketDiscountService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param tickDiscId 主键
+     * @return 实体
+     */
+    MkStoreTicketDiscountEntity queryObject(Integer tickDiscId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkStoreTicketDiscountEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkStoreTicketDiscount 实体
+     * @return 保存条数
+     */
+    int save(MkStoreTicketDiscountEntity mkStoreTicketDiscount);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkStoreTicketDiscount 实体
+     * @return 更新条数
+     */
+    int update(MkStoreTicketDiscountEntity mkStoreTicketDiscount);
+
+    /**
+     * 根据主键删除
+     *
+     * @param tickDiscId
+     * @return 删除条数
+     */
+    int delete(Integer tickDiscId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param tickDiscIds
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] tickDiscIds);
+}

+ 90 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTicketGoodsTempService.java

@@ -0,0 +1,90 @@
+package com.kmall.admin.service.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店优惠券活动商品,参与优惠的商品临时表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-09 17:33:29
+ */
+public interface MkStoreTicketGoodsTempService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param discGoodTempId 主键
+     * @return 实体
+     */
+    MkStoreTicketGoodsTempEntity queryObject(Integer discGoodTempId);
+
+    MkStoreTicketGoodsTempEntity queryGoodsTempByRealId(Integer storeRealId, String guid);
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempByGuid(String guid);
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempByIsValid(MkStoreTicketGoodsTempEntity entity);
+
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempByGuidAndIsSubmit(MkStoreTicketGoodsTempEntity entity);
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkStoreTicketGoodsTempEntity> queryList(Map<String, Object> map);
+
+    List<MkStoreTicketGoodsTempEntity> queryAllDiscountByStoreId(Map<String, Object> map);
+
+    int queryTotallDiscountByStoreId(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkStoreTicketGoodsTemp 实体
+     * @return 保存条数
+     */
+    int save(MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkStoreTicketGoodsTemp 实体
+     * @return 更新条数
+     */
+    int update(MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp);
+
+    /**
+     * 根据主键删除
+     *
+     * @param discGoodTempId
+     * @return 删除条数
+     */
+    int delete(Integer discGoodTempId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param discGoodTempIds
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] discGoodTempIds);
+
+    void batchSaveDiscountGoods(MkStoreTicketGoodsTempEntity mkStoreTicketDiscountGoods);
+
+    List<MkStoreTicketGoodsTempEntity> queryGoodsTempIdBy(MkStoreTicketGoodsTempEntity entity);
+
+    void resetIsValidByTemp(MkStoreTicketGoodsTempEntity mkStoreTicketGoodsTemp);
+}

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTopicStatService.java

@@ -0,0 +1,72 @@
+package com.kmall.admin.service.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店活动统计Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+public interface MkStoreTopicStatService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param storeTopicStatId 主键
+     * @return 实体
+     */
+    MkStoreTopicStatEntity queryObject(Integer storeTopicStatId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkStoreTopicStatEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkStoreTopicStat 实体
+     * @return 保存条数
+     */
+    int save(MkStoreTopicStatEntity mkStoreTopicStat);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkStoreTopicStat 实体
+     * @return 更新条数
+     */
+    int update(MkStoreTopicStatEntity mkStoreTopicStat);
+
+    /**
+     * 根据主键删除
+     *
+     * @param storeTopicStatId
+     * @return 删除条数
+     */
+    int delete(Integer storeTopicStatId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param storeTopicStatIds
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] storeTopicStatIds);
+}

+ 72 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/store/MkStoreTopicVisitorsService.java

@@ -0,0 +1,72 @@
+package com.kmall.admin.service.mk.store;
+
+import com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 门店活动访客记录Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2019-05-24 17:58:24
+ */
+public interface MkStoreTopicVisitorsService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param topicVisitorsId 主键
+     * @return 实体
+     */
+    MkStoreTopicVisitorsEntity queryObject(Integer topicVisitorsId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkStoreTopicVisitorsEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkStoreTopicVisitors 实体
+     * @return 保存条数
+     */
+    int save(MkStoreTopicVisitorsEntity mkStoreTopicVisitors);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkStoreTopicVisitors 实体
+     * @return 更新条数
+     */
+    int update(MkStoreTopicVisitorsEntity mkStoreTopicVisitors);
+
+    /**
+     * 根据主键删除
+     *
+     * @param topicVisitorsId
+     * @return 删除条数
+     */
+    int delete(Integer topicVisitorsId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param topicVisitorsIds
+     * @return 删除条数
+     */
+    int deleteBatch(Integer[] topicVisitorsIds);
+}

+ 21 - 0
kmall-admin/src/main/resources/mybatis/mapper/AdDao.xml

@@ -16,6 +16,7 @@
         <result property="endTime" column="end_time"/>
         <result property="enabled" column="enabled"/>
         <result property="sortOrder" column="sort_order"/>
+        <result property="tickDiscId" column="tick_disc_id"/>
     </resultMap>
 
     <select id="queryObject" resultType="com.kmall.admin.entity.AdEntity">
@@ -35,6 +36,23 @@
 		from mall_ad
 		where id = #{id}
 	</select>
+    <select id="queryAdByTickDiscId" resultType="com.kmall.admin.entity.AdEntity">
+        select
+        id,
+        ad_position_id,
+        media_type,
+        name,
+        store_id,
+        merch_sn,
+        link,
+        image_url,
+        sort_order,
+        content,
+        end_time,
+        enabled
+        from mall_ad
+        where tick_disc_id = #{tickDiscId}
+    </select>
 
     <select id="queryList" resultType="com.kmall.admin.entity.AdEntity">
         select
@@ -104,6 +122,7 @@
 			`name`,
 			`store_id`,
 			`merch_sn`,
+			tick_disc_id,
 			`link`,
 			`image_url`,
 			`sort_order`,
@@ -116,6 +135,7 @@
 			#{name},
 			#{storeId},
 			#{merchSn},
+			#{tickDiscId},
 			#{link},
 			#{imageUrl},
 			#{sortOrder},
@@ -132,6 +152,7 @@
             <if test="name != null">`name` = #{name},</if>
             <if test="storeId != null">`store_id` = #{storeId}, </if>
             <if test="merchSn != null">`merch_sn` = #{merchSn}, </if>
+            <if test="tickDiscId != null">`tick_disc_id` = #{tickDiscId}, </if>
             <if test="link != null">`link` = #{link},</if>
             <if test="imageUrl != null">`image_url` = #{imageUrl},</if>
             <if test="sortOrder != null">`sort_order` = #{sortOrder},</if>

+ 390 - 0
kmall-admin/src/main/resources/mybatis/mapper/OrderDao.xml

@@ -660,4 +660,394 @@
             AND s.third_party_merch_code = #{thirdPartyMerchCode}
         </if>
     </select>
+
+    <select id="promOrderList" resultType="com.kmall.admin.entity.OrderEntity">
+        SELECT
+        s.prom_id,
+        o.id,
+        o.order_sn,
+        o.merch_order_sn,
+        o.actual_price,
+        o.freight_price,
+        o.activity_id,
+        o.order_status,
+        o.pay_status,
+        store.store_name storeName,
+        u.userName userName,
+        o.buyer_pay_check,
+        o.order_price,
+        o.add_time,
+        o.shipping_status,
+        (select count(1) from mall_order_goods where order_id = o.id) orderDetailCount,
+        g.goods_id goodsId
+        FROM
+        mk_store_prom_stat s
+        LEFT JOIN mk_store_prom_order_real r ON s.prom_id = r.prom_id
+        LEFT JOIN mall_order o ON r.order_id = o.id
+        LEFT JOIN mall_order_goods g ON o.id = g.order_id
+        AND g.id = r.order_goods_id
+        LEFT JOIN mall_store store ON o.store_id = store.id
+        LEFT JOIN mall_user u ON o.user_id = u.id
+        WHERE
+        r.order_id IS NOT NULL
+        <if test="promId != null and promId != ''">
+            AND s.prom_id = #{promId}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND o.add_time <![CDATA[ >  ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND o.add_time <![CDATA[ <  ]]> #{endTime}
+        </if>
+        <if test="storeId != null and storeId != ''">
+            AND o.store_id = #{storeId}
+        </if>
+        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
+            AND store.third_party_merch_code = #{thirdPartyMerchCode}
+        </if>
+        <if test="orderBizType != null and orderBizType != ''">
+            AND o.order_biz_type = #{orderBizType}
+        </if>
+        <if test="merchOrderSn != null and merchOrderSn.trim() != ''">
+            AND o.merch_order_sn = #{merchOrderSn}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != ''">
+            AND o.merch_sn = #{merchSn}
+        </if>
+        <if test="orderSn != null and orderSn.trim() != ''">
+            AND o.order_sn LIKE concat('%',#{orderSn},'%')
+        </if>
+        <if test="shippingStatus != null and shippingStatus.trim() != ''">
+            AND o.shipping_status = #{shippingStatus}
+        </if>
+        <if test="payStatus != null and payStatus.trim() != ''">
+            AND o.pay_status = #{payStatus}
+        </if>
+        <if test="orderStatus != null and orderStatus.trim() != ''">
+            AND o.order_status = #{orderStatus}
+        </if>
+        <if test="shippingId != null and shippingId != 0">
+            AND o.shipping_id = #{shippingId}
+        </if>
+        <if test="orderType != null and orderType.trim() != ''">
+            AND o.order_type = #{orderType}
+        </if>
+        <if test="isOnfiilineOrder != null">
+            AND o.is_onffline_order = #{isOnfiilineOrder}
+        </if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+            <otherwise>
+                order by o.id desc
+            </otherwise>
+        </choose>
+        <if test="offset != null and limit != null">
+            limit #{offset}, #{limit}
+        </if>
+    </select>
+
+    <select id="queryPromOrderTotal" resultType="int">
+        SELECT
+        count(*)
+        FROM
+        mk_store_prom_stat s
+        LEFT JOIN mk_store_prom_order_real r ON s.prom_id = r.prom_id
+        LEFT JOIN mall_order o ON r.order_id = o.id
+        LEFT JOIN mall_order_goods g ON o.id = g.order_id
+        AND g.id = r.order_goods_id
+        LEFT JOIN mall_store store ON o.store_id = store.id
+        LEFT JOIN mall_user u ON o.user_id = u.id
+        WHERE
+        r.order_id IS NOT NULL
+        <if test="promId != null and promId != ''">
+            AND s.prom_id = #{promId}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND o.add_time <![CDATA[ >  ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND o.add_time <![CDATA[ <  ]]> #{endTime}
+        </if>
+        <if test="storeId != null and storeId != ''">
+            AND o.store_id = #{storeId}
+        </if>
+        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
+            AND store.third_party_merch_code = #{thirdPartyMerchCode}
+        </if>
+        <if test="orderBizType != null and orderBizType != ''">
+            AND o.order_biz_type = #{orderBizType}
+        </if>
+        <if test="merchOrderSn != null and merchOrderSn.trim() != ''">
+            AND o.merch_order_sn = #{merchOrderSn}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != ''">
+            AND o.merch_sn = #{merchSn}
+        </if>
+        <if test="orderSn != null and orderSn.trim() != ''">
+            AND o.order_sn LIKE concat('%',#{orderSn},'%')
+        </if>
+        <if test="shippingStatus != null and shippingStatus.trim() != ''">
+            AND o.shipping_status = #{shippingStatus}
+        </if>
+        <if test="payStatus != null and payStatus.trim() != ''">
+            AND o.pay_status = #{payStatus}
+        </if>
+        <if test="orderStatus != null and orderStatus.trim() != ''">
+            AND o.order_status = #{orderStatus}
+        </if>
+        <if test="shippingId != null and shippingId != 0">
+            AND o.shipping_id = #{shippingId}
+        </if>
+        <if test="orderType != null and orderType.trim() != ''">
+            AND o.order_type = #{orderType}
+        </if>
+        <if test="isOnfiilineOrder != null">
+            AND o.is_onffline_order = #{isOnfiilineOrder}
+        </if>
+    </select>
+
+    <select id="promOrderListExport" resultType="com.kmall.admin.entity.OrderEntity">
+        SELECT
+        s.prom_id,
+        o.id,
+        o.order_sn,
+        o.merch_order_sn,
+        o.actual_price,
+        g.goods_name,
+        g.number,
+        g.retail_price,
+        o.freight_price,
+        o.activity_id,
+        o.order_status,
+        o.pay_status,
+        store.store_name storeName,
+        u.userName userName,
+        o.buyer_pay_check,
+        o.order_price,
+        o.add_time,
+        o.shipping_status,
+        g.goods_id goodsId
+        FROM
+        mk_store_prom_stat s
+        LEFT JOIN mk_store_prom_order_real r ON s.prom_id = r.prom_id
+        LEFT JOIN mall_order o ON r.order_id = o.id
+        LEFT JOIN mall_order_goods g ON o.id = g.order_id
+        AND g.id = r.order_goods_id
+        LEFT JOIN mall_store store ON o.store_id = store.id
+        LEFT JOIN mall_user u ON o.user_id = u.id
+        WHERE
+        r.order_id IS NOT NULL
+        <if test="promId != null and promId != ''">
+            AND s.prom_id = #{promId}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND o.add_time <![CDATA[ >  ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND o.add_time <![CDATA[ <  ]]> #{endTime}
+        </if>
+        <if test="storeId != null and storeId != ''">
+            AND o.store_id = #{storeId}
+        </if>
+        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
+            AND store.third_party_merch_code = #{thirdPartyMerchCode}
+        </if>
+        <if test="orderBizType != null and orderBizType != ''">
+            AND o.order_biz_type = #{orderBizType}
+        </if>
+        <if test="merchOrderSn != null and merchOrderSn.trim() != ''">
+            AND o.merch_order_sn = #{merchOrderSn}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != ''">
+            AND o.merch_sn = #{merchSn}
+        </if>
+        <if test="orderSn != null and orderSn.trim() != ''">
+            AND o.order_sn LIKE concat('%',#{orderSn},'%')
+        </if>
+        <if test="shippingStatus != null and shippingStatus.trim() != ''">
+            AND o.shipping_status = #{shippingStatus}
+        </if>
+        <if test="payStatus != null and payStatus.trim() != ''">
+            AND o.pay_status = #{payStatus}
+        </if>
+        <if test="orderStatus != null and orderStatus.trim() != ''">
+            AND o.order_status = #{orderStatus}
+        </if>
+        <if test="shippingId != null and shippingId != 0">
+            AND o.shipping_id = #{shippingId}
+        </if>
+        <if test="orderType != null and orderType.trim() != ''">
+            AND o.order_type = #{orderType}
+        </if>
+        <if test="isOnfiilineOrder != null">
+            AND o.is_onffline_order = #{isOnfiilineOrder}
+        </if>
+    </select>
+
+    <select id="getActualPriceByOutProm" parameterType="map" resultType="java.lang.Double">
+        SELECT
+            o.actual_price - ( o.actual_price - g.retail_price * g.number ) promActualPrice
+        FROM
+            mk_store_prom_order_real r
+            LEFT JOIN mall_order o ON r.order_id = o.id
+            LEFT JOIN mall_order_goods g ON o.id = g.order_id
+            AND g.id = r.order_goods_id
+        WHERE 1=1
+            AND g.goods_id = #{goodsId}
+            AND r.order_id = #{orderId}
+            <if test="statusList != null">
+                AND o.order_status IN
+                <foreach item="statusList" collection="statusList" open="(" separator="," close=")">
+                    #{statusList}
+                </foreach>
+            </if>
+    </select>
+
+
+    <select id="storeTopicOrderList" resultType="com.kmall.admin.entity.OrderEntity">
+        SELECT
+        s.title 'storeTopicName',
+        pt.prom_type_name 'storeTopicType',
+        ss.store_name 'storeName',
+        s.id 'storeTopicId',
+        o.id,
+        o.order_sn,
+        o.merch_order_sn,
+        o.actual_price,
+        o.freight_price,
+        o.activity_id,
+        o.order_status,
+        o.pay_status,
+        u.userName userName,
+        o.order_price,
+        o.add_time,
+        o.shipping_status
+        FROM
+        mall_order o
+        INNER JOIN mall_user_coupon cc ON o.coupon_id = cc.id
+        AND cc.user_id = o.user_id
+        INNER JOIN mall_store_topic s ON cc.store_topic_id = s.id
+        LEFT JOIN mk_store_prom_type pt ON s.prom_type_id = pt.prom_type_id
+        LEFT JOIN mall_store ss ON o.store_id = ss.id
+        LEFT JOIN mall_user u ON o.user_id = u.id
+        WHERE
+        1=1
+        <if test="storeTopicId != null and storeTopicId != ''">
+            AND s.id = #{storeTopicId}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND o.add_time <![CDATA[ >  ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND o.add_time <![CDATA[ <  ]]> #{endTime}
+        </if>
+        <if test="storeId != null and storeId != ''">
+            AND o.store_id = #{storeId}
+        </if>
+        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
+            AND ss.third_party_merch_code = #{thirdPartyMerchCode}
+        </if>
+        <if test="orderBizType != null and orderBizType != ''">
+            AND o.order_biz_type = #{orderBizType}
+        </if>
+        <if test="merchOrderSn != null and merchOrderSn.trim() != ''">
+            AND o.merch_order_sn = #{merchOrderSn}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != ''">
+            AND o.merch_sn = #{merchSn}
+        </if>
+        <if test="orderSn != null and orderSn.trim() != ''">
+            AND o.order_sn LIKE concat('%',#{orderSn},'%')
+        </if>
+        <if test="shippingStatus != null and shippingStatus.trim() != ''">
+            AND o.shipping_status = #{shippingStatus}
+        </if>
+        <if test="payStatus != null and payStatus.trim() != ''">
+            AND o.pay_status = #{payStatus}
+        </if>
+        <if test="orderStatus != null and orderStatus.trim() != ''">
+            AND o.order_status = #{orderStatus}
+        </if>
+        <if test="shippingId != null and shippingId != 0">
+            AND o.shipping_id = #{shippingId}
+        </if>
+        <if test="orderType != null and orderType.trim() != ''">
+            AND o.order_type = #{orderType}
+        </if>
+        <if test="isOnfiilineOrder != null">
+            AND o.is_onffline_order = #{isOnfiilineOrder}
+        </if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+            <otherwise>
+                order by o.id desc
+            </otherwise>
+        </choose>
+        <if test="offset != null and limit != null">
+            limit #{offset}, #{limit}
+        </if>
+    </select>
+
+    <select id="queryStoreTopicOrderTotal" resultType="int">
+        SELECT
+        count(*)
+        FROM
+        mall_order o
+        INNER JOIN mall_user_coupon cc ON o.coupon_id = cc.id
+        AND cc.user_id = o.user_id
+        INNER JOIN mall_store_topic s ON cc.store_topic_id = s.id
+        LEFT JOIN mk_store_prom_type pt ON s.prom_type_id = pt.prom_type_id
+        LEFT JOIN mall_store ss ON o.store_id = ss.id
+        LEFT JOIN mall_user u ON o.user_id = u.id
+        WHERE 1=1
+        <if test="storeTopicId != null and storeTopicId != ''">
+            AND s.id = #{storeTopicId}
+        </if>
+        <if test="startTime != null and startTime != ''">
+            AND o.add_time <![CDATA[ >  ]]> #{startTime}
+        </if>
+        <if test="endTime != null and endTime != ''">
+            AND o.add_time <![CDATA[ <  ]]> #{endTime}
+        </if>
+        <if test="storeId != null and storeId != ''">
+            AND o.store_id = #{storeId}
+        </if>
+        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
+            AND ss.third_party_merch_code = #{thirdPartyMerchCode}
+        </if>
+        <if test="orderBizType != null and orderBizType != ''">
+            AND o.order_biz_type = #{orderBizType}
+        </if>
+        <if test="merchOrderSn != null and merchOrderSn.trim() != ''">
+            AND o.merch_order_sn = #{merchOrderSn}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != ''">
+            AND o.merch_sn = #{merchSn}
+        </if>
+        <if test="orderSn != null and orderSn.trim() != ''">
+            AND o.order_sn LIKE concat('%',#{orderSn},'%')
+        </if>
+        <if test="shippingStatus != null and shippingStatus.trim() != ''">
+            AND o.shipping_status = #{shippingStatus}
+        </if>
+        <if test="payStatus != null and payStatus.trim() != ''">
+            AND o.pay_status = #{payStatus}
+        </if>
+        <if test="orderStatus != null and orderStatus.trim() != ''">
+            AND o.order_status = #{orderStatus}
+        </if>
+        <if test="shippingId != null and shippingId != 0">
+            AND o.shipping_id = #{shippingId}
+        </if>
+        <if test="orderType != null and orderType.trim() != ''">
+            AND o.order_type = #{orderType}
+        </if>
+        <if test="isOnfiilineOrder != null">
+            AND o.is_onffline_order = #{isOnfiilineOrder}
+        </if>
+    </select>
 </mapper>

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

@@ -116,4 +116,23 @@
         </foreach>
     </delete>
 
+    <select id="queryListByOrderId" resultType="com.kmall.admin.entity.OrderGoodsEntity">
+        SELECT
+        g.goods_name,
+        g.number,
+        g.retail_price,
+        r.order_id isPromGoods,
+        r.prom_id promId
+        FROM
+        mall_order_goods g
+        LEFT JOIN mk_store_prom_order_real r ON g.id = r.order_goods_id
+        WHERE 1=1
+        <if test="orderId != null">
+            AND g.order_id = #{orderId}
+        </if>
+        <if test="offset != null and limit != null">
+            limit #{offset}, #{limit}
+        </if>
+    </select>
+
 </mapper>

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

@@ -164,7 +164,8 @@
         a.freight_id,
         b.goods_number goodsNumber,
         b.third_party_merch_code thirdPartyMerchCode,
-        mb.is_stock_share isStockShare
+        mb.is_stock_share isStockShare,
+        b.list_pic_url
         from mall_product_store_rela a
         left join mall_goods b on a.goods_id = b.id
         left join third_merchant_biz mb on mb.third_party_merch_code = b.third_party_merch_code and mb.merch_sn=b.merch_sn
@@ -528,4 +529,69 @@
         where a.product_id = #{goodsId} and a.store_id = #{storeId}
     </update>
 
+    <select id="queryGoodsRealListByDiscountTid" resultType="com.kmall.admin.entity.ProductStoreRelaEntity">
+        SELECT
+        s.id,
+        s.goods_id,
+        s.retail_price,
+        g.store_rela_id 'isCheck',
+        g.apply_type applyType,
+        gs.NAME 'goodsName',
+        g.disc_good_temp_id 'discGoodTempId',
+        g.guid,
+        gs.goods_number goodsNumber,
+        s.stock_num,
+        gs.list_pic_url
+        FROM
+        mall_product_store_rela s
+        LEFT JOIN mk_store_ticket_goods_temp g ON s.id = g.store_rela_id AND g.guid = #{guid} and g.is_valid = '0' and g.is_button_cannel = '0'
+        LEFT JOIN mall_goods gs ON s.goods_id = gs.id
+        LEFT JOIN mall_store st ON s.store_id = s.id
+        WHERE  1=1 and gs.is_delete = 0
+        <if test="storeId != null and storeId != '' ">
+            AND s.store_id = #{storeId}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != '' ">
+            AND s.merch_sn = #{merchSn}
+        </if>
+        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
+            AND st.third_party_merch_code = #{thirdPartyMerchCode}
+        </if>
+        <if test="goodsBizType != null and goodsBizType != '' ">
+            AND gs.goods_biz_type = #{goodsBizType}
+        </if>
+        <if test="goodsName != null and goodsName != '' ">
+            AND gs.name LIKE concat('%',#{goodsName},'%')
+        </if>
+        order by s.id desc
+        <if test="offset != null and limit != null">
+            limit #{offset}, #{limit}
+        </if>
+    </select>
+
+    <select id="queryGoodsRealListByDiscountTidTotal" resultType="int">
+        select count(*)
+        FROM
+        mall_product_store_rela s
+        LEFT JOIN mk_store_ticket_goods_temp g ON s.id = g.store_rela_id AND g.guid = #{guid} and g.is_valid = '0' and g.is_button_cannel = '0'
+        LEFT JOIN mall_goods gs ON s.goods_id = gs.id
+        LEFT JOIN mall_store st ON s.store_id = s.id
+        WHERE  1=1 and gs.is_delete = 0
+        <if test="storeId != null and storeId != '' ">
+            AND s.store_id = #{storeId}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != '' ">
+            AND s.merch_sn = #{merchSn}
+        </if>
+        <if test="thirdPartyMerchCode != null and thirdPartyMerchCode.trim() != ''">
+            AND st.third_party_merch_code = #{thirdPartyMerchCode}
+        </if>
+        <if test="goodsBizType != null and goodsBizType != '' ">
+            AND gs.goods_biz_type = #{goodsBizType}
+        </if>
+        <if test="goodsName != null and goodsName != '' ">
+            AND gs.name LIKE concat('%',#{goodsName},'%')
+        </if>
+    </select>
+
 </mapper>

+ 54 - 1
kmall-admin/src/main/resources/mybatis/mapper/UserCouponDao.xml

@@ -13,6 +13,9 @@
         <result property="orderId" column="order_id"/>
         <result property="addTime" column="add_time"/>
         <result property="isUsed" column="is_used"/>
+        <result property="validTime" column="valid_time"/>
+        <result property="endTime" column="end_time"/>
+        <result property="modTime" column="mod_time"/>
     </resultMap>
 
     <select id="queryObject" resultType="com.kmall.admin.entity.UserCouponEntity">
@@ -111,7 +114,8 @@
         update mall_user_coupon
         <set>
             `used_time` = null,
-            `order_id` = null
+            `order_id` = null,
+            is_used= 0
         </set>
         where id = #{id}
     </update>
@@ -127,4 +131,53 @@
         </foreach>
     </delete>
 
+    <select id="getUserCouponByDiscIdList" resultType="com.kmall.admin.entity.UserCouponEntity">
+        SELECT
+        c.add_time,
+        c.id,
+        c.valid_time,
+        c.end_time,
+        c.mod_time,
+        c.is_used,
+        c.coupon_number,
+        u.nickname,
+        d.store_name 'storeName'
+        FROM
+        mk_store_ticket_discount d
+        INNER JOIN mall_user_coupon c ON c.store_topic_id = d.store_topic_id
+        INNER JOIN mall_user u ON c.user_id = u.id
+        WHERE 1=1
+        <if test="tickDiscId != null and tickDiscId != ''">
+            AND d.tick_disc_id = #{tickDiscId}
+        </if>
+        <if test="isUsed != null and isUsed != ''">
+            AND c.is_used = #{isUsed}
+        </if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+            <otherwise>
+                order by c.id desc
+            </otherwise>
+        </choose>
+        <if test="offset != null and limit != null">
+            limit #{offset}, #{limit}
+        </if>
+    </select>
+
+    <select id="queryUserCouponByDiscIdTotal" resultType="int">
+        select count(*)
+        FROM
+        mk_store_ticket_discount d
+        INNER JOIN mall_user_coupon c ON c.store_topic_id = d.store_topic_id
+        INNER JOIN mall_user u ON c.user_id = u.id
+        WHERE 1=1
+        <if test="tickDiscId != null and tickDiscId != ''">
+            AND d.tick_disc_id = #{tickDiscId}
+        </if>
+        <if test="isUsed != null and isUsed != ''">
+            AND c.is_used = #{isUsed}
+        </if>
+    </select>
 </mapper>

+ 39 - 25
kmall-admin/src/main/resources/mybatis/mapper/mk/MkCenterMenuDao.xml

@@ -9,8 +9,6 @@
         <result property="menuDetail" column="menu_detail"/>
         <result property="picUrl" column="pic_url"/>
         <result property="menuUrl" column="menu_url"/>
-        <result property="storeId" column="store_id"/>
-        <result property="thirdMerchSn" column="third_merch_sn"/>
         <result property="isValid" column="is_valid"/>
         <result property="note" column="note"/>
         <result property="createrSn" column="creater_sn"/>
@@ -28,8 +26,6 @@
 			`menu_detail`,
 			`pic_url`,
 			`menu_url`,
-			`store_id`,
-			`third_merch_sn`,
 			`is_valid`,
 			`note`,
 			`creater_sn`,
@@ -40,35 +36,57 @@
 		from mk_center_menu
 		where id = #{id}
 	</select>
-
 	<select id="queryList" resultType="com.kmall.admin.entity.mk.MkCenterMenuEntity">
-		select
+		SELECT
+		a.`id`,
+		a.`menu_name`,
+		a.`menu_detail`,
+		a.`pic_url`,
+		a.`menu_url`,
+		a.`is_valid`,
+		a.`note`,
+		a.`creater_sn`,
+		a.`create_time`,
+		a.`moder_sn`,
+		a.`mod_time`,
+		a.`tstm`
+		FROM
+		mk_center_menu a
+	</select>
+
+	<select id="queryListByStore" resultType="com.kmall.admin.entity.mk.MkCenterMenuEntity">
+		SELECT
 		a.`id`,
 		a.`menu_name`,
 		a.`menu_detail`,
 		a.`pic_url`,
 		a.`menu_url`,
-		a.`store_id`,
-		a.`third_merch_sn`,
+		r.`store_id`,
+		r.`third_merch_sn`,
 		a.`is_valid`,
 		a.`note`,
 		a.`creater_sn`,
 		a.`create_time`,
 		a.`moder_sn`,
 		a.`mod_time`,
-		a.`tstm`,t.third_party_merch_name thirdPartyMerchName,s.store_name storeName
-		from mk_center_menu a
-		left join mall_store s on a.store_id = s.id
-		left join third_merchant_biz t on a.third_merch_sn = t.third_merch_sn
+		a.`tstm`,
+		t.third_party_merch_name thirdPartyMerchName,
+		s.store_name storeName,
+		r.id menuStoreRealId
+		FROM
+		mk_center_menu_store_real r
+		LEFT JOIN mk_center_menu a ON a.id = r.center_menu_id
+		LEFT JOIN mall_store s ON r.store_id = s.id
+		LEFT JOIN third_merchant_biz t ON r.third_merch_sn = t.third_merch_sn
 		WHERE 1=1
 		<if test="menuName != null and menuName.trim() != ''">
 			AND menu_name LIKE concat('%',#{menuName},'%')
 		</if>
 		<if test="storeId != null and storeId != ''">
-			AND a.store_id = #{storeId}
+			AND r.store_id = #{storeId}
 		</if>
 		<if test="thirdMerchSn != null and thirdMerchSn != ''">
-			AND a.third_merch_sn = #{thirdMerchSn}
+			AND r.third_merch_sn = #{thirdMerchSn}
 		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
@@ -84,18 +102,20 @@
 	</select>
 	
  	<select id="queryTotal" resultType="int">
-		select count(*) from mk_center_menu a
-		left join mall_store s on a.store_id = s.id
-		left join third_merchant_biz t on a.third_merch_sn = t.third_merch_sn
+		select count(*)
+		from mk_center_menu_store_real r
+		LEFT JOIN mk_center_menu a ON a.id = r.center_menu_id
+		LEFT JOIN mall_store s ON r.store_id = s.id
+		LEFT JOIN third_merchant_biz t ON r.third_merch_sn = t.third_merch_sn
 		WHERE 1=1
 		<if test="menuName != null and menuName.trim() != ''">
 			AND menu_name LIKE concat('%',#{menuName},'%')
 		</if>
 		<if test="storeId != null and storeId != ''">
-			AND a.store_id = #{storeId}
+			AND r.store_id = #{storeId}
 		</if>
 		<if test="thirdMerchSn != null and thirdMerchSn != ''">
-			AND a.third_merch_sn = #{thirdMerchSn}
+			AND r.third_merch_sn = #{thirdMerchSn}
 		</if>
 	</select>
 	 
@@ -105,8 +125,6 @@
 			`menu_detail`,
 			`pic_url`,
 			`menu_url`,
-			`store_id`,
-			`third_merch_sn`,
 			`is_valid`,
 			`note`,
 			`creater_sn`,
@@ -119,8 +137,6 @@
 			#{menuDetail},
 			#{picUrl},
 			#{menuUrl},
-			#{storeId},
-			#{thirdMerchSn},
 			#{isValid},
 			#{note},
 			#{createrSn},
@@ -137,8 +153,6 @@
 			<if test="menuDetail != null">`menu_detail` = #{menuDetail}, </if>
 			<if test="picUrl != null">`pic_url` = #{picUrl}, </if>
 			<if test="menuUrl != null">`menu_url` = #{menuUrl}, </if>
-			<if test="storeId != null">`store_id` = #{storeId}, </if>
-			<if test="thirdMerchSn != null">`third_merch_sn` = #{thirdMerchSn}, </if>
 			<if test="isValid != null">`is_valid` = #{isValid}, </if>
 			<if test="note != null">`note` = #{note}, </if>
 			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>

+ 154 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkCenterMenuStoreRealDao.xml

@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.mk.MkCenterMenuStoreRealDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity" id="mkCenterMenuStoreRealMap">
+        <result property="id" column="id"/>
+        <result property="centerMenuId" column="center_menu_id"/>
+        <result property="storeId" column="store_id"/>
+        <result property="thirdMerchSn" column="third_merch_sn"/>
+        <result property="isValid" column="is_valid"/>
+        <result property="note" column="note"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity">
+		select
+		`id`,
+		`center_menu_id`,
+		`store_id`,
+		`third_merch_sn`,
+		`is_valid`,
+		`note`,
+		`creater_sn`,
+		`create_time`,
+		`moder_sn`,
+		`mod_time`,
+		`tstm`
+		from mk_center_menu_store_real
+		where id = #{id}
+	</select>
+
+	<select id="queryMenuByStoreId" resultType="com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity">
+		select
+		`id`,
+		`center_menu_id`,
+		`store_id`,
+		`third_merch_sn`,
+		`is_valid`,
+		`note`,
+		`creater_sn`,
+		`create_time`,
+		`moder_sn`,
+		`mod_time`,
+		`tstm`
+		from mk_center_menu_store_real
+		where store_id = #{storeId}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity">
+		select
+    		`id`,
+    		`center_menu_id`,
+    		`store_id`,
+    		`third_merch_sn`,
+    		`is_valid`,
+    		`note`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mk_center_menu_store_real
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mk_center_menu_store_real
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity" useGeneratedKeys="true" keyProperty="id">
+		insert into mk_center_menu_store_real(
+			`center_menu_id`,
+			`store_id`,
+			`third_merch_sn`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values
+		<foreach collection="centerMenuIdList" item="item" index="index" separator="," >
+			(
+			#{item},
+			#{storeId},
+			#{thirdMerchSn},
+			#{isValid},
+			#{note},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm}
+			)
+		</foreach>
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.MkCenterMenuStoreRealEntity">
+		update mk_center_menu_store_real 
+		<set>
+			<if test="centerMenuId != null">`center_menu_id` = #{centerMenuId}, </if>
+			<if test="storeId != null">`store_id` = #{storeId}, </if>
+			<if test="thirdMerchSn != null">`third_merch_sn` = #{thirdMerchSn}, </if>
+			<if test="isValid != null">`is_valid` = #{isValid}, </if>
+			<if test="note != null">`note` = #{note}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where id = #{id}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_center_menu_store_real where id = #{value}
+	</delete>
+
+	<delete id="deleteByStoreId">
+		delete from mk_center_menu_store_real where store_id = #{storeId}
+	</delete>
+
+	<delete id="deleteBatch">
+		delete from mk_center_menu_store_real where id in 
+		<foreach item="id" collection="array" open="(" separator="," close=")">
+			#{id}
+		</foreach>
+	</delete>
+
+</mapper>

+ 11 - 10
kmall-admin/src/main/resources/mybatis/mapper/mk/dist/MkDistDao.xml

@@ -42,7 +42,16 @@
 		from mk_dist
 		where dist_id = #{id}
 	</select>
-
+	<select id="queryDistByGoodsId" resultType="com.kmall.admin.entity.mk.dist.MkDistEntity">
+		SELECT
+			d.*
+		FROM
+			mk_dist d
+			LEFT JOIN mall_store s ON d.store_id = s.id
+			LEFT JOIN mall_product_store_rela r ON s.id = r.store_id
+		WHERE
+			r.goods_id = #{goodsId} and r.store_id = #{storeId}
+	</select>
 	<select id="queryObjectByDistName" resultType="com.kmall.admin.entity.mk.dist.MkDistEntity">
 		select
 		`dist_id`,
@@ -213,14 +222,6 @@
 		</if>
 	</select>
 
-	<select id="queryDistByGoodsId" resultType="com.kmall.admin.entity.mk.dist.MkDistEntity">
-		select
-		h.*
-		from mk_dist h where 1 =1
-		<if test="storeId != null">
-			AND h.store_id = #{storeId}
-		</if>
-	</select>
 
 	<insert id="save" parameterType="com.kmall.admin.entity.mk.dist.MkDistEntity" useGeneratedKeys="true" keyProperty="distId">
 		insert into mk_dist(
@@ -254,7 +255,7 @@
 			#{modTime},
 			#{tstm})
 	</insert>
-	 
+
 	<update id="update" parameterType="com.kmall.admin.entity.mk.dist.MkDistEntity">
 		update mk_dist 
 		<set>

+ 6 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromChnlDao.xml

@@ -59,6 +59,9 @@
 		<if test="merchSn != null and merchSn != ''">
 			and t.merch_sn = #{merchSn}
 		</if>
+		<if test="thirdPartyMerchCode != null and thirdPartyMerchCode != ''">
+			AND t.third_party_merch_code = #{thirdPartyMerchCode}
+		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
@@ -89,6 +92,9 @@
 		<if test="merchSn != null and merchSn != ''">
 			and t.merch_sn = #{merchSn}
 		</if>
+		<if test="thirdPartyMerchCode != null and thirdPartyMerchCode != ''">
+			AND t.third_party_merch_code = #{thirdPartyMerchCode}
+		</if>
 	</select>
 	 
 	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStorePromChnlEntity">

+ 57 - 6
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromDao.xml

@@ -110,6 +110,7 @@
 		ps.visit_num 'visitNum',
 		ps.pay_order_num 'payOrderNum',
 		ps.receiv_money 'receivMoney',
+		ps.act_money 'actMoney',
 		t.title 'topicTitle',
 		t.item_pic_url 'itemPicUrl',
 		g.list_pic_url 'listPicUrl'
@@ -120,9 +121,31 @@
 		LEFT JOIN mall_goods g ON p.goods_id = g.id
 		LEFT JOIN mk_store_prom_stat ps ON p.prom_id = ps.prom_id
 		LEFT JOIN mall_store_topic t on p.store_topic_id = t.id
+		left join third_merchant_biz tm on p.third_merch_sn = tm.third_merch_sn
 		WHERE 1=1
-		<if test="name != null and name.trim() != ''">
-			AND p.name LIKE concat('%',#{name},'%')
+		<if test="promName != null and promName.trim() != ''">
+			AND p.prom_name LIKE concat('%',#{promName},'%')
+		</if>
+		<if test="promType != null and promType != ''">
+			AND p.prom_type = #{promType}
+		</if>
+		<if test="isFinished != null and isFinished != ''">
+			AND p.is_finished = #{isFinished}
+		</if>
+		<if test="goodsId != null and goodsId != ''">
+			AND p.goods_id = #{goodsId}
+		</if>
+		<if test="storeId != null and storeId != ''">
+			AND s.id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND p.third_merch_sn = #{thirdMerchSn}
+		</if>
+		<if test="thirdPartyMerchCode != null and thirdPartyMerchCode != ''">
+			AND tm.third_party_merch_code = #{thirdPartyMerchCode}
+		</if>
+		<if test="merchSn != null and merchSn != ''">
+			and tm.merch_sn = #{merchSn}
 		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
@@ -138,11 +161,39 @@
 	</select>
 	
  	<select id="queryTotal" resultType="int">
-		select count(*) from mk_store_prom
+		select count(*) from
+		mk_store_prom p
+		LEFT JOIN mk_store_prom_chnl c ON p.prom_chnl_id = c.prom_chnl_id
+		LEFT JOIN mall_store s ON p.store_id = s.id
+		LEFT JOIN mall_goods g ON p.goods_id = g.id
+		LEFT JOIN mk_store_prom_stat ps ON p.prom_id = ps.prom_id
+		LEFT JOIN mall_store_topic t on p.store_topic_id = t.id
+		left join third_merchant_biz tm on p.third_merch_sn = tm.third_merch_sn
 		WHERE 1=1
-        <if test="name != null and name.trim() != ''">
-            AND name LIKE concat('%',#{name},'%')
-        </if>
+		<if test="promName != null and promName.trim() != ''">
+			AND p.prom_name LIKE concat('%',#{promName},'%')
+		</if>
+		<if test="promType != null and promType != ''">
+			AND p.prom_type = #{promType}
+		</if>
+		<if test="isFinished != null and isFinished != ''">
+			AND p.is_finished = #{isFinished}
+		</if>
+		<if test="goodsId != null and goodsId != ''">
+			AND p.goods_id = #{goodsId}
+		</if>
+		<if test="storeId != null and storeId != ''">
+			AND s.id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND p.third_merch_sn = #{thirdMerchSn}
+		</if>
+		<if test="thirdPartyMerchCode != null and thirdPartyMerchCode != ''">
+			AND tm.third_party_merch_code = #{thirdPartyMerchCode}
+		</if>
+		<if test="merchSn != null and merchSn != ''">
+			and tm.merch_sn = #{merchSn}
+		</if>
 	</select>
 
 	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStorePromEntity">

+ 181 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromOrderRealDao.xml

@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.mk.store.MkStorePromOrderRealDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity" id="mkStorePromOrderRealMap">
+        <result property="promOrderRealId" column="prom_order_real_id"/>
+        <result property="promId" column="prom_id"/>
+        <result property="cartId" column="cart_id"/>
+        <result property="orderId" column="order_id"/>
+		<result property="orderGoodsId" column="order_goods_id"/>
+        <result property="isValid" column="is_valid"/>
+        <result property="note" column="note"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+		<result property="userId" column="user_id"/>
+		<result property="isPromStatScan" column="is_prom_stat_scan"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity">
+		select
+			`prom_order_real_id`,
+			`prom_id`,
+			`cart_id`,
+			`order_id`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`,order_goods_id,user_id,is_prom_stat_scan
+		from mk_store_prom_order_real
+		where prom_order_real_id = #{id}
+	</select>
+
+	<select id="queryPromRealListByMap" resultType="com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity">
+		select
+		`prom_order_real_id`,
+		`prom_id`,
+		`cart_id`,
+		`order_id`,
+		`is_valid`,
+		`note`,
+		`creater_sn`,
+		`create_time`,
+		`moder_sn`,
+		`mod_time`,
+		`tstm`,order_goods_id,user_id,is_prom_stat_scan
+		from mk_store_prom_order_real
+		where 1=1
+		<if test="promId != null and promId != ''">
+			AND prom_id = #{promId}
+		</if>
+		<if test="cartId != null and cartId != ''">
+			AND cart_id = #{cartId}
+		</if>
+		<if test="orderId != null and orderId != ''">
+			AND order_id = #{orderId}
+		</if>
+	</select>
+
+	<select id="querySubmitNumByPromId" resultType="com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity">
+		SELECT
+			s.user_id
+		FROM
+			mk_store_prom_visitors s
+			LEFT JOIN mk_store_prom_order_real r ON s.prom_id = r.prom_id
+			AND s.user_id = r.user_id
+		WHERE
+			r.prom_id = #{promId}
+			GROUP BY r.user_id
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity">
+		select
+    		`prom_order_real_id`,
+    		`prom_id`,
+    		`cart_id`,
+    		`order_id`,
+    		`is_valid`,
+    		`note`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`,order_goods_id,user_id,is_prom_stat_scan
+		from mk_store_prom_order_real
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by prom_order_real_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mk_store_prom_order_real
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity">
+		insert into mk_store_prom_order_real(
+			`prom_order_real_id`,
+			`prom_id`,
+			`cart_id`,
+			`order_id`,
+			order_goods_id,
+			user_id,
+			is_prom_stat_scan,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{promOrderRealId},
+			#{promId},
+			#{cartId},
+			#{orderId},
+			#{orderGoodsId},
+			#{userId},
+			#{isPromStatScan},
+			#{isValid},
+			#{note},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.store.MkStorePromOrderRealEntity">
+		update mk_store_prom_order_real 
+		<set>
+			<if test="promId != null">`prom_id` = #{promId}, </if>
+			<if test="cartId != null">`cart_id` = #{cartId}, </if>
+			<if test="orderId != null">`order_id` = #{orderId}, </if>
+			<if test="orderGoodsId != null">`order_goods_id` = #{orderGoodsId}, </if>
+			<if test="userId != null">`user_id` = #{userId}, </if>
+			<if test="isPromStatScan != null">`is_prom_stat_scan` = #{isPromStatScan}, </if>
+			<if test="isValid != null">`is_valid` = #{isValid}, </if>
+			<if test="note != null">`note` = #{note}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where prom_order_real_id = #{promOrderRealId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_store_prom_order_real where prom_order_real_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_store_prom_order_real where prom_order_real_id in 
+		<foreach item="promOrderRealId" collection="array" open="(" separator="," close=")">
+			#{promOrderRealId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 63 - 35
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStorePromStatDao.xml

@@ -33,6 +33,12 @@
         <result property="moderSn" column="moder_sn"/>
         <result property="modTime" column="mod_time"/>
         <result property="tstm" column="tstm"/>
+		<result property="referrer" column="referrer"/>
+		<result property="shareUserName" column="shareUserName"/>
+		<result property="storeName" column="storeName"/>
+		<result property="promName" column="promName"/>
+		<result property="submitOrderNum" column="submit_order_num"/>
+		<result property="submitNum" column="submit_num"/>
     </resultMap>
 
 	<select id="queryObject" resultType="com.kmall.admin.entity.mk.store.MkStorePromStatEntity">
@@ -65,47 +71,56 @@
 			`create_time`,
 			`moder_sn`,
 			`mod_time`,
-			`tstm`
+			`tstm`,referrer,submit_num,submit_order_num
 		from mk_store_prom_stat
 		where prom_stat_id = #{id}
 	</select>
 
 	<select id="queryList" resultType="com.kmall.admin.entity.mk.store.MkStorePromStatEntity">
 		select
-    		`prom_stat_id`,
-    		`prom_id`,
-    		`store_id`,
-    		`browse_num`,
-    		`visit_num`,
-    		`rela_browse_num`,
-    		`rela_visitor_num`,
-    		`ave_stop_time`,
-    		`ave_visitor_num`,
-    		`visit_page_deep`,
-    		`trans_visitor_num`,
-    		`trans_num`,
-    		`pay_order_num`,
-    		`rela_pay_order_num`,
-    		`payer_num`,
-    		`rela_payer_num`,
-    		`pay_case_num`,
-    		`rela_pay_case_num`,
-    		`receiv_money`,
-    		`rela_receiv_money`,
-    		`act_money`,
-    		`rela_act_money`,
-    		`is_valid`,
-    		`note`,
-    		`creater_sn`,
-    		`create_time`,
-    		`moder_sn`,
-    		`mod_time`,
-    		`tstm`
-		from mk_store_prom_stat
+		t.`prom_stat_id`,
+		t.`prom_id`,
+		t.`store_id`,
+		t.`browse_num`,
+		t.`visit_num`,
+		t.`rela_browse_num`,
+		t.`rela_visitor_num`,
+		t.`ave_stop_time`,
+		t.`ave_visitor_num`,
+		t.`visit_page_deep`,
+		t.`trans_visitor_num`,
+		t.`trans_num`,
+		t.`pay_order_num`,
+		t.`rela_pay_order_num`,
+		t.`payer_num`,
+		t.`rela_payer_num`,
+		t.`pay_case_num`,
+		t.`rela_pay_case_num`,
+		t.`receiv_money`,
+		t.`rela_receiv_money`,
+		t.`act_money`,
+		t.`rela_act_money`,
+		t.`is_valid`,
+		t.`note`,
+		t.`creater_sn`,
+		t.`create_time`,
+		t.`moder_sn`,
+		t.`mod_time`,
+		t.`tstm`,t.referrer,u.username shareUserName,s.store_name storeName,p.prom_name promName,submit_num,submit_order_num
+		from mk_store_prom_stat t
+		left join mall_user u on t.referrer = u.id
+		left join mall_store s on t.store_id = s.id
+		left join mk_store_prom p on p.prom_id = t.prom_id
 		WHERE 1=1
 		<if test="name != null and name.trim() != ''">
 			AND name LIKE concat('%',#{name},'%')
 		</if>
+		<if test="storeId != null and storeId != ''">
+			AND t.store_id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND s.third_merch_sn = #{thirdMerchSn}
+		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
@@ -120,11 +135,21 @@
 	</select>
 	
  	<select id="queryTotal" resultType="int">
-		select count(*) from mk_store_prom_stat
+		select count(*)
+		from mk_store_prom_stat t
+		left join mall_user u on t.referrer = u.id
+		left join mall_store s on t.store_id = s.id
+		left join mk_store_prom p on p.prom_id = t.prom_id
 		WHERE 1=1
         <if test="name != null and name.trim() != ''">
             AND name LIKE concat('%',#{name},'%')
         </if>
+		<if test="storeId != null and storeId != ''">
+			AND t.store_id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND s.third_merch_sn = #{thirdMerchSn}
+		</if>
 	</select>
 	 
 	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStorePromStatEntity">
@@ -157,7 +182,8 @@
 			`create_time`,
 			`moder_sn`,
 			`mod_time`,
-			`tstm`)
+			`tstm`,
+			referrer)
 		values(
 			#{promStatId},
 			#{promId},
@@ -187,7 +213,8 @@
 			#{createTime},
 			#{moderSn},
 			#{modTime},
-			#{tstm})
+			#{tstm},
+			#{referrer})
 	</insert>
 	 
 	<update id="update" parameterType="com.kmall.admin.entity.mk.store.MkStorePromStatEntity">
@@ -220,7 +247,8 @@
 			<if test="createTime != null">`create_time` = #{createTime}, </if>
 			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
 			<if test="modTime != null">`mod_time` = #{modTime}, </if>
-			<if test="tstm != null">`tstm` = #{tstm}</if>
+			<if test="tstm != null">`tstm` = #{tstm},</if>
+			<if test="referrer != null">`referrer` = #{referrer}</if>
 		</set>
 		where prom_stat_id = #{promStatId}
 	</update>

+ 339 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTicketDiscountDao.xml

@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.mk.store.MkStoreTicketDiscountDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity" id="mkStoreTicketDiscountMap">
+        <result property="tickDiscId" column="tick_disc_id"/>
+        <result property="tickDiscType" column="tick_disc_type"/>
+        <result property="tickDiscSubTitle" column="tick_disc_sub_title"/>
+        <result property="merchSn" column="merch_sn"/>
+        <result property="thirdMerchSn" column="third_merch_sn"/>
+        <result property="storeId" column="store_id"/>
+        <result property="storeTopicId" column="store_topic_id"/>
+        <result property="name" column="name"/>
+        <result property="voucherMoney" column="voucher_money"/>
+        <result property="voucherCond" column="voucher_cond"/>
+        <result property="discRatio" column="disc_ratio"/>
+        <result property="discCond" column="disc_cond"/>
+        <result property="exchCond" column="exch_cond"/>
+        <result property="effectTimeType" column="effect_time_type"/>
+        <result property="fixBegTime" column="fix_beg_time"/>
+        <result property="fixEndTime" column="fix_end_time"/>
+        <result property="postponeNum" column="postpone_num"/>
+        <result property="validDayNum" column="valid_day_num"/>
+        <result property="ticketNum" column="ticket_num"/>
+        <result property="applyType" column="apply_type"/>
+        <result property="getEnter" column="get_enter"/>
+        <result property="canShareGet" column="can_share_get"/>
+        <result property="limitNum" column="limit_num"/>
+        <result property="advImgUrl" column="adv_img_url"/>
+        <result property="storeLogoUrl" column="store_logo_url"/>
+        <result property="storeName" column="store_name"/>
+        <result property="ticketColor" column="ticket_color"/>
+        <result property="optDecl" column="opt_decl"/>
+        <result property="discDecl" column="disc_decl"/>
+        <result property="useNoti" column="use_noti"/>
+        <result property="svrTel" column="svr_tel"/>
+        <result property="isValid" column="is_valid"/>
+		<result property="isPast" column="is_past"/>
+        <result property="note" column="note"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+        <result property="sendType" column="send_type"/>
+		<result property="discSellCount" column="disc_sell_count"/>
+		<result property="discSellDoller" column="disc_sell_doller"/>
+		<result property="guid" column="guid"/>
+		<result property="goodsBizType" column="goods_biz_type"/>
+		<result property="isStoreShow" column="is_store_show"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity">
+		select
+			`tick_disc_id`,
+			`tick_disc_type`,
+			`tick_disc_sub_title`,
+			`merch_sn`,
+			`third_merch_sn`,
+			`store_id`,goods_biz_type,is_store_show,
+			`store_topic_id`,
+			`name`,
+			`voucher_money`,
+			`voucher_cond`,
+			`disc_ratio`,
+			`disc_cond`,
+			`exch_cond`,
+			`effect_time_type`,
+			`fix_beg_time`,
+			`fix_end_time`,
+			`postpone_num`,
+			`valid_day_num`,
+			`ticket_num`,
+			`apply_type`,
+			`get_enter`,
+			`can_share_get`,
+			`limit_num`,
+			`adv_img_url`,
+			`store_logo_url`,
+			`store_name`,
+			`ticket_color`,
+			`opt_decl`,
+			`disc_decl`,
+			`use_noti`,
+			`svr_tel`,
+			`is_valid`,
+			is_past,
+			disc_sell_count,
+			disc_sell_doller,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`,
+			`send_type`,guid
+		from mk_store_ticket_discount
+		where tick_disc_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity">
+		select
+			d.`tick_disc_id`,
+			d.`tick_disc_type`,
+			d.`tick_disc_sub_title`,
+			d.`merch_sn`,
+			d.`third_merch_sn`,
+			d.`store_id`,goods_biz_type,
+			d.`store_topic_id`,
+			d.`name`,
+			d.`voucher_money`,
+			d.`voucher_cond`,
+			d.`disc_ratio`,
+			d.`disc_cond`,
+			d.`exch_cond`,
+			d.`effect_time_type`,
+			d.`fix_beg_time`,
+			d.`fix_end_time`,
+			d.`postpone_num`,
+			d.`valid_day_num`,
+			d.`ticket_num`,
+			d.`apply_type`,
+			d.`get_enter`,
+			d.`can_share_get`,
+			d.`limit_num`,
+			d.`adv_img_url`,
+			d.`store_logo_url`,
+			d.`store_name`,
+			d.`ticket_color`,
+			d.`opt_decl`,
+			d.`disc_decl`,
+			d.`use_noti`,
+			d.`svr_tel`,
+			d.`is_valid`,
+			d.is_past,
+			d.disc_sell_count,
+			d.disc_sell_doller,
+			d.`note`,
+			d.`creater_sn`,
+			d.`create_time`,
+			d.`moder_sn`,
+			d.`mod_time`,
+			d.`tstm`,
+			d.`send_type`,d.guid
+		from mk_store_ticket_discount d
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND d.name LIKE concat('%',#{name},'%')
+		</if>
+		<if test="storeId != null and storeId != ''">
+			AND d.store_id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND d.third_merch_sn = #{thirdMerchSn}
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by d.tick_disc_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mk_store_ticket_discount d
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND d.name LIKE concat('%',#{name},'%')
+        </if>
+		<if test="storeId != null and storeId != ''">
+			AND d.store_id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND d.third_merch_sn = #{thirdMerchSn}
+		</if>
+	</select>
+
+	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity" useGeneratedKeys="true" keyProperty="tickDiscId">
+		insert into mk_store_ticket_discount(
+			`tick_disc_type`,
+			`tick_disc_sub_title`,
+			`merch_sn`,
+			`third_merch_sn`,
+			`store_id`,
+			goods_biz_type,
+			`store_topic_id`,
+			`name`,
+			`voucher_money`,
+			`voucher_cond`,
+			`disc_ratio`,
+			`disc_cond`,
+			`exch_cond`,
+			`effect_time_type`,
+			`fix_beg_time`,
+			`fix_end_time`,
+			`postpone_num`,
+			`valid_day_num`,
+			`ticket_num`,
+			`apply_type`,
+			`get_enter`,
+			`can_share_get`,
+			`limit_num`,
+			`adv_img_url`,
+			`store_logo_url`,
+			`store_name`,
+			`ticket_color`,
+			`opt_decl`,
+			`disc_decl`,
+			`use_noti`,
+			`svr_tel`,
+			`is_valid`,
+			is_past,
+			is_store_show,
+			disc_sell_count,
+			disc_sell_doller,
+			guid,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`,
+			`send_type`)
+		values(
+			#{tickDiscType},
+			#{tickDiscSubTitle},
+			#{merchSn},
+			#{thirdMerchSn},
+			#{storeId},
+			#{goodsBizType},
+			#{storeTopicId},
+			#{name},
+			#{voucherMoney},
+			#{voucherCond},
+			#{discRatio},
+			#{discCond},
+			#{exchCond},
+			#{effectTimeType},
+			#{fixBegTime},
+			#{fixEndTime},
+			#{postponeNum},
+			#{validDayNum},
+			#{ticketNum},
+			#{applyType},
+			#{getEnter},
+			#{canShareGet},
+			#{limitNum},
+			#{advImgUrl},
+			#{storeLogoUrl},
+			#{storeName},
+			#{ticketColor},
+			#{optDecl},
+			#{discDecl},
+			#{useNoti},
+			#{svrTel},
+			#{isValid},
+			#{isPast},
+			#{isStoreShow},
+			#{discSellCount},
+			#{discSellDoller},
+			#{guid},
+			#{note},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm},
+			#{sendType})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountEntity">
+		update mk_store_ticket_discount 
+		<set>
+			<if test="tickDiscType != null">`tick_disc_type` = #{tickDiscType}, </if>
+			<if test="tickDiscSubTitle != null">`tick_disc_sub_title` = #{tickDiscSubTitle}, </if>
+			<if test="merchSn != null">`merch_sn` = #{merchSn}, </if>
+			<if test="thirdMerchSn != null">`third_merch_sn` = #{thirdMerchSn}, </if>
+			<if test="storeId != null">`store_id` = #{storeId}, </if>
+			<if test="goodsBizType != null">`goods_biz_type` = #{goodsBizType}, </if>
+			<if test="storeTopicId != null">`store_topic_id` = #{storeTopicId}, </if>
+			<if test="name != null">`name` = #{name}, </if>
+			<if test="voucherMoney != null">`voucher_money` = #{voucherMoney}, </if>
+			<if test="voucherCond != null">`voucher_cond` = #{voucherCond}, </if>
+			<if test="discRatio != null">`disc_ratio` = #{discRatio}, </if>
+			<if test="discCond != null">`disc_cond` = #{discCond}, </if>
+			<if test="exchCond != null">`exch_cond` = #{exchCond}, </if>
+			<if test="effectTimeType != null">`effect_time_type` = #{effectTimeType}, </if>
+			<if test="fixBegTime != null">`fix_beg_time` = #{fixBegTime}, </if>
+			<if test="fixEndTime != null">`fix_end_time` = #{fixEndTime}, </if>
+			<if test="postponeNum != null">`postpone_num` = #{postponeNum}, </if>
+			<if test="validDayNum != null">`valid_day_num` = #{validDayNum}, </if>
+			<if test="ticketNum != null">`ticket_num` = #{ticketNum}, </if>
+			<if test="applyType != null">`apply_type` = #{applyType}, </if>
+			<if test="getEnter != null">`get_enter` = #{getEnter}, </if>
+			<if test="canShareGet != null">`can_share_get` = #{canShareGet}, </if>
+			<if test="limitNum != null">`limit_num` = #{limitNum}, </if>
+			<if test="advImgUrl != null">`adv_img_url` = #{advImgUrl}, </if>
+			<if test="storeLogoUrl != null">`store_logo_url` = #{storeLogoUrl}, </if>
+			<if test="storeName != null">`store_name` = #{storeName}, </if>
+			<if test="ticketColor != null">`ticket_color` = #{ticketColor}, </if>
+			<if test="optDecl != null">`opt_decl` = #{optDecl}, </if>
+			<if test="discDecl != null">`disc_decl` = #{discDecl}, </if>
+			<if test="useNoti != null">`use_noti` = #{useNoti}, </if>
+			<if test="svrTel != null">`svr_tel` = #{svrTel}, </if>
+			<if test="isValid != null">`is_valid` = #{isValid}, </if>
+			<if test="isPast != null">`is_past` = #{isPast}, </if>
+			<if test="isStoreShow != null">`is_store_show` = #{isStoreShow}, </if>
+			<if test="discSellCount != null">`disc_sell_count` = #{discSellCount}, </if>
+			<if test="discSellDoller != null">`disc_sell_doller` = #{discSellDoller}, </if>
+			<if test="guid != null">`guid` = #{guid}, </if>
+			<if test="note != null">`note` = #{note}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}, </if>
+			<if test="sendType != null">`send_type` = #{sendType}</if>
+		</set>
+		where tick_disc_id = #{tickDiscId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_store_ticket_discount where tick_disc_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_store_ticket_discount where tick_disc_id in 
+		<foreach item="tickDiscId" collection="array" open="(" separator="," close=")">
+			#{tickDiscId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 153 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTicketDiscountGoodsDao.xml

@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.mk.store.MkStoreTicketDiscountGoodsDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity" id="mkStoreTicketDiscountGoodsMap">
+        <result property="discGoodId" column="disc_good_id"/>
+        <result property="tickDiscId" column="tick_disc_id"/>
+        <result property="applyType" column="apply_type"/>
+        <result property="storeRelaId" column="store_rela_id"/>
+        <result property="isValid" column="is_valid"/>
+        <result property="note" column="note"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity">
+		select
+			`disc_good_id`,
+			`tick_disc_id`,
+			`apply_type`,
+			`store_rela_id`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mk_store_ticket_discount_goods
+		where disc_good_id = #{id}
+	</select>
+
+	<select id="queryObjectByStoreReal" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity">
+		select
+		`disc_good_id`,
+		`tick_disc_id`,
+		`apply_type`,
+		`store_rela_id`,
+		`is_valid`,
+		`note`,
+		`creater_sn`,
+		`create_time`,
+		`moder_sn`,
+		`mod_time`,
+		`tstm`
+		from mk_store_ticket_discount_goods
+		where tick_disc_id = #{tickDiscId} and store_rela_id = #{storeRelaId} and apply_type = #{applyType}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity">
+		select
+    		`disc_good_id`,
+    		`tick_disc_id`,
+    		`apply_type`,
+    		`store_rela_id`,
+    		`is_valid`,
+    		`note`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mk_store_ticket_discount_goods
+		WHERE 1=1
+		<if test="tickDiscId != null and tickDiscId != ''">
+			AND tick_disc_id = #{tickDiscId}
+		</if>
+		<if test="applyType != null and applyType != ''">
+			AND apply_type = #{applyType}
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by disc_good_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mk_store_ticket_discount_goods
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity" useGeneratedKeys="true" keyProperty="discGoodId">
+		insert into mk_store_ticket_discount_goods(
+			`tick_disc_id`,
+			`apply_type`,
+			`store_rela_id`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{tickDiscId},
+			#{applyType},
+			#{storeRelaId},
+			#{isValid},
+			#{note},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.store.MkStoreTicketDiscountGoodsEntity">
+		update mk_store_ticket_discount_goods 
+		<set>
+			<if test="tickDiscId != null">`tick_disc_id` = #{tickDiscId}, </if>
+			<if test="applyType != null">`apply_type` = #{applyType}, </if>
+			<if test="storeRelaId != null">`store_rela_id` = #{storeRelaId}, </if>
+			<if test="isValid != null">`is_valid` = #{isValid}, </if>
+			<if test="note != null">`note` = #{note}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where disc_good_id = #{discGoodId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_store_ticket_discount_goods where disc_good_id = #{value}
+	</delete>
+
+	<delete id="deleteByTickDistId">
+		delete from mk_store_ticket_discount_goods where tick_disc_id = #{value}
+	</delete>
+
+	<delete id="deleteBatch">
+		delete from mk_store_ticket_discount_goods where disc_good_id in 
+		<foreach item="discGoodId" collection="array" open="(" separator="," close=")">
+			#{discGoodId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 274 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTicketGoodsTempDao.xml

@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.mk.store.MkStoreTicketGoodsTempDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity" id="mkStoreTicketGoodsTempMap">
+        <result property="discGoodTempId" column="disc_good_temp_id"/>
+		<result property="guid" column="guid"/>
+        <result property="applyType" column="apply_type"/>
+        <result property="storeRelaId" column="store_rela_id"/>
+        <result property="isValid" column="is_valid"/>
+        <result property="note" column="note"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+		<result property="isSubmit" column="is_submit"/>
+		<result property="isButtonCannel" column="is_button_cannel"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		select
+			`disc_good_temp_id`,guid,is_submit,
+			`apply_type`,
+			`store_rela_id`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`,is_button_cannel
+		from mk_store_ticket_goods_temp
+		where disc_good_temp_id = #{id}
+	</select>
+
+	<select id="queryGoodsTempByRealId" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		select
+		`disc_good_temp_id`,guid,is_submit,
+		`apply_type`,
+		`store_rela_id`,
+		`is_valid`,
+		`note`,
+		`creater_sn`,
+		`create_time`,
+		`moder_sn`,
+		`mod_time`,
+		`tstm`,is_button_cannel
+		from mk_store_ticket_goods_temp
+		where store_rela_id = #{storeRealId} and guid = #{guid}
+	</select>
+
+	<select id="queryGoodsTempByGuid" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		select
+		`disc_good_temp_id`,guid,is_submit,
+		`apply_type`,
+		`store_rela_id`,
+		`is_valid`,
+		`note`,
+		`creater_sn`,
+		`create_time`,
+		`moder_sn`,
+		`mod_time`,
+		`tstm`,is_button_cannel
+		from mk_store_ticket_goods_temp
+		where guid = #{guid}
+	</select>
+
+	<select id="queryGoodsTempByIsValid" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		select
+		s.`disc_good_temp_id`,
+		s.guid,
+		s.is_submit,
+		s.`apply_type`,
+		s.`store_rela_id`,
+		s.`is_valid`,is_button_cannel
+		from mk_store_ticket_goods_temp s LEFT JOIN mall_product_store_rela r on s.store_rela_id=r.id
+		where guid = #{guid}
+		<if test="isValid != null">
+			AND s.is_valid = #{isValid}
+		</if>
+		<if test="isButtonCannel != null">
+			AND s.is_button_cannel = #{isButtonCannel}
+		</if>
+		<if test="storeId != null">
+			AND r.store_id = #{storeId}
+		</if>
+		<if test="applyType != null and applyType.trim() != ''">
+			AND apply_type = #{applyType}
+		</if>
+	</select>
+
+	<!--暂时无用-->
+	<select id="queryGoodsTempByGuidAndIsSubmit" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		select
+		`disc_good_temp_id`,guid,is_submit,
+		`apply_type`,
+		`store_rela_id`
+		from mk_store_ticket_goods_temp s LEFT JOIN mall_product_store_rela r on s.store_rela_id=r.id
+		where guid = #{guid}
+		<if test="isSubmit != null and isSubmit.trim() != ''">
+			AND is_submit = #{isSubmit}
+		</if>
+		<if test="storeId != null">
+			AND r.store_id = #{storeId}
+		</if>
+		<if test="applyType != null and applyType.trim() != ''">
+			AND apply_type = #{applyType}
+		</if>
+
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		select
+    		`disc_good_temp_id`,guid,is_submit,
+    		`apply_type`,
+    		`store_rela_id`,
+    		`is_valid`,
+    		`note`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mk_store_ticket_goods_temp
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by disc_good_temp_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+
+	<select id="queryAllDiscountByStoreId" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		SELECT
+			s.id,
+			s.goods_id 'goodsId',
+			s.retail_price,
+			g.store_rela_id 'isCheck',
+			g.apply_type ,
+			gs.name 'goodsName',
+			g.disc_good_temp_id,g.guid
+		FROM
+			mall_product_store_rela s
+			INNER JOIN mk_store_ticket_goods_temp g ON s.id = g.store_rela_id
+			inner join mall_goods gs on s.goods_id = gs.id
+		WHERE 1=1 and gs.is_delete = 0
+			and s.store_id = #{storeId}
+			and g.guid = #{guid}
+			and g.is_valid = 0 AND g.is_button_cannel = 0
+		<if test="applyType != null">
+			and g.apply_type = #{applyType}
+		</if>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+
+	<select id="queryTotallDiscountByStoreId" resultType="int">
+		select count(*)
+		FROM
+		mall_product_store_rela s
+		INNER JOIN mk_store_ticket_goods_temp g ON s.id = g.store_rela_id
+		inner join mall_goods gs on s.goods_id = gs.id
+		WHERE 1=1 and gs.is_delete = 0
+		and s.store_id = #{storeId}
+		and g.guid = #{guid}
+		and g.is_valid = 0 AND g.is_button_cannel = 0
+		<if test="applyType != null">
+			and g.apply_type = #{applyType}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mk_store_ticket_goods_temp
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity" useGeneratedKeys="true" keyProperty="discGoodTempId">
+		insert into mk_store_ticket_goods_temp(
+			`apply_type`,guid,
+			`store_rela_id`,
+			`is_valid`,is_submit,is_button_cannel,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{applyType},#{guid},
+			#{storeRelaId},
+			#{isValid},#{isSubmit},#{isButtonCannel},
+			#{note},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		update mk_store_ticket_goods_temp 
+		<set>
+			<if test="applyType != null">`apply_type` = #{applyType}, </if>
+			<if test="guid != null">guid = #{guid},</if>
+			<if test="storeRelaId != null">`store_rela_id` = #{storeRelaId}, </if>
+			<if test="isValid != null">`is_valid` = #{isValid}, </if>
+			<if test="isSubmit != null">`is_submit` = #{isSubmit}, </if>
+			<if test="isButtonCannel != null">`is_button_cannel` = #{isButtonCannel}, </if>
+			<if test="note != null">`note` = #{note}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where disc_good_temp_id = #{discGoodTempId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_store_ticket_goods_temp where disc_good_temp_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_store_ticket_goods_temp where disc_good_temp_id in 
+		<foreach item="discGoodTempId" collection="array" open="(" separator="," close=")">
+			#{discGoodTempId}
+		</foreach>
+	</delete>
+
+	<delete id="deleteByGuid">
+		delete from mk_store_ticket_goods_temp where guid = #{guid}
+	</delete>
+
+	<select id="queryGoodsTempIdBy" resultType="com.kmall.admin.entity.mk.store.MkStoreTicketGoodsTempEntity">
+		SELECT
+		g.disc_good_temp_id
+		FROM
+		mall_product_store_rela s
+		INNER JOIN mk_store_ticket_goods_temp g ON s.id = g.store_rela_id
+		INNER JOIN mall_goods gs ON s.goods_id = gs.id
+		WHERE
+		1 = 1
+		AND gs.is_delete = 0
+		AND s.store_id = #{storeId}
+		AND g.guid = #{guid}
+		<if test="isValid != null">
+			AND g.is_valid = #{isValid}
+		</if>
+		<if test="isButtonCannel != null">
+			AND g.is_button_cannel = #{isButtonCannel}
+		</if>
+		<if test="storeRelaIdList != null">
+			AND g.store_rela_id NOT IN
+			<foreach collection="storeRelaIdList" item="listItem" open="(" separator="," close=")">
+				#{listItem}
+			</foreach></if>
+	</select>
+
+</mapper>

+ 255 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTopicStatDao.xml

@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.mk.store.MkStoreTopicStatDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity" id="mkStoreTopicStatMap">
+        <result property="storeTopicStatId" column="store_topic_stat_id"/>
+        <result property="storeTopicId" column="store_topic_id"/>
+        <result property="storeId" column="store_id"/>
+        <result property="browseNum" column="browse_num"/>
+        <result property="visitNum" column="visit_num"/>
+		<result property="receiveNum" column="receive_num"/>
+        <result property="relaBrowseNum" column="rela_browse_num"/>
+        <result property="relaVisitorNum" column="rela_visitor_num"/>
+        <result property="visitPageDeep" column="visit_page_deep"/>
+        <result property="transVisitorNum" column="trans_visitor_num"/>
+        <result property="submitOrderNum" column="submit_order_num"/>
+        <result property="submitNum" column="submit_num"/>
+        <result property="payOrderNum" column="pay_order_num"/>
+        <result property="relaPayOrderNum" column="rela_pay_order_num"/>
+        <result property="payerNum" column="payer_num"/>
+        <result property="relaPayerNum" column="rela_payer_num"/>
+        <result property="payCaseNum" column="pay_case_num"/>
+        <result property="relaPayCaseNum" column="rela_pay_case_num"/>
+        <result property="receivMoney" column="receiv_money"/>
+        <result property="relaReceivMoney" column="rela_receiv_money"/>
+        <result property="actMoney" column="act_money"/>
+        <result property="relaActMoney" column="rela_act_money"/>
+        <result property="isValid" column="is_valid"/>
+        <result property="note" column="note"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity">
+		select
+			`store_topic_stat_id`,
+			`store_topic_id`,
+			`store_id`,
+			`browse_num`,
+			`visit_num`,
+			receive_num,
+			`rela_browse_num`,
+			`rela_visitor_num`,
+			`visit_page_deep`,
+			`trans_visitor_num`,
+			`submit_order_num`,
+			`submit_num`,
+			`pay_order_num`,
+			`rela_pay_order_num`,
+			`payer_num`,
+			`rela_payer_num`,
+			`pay_case_num`,
+			`rela_pay_case_num`,
+			`receiv_money`,
+			`rela_receiv_money`,
+			`act_money`,
+			`rela_act_money`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mk_store_topic_stat
+		where store_topic_stat_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity">
+		SELECT
+		t.`store_topic_stat_id`,
+		t.`store_topic_id`,
+		t.`store_id`,
+		t.`browse_num`,
+		t.`visit_num`,
+		t.receive_num,
+		t.`rela_browse_num`,
+		t.`rela_visitor_num`,
+		t.`visit_page_deep`,
+		t.`trans_visitor_num`,
+		t.`submit_order_num`,
+		t.`submit_num`,
+		t.`pay_order_num`,
+		t.`rela_pay_order_num`,
+		t.`payer_num`,
+		t.`rela_payer_num`,
+		t.`pay_case_num`,
+		t.`rela_pay_case_num`,
+		t.`receiv_money`,
+		t.`rela_receiv_money`,
+		t.`act_money`,
+		t.`rela_act_money`,
+		t.`is_valid`,
+		t.`note`,
+		t.`creater_sn`,
+		t.`create_time`,
+		t.`moder_sn`,
+		t.`mod_time`,
+		t.`tstm`,s.store_name 'storeName', p.title 'storeTopicName',pt.prom_type_name 'storeTopicType'
+		FROM mk_store_topic_stat t
+		LEFT JOIN mall_store s ON t.store_id = s.id
+		LEFT JOIN mall_store_topic p ON p.id = t.store_topic_id
+		LEFT JOIN mk_store_prom_type pt ON p.prom_type_id = pt.prom_type_id
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+		<if test="storeId != null and storeId != ''">
+			AND t.store_id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND s.third_merch_sn = #{thirdMerchSn}
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by store_topic_stat_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		SELECT count(*) FROM mk_store_topic_stat t
+		LEFT JOIN mall_store s ON t.store_id = s.id
+		LEFT JOIN mall_store_topic p ON p.id = t.store_topic_id
+		LEFT JOIN mk_store_prom_type pt ON p.prom_type_id = pt.prom_type_id
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+		<if test="storeId != null and storeId != ''">
+			AND t.store_id = #{storeId}
+		</if>
+		<if test="thirdMerchSn != null and thirdMerchSn != ''">
+			AND s.third_merch_sn = #{thirdMerchSn}
+		</if>
+	</select>
+
+	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity" useGeneratedKeys="true" keyProperty="storeTopicStatId">
+		insert into mk_store_topic_stat(
+			`store_topic_id`,
+			`store_id`,
+			`browse_num`,
+			`visit_num`,
+			receive_num,
+			`rela_browse_num`,
+			`rela_visitor_num`,
+			`visit_page_deep`,
+			`trans_visitor_num`,
+			`submit_order_num`,
+			`submit_num`,
+			`pay_order_num`,
+			`rela_pay_order_num`,
+			`payer_num`,
+			`rela_payer_num`,
+			`pay_case_num`,
+			`rela_pay_case_num`,
+			`receiv_money`,
+			`rela_receiv_money`,
+			`act_money`,
+			`rela_act_money`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{storeTopicId},
+			#{storeId},
+			#{browseNum},
+			#{visitNum},
+			#{receiveNum},
+			#{relaBrowseNum},
+			#{relaVisitorNum},
+			#{visitPageDeep},
+			#{transVisitorNum},
+			#{submitOrderNum},
+			#{submitNum},
+			#{payOrderNum},
+			#{relaPayOrderNum},
+			#{payerNum},
+			#{relaPayerNum},
+			#{payCaseNum},
+			#{relaPayCaseNum},
+			#{receivMoney},
+			#{relaReceivMoney},
+			#{actMoney},
+			#{relaActMoney},
+			#{isValid},
+			#{note},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.store.MkStoreTopicStatEntity">
+		update mk_store_topic_stat 
+		<set>
+			<if test="storeTopicId != null">`store_topic_id` = #{storeTopicId}, </if>
+			<if test="storeId != null">`store_id` = #{storeId}, </if>
+			<if test="browseNum != null">`browse_num` = #{browseNum}, </if>
+			<if test="visitNum != null">`visit_num` = #{visitNum}, </if>
+			<if test="receiveNum != null">`receive_num` = #{receiveNum}, </if>
+			<if test="relaBrowseNum != null">`rela_browse_num` = #{relaBrowseNum}, </if>
+			<if test="relaVisitorNum != null">`rela_visitor_num` = #{relaVisitorNum}, </if>
+			<if test="visitPageDeep != null">`visit_page_deep` = #{visitPageDeep}, </if>
+			<if test="transVisitorNum != null">`trans_visitor_num` = #{transVisitorNum}, </if>
+			<if test="submitOrderNum != null">`submit_order_num` = #{submitOrderNum}, </if>
+			<if test="submitNum != null">`submit_num` = #{submitNum}, </if>
+			<if test="payOrderNum != null">`pay_order_num` = #{payOrderNum}, </if>
+			<if test="relaPayOrderNum != null">`rela_pay_order_num` = #{relaPayOrderNum}, </if>
+			<if test="payerNum != null">`payer_num` = #{payerNum}, </if>
+			<if test="relaPayerNum != null">`rela_payer_num` = #{relaPayerNum}, </if>
+			<if test="payCaseNum != null">`pay_case_num` = #{payCaseNum}, </if>
+			<if test="relaPayCaseNum != null">`rela_pay_case_num` = #{relaPayCaseNum}, </if>
+			<if test="receivMoney != null">`receiv_money` = #{receivMoney}, </if>
+			<if test="relaReceivMoney != null">`rela_receiv_money` = #{relaReceivMoney}, </if>
+			<if test="actMoney != null">`act_money` = #{actMoney}, </if>
+			<if test="relaActMoney != null">`rela_act_money` = #{relaActMoney}, </if>
+			<if test="isValid != null">`is_valid` = #{isValid}, </if>
+			<if test="note != null">`note` = #{note}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where store_topic_stat_id = #{storeTopicStatId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_store_topic_stat where store_topic_stat_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_store_topic_stat where store_topic_stat_id in 
+		<foreach item="storeTopicStatId" collection="array" open="(" separator="," close=")">
+			#{storeTopicStatId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 123 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/store/MkStoreTopicVisitorsDao.xml

@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.kmall.admin.dao.mk.store.MkStoreTopicVisitorsDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity" id="mkStoreTopicVisitorsMap">
+        <result property="topicVisitorsId" column="topic_visitors_id"/>
+        <result property="storeTopicId" column="store_topic_id"/>
+        <result property="userId" column="user_id"/>
+        <result property="isValid" column="is_valid"/>
+        <result property="note" column="note"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity">
+		select
+			`topic_visitors_id`,
+			`store_topic_id`,
+			`user_id`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
+		from mk_store_topic_visitors
+		where topic_visitors_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity">
+		select
+    		`topic_visitors_id`,
+    		`store_topic_id`,
+    		`user_id`,
+    		`is_valid`,
+    		`note`,
+    		`creater_sn`,
+    		`create_time`,
+    		`moder_sn`,
+    		`mod_time`,
+    		`tstm`
+		from mk_store_topic_visitors
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by topic_visitors_id desc
+			</otherwise>
+        </choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+	
+ 	<select id="queryTotal" resultType="int">
+		select count(*) from mk_store_topic_visitors
+		WHERE 1=1
+        <if test="name != null and name.trim() != ''">
+            AND name LIKE concat('%',#{name},'%')
+        </if>
+	</select>
+	 
+	<insert id="save" parameterType="com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity" useGeneratedKeys="true" keyProperty="topicVisitorsId">
+		insert into mk_store_topic_visitors(
+			`store_topic_id`,
+			`user_id`,
+			`is_valid`,
+			`note`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
+		values(
+			#{storeTopicId},
+			#{userId},
+			#{isValid},
+			#{note},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.store.MkStoreTopicVisitorsEntity">
+		update mk_store_topic_visitors 
+		<set>
+			<if test="storeTopicId != null">`store_topic_id` = #{storeTopicId}, </if>
+			<if test="userId != null">`user_id` = #{userId}, </if>
+			<if test="isValid != null">`is_valid` = #{isValid}, </if>
+			<if test="note != null">`note` = #{note}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+			<if test="modTime != null">`mod_time` = #{modTime}, </if>
+			<if test="tstm != null">`tstm` = #{tstm}</if>
+		</set>
+		where topic_visitors_id = #{topicVisitorsId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_store_topic_visitors where topic_visitors_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_store_topic_visitors where topic_visitors_id in 
+		<foreach item="topicVisitorsId" collection="array" open="(" separator="," close=")">
+			#{topicVisitorsId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 42 - 11
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkcentermenu.html

@@ -6,7 +6,7 @@
 </head>
 <body>
 <div id="rrapp" v-cloak>
-	<div v-show="showList">
+	<div v-show="!showViewList">
         <Row :gutter="16">
             <div class="search-group">
                 <i-col span="4">
@@ -17,13 +17,19 @@
             </div>
             <div class="buttons-group">
                 #if($shiro.hasPermission("mkcentermenu:save"))
-                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增菜单</i-button>
                 #end
-                #if($shiro.hasPermission("mkcentermenu:update"))
-                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #if($shiro.hasPermission("mkcentermenustorereal:save"))
+                <i-button type="info" @click="addMenuStoreReal"><i class="fa fa-plus"></i>&nbsp;新增门店营销菜单</i-button>
                 #end
+                <!--#if($shiro.hasPermission("mkcentermenu:update"))-->
+                <!--<i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>-->
+                <!--#end-->
+                <!--#if($shiro.hasPermission("mkcentermenu:delete"))-->
+                <!--<i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>-->
+                <!--#end-->
                 #if($shiro.hasPermission("mkcentermenu:delete"))
-                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                <i-button type="error" @click="delMenuStoreReal"><i class="fa fa-trash-o"></i>&nbsp;删除门店营销菜单</i-button>
                 #end
             </div>
         </Row>
@@ -46,19 +52,45 @@
             <Form-item label="菜单跳转url" prop="menuUrl">
                 <i-input v-model="mkCenterMenu.menuUrl" placeholder="菜单跳转url"/>
             </Form-item>
+            <Form-item label="是否有效" prop="isValid">
+                <Radio-group v-model="mkCenterMenu.isValid">
+                    <Radio label="1">
+                        <span>无效</span>
+                    </Radio>
+                    <Radio label="0">
+                        <span>有效</span>
+                    </Radio>
+                </Radio-group>
+            </Form-item>
+            <Form-item>
+                <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
+                <i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
+                <i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
+            </Form-item>
+        </i-form>
+	</Card>
+
+    <Card v-show="!showInfoList">
+        <p slot="title">{{title}}</p>
+        <i-form ref="formValidate" :model="mkCenterMenuStoreReal" :rules="ruleValidate" :label-width="100">
             <Form-item label="所属三方商户" prop="thirdMerchSn">
-                <i-select v-model="mkCenterMenu.thirdMerchSn" placeholder="所属三方商户" @on-change="changeStore" style="width: 268px;">
+                <i-select v-model="mkCenterMenuStoreReal.thirdMerchSn" placeholder="所属三方商户" @on-change="changeStore" style="width: 268px;">
                     <i-option v-for="thirdMerchant in thirdMerchantBizList" :value="thirdMerchant.thirdMerchSn" :key="thirdMerchant.thirdMerchSn">{{thirdMerchant.thirdPartyMerchName}}</i-option>
                 </i-select>
             </Form-item>
             <Form-item label="所属门店" prop="storeId">
-                <i-select v-model="mkCenterMenu.storeId" placeholder="所属门店" style="width: 268px;">
+                <i-select v-model="mkCenterMenuStoreReal.storeId" placeholder="所属门店" style="width: 268px;">
                     <i-option v-for="store in storeList" :value="store.id" :key="store.id">{{store.storeName}}
                     </i-option>
                 </i-select>
             </Form-item>
+            <Form-item label="营销菜单">
+                <div style="overflow-y: auto; max-height: 250px; border: 1px solid #cccccc;">
+                    <ul id="menuTree" class="ztree"></ul>
+                </div>
+            </Form-item>
             <Form-item label="是否有效" prop="isValid">
-                <Radio-group v-model="mkCenterMenu.isValid">
+                <Radio-group v-model="mkCenterMenuStoreReal.isValid">
                     <Radio label="1">
                         <span>无效</span>
                     </Radio>
@@ -68,12 +100,11 @@
                 </Radio-group>
             </Form-item>
             <Form-item>
-                <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>
+                <i-button type="primary" @click="handleSubmitMenuStoreReal('formValidate')">提交</i-button>
                 <i-button type="warning" @click="reload" style="margin-left: 8px"/>返回</i-button>
-                <i-button type="ghost" @click="handleReset('formValidate')" style="margin-left: 8px">重置</i-button>
             </Form-item>
         </i-form>
-	</Card>
+    </Card>
 </div>
 
 <script src="${rc.contextPath}/js/mk/mkcentermenu.js?_${date.systemTime}"></script>

+ 5 - 1
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkdisthier.html

@@ -72,7 +72,11 @@
                 <i-input v-model="mkDistHier.distHierNname" placeholder="分销层级昵称"/>
             </Form-item>
             <Form-item label="层级级别" prop="hierLvl">
-                <i-select v-model="mkDistHier.hierLvl" placeholder="层级级别" style="width: 268px;" >
+                <i-select v-model="mkDistHier.hierLvl" placeholder="层级级别" style="width: 268px;" v-show="!isOperatorShow">
+                    <i-option v-for="lvl in lvlEntitieyList" :value="lvl.hierLvl" :key="lvl.hierLvl">{{lvl.hierKey}}
+                    </i-option>
+                </i-select>
+                <i-select v-model="mkDistHier.hierLvl" placeholder="层级级别" style="width: 268px;" label-in-value v-show="isOperatorShow" disabled>
                     <i-option v-for="lvl in lvlEntitieyList" :value="lvl.hierLvl" :key="lvl.hierLvl">{{lvl.hierKey}}
                     </i-option>
                 </i-select>

Деякі файли не було показано, через те що забагато файлів було змінено