Browse Source

[lsp]1.新增活动形式等

lsp 4 years ago
parent
commit
a1ae46a0c6
25 changed files with 2804 additions and 1 deletions
  1. 106 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivitiesAssociationController.java
  2. 107 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivitiesController.java
  3. 126 0
      kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivityFormController.java
  4. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesAssociationDao.java
  5. 15 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivitiesDao.java
  6. 23 0
      kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivityFormDao.java
  7. 205 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkActivitiesAssociationEntity.java
  8. 270 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkActivitiesEntity.java
  9. 117 0
      kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkActivityFormEntity.java
  10. 58 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivitiesAssociationServiceImpl.java
  11. 80 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivitiesServiceImpl.java
  12. 76 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivityFormServiceImpl.java
  13. 72 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivitiesAssociationService.java
  14. 74 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivitiesService.java
  15. 87 0
      kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivityFormService.java
  16. 123 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesAssociationDao.xml
  17. 141 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml
  18. 138 0
      kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivityFormDao.xml
  19. 81 0
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivities.html
  20. 72 0
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivitiesassociation.html
  21. 167 0
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivityform.html
  22. 1 1
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mkstorecampminus.html
  23. 149 0
      kmall-admin/src/main/webapp/js/mk/mkactivities.js
  24. 146 0
      kmall-admin/src/main/webapp/js/mk/mkactivitiesassociation.js
  25. 355 0
      kmall-admin/src/main/webapp/js/mk/mkactivityform.js

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

@@ -0,0 +1,106 @@
+package com.kmall.admin.controller.mk;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.mk.MkActivitiesAssociationEntity;
+import com.kmall.admin.service.mk.MkActivitiesAssociationService;
+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 2020-09-21 14:33:26
+ */
+@Controller
+@RequestMapping("mkactivitiesassociation")
+public class MkActivitiesAssociationController {
+    @Autowired
+    private MkActivitiesAssociationService mkActivitiesAssociationService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkactivitiesassociation:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkActivitiesAssociationEntity> mkActivitiesAssociationList = mkActivitiesAssociationService.queryList(query);
+        int total = mkActivitiesAssociationService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkActivitiesAssociationList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{mkaaId}")
+    @RequiresPermissions("mkactivitiesassociation:info")
+    @ResponseBody
+    public R info(@PathVariable("mkaaId") Long mkaaId) {
+        MkActivitiesAssociationEntity mkActivitiesAssociation = mkActivitiesAssociationService.queryObject(mkaaId);
+
+        return R.ok().put("mkActivitiesAssociation", mkActivitiesAssociation);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkactivitiesassociation:save")
+    @ResponseBody
+    public R save(@RequestBody MkActivitiesAssociationEntity mkActivitiesAssociation) {
+        mkActivitiesAssociationService.save(mkActivitiesAssociation);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkactivitiesassociation:update")
+    @ResponseBody
+    public R update(@RequestBody MkActivitiesAssociationEntity mkActivitiesAssociation) {
+        mkActivitiesAssociationService.update(mkActivitiesAssociation);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkactivitiesassociation:delete")
+    @ResponseBody
+    public R delete(@RequestBody Long[]mkaaIds) {
+        mkActivitiesAssociationService.deleteBatch(mkaaIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<MkActivitiesAssociationEntity> list = mkActivitiesAssociationService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+}

+ 107 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/mk/MkActivitiesController.java

@@ -0,0 +1,107 @@
+package com.kmall.admin.controller.mk;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+import com.kmall.admin.service.mk.MkActivitiesService;
+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 2020-09-21 14:33:26
+ */
+@Controller
+@RequestMapping("mkactivities")
+public class MkActivitiesController {
+    @Autowired
+    private MkActivitiesService mkActivitiesService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+//    @RequiresPermissions("mkactivities:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkActivitiesEntity> mkActivitiesList = mkActivitiesService.queryList(query);
+        int total = mkActivitiesService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkActivitiesList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{mkaId}")
+//    @RequiresPermissions("mkactivities:info")
+    @ResponseBody
+    public R info(@PathVariable("mkaId") Long mkaId) {
+        MkActivitiesEntity mkActivities = mkActivitiesService.queryObject(mkaId);
+
+        return R.ok().put("mkActivities", mkActivities);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+//    @RequiresPermissions("mkactivities:save")
+    @ResponseBody
+    public R save(@RequestBody MkActivitiesEntity mkActivities) {
+
+        mkActivitiesService.save(mkActivities);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+//    @RequiresPermissions("mkactivities:update")
+    @ResponseBody
+    public R update(@RequestBody MkActivitiesEntity mkActivities) {
+        mkActivitiesService.update(mkActivities);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+//    @RequiresPermissions("mkactivities:delete")
+    @ResponseBody
+    public R delete(@RequestBody Long[]mkaIds) {
+        mkActivitiesService.deleteBatch(mkaIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<MkActivitiesEntity> list = mkActivitiesService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+}

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

@@ -0,0 +1,126 @@
+package com.kmall.admin.controller.mk;
+
+import java.util.List;
+import java.util.Map;
+
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+import com.kmall.admin.entity.mk.MkActivityFormEntity;
+import com.kmall.admin.service.mk.MkActivityFormService;
+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 2020-09-21 14:33:25
+ */
+@Controller
+@RequestMapping("mkactivityform")
+public class MkActivityFormController {
+    @Autowired
+    private MkActivityFormService mkActivityFormService;
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/list")
+    @RequiresPermissions("mkactivityform:list")
+    @ResponseBody
+    public R list(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkActivityFormEntity> mkActivityFormList = mkActivityFormService.queryList(query);
+        int total = mkActivityFormService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkActivityFormList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+
+    /**
+     * 查看信息
+     */
+    @RequestMapping("/info/{mmId}")
+    @RequiresPermissions("mkactivityform:info")
+    @ResponseBody
+    public R info(@PathVariable("mmId") Long mmId) {
+        MkActivityFormEntity mkActivityForm = mkActivityFormService.queryObject(mmId);
+
+        return R.ok().put("mkActivityForm", mkActivityForm);
+    }
+
+    /**
+     * 保存
+     */
+    @RequestMapping("/save")
+    @RequiresPermissions("mkactivityform:save")
+    @ResponseBody
+    public R save(@RequestBody MkActivityFormEntity mkActivityForm) {
+        mkActivityFormService.save(mkActivityForm);
+
+        return R.ok();
+    }
+
+    /**
+     * 修改
+     */
+    @RequestMapping("/update")
+    @RequiresPermissions("mkactivityform:update")
+    @ResponseBody
+    public R update(@RequestBody MkActivityFormEntity mkActivityForm) {
+        mkActivityFormService.update(mkActivityForm);
+
+        return R.ok();
+    }
+
+    /**
+     * 删除
+     */
+    @RequestMapping("/delete")
+    @RequiresPermissions("mkactivityform:delete")
+    @ResponseBody
+    public R delete(@RequestBody Long[]mmIds) {
+        mkActivityFormService.deleteBatch(mmIds);
+
+        return R.ok();
+    }
+
+    /**
+     * 查看所有列表
+     */
+    @RequestMapping("/queryAll")
+    @ResponseBody
+    public R queryAll(@RequestParam Map<String, Object> params) {
+
+        List<MkActivityFormEntity> list = mkActivityFormService.queryList(params);
+
+        return R.ok().put("list", list);
+    }
+
+
+    /**
+     * 查看营销方式列表
+     */
+    @RequestMapping("/queryMkactivitiesList")
+    @ResponseBody
+    public R queryMkactivitiesList(@RequestParam Map<String, Object> params) {
+
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<MkActivitiesEntity> mkActivityFormList = mkActivityFormService.queryMkactivitiesList(query);
+        int total = mkActivityFormService.queryTotal(query);
+
+        PageUtils pageUtil = new PageUtils(mkActivityFormList, total, query.getLimit(), query.getPage());
+
+        return R.ok().put("page", pageUtil);
+    }
+}

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

@@ -0,0 +1,15 @@
+package com.kmall.admin.dao.mk;
+
+import com.kmall.admin.entity.mk.MkActivitiesAssociationEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 营销活动-活动关联表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:26
+ */
+public interface MkActivitiesAssociationDao extends BaseDao<MkActivitiesAssociationEntity> {
+
+}

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

@@ -0,0 +1,15 @@
+package com.kmall.admin.dao.mk;
+
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+import com.kmall.manager.dao.BaseDao;
+
+/**
+ * 营销活动表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:26
+ */
+public interface MkActivitiesDao extends BaseDao<MkActivitiesEntity> {
+
+}

+ 23 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/mk/MkActivityFormDao.java

@@ -0,0 +1,23 @@
+package com.kmall.admin.dao.mk;
+
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+import com.kmall.admin.entity.mk.MkActivityFormEntity;
+import com.kmall.manager.dao.BaseDao;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 活动形式表Dao
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:25
+ */
+public interface MkActivityFormDao extends BaseDao<MkActivityFormEntity> {
+
+    int queryMkactivitiesTotal(Map<String, Object> map);
+
+    List<MkActivitiesEntity> queryMkactivitiesList(Map<String, Object> map);
+
+}

+ 205 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkActivitiesAssociationEntity.java

@@ -0,0 +1,205 @@
+package com.kmall.admin.entity.mk;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 营销活动-活动关联表实体
+ * 表名 mk_activities_association
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-22 10:42:41
+ */
+public class MkActivitiesAssociationEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private Long mkaaId;
+    /**
+     * 活动形式代码
+     */
+    private String mkCode;
+    /**
+     * 营销活动编号
+     */
+    private Long mkaId;
+    /**
+     * 商户编号
+     */
+    private String merchSn;
+    /**
+     * 第三方商户编号
+     */
+    private String thirdMerchSn;
+    /**
+     * 活动门店id
+     */
+    private String mkaStoreId;
+    /**
+     * 是否启用
+     */
+    private String mkaStatus;
+    /**
+     * 开始时间
+     */
+    private String mkaStartTime;
+    /**
+     * 结束时间
+     */
+    private String mkdEndTime;
+    /**
+     * 是否提前结束
+     */
+    private String mkaEndEarly;
+    /**
+     * 提前结束时间
+     */
+    private String mkdEndEarlyTime;
+
+    /**
+     * 设置:编号
+     */
+    public void setMkaaId(Long mkaaId) {
+        this.mkaaId = mkaaId;
+    }
+
+    /**
+     * 获取:编号
+     */
+    public Long getMkaaId() {
+        return mkaaId;
+    }
+    /**
+     * 设置:活动形式代码
+     */
+    public void setMkCode(String mkCode) {
+        this.mkCode = mkCode;
+    }
+
+    /**
+     * 获取:活动形式代码
+     */
+    public String getMkCode() {
+        return mkCode;
+    }
+    /**
+     * 设置:营销活动编号
+     */
+    public void setMkaId(Long mkaId) {
+        this.mkaId = mkaId;
+    }
+
+    /**
+     * 获取:营销活动编号
+     */
+    public Long getMkaId() {
+        return mkaId;
+    }
+    /**
+     * 设置:商户编号
+     */
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    /**
+     * 获取:商户编号
+     */
+    public String getMerchSn() {
+        return merchSn;
+    }
+    /**
+     * 设置:第三方商户编号
+     */
+    public void setThirdMerchSn(String thirdMerchSn) {
+        this.thirdMerchSn = thirdMerchSn;
+    }
+
+    /**
+     * 获取:第三方商户编号
+     */
+    public String getThirdMerchSn() {
+        return thirdMerchSn;
+    }
+    /**
+     * 设置:活动门店id
+     */
+    public void setMkaStoreId(String mkaStoreId) {
+        this.mkaStoreId = mkaStoreId;
+    }
+
+    /**
+     * 获取:活动门店id
+     */
+    public String getMkaStoreId() {
+        return mkaStoreId;
+    }
+    /**
+     * 设置:是否启用
+     */
+    public void setMkaStatus(String mkaStatus) {
+        this.mkaStatus = mkaStatus;
+    }
+
+    /**
+     * 获取:是否启用
+     */
+    public String getMkaStatus() {
+        return mkaStatus;
+    }
+    /**
+     * 设置:开始时间
+     */
+    public void setMkaStartTime(String mkaStartTime) {
+        this.mkaStartTime = mkaStartTime;
+    }
+
+    /**
+     * 获取:开始时间
+     */
+    public String getMkaStartTime() {
+        return mkaStartTime;
+    }
+    /**
+     * 设置:结束时间
+     */
+    public void setMkdEndTime(String mkdEndTime) {
+        this.mkdEndTime = mkdEndTime;
+    }
+
+    /**
+     * 获取:结束时间
+     */
+    public String getMkdEndTime() {
+        return mkdEndTime;
+    }
+    /**
+     * 设置:是否提前结束
+     */
+    public void setMkaEndEarly(String mkaEndEarly) {
+        this.mkaEndEarly = mkaEndEarly;
+    }
+
+    /**
+     * 获取:是否提前结束
+     */
+    public String getMkaEndEarly() {
+        return mkaEndEarly;
+    }
+    /**
+     * 设置:提前结束时间
+     */
+    public void setMkdEndEarlyTime(String mkdEndEarlyTime) {
+        this.mkdEndEarlyTime = mkdEndEarlyTime;
+    }
+
+    /**
+     * 获取:提前结束时间
+     */
+    public String getMkdEndEarlyTime() {
+        return mkdEndEarlyTime;
+    }
+}

+ 270 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkActivitiesEntity.java

@@ -0,0 +1,270 @@
+package com.kmall.admin.entity.mk;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 营销活动表实体
+ * 表名 mk_activities
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-22 10:16:14
+ */
+public class MkActivitiesEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private Long mkaId;
+    /**
+     * 活动主题
+     */
+    private String mkaTopic;
+    /**
+     * 商户编号
+     */
+    private String merchSn;
+    /**
+     * 第三方商户编号
+     */
+    private String thirdMerchSn;
+    /**
+     * 活动门店id
+     */
+    private String mkaStoreId;
+    /**
+     * 是否启用
+     */
+    private String mkaStatus;
+    /**
+     * 开始时间
+     */
+    private String mkaStartTime;
+    /**
+     * 结束时间
+     */
+    private String mkdEndTime;
+    /**
+     * 是否提前结束
+     */
+    private String mkaEndEarly;
+    /**
+     * 提前结束时间
+     */
+    private String mkdEndEarlyTime;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+    /**
+     * 修改人编号
+     */
+    private String moderSn;
+
+    /**
+     * 活动形式代码
+     */
+    private String mkCode;
+
+
+    /**
+     * 设置:编号
+     */
+    public void setMkaId(Long mkaId) {
+        this.mkaId = mkaId;
+    }
+
+    /**
+     * 获取:编号
+     */
+    public Long getMkaId() {
+        return mkaId;
+    }
+    /**
+     * 设置:活动主题
+     */
+    public void setMkaTopic(String mkaTopic) {
+        this.mkaTopic = mkaTopic;
+    }
+
+    /**
+     * 获取:活动主题
+     */
+    public String getMkaTopic() {
+        return mkaTopic;
+    }
+    /**
+     * 设置:商户编号
+     */
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    /**
+     * 获取:商户编号
+     */
+    public String getMerchSn() {
+        return merchSn;
+    }
+    /**
+     * 设置:第三方商户编号
+     */
+    public void setThirdMerchSn(String thirdMerchSn) {
+        this.thirdMerchSn = thirdMerchSn;
+    }
+
+    /**
+     * 获取:第三方商户编号
+     */
+    public String getThirdMerchSn() {
+        return thirdMerchSn;
+    }
+    /**
+     * 设置:活动门店id
+     */
+    public void setMkaStoreId(String mkaStoreId) {
+        this.mkaStoreId = mkaStoreId;
+    }
+
+    /**
+     * 获取:活动门店id
+     */
+    public String getMkaStoreId() {
+        return mkaStoreId;
+    }
+    /**
+     * 设置:是否启用
+     */
+    public void setMkaStatus(String mkaStatus) {
+        this.mkaStatus = mkaStatus;
+    }
+
+    /**
+     * 获取:是否启用
+     */
+    public String getMkaStatus() {
+        return mkaStatus;
+    }
+    /**
+     * 设置:开始时间
+     */
+    public void setMkaStartTime(String mkaStartTime) {
+        this.mkaStartTime = mkaStartTime;
+    }
+
+    /**
+     * 获取:开始时间
+     */
+    public String getMkaStartTime() {
+        return mkaStartTime;
+    }
+    /**
+     * 设置:结束时间
+     */
+    public void setMkdEndTime(String mkdEndTime) {
+        this.mkdEndTime = mkdEndTime;
+    }
+
+    /**
+     * 获取:结束时间
+     */
+    public String getMkdEndTime() {
+        return mkdEndTime;
+    }
+    /**
+     * 设置:是否提前结束
+     */
+    public void setMkaEndEarly(String mkaEndEarly) {
+        this.mkaEndEarly = mkaEndEarly;
+    }
+
+    /**
+     * 获取:是否提前结束
+     */
+    public String getMkaEndEarly() {
+        return mkaEndEarly;
+    }
+    /**
+     * 设置:提前结束时间
+     */
+    public void setMkdEndEarlyTime(String mkdEndEarlyTime) {
+        this.mkdEndEarlyTime = mkdEndEarlyTime;
+    }
+
+    /**
+     * 获取:提前结束时间
+     */
+    public String getMkdEndEarlyTime() {
+        return mkdEndEarlyTime;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+    /**
+     * 设置:修改时间
+     */
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    /**
+     * 获取:修改时间
+     */
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+    /**
+     * 设置:修改人编号
+     */
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    /**
+     * 获取:修改人编号
+     */
+    public String getModerSn() {
+        return moderSn;
+    }
+
+    public String getMkCode() {
+        return mkCode;
+    }
+
+    public void setMkCode(String mkCode) {
+        this.mkCode = mkCode;
+    }
+}

+ 117 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/mk/MkActivityFormEntity.java

@@ -0,0 +1,117 @@
+package com.kmall.admin.entity.mk;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 活动形式表实体
+ * 表名 mk_activity_form
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:25
+ */
+public class MkActivityFormEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编号
+     */
+    private Long mmId;
+    /**
+     * 活动形式名称
+     */
+    private String mkName;
+    /**
+     * 活动形式代码
+     */
+    private String mkCode;
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    /**
+     * 创建人编号
+     */
+    private String createrSn;
+
+    /**
+     * 创建人名称
+     */
+    private String createrName;
+
+
+    /**
+     * 设置:编号
+     */
+    public void setMmId(Long mmId) {
+        this.mmId = mmId;
+    }
+
+    /**
+     * 获取:编号
+     */
+    public Long getMmId() {
+        return mmId;
+    }
+    /**
+     * 设置:活动形式名称
+     */
+    public void setMkName(String mkName) {
+        this.mkName = mkName;
+    }
+
+    /**
+     * 获取:活动形式名称
+     */
+    public String getMkName() {
+        return mkName;
+    }
+    /**
+     * 设置:活动形式代码
+     */
+    public void setMkCode(String mkCode) {
+        this.mkCode = mkCode;
+    }
+
+    /**
+     * 获取:活动形式代码
+     */
+    public String getMkCode() {
+        return mkCode;
+    }
+    /**
+     * 设置:创建时间
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * 获取:创建时间
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+    /**
+     * 设置:创建人编号
+     */
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    /**
+     * 获取:创建人编号
+     */
+    public String getCreaterSn() {
+        return createrSn;
+    }
+
+    public String getCreaterName() {
+        return createrName;
+    }
+
+    public void setCreaterName(String createrName) {
+        this.createrName = createrName;
+    }
+}

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

@@ -0,0 +1,58 @@
+package com.kmall.admin.service.impl.mk;
+
+import com.kmall.admin.dao.mk.MkActivitiesAssociationDao;
+import com.kmall.admin.entity.mk.MkActivitiesAssociationEntity;
+import com.kmall.admin.service.mk.MkActivitiesAssociationService;
+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 2020-09-21 14:33:26
+ */
+@Service("mkActivitiesAssociationService")
+public class MkActivitiesAssociationServiceImpl implements MkActivitiesAssociationService {
+    @Autowired
+    private MkActivitiesAssociationDao mkActivitiesAssociationDao;
+
+    @Override
+    public MkActivitiesAssociationEntity queryObject(Long mkaaId) {
+        return mkActivitiesAssociationDao.queryObject(mkaaId);
+    }
+
+    @Override
+    public List<MkActivitiesAssociationEntity> queryList(Map<String, Object> map) {
+        return mkActivitiesAssociationDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkActivitiesAssociationDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(MkActivitiesAssociationEntity mkActivitiesAssociation) {
+        return mkActivitiesAssociationDao.save(mkActivitiesAssociation);
+    }
+
+    @Override
+    public int update(MkActivitiesAssociationEntity mkActivitiesAssociation) {
+        return mkActivitiesAssociationDao.update(mkActivitiesAssociation);
+    }
+
+    @Override
+    public int delete(Long mkaaId) {
+        return mkActivitiesAssociationDao.delete(mkaaId);
+    }
+
+    @Override
+    public int deleteBatch(Long[]mkaaIds) {
+        return mkActivitiesAssociationDao.deleteBatch(mkaaIds);
+    }
+}

+ 80 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivitiesServiceImpl.java

@@ -0,0 +1,80 @@
+package com.kmall.admin.service.impl.mk;
+
+import com.kmall.admin.dao.mk.MkActivitiesAssociationDao;
+import com.kmall.admin.dao.mk.MkActivitiesDao;
+import com.kmall.admin.entity.mk.MkActivitiesAssociationEntity;
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
+import com.kmall.admin.service.mk.MkActivitiesService;
+import com.kmall.admin.utils.ShiroUtils;
+import com.kmall.common.utils.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 营销活动表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:26
+ */
+@Service("mkActivitiesService")
+public class MkActivitiesServiceImpl implements MkActivitiesService {
+    @Autowired
+    private MkActivitiesDao mkActivitiesDao;
+    @Autowired
+    private MkActivitiesAssociationDao mkActivitiesAssociationDao;
+
+    @Override
+    public MkActivitiesEntity queryObject(Long mkaId) {
+        return mkActivitiesDao.queryObject(mkaId);
+    }
+
+    @Override
+    public List<MkActivitiesEntity> queryList(Map<String, Object> map) {
+        return mkActivitiesDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkActivitiesDao.queryTotal(map);
+    }
+
+    @Override
+    @Transactional
+    public int save(MkActivitiesEntity mkActivities) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+
+        mkActivities.setCreaterSn(user.getUserId().toString());
+        mkActivities.setCreateTime(new Date());
+        mkActivitiesDao.save(mkActivities);
+
+        MkActivitiesAssociationEntity mkActivitiesAssociation = new MkActivitiesAssociationEntity();
+        BeanUtils.copyProperties(mkActivities, mkActivitiesAssociation);
+        mkActivitiesAssociationDao.save(mkActivitiesAssociation);
+
+        return 1;
+    }
+
+    @Override
+    public int update(MkActivitiesEntity mkActivities) {
+        return mkActivitiesDao.update(mkActivities);
+    }
+
+    @Override
+    public int delete(Long mkaId) {
+        return mkActivitiesDao.delete(mkaId);
+    }
+
+    @Override
+    public int deleteBatch(Long[]mkaIds) {
+        return mkActivitiesDao.deleteBatch(mkaIds);
+    }
+}

+ 76 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/mk/MkActivityFormServiceImpl.java

@@ -0,0 +1,76 @@
+package com.kmall.admin.service.impl.mk;
+
+import com.kmall.admin.dao.mk.MkActivityFormDao;
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+import com.kmall.admin.entity.mk.MkActivityFormEntity;
+import com.kmall.admin.fromcomm.entity.SysUserEntity;
+import com.kmall.admin.service.mk.MkActivityFormService;
+import com.kmall.admin.utils.ShiroUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 活动形式表Service实现类
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:25
+ */
+@Service("mkActivityFormService")
+public class MkActivityFormServiceImpl implements MkActivityFormService {
+    @Autowired
+    private MkActivityFormDao mkActivityFormDao;
+
+    @Override
+    public MkActivityFormEntity queryObject(Long mmId) {
+        return mkActivityFormDao.queryObject(mmId);
+    }
+
+    @Override
+    public List<MkActivityFormEntity> queryList(Map<String, Object> map) {
+        return mkActivityFormDao.queryList(map);
+    }
+
+    @Override
+    public int queryTotal(Map<String, Object> map) {
+        return mkActivityFormDao.queryTotal(map);
+    }
+
+    @Override
+    public int save(MkActivityFormEntity mkActivityForm) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+
+        mkActivityForm.setCreaterSn(user.getUserId().toString());
+        mkActivityForm.setCreateTime(new Date());
+        return mkActivityFormDao.save(mkActivityForm);
+    }
+
+    @Override
+    public int update(MkActivityFormEntity mkActivityForm) {
+        return mkActivityFormDao.update(mkActivityForm);
+    }
+
+    @Override
+    public int delete(Long mmId) {
+        return mkActivityFormDao.delete(mmId);
+    }
+
+    @Override
+    public int deleteBatch(Long[]mmIds) {
+        return mkActivityFormDao.deleteBatch(mmIds);
+    }
+
+    @Override
+    public int queryMkactivitiesTotal(Map<String, Object> map) {
+        return mkActivityFormDao.queryMkactivitiesTotal(map);
+    }
+
+    @Override
+    public List<MkActivitiesEntity> queryMkactivitiesList(Map<String, Object> map) {
+        return mkActivityFormDao.queryMkactivitiesList(map);
+    }
+}

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

@@ -0,0 +1,72 @@
+package com.kmall.admin.service.mk;
+
+import com.kmall.admin.entity.mk.MkActivitiesAssociationEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 营销活动-活动关联表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:26
+ */
+public interface MkActivitiesAssociationService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param mkaaId 主键
+     * @return 实体
+     */
+    MkActivitiesAssociationEntity queryObject(Long mkaaId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkActivitiesAssociationEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkActivitiesAssociation 实体
+     * @return 保存条数
+     */
+    int save(MkActivitiesAssociationEntity mkActivitiesAssociation);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkActivitiesAssociation 实体
+     * @return 更新条数
+     */
+    int update(MkActivitiesAssociationEntity mkActivitiesAssociation);
+
+    /**
+     * 根据主键删除
+     *
+     * @param mkaaId
+     * @return 删除条数
+     */
+    int delete(Long mkaaId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param mkaaIds
+     * @return 删除条数
+     */
+    int deleteBatch(Long[] mkaaIds);
+}

+ 74 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivitiesService.java

@@ -0,0 +1,74 @@
+package com.kmall.admin.service.mk;
+
+import com.kmall.admin.entity.mk.MkActivitiesAssociationEntity;
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 营销活动表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:26
+ */
+public interface MkActivitiesService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param mkaId 主键
+     * @return 实体
+     */
+    MkActivitiesEntity queryObject(Long mkaId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkActivitiesEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkActivities 实体
+     * @return 保存条数
+     */
+    int save(MkActivitiesEntity mkActivities);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkActivities 实体
+     * @return 更新条数
+     */
+    int update(MkActivitiesEntity mkActivities);
+
+    /**
+     * 根据主键删除
+     *
+     * @param mkaId
+     * @return 删除条数
+     */
+    int delete(Long mkaId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param mkaIds
+     * @return 删除条数
+     */
+    int deleteBatch(Long[] mkaIds);
+
+}

+ 87 - 0
kmall-admin/src/main/java/com/kmall/admin/service/mk/MkActivityFormService.java

@@ -0,0 +1,87 @@
+package com.kmall.admin.service.mk;
+
+import com.kmall.admin.entity.mk.MkActivitiesEntity;
+import com.kmall.admin.entity.mk.MkActivityFormEntity;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 活动形式表Service接口
+ *
+ * @author emato
+ * @email admin@qhdswl.com
+ * @date 2020-09-21 14:33:25
+ */
+public interface MkActivityFormService {
+
+    /**
+     * 根据主键查询实体
+     *
+     * @param mmId 主键
+     * @return 实体
+     */
+    MkActivityFormEntity queryObject(Long mmId);
+
+    /**
+     * 分页查询
+     *
+     * @param map 参数
+     * @return list
+     */
+    List<MkActivityFormEntity> queryList(Map<String, Object> map);
+
+    /**
+     * 分页统计总数
+     *
+     * @param map 参数
+     * @return 总数
+     */
+    int queryTotal(Map<String, Object> map);
+
+    /**
+     * 保存实体
+     *
+     * @param mkActivityForm 实体
+     * @return 保存条数
+     */
+    int save(MkActivityFormEntity mkActivityForm);
+
+    /**
+     * 根据主键更新实体
+     *
+     * @param mkActivityForm 实体
+     * @return 更新条数
+     */
+    int update(MkActivityFormEntity mkActivityForm);
+
+    /**
+     * 根据主键删除
+     *
+     * @param mmId
+     * @return 删除条数
+     */
+    int delete(Long mmId);
+
+    /**
+     * 根据主键批量删除
+     *
+     * @param mmIds
+     * @return 删除条数
+     */
+    int deleteBatch(Long[] mmIds);
+
+    /**
+     * 查询营方式分页总数
+     * @param map
+     * @return
+     */
+    int queryMkactivitiesTotal(Map<String, Object> map);
+
+    /**
+     * 分页查询营销方式
+     * @param map
+     * @return
+     */
+    List<MkActivitiesEntity> queryMkactivitiesList(Map<String, Object> map);
+}

+ 123 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesAssociationDao.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.MkActivitiesAssociationDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.MkActivitiesAssociationEntity" id="mkActivitiesAssociationMap">
+        <result property="mkaaId" column="mkaa_id"/>
+        <result property="mkCode" column="mk_code"/>
+        <result property="mkaId" column="mka_id"/>
+		<result property="merchSn" column="merch_sn"/>
+		<result property="thirdMerchSn" column="third_merch_sn"/>
+        <result property="mkaStoreId" column="mka_store_id"/>
+        <result property="mkaStatus" column="mka_status"/>
+        <result property="mkaStartTime" column="mka_start_time"/>
+        <result property="mkdEndTime" column="mkd_end_time"/>
+        <result property="mkaEndEarly" column="mka_end_early"/>
+        <result property="mkdEndEarlyTime" column="mkd_end_early_time"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.MkActivitiesAssociationEntity">
+		select
+			`mkaa_id`,
+			`mk_code`,
+			`mka_id`,
+			`mka_store_id`,
+			`mka_status`,
+			`mka_start_time`,
+			`mkd_end_time`,
+			`mka_end_early`,
+			`mkd_end_early_time`
+		from mk_activities_association
+		where mkaa_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.MkActivitiesAssociationEntity">
+		select
+    		`mkaa_id`,
+    		`mk_code`,
+    		`mka_id`,
+    		`mka_store_id`,
+    		`mka_status`,
+    		`mka_start_time`,
+    		`mkd_end_time`,
+    		`mka_end_early`,
+    		`mkd_end_early_time`
+		from mk_activities_association
+		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 mkaa_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_activities_association
+		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.MkActivitiesAssociationEntity" useGeneratedKeys="true" keyProperty="mkaaId">
+		insert into mk_activities_association(
+			`mk_code`,
+			`mka_id`,
+			`merch_sn`,
+			`third_merch_sn`,
+			`mka_store_id`,
+			`mka_status`,
+			`mka_start_time`,
+			`mkd_end_time`,
+			`mka_end_early`,
+			`mkd_end_early_time`)
+		values(
+			#{mkCode},
+			#{mkaId},
+			#{merchSn},
+			#{thirdMerchSn},
+			#{mkaStoreId},
+			#{mkaStatus},
+			#{mkaStartTime},
+			#{mkdEndTime},
+			#{mkaEndEarly},
+			#{mkdEndEarlyTime})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.MkActivitiesAssociationEntity">
+		update mk_activities_association 
+		<set>
+			<if test="mkCode != null">`mk_code` = #{mkCode}, </if>
+			<if test="mkaId != null">`mka_id` = #{mkaId}, </if>
+			<if test="mkaStoreId != null">`mka_store_id` = #{mkaStoreId}, </if>
+			<if test="mkaStatus != null">`mka_status` = #{mkaStatus}, </if>
+			<if test="mkaStartTime != null">`mka_start_time` = #{mkaStartTime}, </if>
+			<if test="mkdEndTime != null">`mkd_end_time` = #{mkdEndTime}, </if>
+			<if test="mkaEndEarly != null">`mka_end_early` = #{mkaEndEarly}, </if>
+			<if test="mkdEndEarlyTime != null">`mkd_end_early_time` = #{mkdEndEarlyTime}</if>
+		</set>
+		where mkaa_id = #{mkaaId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_activities_association where mkaa_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_activities_association where mkaa_id in 
+		<foreach item="mkaaId" collection="array" open="(" separator="," close=")">
+			#{mkaaId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 141 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivitiesDao.xml

@@ -0,0 +1,141 @@
+<?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.MkActivitiesDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.MkActivitiesEntity" id="mkActivitiesMap">
+        <result property="mkaId" column="mka_id"/>
+        <result property="mkaTopic" column="mka_topic"/>
+		<result property="merchSn" column="merch_sn"/>
+		<result property="thirdMerchSn" column="third_merch_sn"/>
+        <result property="mkaStoreId" column="mka_store_id"/>
+        <result property="mkaStatus" column="mka_status"/>
+        <result property="mkaStartTime" column="mka_start_time"/>
+        <result property="mkdEndTime" column="mkd_end_time"/>
+        <result property="mkaEndEarly" column="mka_end_early"/>
+        <result property="mkdEndEarlyTime" column="mkd_end_early_time"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="moderSn" column="moder_sn"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.MkActivitiesEntity">
+		select
+			`mka_id`,
+			`mka_topic`,
+			`mka_store_id`,
+			`mka_status`,
+			`mka_start_time`,
+			`mkd_end_time`,
+			`mka_end_early`,
+			`mkd_end_early_time`,
+			`create_time`,
+			`creater_sn`,
+			`update_time`,
+			`moder_sn`
+		from mk_activities
+		where mka_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.MkActivitiesEntity">
+		select
+    		`mka_id`,
+    		`mka_topic`,
+    		`mka_store_id`,
+    		`mka_status`,
+    		`mka_start_time`,
+    		`mkd_end_time`,
+    		`mka_end_early`,
+    		`mkd_end_early_time`,
+    		`create_time`,
+    		`creater_sn`,
+    		`update_time`,
+    		`moder_sn`
+		from mk_activities
+		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 mka_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_activities
+		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.MkActivitiesEntity" useGeneratedKeys="true" keyProperty="mkaId">
+		insert into mk_activities(
+			`mka_topic`,
+			`merch_sn`,
+			`third_merch_sn`,
+			`mka_store_id`,
+			`mka_status`,
+			`mka_start_time`,
+			`mkd_end_time`,
+			`mka_end_early`,
+			`mkd_end_early_time`,
+			`create_time`,
+			`creater_sn`,
+			`update_time`,
+			`moder_sn`)
+		values(
+			#{mkaTopic},
+			#{merchSn},
+			#{thirdMerchSn},
+			#{mkaStoreId},
+			#{mkaStatus},
+			#{mkaStartTime},
+			#{mkdEndTime},
+			#{mkaEndEarly},
+			#{mkdEndEarlyTime},
+			#{createTime},
+			#{createrSn},
+			#{updateTime},
+			#{moderSn})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.MkActivitiesEntity">
+		update mk_activities 
+		<set>
+			<if test="mkaTopic != null">`mka_topic` = #{mkaTopic}, </if>
+			<if test="mkaStoreId != null">`mka_store_id` = #{mkaStoreId}, </if>
+			<if test="mkaStatus != null">`mka_status` = #{mkaStatus}, </if>
+			<if test="mkaStartTime != null">`mka_start_time` = #{mkaStartTime}, </if>
+			<if test="mkdEndTime != null">`mkd_end_time` = #{mkdEndTime}, </if>
+			<if test="mkaEndEarly != null">`mka_end_early` = #{mkaEndEarly}, </if>
+			<if test="mkdEndEarlyTime != null">`mkd_end_early_time` = #{mkdEndEarlyTime}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+			<if test="updateTime != null">`update_time` = #{updateTime}, </if>
+			<if test="moderSn != null">`moder_sn` = #{moderSn}</if>
+		</set>
+		where mka_id = #{mkaId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_activities where mka_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_activities where mka_id in 
+		<foreach item="mkaId" collection="array" open="(" separator="," close=")">
+			#{mkaId}
+		</foreach>
+	</delete>
+
+</mapper>

+ 138 - 0
kmall-admin/src/main/resources/mybatis/mapper/mk/MkActivityFormDao.xml

@@ -0,0 +1,138 @@
+<?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.MkActivityFormDao">
+
+    <resultMap type="com.kmall.admin.entity.mk.MkActivityFormEntity" id="mkActivityFormMap">
+        <result property="mmId" column="mm_id"/>
+        <result property="mkName" column="mk_name"/>
+        <result property="mkCode" column="mk_code"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createrSn" column="creater_sn"/>
+    </resultMap>
+
+	<select id="queryObject" resultType="com.kmall.admin.entity.mk.MkActivityFormEntity">
+		select
+			`mm_id`,
+			`mk_name`,
+			`mk_code`,
+			`create_time`,
+			`creater_sn`
+		from mk_activity_form
+		where mm_id = #{id}
+	</select>
+
+	<select id="queryList" resultType="com.kmall.admin.entity.mk.MkActivityFormEntity">
+		select
+    		a.mm_id,
+    		a.mk_name,
+    		a.mk_code,
+    		a.create_time,
+    		a.creater_sn,
+			u.username createrName
+		from mk_activity_form a
+		left join sys_user u on a.creater_sn = u.user_id
+		WHERE 1=1
+		<if test="name != null and name.trim() != ''">
+			AND mk_name LIKE concat('%',#{name},'%')
+		</if>
+        <choose>
+            <when test="sidx != null and sidx.trim() != ''">
+                order by ${sidx} ${order}
+            </when>
+			<otherwise>
+                order by mm_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_activity_form
+		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.MkActivityFormEntity" useGeneratedKeys="true" keyProperty="mmId">
+		insert into mk_activity_form(
+			`mk_name`,
+			`mk_code`,
+			`create_time`,
+			`creater_sn`)
+		values(
+			#{mkName},
+			#{mkCode},
+			#{createTime},
+			#{createrSn})
+	</insert>
+	 
+	<update id="update" parameterType="com.kmall.admin.entity.mk.MkActivityFormEntity">
+		update mk_activity_form 
+		<set>
+			<if test="mkName != null">`mk_name` = #{mkName}, </if>
+			<if test="mkCode != null">`mk_code` = #{mkCode}, </if>
+			<if test="createTime != null">`create_time` = #{createTime}, </if>
+			<if test="createrSn != null">`creater_sn` = #{createrSn}</if>
+		</set>
+		where mm_id = #{mmId}
+	</update>
+	
+	<delete id="delete">
+		delete from mk_activity_form where mm_id = #{value}
+	</delete>
+	
+	<delete id="deleteBatch">
+		delete from mk_activity_form where mm_id in 
+		<foreach item="mmId" collection="array" open="(" separator="," close=")">
+			#{mmId}
+		</foreach>
+	</delete>
+
+	<select id="queryMkactivitiesTotal" resultType="int">
+		select count(*) from mk_activities_association
+		WHERE 1=1
+		<if test="mkCode != null and mkCode.trim() != ''">
+			AND mk_code LIKE concat('%',#{mkCode},'%')
+		</if>
+	</select>
+
+	<select id="queryMkactivitiesList" resultType="com.kmall.admin.entity.mk.MkActivitiesEntity">
+		select
+		a.mka_id,
+		a.mka_topic,
+		a.merch_sn,
+		a.third_merch_sn,
+		a.mka_store_id,
+		a.mka_status,
+		a.mka_start_time,
+		a.mkd_end_time,
+		a.mka_end_early,
+		a.mkd_end_early_time,
+		a.create_time,
+		a.creater_sn,
+		a.update_time,
+		a.moder_sn
+		from mk_activities_association a2
+		left join mk_activities a on a.mka_id = a2.mka_id
+		WHERE 1=1
+		<if test="mkCode != null and mkCode.trim() != ''">
+			AND a2.mk_code LIKE concat('%',#{mkCode},'%')
+		</if>
+		<choose>
+			<when test="sidx != null and sidx.trim() != ''">
+				order by ${sidx} ${order}
+			</when>
+			<otherwise>
+				order by mka_id desc
+			</otherwise>
+		</choose>
+		<if test="offset != null and limit != null">
+			limit #{offset}, #{limit}
+		</if>
+	</select>
+
+</mapper>

+ 81 - 0
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivities.html

@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title></title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<div v-show="showList">
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <div class="buttons-group">
+                #if($shiro.hasPermission("mkactivities:save"))
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivities:update"))
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivities:delete"))
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                #end
+            </div>
+        </Row>
+	    <table id="jqGrid"></table>
+	    <div id="jqGridPager"></div>
+    </div>
+
+    <Card v-show="!showList">
+        <p slot="title">{{title}}</p>
+		<i-form ref="formValidate" :model="mkActivities" :rules="ruleValidate" :label-width="80">
+            <Form-item label="活动主题" prop="mkaTopic">
+                <i-input v-model="mkActivities.mkaTopic" placeholder="活动主题"/>
+            </Form-item>
+            <Form-item label="活动门店id" prop="mkaStoreId">
+                <i-input v-model="mkActivities.mkaStoreId" placeholder="活动门店id"/>
+            </Form-item>
+            <Form-item label="是否启用" prop="mkaStatus">
+                <i-input v-model="mkActivities.mkaStatus" placeholder="是否启用"/>
+            </Form-item>
+            <Form-item label="开始时间" prop="mkaStartTime">
+                <i-input v-model="mkActivities.mkaStartTime" placeholder="开始时间"/>
+            </Form-item>
+            <Form-item label="结束时间" prop="mkdEndTime">
+                <i-input v-model="mkActivities.mkdEndTime" placeholder="结束时间"/>
+            </Form-item>
+            <Form-item label="是否提前结束" prop="mkaEndEarly">
+                <i-input v-model="mkActivities.mkaEndEarly" placeholder="是否提前结束"/>
+            </Form-item>
+            <Form-item label="提前结束时间" prop="mkdEndEarlyTime">
+                <i-input v-model="mkActivities.mkdEndEarlyTime" placeholder="提前结束时间"/>
+            </Form-item>
+            <Form-item label="创建时间" prop="createTime">
+                <i-input v-model="mkActivities.createTime" placeholder="创建时间"/>
+            </Form-item>
+            <Form-item label="创建人编号" prop="createrSn">
+                <i-input v-model="mkActivities.createrSn" placeholder="创建人编号"/>
+            </Form-item>
+            <Form-item label="修改时间" prop="updateTime">
+                <i-input v-model="mkActivities.updateTime" placeholder="修改时间"/>
+            </Form-item>
+            <Form-item label="修改人编号" prop="moderSn">
+                <i-input v-model="mkActivities.moderSn" placeholder="修改人编号"/>
+            </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>
+</div>
+
+<script src="${rc.contextPath}/js/mk/mkactivities.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 72 - 0
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivitiesassociation.html

@@ -0,0 +1,72 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title></title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<div v-show="showList">
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <div class="buttons-group">
+                #if($shiro.hasPermission("mkactivitiesassociation:save"))
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivitiesassociation:update"))
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivitiesassociation:delete"))
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                #end
+            </div>
+        </Row>
+	    <table id="jqGrid"></table>
+	    <div id="jqGridPager"></div>
+    </div>
+
+    <Card v-show="!showList">
+        <p slot="title">{{title}}</p>
+		<i-form ref="formValidate" :model="mkActivitiesAssociation" :rules="ruleValidate" :label-width="80">
+            <Form-item label="活动形式代码" prop="mkCode">
+                <i-input v-model="mkActivitiesAssociation.mkCode" placeholder="活动形式代码"/>
+            </Form-item>
+            <Form-item label="营销活动编号" prop="mkaId">
+                <i-input v-model="mkActivitiesAssociation.mkaId" placeholder="营销活动编号"/>
+            </Form-item>
+            <Form-item label="活动门店id" prop="mkaStoreId">
+                <i-input v-model="mkActivitiesAssociation.mkaStoreId" placeholder="活动门店id"/>
+            </Form-item>
+            <Form-item label="是否启用" prop="mkaStatus">
+                <i-input v-model="mkActivitiesAssociation.mkaStatus" placeholder="是否启用"/>
+            </Form-item>
+            <Form-item label="开始时间" prop="mkaStartTime">
+                <i-input v-model="mkActivitiesAssociation.mkaStartTime" placeholder="开始时间"/>
+            </Form-item>
+            <Form-item label="结束时间" prop="mkdEndTime">
+                <i-input v-model="mkActivitiesAssociation.mkdEndTime" placeholder="结束时间"/>
+            </Form-item>
+            <Form-item label="是否提前结束" prop="mkaEndEarly">
+                <i-input v-model="mkActivitiesAssociation.mkaEndEarly" placeholder="是否提前结束"/>
+            </Form-item>
+            <Form-item label="提前结束时间" prop="mkdEndEarlyTime">
+                <i-input v-model="mkActivitiesAssociation.mkdEndEarlyTime" placeholder="提前结束时间"/>
+            </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>
+</div>
+
+<script src="${rc.contextPath}/js/mk/mkactivitiesassociation.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 167 - 0
kmall-admin/src/main/webapp/WEB-INF/page/mk/mkactivityform.html

@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title></title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<!--<div v-show="showList">
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <div class="buttons-group">
+                #if($shiro.hasPermission("mkactivityform:save"))
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivityform:update"))
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivityform:delete"))
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                #end
+            </div>
+        </Row>
+	    <table id="jqGrid"></table>
+	    <div id="jqGridPager"></div>
+    </div>-->
+
+    <Card v-show="showViewList">
+        <p slot="title">活动形式管理</p>
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <i-button @click="reloadSearch">重置</i-button>
+            </div>
+            <div class="buttons-group">
+                #if($shiro.hasPermission("mkactivityform:save"))
+                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivityform:update"))
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                #end
+                #if($shiro.hasPermission("mkactivityform:delete"))
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                #end
+            </div>
+        </Row>
+        <table id="jqGrid"></table>
+        <div id="jqGridPager"></div>
+    </Card>
+
+    <Card v-show="!showList">
+        <p slot="title">{{title}}</p>
+		<i-form ref="formValidate" :model="mkActivityForm" :rules="ruleValidate" :label-width="80">
+            <Form-item label="活动形式代码" prop="mkCode">
+                <i-input v-model="mkActivityForm.mkCode" placeholder="活动形式代码"/>
+            </Form-item>
+            <Form-item label="活动形式名称" prop="mkName">
+                <i-input v-model="mkActivityForm.mkName" placeholder="活动形式名称"/>
+            </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="!showMkactivitiesViewList">
+        <p slot="title">{{title}}</p>
+        <Row :gutter="16">
+            <div class="search-group">
+                <i-col span="4">
+                    <i-input v-model="q.name" @on-enter="query" placeholder="名称"/>
+                </i-col>
+                <i-button @click="query">查询</i-button>
+                <!--<i-button @click="reloadSearch">重置</i-button>-->
+            </div>
+            <div class="buttons-group">
+                <!--#if($shiro.hasPermission("mkactivities:save"))-->
+                <i-button type="info" @click="addMkactivities"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                <!--#end-->
+                <!--#if($shiro.hasPermission("mkactivities:update"))-->
+                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>
+                <!--#end-->
+                <!--#if($shiro.hasPermission("mkactivities:delete"))-->
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                <!--#end-->
+                <i-button type="info" @click="addMkactivities"><i class="fa fa-plus"></i>&nbsp;新增</i-button>
+                <i-button type="warning" @click="reload">返回活动形式页</i-button>
+            </div>
+        </Row>
+        <table id="jqGridOrder"></table>
+        <div id="jqGridPagerOrder"></div>
+    </Card>
+
+    <Card v-show="!showMkactivitiesList">
+        <p slot="title">{{title}}</p>
+        <i-form ref="formMkactivitiesValidate" :model="mkActivities" :rules="ruleValidate" :label-width="80">
+            <Form-item label="活动主题" prop="mkaTopic">
+                <i-input v-model="mkActivities.mkaTopic" placeholder="活动主题"/>
+            </Form-item>
+            <Form-item label="商户" prop="merchSn">
+                <i-select v-model="mkActivities.merchSn" filterable placeholder="商户" @on-change="changeMerch" label-in-value>
+                    <i-option v-for="merch in merchList" :value="merch.merchSn" :key="merch.merchSn">{{merch.merchName}}</i-option>
+                </i-select>
+            </Form-item>
+            <Form-item label="第三方商户" prop="thirdMerchSn">
+                <i-select v-model="mkActivities.thirdMerchSn" filterable placeholder="第三方商户" @on-change="changeThirdMerchantBiz" label-in-value>
+                    <i-option v-for="thirdMerchant in thirdMerchantBizList" :value="thirdMerchant.thirdPartyMerchCode"
+                              :key="thirdMerchant.thirdPartyMerchCode">{{thirdMerchant.thirdPartyMerchName}}</i-option>
+                </i-select>
+            </Form-item>
+            <Form-item label="活动门店" prop="mkaStoreId">
+                <i-select v-model="mkActivities.mkaStoreId" placeholder="活动门店" label-in-value>
+                    <i-option v-for="store in storeList" :value="store.id" :key="store.id">{{store.storeName}}</i-option>
+                </i-select>
+            </Form-item>
+            <Form-item label="是否启用" prop="mkaStatus">
+                <Radio-group v-model="mkActivities.mkaStatus">
+                    <Radio label="1">
+                        <span>是</span>
+                    </Radio>
+                    <Radio label="0">
+                        <span>否</span>
+                    </Radio>
+                </Radio-group>
+            </Form-item>
+            <Form-item label="开始时间" prop="mkaStartTime">
+                <Date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" v-model="mkActivities.mkaStartTime" @on-change="getMkaStartTime" placeholder="开始时间" style="width: 240px"></Date-picker>
+            </Form-item>
+            <Form-item label="结束时间" prop="mkdEndTime">
+                <Date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" v-model="mkActivities.mkdEndTime" @on-change="getMkdEndTime" placeholder="结束时间" style="width: 240px"></Date-picker>
+            </Form-item>
+            <Form-item label="是否提前结束" prop="mkaEndEarly">
+                <Radio-group v-model="mkActivities.mkaEndEarly" @on-change="changeMkaEndEarly">
+                    <Radio label="1">
+                        <span>是</span>
+                    </Radio>
+                    <Radio label="0">
+                        <span>否</span>
+                    </Radio>
+                </Radio-group>
+            </Form-item>
+            <Form-item label="提前结束时间" prop="mkdEndEarlyTime" v-show="isMkdEndEarlyTimeShow">
+                <Date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" v-model="mkActivities.mkdEndEarlyTime" @on-change="getMkdEndEarlyTime" placeholder="提前结束时间" style="width: 240px"></Date-picker>
+            </Form-item>
+            <Form-item>
+                <i-button type="primary" @click="handleMkactivitiesSubmit('formMkactivitiesValidate')">提交</i-button>
+                <i-button type="warning" @click="updateMkactivities" style="margin-left: 8px"/>返回</i-button>
+                <i-button type="ghost" @click="handleReset('formMkactivitiesValidate')" style="margin-left: 8px">重置</i-button>
+            </Form-item>
+        </i-form>
+    </Card>
+</div>
+
+<script src="${rc.contextPath}/js/mk/mkactivityform.js?_${date.systemTime}"></script>
+</body>
+</html>

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

@@ -158,7 +158,7 @@
                     <!--</Form-item>-->
                     <Form-item label="活动起始时间" prop="campBegTime">
                         <Date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" v-model="mkStoreCampMinus.campBegTime" placeholder="活动起始时间"
-                                     style="width: 240px" v-show="!isOperatorShow"></Date-picker>
+                                                                                                              style="width: 240px" v-show="!isOperatorShow"></Date-picker>
                         <Date-picker type="datetime" format="yyyy-MM-dd HH:mm:ss" v-model="mkStoreCampMinus.campBegTime" placeholder="活动起始时间"
                                      style="width: 240px" v-show="isOperatorShow" disabled></Date-picker>
                     </Form-item>

+ 149 - 0
kmall-admin/src/main/webapp/js/mk/mkactivities.js

@@ -0,0 +1,149 @@
+$(function () {
+    $("#jqGrid").jqGrid({
+        url: '../mkactivities/list',
+        datatype: "json",
+        colModel: [
+			{label: 'mkaId', name: 'mkaId', index: 'mka_id', key: true, hidden: true},
+			{label: '活动主题', name: 'mkaTopic', index: 'mka_topic', width: 80},
+			{label: '活动门店id', name: 'mkaStoreId', index: 'mka_store_id', width: 80},
+			{label: '是否启用', name: 'mkaStatus', index: 'mka_status', width: 80},
+			{label: '开始时间', name: 'mkaStartTime', index: 'mka_start_time', width: 80},
+			{label: '结束时间', name: 'mkdEndTime', index: 'mkd_end_time', width: 80},
+			{label: '是否提前结束', name: 'mkaEndEarly', index: 'mka_end_early', width: 80},
+			{label: '提前结束时间', name: 'mkdEndEarlyTime', index: 'mkd_end_early_time', width: 80},
+			{label: '创建时间', name: 'createTime', index: 'create_time', width: 80},
+			{label: '创建人编号', name: 'createrSn', index: 'creater_sn', width: 80},
+			{label: '修改时间', name: 'updateTime', index: 'update_time', width: 80},
+			{label: '修改人编号', name: 'moderSn', index: 'moder_sn', width: 80}],
+		viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPager",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });
+});
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showList: true,
+        title: null,
+		mkActivities: {},
+		ruleValidate: {
+			name: [
+				{required: true, message: '名称不能为空', trigger: 'blur'}
+			]
+		},
+		q: {
+		    name: ''
+		}
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		add: function () {
+			vm.showList = false;
+			vm.title = "新增";
+			vm.mkActivities = {};
+		},
+		update: function (event) {
+            let mkaId = getSelectedRow();
+			if (mkaId == null) {
+				return;
+			}
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(mkaId)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.mkActivities.mkaId == null ? "../mkactivities/save" : "../mkactivities/update";
+			$.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.mkActivities),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let mkaIds = getSelectedRows();
+			if (mkaIds == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../mkactivities/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(mkaIds),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(mkaId){
+			$.get("../mkactivities/info/"+mkaId, function (r) {
+                vm.mkActivities = r.mkActivities;
+            });
+		},
+        reloadSearch: function() {
+            vm.q = {
+                name: ''
+            }
+            vm.reload();
+		},
+		reload: function (event) {
+			vm.showList = true;
+            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
+			$("#jqGrid").jqGrid('setGridParam', {
+                postData: {'name': vm.q.name},
+                page: page
+            }).trigger("reloadGrid");
+            vm.handleReset('formValidate');
+		},
+        handleSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.saveOrUpdate()
+            });
+        },
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        }
+	}
+});

+ 146 - 0
kmall-admin/src/main/webapp/js/mk/mkactivitiesassociation.js

@@ -0,0 +1,146 @@
+$(function () {
+    $("#jqGrid").jqGrid({
+        url: '../mkactivitiesassociation/list',
+        datatype: "json",
+        colModel: [
+			{label: 'mkaaId', name: 'mkaaId', index: 'mkaa_id', key: true, hidden: true},
+			{label: '活动形式代码', name: 'mkCode', index: 'mk_code', width: 80},
+			{label: '营销活动编号', name: 'mkaId', index: 'mka_id', width: 80},
+			{label: '活动门店id', name: 'mkaStoreId', index: 'mka_store_id', width: 80},
+			{label: '是否启用', name: 'mkaStatus', index: 'mka_status', width: 80},
+			{label: '开始时间', name: 'mkaStartTime', index: 'mka_start_time', width: 80},
+			{label: '结束时间', name: 'mkdEndTime', index: 'mkd_end_time', width: 80},
+			{label: '是否提前结束', name: 'mkaEndEarly', index: 'mka_end_early', width: 80},
+			{label: '提前结束时间', name: 'mkdEndEarlyTime', index: 'mkd_end_early_time', width: 80}],
+		viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPager",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });
+});
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showList: true,
+        title: null,
+		mkActivitiesAssociation: {},
+		ruleValidate: {
+			name: [
+				{required: true, message: '名称不能为空', trigger: 'blur'}
+			]
+		},
+		q: {
+		    name: ''
+		}
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		add: function () {
+			vm.showList = false;
+			vm.title = "新增";
+			vm.mkActivitiesAssociation = {};
+		},
+		update: function (event) {
+            let mkaaId = getSelectedRow();
+			if (mkaaId == null) {
+				return;
+			}
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(mkaaId)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.mkActivitiesAssociation.mkaaId == null ? "../mkactivitiesassociation/save" : "../mkactivitiesassociation/update";
+			$.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.mkActivitiesAssociation),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let mkaaIds = getSelectedRows();
+			if (mkaaIds == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../mkactivitiesassociation/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(mkaaIds),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(mkaaId){
+			$.get("../mkactivitiesassociation/info/"+mkaaId, function (r) {
+                vm.mkActivitiesAssociation = r.mkActivitiesAssociation;
+            });
+		},
+        reloadSearch: function() {
+            vm.q = {
+                name: ''
+            }
+            vm.reload();
+		},
+		reload: function (event) {
+			vm.showList = true;
+            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
+			$("#jqGrid").jqGrid('setGridParam', {
+                postData: {'name': vm.q.name},
+                page: page
+            }).trigger("reloadGrid");
+            vm.handleReset('formValidate');
+		},
+        handleSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.saveOrUpdate()
+            });
+        },
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        }
+	}
+});

+ 355 - 0
kmall-admin/src/main/webapp/js/mk/mkactivityform.js

@@ -0,0 +1,355 @@
+$(function () {
+    $("#jqGrid").jqGrid({
+        url: '../mkactivityform/list',
+        datatype: "json",
+        colModel: [
+			{label: 'mmId', name: 'mmId', index: 'mm_id', key: true, hidden: true},
+			{label: '活动形式名称', name: 'mkName', index: 'mk_name', width: 80, align: 'center'},
+			{label: '活动形式代码', name: 'mkCode', index: 'mk_code', width: 80, align: 'center'},
+			{label: '创建时间', name: 'createTime', index: 'create_time', width: 80, align: 'center',
+                formatter: function (value) {
+                    return transDate(value, 'yyyy-MM-dd hh:mm:ss');
+                }
+			},
+			{label: '创建人', name: 'createrName', width: 80, align: 'center'},
+            {label: '操作', width: 80, align: 'center',
+                formatter: function (value, col, row) {
+                    htmlStr = "<button class='btn btn-outline btn-primary' " +
+                        "onclick='vm.updateMkactivities(\""+row.mkCode+"\")'>管理营销方式</button>";
+            		return htmlStr;
+				}
+			}
+		],
+		viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPager",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });
+
+    $("#jqGridOrder").jqGrid({
+        url: '../mkactivityform/queryMkactivitiesList',
+        datatype: "json",
+        colModel: [
+            {label: 'mkaId', name: 'mkaId', index: 'mka_id', key: true, hidden: true},
+            {label: '活动主题', name: 'mkaTopic', index: 'mka_topic', width: 80, align: 'center'},
+            {label: '商户名称', name: 'mkaStoreId', index: 'mka_store_id', width: 80, align: 'center'},
+            {label: '第三方商户', name: 'mkaStoreId', index: 'mka_store_id', width: 80, align: 'center'},
+            {label: '活动门店', name: 'mkaStoreId', index: 'mka_store_id', width: 80, align: 'center'},
+            {label: '是否启用', name: 'mkaStatus', index: 'mka_status', width: 60, align: 'center',
+                formatter: function (value) {
+                    if (value == '0') {
+                        return '否';
+                    } else if (value == '1') {
+                        return '是';
+                    }
+                    return '';
+                }
+            },
+            {label: '开始时间', name: 'mkaStartTime', index: 'mka_start_time', width: 80, align: 'center'},
+            {label: '结束时间', name: 'mkdEndTime', index: 'mkd_end_time', width: 80, align: 'center'},
+            {label: '是否提前结束', name: 'mkaEndEarly', index: 'mka_end_early', width: 60, align: 'center',
+                formatter: function (value) {
+                    if (value == '0') {
+                        return '否';
+                    } else if (value == '1') {
+                        return '是';
+                    }
+                    return '';
+                }
+            },
+            {label: '提前结束时间', name: 'mkdEndEarlyTime', index: 'mkd_end_early_time', width: 80, align: 'center'},
+            {label: '创建时间', name: 'createTime', index: 'create_time', width: 80, align: 'center',
+                formatter: function (value) {
+                    return transDate(value, 'yyyy-MM-dd hh:mm:ss');
+                }
+            },
+            {label: '创建人', name: 'createrSn', index: 'creater_sn', width: 80, align: 'center'},
+            {label: '修改时间', name: 'updateTime', index: 'update_time', width: 80, align: 'center',
+                formatter: function (value) {
+                    return transDate(value, 'yyyy-MM-dd hh:mm:ss');
+                }
+            },
+            {label: '修改人', name: 'moderSn', index: 'moder_sn', width: 80, align: 'center'}],
+        viewrecords: true,
+        height: 550,
+        rowNum: 10,
+        rowList: [10, 30, 50],
+        rownumbers: true,
+        rownumWidth: 25,
+        autowidth: true,
+        multiselect: true,
+        pager: "#jqGridPagerOrder",
+        jsonReader: {
+            root: "page.list",
+            page: "page.currPage",
+            total: "page.totalPage",
+            records: "page.totalCount"
+        },
+        prmNames: {
+            page: "page",
+            rows: "limit",
+            order: "order"
+        },
+        gridComplete: function () {
+            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
+        }
+    });
+});
+
+let vm = new Vue({
+	el: '#rrapp',
+	data: {
+        showViewList: true,
+        showList: true,
+        title: null,
+		mkActivityForm: {},
+		ruleValidate: {
+            mkCode: [
+				{required: true, message: '活动形式代码不能为空', trigger: 'blur'}
+			],
+            mkName: [
+                {required: true, message: '活动形式名称不能为空', trigger: 'blur'}
+            ]
+		},
+		q: {
+		    name: '',
+            mkCode: ''
+		},
+
+        showMkactivitiesViewList: true,//管理营销方式
+        showMkactivitiesList: true,
+        mkActivities: {},
+        mkCode: '',
+        isMkdEndEarlyTimeShow: true,//提前结束活动时间
+        merchList: {},//商户
+        thirdMerchantBizList: {},//第三方商户
+        storeList: {},//门店
+        mkaStartTime: '',//开始时间
+        mkdEndTime: '',//结束时间
+        mkdEndEarlyTime: ''//提前结束时间
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		add: function () {
+		    vm.showViewList = false;
+		    vm.showMkactivitiesViewList = true;
+			vm.showList = false;
+			vm.title = "新增";
+			vm.mkActivityForm = {};
+		},
+		update: function (event) {
+            let mmId = getSelectedRow();
+			if (mmId == null) {
+				return;
+			}
+            vm.showViewList = false;
+            vm.showMkactivitiesViewList = true;
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(mmId)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.mkActivityForm.mmId == null ? "../mkactivityform/save" : "../mkactivityform/update";
+			$.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.mkActivityForm),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let mmIds = getSelectedRows();
+			if (mmIds == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../mkactivityform/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(mmIds),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(mmId){
+			$.get("../mkactivityform/info/"+mmId, function (r) {
+                vm.mkActivityForm = r.mkActivityForm;
+            });
+		},
+        reloadSearch: function() {
+            vm.q = {
+                name: ''
+            }
+            vm.reload();
+		},
+		reload: function (event) {
+		    vm.showViewList = true;
+			vm.showList = true;
+			vm.showMkactivitiesViewList = true;
+            let page = $("#jqGrid").jqGrid('getGridParam', 'page');
+			$("#jqGrid").jqGrid('setGridParam', {
+                postData: {'name': vm.q.name},
+                page: page
+            }).trigger("reloadGrid");
+            vm.handleReset('formValidate');
+		},
+        handleSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.saveOrUpdate()
+            });
+        },
+        handleReset: function (name) {
+            handleResetForm(this, name);
+        },
+
+        //===营销方式管理方法===
+        updateMkactivities: function (mkCode){
+            if(null == mkCode){
+                return;
+            }
+
+            vm.mkCode = mkCode;
+            vm.title = '管理营销方式';
+            vm.showList = true;
+            vm.showViewList = false;
+            vm.showMkactivitiesViewList = false;
+            vm.showMkactivitiesList = true;
+
+            vm.reloadMkactivitiesSearch();
+        },
+        reloadMkactivitiesSearch: function() {
+            vm.reloadMkactivities();
+        },
+        reloadMkactivities: function () {
+            let page = $("#jqGridOrder").jqGrid('getGridParam', 'page');
+            $("#jqGridOrder").jqGrid('setGridParam', {
+                postData: {'mkCode': vm.mkCode},
+                page: page
+            }).trigger("reloadGrid");
+        },
+        addMkactivities: function () {
+		    vm.showMkactivitiesViewList = true;
+		    vm.showMkactivitiesList = false;
+            vm.title = "新增";
+            vm.mkActivities = {};
+
+            vm.getMerchList();
+        },
+        //返回重新加载营销方式
+        reloadMkactivities: function (event) {
+            vm.title = '管理营销方式';
+            vm.showList = true;
+            vm.showViewList = false;
+            vm.showMkactivitiesViewList = false;
+            vm.showMkactivitiesList = true;
+
+            vm.reloadMkactivitiesSearch();
+        },
+        getMerchList: function() {
+            $.get("../merch/queryAll", function (r) {
+                vm.merchList = r.list;
+            });
+        },
+        changeMerch: function(opt) {
+            var value = opt.value;
+            vm.getThirdMerchantBizList(value);
+        },
+        getThirdMerchantBizList: function(merchSn) {
+            $.get("../thirdmerchantbiz/queryAll?merchSn=" + merchSn, function (r) {
+                vm.thirdMerchantBizList = r.list;
+            });
+        },
+        changeThirdMerchantBiz: function (opt) {
+            var value = opt.value;
+            $.get("../store/getStoresByThirdMerch?thirdPartyMerchCode=" + value, function (r) {
+                vm.storeList = r.list;
+            });
+        },
+        changeMkaEndEarly: function (opt) {
+            var value = opt;
+            if(value == 0){
+                vm.isMkdEndEarlyTimeShow = false;
+            }
+            if(value == 1){
+                vm.isMkdEndEarlyTimeShow = true;
+            }
+        },
+        handleMkactivitiesSubmit: function (name) {
+            handleSubmitValidate(this, name, function () {
+                vm.mkactivitiesSaveOrUpdate()
+            });
+        },
+        mkactivitiesSaveOrUpdate: function (event) {
+            let url = vm.mkActivities.mkaId == null ? "../mkactivities/save" : "../mkactivities/update";
+            vm.mkActivities.mkCode = vm.mkCode;
+            vm.mkActivities.mkaStartTime = vm.mkaStartTime;
+            vm.mkActivities.mkdEndTime = vm.mkdEndTime;
+            vm.mkActivities.mkdEndEarlyTime = vm.mkdEndEarlyTime;
+            $.ajax({
+                type: "POST",
+                url: url,
+                contentType: "application/json",
+                data: JSON.stringify(vm.mkActivities),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reloadMkactivities();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+            });
+        },
+        getMkaStartTime: function(e){
+		    vm.mkaStartTime = e;
+        },
+        getMkdEndTime: function (e) {
+		    vm.mkdEndTime = e;
+        },
+        getMkdEndEarlyTime: function (e) {
+		    vm.mkdEndEarlyTime = e;
+        }
+	}
+});