Ver código fonte

积分规则设置1116

qng 3 anos atrás
pai
commit
c0dc4b2ab3
26 arquivos alterados com 730 adições e 64 exclusões
  1. 5 0
      kmall-admin/pom.xml
  2. 20 0
      kmall-admin/src/main/java/com/kmall/admin/controller/SysMacroController.java
  3. 55 6
      kmall-admin/src/main/java/com/kmall/admin/controller/vip/Mall2PointsRulesController.java
  4. 5 0
      kmall-admin/src/main/java/com/kmall/admin/dao/ProductStoreRelaDao.java
  5. 4 1
      kmall-admin/src/main/java/com/kmall/admin/dao/StoreDao.java
  6. 2 0
      kmall-admin/src/main/java/com/kmall/admin/dao/SysMacroDao.java
  7. 6 0
      kmall-admin/src/main/java/com/kmall/admin/dao/vip/Mall2PointsRulesDao.java
  8. 21 0
      kmall-admin/src/main/java/com/kmall/admin/dto/Mall2RulesDto.java
  9. 10 0
      kmall-admin/src/main/java/com/kmall/admin/entity/StoreEntity.java
  10. 62 20
      kmall-admin/src/main/java/com/kmall/admin/entity/vip/Mall2PointsRulesEntity.java
  11. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/SysMacroService.java
  12. 5 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/SysMacroServiceImpl.java
  13. 80 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/vip/Mall2PointsRulesServiceImpl.java
  14. 19 1
      kmall-admin/src/main/java/com/kmall/admin/service/vip/Mall2PointsRulesService.java
  15. 18 0
      kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml
  16. 10 0
      kmall-admin/src/main/resources/mybatis/mapper/StoreDao.xml
  17. 9 0
      kmall-admin/src/main/resources/mybatis/mapper/SysMacroDao.xml
  18. 16 0
      kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2PointsRulesDao.xml
  19. 60 0
      kmall-admin/src/main/webapp/WEB-INF/page/mk/mall2RulesDetil.html
  20. 18 21
      kmall-admin/src/main/webapp/WEB-INF/page/vip/mall2pointsrules.html
  21. 210 0
      kmall-admin/src/main/webapp/js/mk/mall2RulesDetil.js
  22. 9 9
      kmall-admin/src/main/webapp/js/shop/goods.js
  23. 76 6
      kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js
  24. BIN
      kmall-admin/src/main/webapp/statics/file/mall2RulesDetil_1.0.xlsx
  25. 3 0
      kmall-common/src/main/java/com/kmall/common/constant/JxlsXmlTemplateName.java
  26. 5 0
      pom.xml

+ 5 - 0
kmall-admin/pom.xml

@@ -153,6 +153,11 @@
             <artifactId>amqp-client</artifactId>
             <version>${amqp-client-version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.4</version>
+        </dependency>
 
 
     </dependencies>

+ 20 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/SysMacroController.java

@@ -1,6 +1,9 @@
 package com.kmall.admin.controller;
 
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.json.JsonWriteContext;
 import com.kmall.admin.entity.SysMacroEntity;
+import com.kmall.admin.service.StoreService;
 import com.kmall.admin.service.SysMacroService;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
@@ -24,6 +27,8 @@ import java.util.Map;
 public class SysMacroController {
     @Autowired
     private SysMacroService sysMacroService;
+    @Autowired
+    private StoreService storeService;
 
     /**
      * 查看列表
@@ -110,4 +115,19 @@ public class SysMacroController {
 
         return R.ok().put("list", list);
     }
+
+    /**
+     * 查询数据字典
+     *
+     * @param id
+     * @return
+     */
+    @RequestMapping("/queryMacrosByValueRuRules")
+    public R queryMacrosByValueRules(@RequestParam Integer id) {
+
+        List<SysMacroEntity> list = sysMacroService.queryMacrosByValueRules(id);
+
+        return R.ok().put("list", list);
+    }
+
 }

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

@@ -1,18 +1,23 @@
 package com.kmall.admin.controller.vip;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.kmall.admin.dto.Mall2RulesDto;
+import com.kmall.common.constant.JxlsXmlTemplateName;
 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 com.kmall.common.utils.excel.ExcelUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 import com.kmall.admin.entity.vip.Mall2PointsRulesEntity;
 import com.kmall.admin.service.vip.Mall2PointsRulesService;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 积分规则表Controller
@@ -26,7 +31,8 @@ import com.kmall.admin.service.vip.Mall2PointsRulesService;
 public class Mall2PointsRulesController {
     @Autowired
     private Mall2PointsRulesService mall2PointsRulesService;
-
+    @Autowired
+    private ExcelUtil excelUtil;
     /**
      * 查看列表
      */
@@ -94,14 +100,57 @@ public class Mall2PointsRulesController {
     }
 
     /**
-     * 查看所有列表
+     * 上传文件
+     */
+    @RequestMapping("/rulesUpload")
+    @ResponseBody
+    public R rulesUpload(@RequestParam("file") MultipartFile file, Integer mkaId) {
+        List<Mall2RulesDto> pointsRulesList = new ArrayList<>();//信息
+        try {
+            Mall2RulesDto mall2RulesDto = new Mall2RulesDto();
+            Map<String, Object> beans = new HashMap<String, Object>();
+            beans.put("Mall2RulesDto", mall2RulesDto);
+            beans.put("PointsRulesList", pointsRulesList);
+            if (file.isEmpty()) {
+                return R.error("文件不能为空!");
+            }
+            excelUtil.readExcel(JxlsXmlTemplateName.MALL_RULES_LIST, beans, file.getInputStream());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return R.error("导入失败!");
+        }
+        mall2PointsRulesService.rulesUploadDetil(pointsRulesList,mkaId);
+        //上传文件
+        return R.ok("导入成功!");
+    }
+
+    /**
+     * 查看所有明细列表
      */
     @RequestMapping("/queryAll")
     @ResponseBody
-    public R queryAll(@RequestParam Map<String, Object> params) {
+    public R queryRulesDetilAll(@RequestParam Map<String, Object> params) {
+
+
+        return R.ok().put("list", null);
+    }
+
+
+    /**
+     * 查看列表
+     */
+    @RequestMapping("/detilList")
+    @ResponseBody
+    public R detilList(@RequestParam Map<String, Object> params) {
+        //查询列表数据
+        Query query = new Query(params);
+
+        List<Mall2PointsRulesEntity> mall2PointsRulesList = mall2PointsRulesService.queryDetilList(query);
+        int total = mall2PointsRulesService.queryDetilTotal(query);
 
-        List<Mall2PointsRulesEntity> list = mall2PointsRulesService.queryList(params);
+        PageUtils pageUtil = new PageUtils(mall2PointsRulesList, total, query.getLimit(), query.getPage());
 
-        return R.ok().put("list", list);
+        return R.ok().put("page", pageUtil);
     }
+
 }

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

@@ -1,5 +1,6 @@
 package com.kmall.admin.dao;
 
+import com.kmall.admin.dto.Mall2RulesDto;
 import com.kmall.admin.entity.ProductStoreRelaEntity;
 import com.kmall.admin.entity.StoreTransferInventoryOrderDetailEntity;
 import org.apache.ibatis.annotations.Param;
@@ -101,4 +102,8 @@ public interface ProductStoreRelaDao extends BaseDao<ProductStoreRelaEntity> {
      * @param productStoreRelaEntities 门店库存信息
      */
     int restoreBatch(List<ProductStoreRelaEntity> productStoreRelaEntities);
+
+    ProductStoreRelaEntity getByStoreNameAndSku(@Param("storeName") String storeName, @Param("sku") String sku);
+
+    void updateProductStoreRela(List<Mall2RulesDto> pointsRulesList);
 }

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

@@ -1,5 +1,6 @@
 package com.kmall.admin.dao;
 
+import com.kmall.admin.dto.Mall2RulesDto;
 import com.kmall.admin.entity.StoreEntity;
 import org.apache.ibatis.annotations.Param;
 import com.kmall.manager.dao.BaseDao;
@@ -20,6 +21,8 @@ public interface StoreDao extends BaseDao<StoreEntity> {
     StoreEntity queryObjectByNumber(@Param("storeNumber") String storeNumber);
 
     List<StoreEntity> queryExportList(Map<String, Object> map);
-//    StoreEntity queryObjectByDistId(@Param("distId") Integer distId);
+
     List<StoreEntity> queryStoreByAll();
+
+    void updateObjectStore(List<Mall2RulesDto> item);
 }

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

@@ -21,4 +21,6 @@ public interface SysMacroDao extends BaseDao<SysMacroEntity> {
      * @return
      */
     List<SysMacroEntity> queryMacrosByValue(@Param("value") String value);
+
+    List<SysMacroEntity> queryMacrosByValueRules(Integer id);
 }

+ 6 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/vip/Mall2PointsRulesDao.java

@@ -1,8 +1,12 @@
 package com.kmall.admin.dao.vip;
 
+import com.kmall.admin.dto.Mall2RulesDto;
 import com.kmall.admin.entity.vip.Mall2PointsRulesEntity;
 import com.kmall.manager.dao.BaseDao;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 积分规则表Dao
  *
@@ -12,4 +16,6 @@ import com.kmall.manager.dao.BaseDao;
  */
 public interface Mall2PointsRulesDao extends BaseDao<Mall2PointsRulesEntity> {
 
+
+    Integer queryRulesDetilId(Integer mkaId);
 }

+ 21 - 0
kmall-admin/src/main/java/com/kmall/admin/dto/Mall2RulesDto.java

@@ -0,0 +1,21 @@
+package com.kmall.admin.dto;
+
+import lombok.Data;
+
+@Data
+public class Mall2RulesDto {
+
+    private Long mkaId;
+    //积分类型
+    private String rulesType;
+    //积分生成规则Name(门店,商品类别,商品)
+    private String pointsRulesName;
+    //门店ID,商品ID,商品分类ID
+    private Long rulesId;
+    //商品料件号
+    private String goodsSku;
+    //条码
+    private String barcode;
+    //备注
+    private String remark;
+}

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

@@ -86,6 +86,8 @@ public class StoreEntity implements Serializable {
     private String storeImgUrl;
     //门店电话号码
     private String telephoneNumber;
+    //积分生成规则id
+    private Long pointsRulesId;
 
     public String getTelephoneNumber() {
         return telephoneNumber;
@@ -344,4 +346,12 @@ public class StoreEntity implements Serializable {
     public void setModTime(Date modTime) {
         this.modTime = modTime;
     }
+
+    public Long getPointsRulesId() {
+        return pointsRulesId;
+    }
+
+    public void setPointsRulesId(Long pointsRulesId) {
+        this.pointsRulesId = pointsRulesId;
+    }
 }

+ 62 - 20
kmall-admin/src/main/java/com/kmall/admin/entity/vip/Mall2PointsRulesEntity.java

@@ -1,6 +1,7 @@
 package com.kmall.admin.entity.vip;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -19,9 +20,9 @@ public class Mall2PointsRulesEntity implements Serializable {
      */
     private Integer mprId;
     /**
-     * 积分类型  00.按金额  10.按数量
+     * 积分类型 :0.门店 ,1.商品类别,2.门店商品'
      */
-    private String pointsType;
+    private Integer pointsType;
     /**
      * 积分规则适用开始时间
      */
@@ -35,26 +36,35 @@ public class Mall2PointsRulesEntity implements Serializable {
      */
     private String isValid;
     /**
-     * +创建人编号
+     * 创建人编号
      */
     private String createrSn;
     /**
-     * +创建时间,yyyy-MM-dd HH:mm:ss
+     * 创建时间,yyyy-MM-dd HH:mm:ss
      */
     private Date createTime;
     /**
-     * +修改人编号
+     * 修改人编号
      */
     private String moderSn;
     /**
-     * +修改时间,yyyy-MM-dd HH:mm:ss
+     * 修改时间,yyyy-MM-dd HH:mm:ss
      */
     private Date modTime;
     /**
-     * +时间戳
+     * 时间戳
      */
     private Date tstm;
-
+    /**
+     * 备注
+     */
+    private String remark;
+    //积分金额
+    private BigDecimal pointsRulesMoney;
+    //对应积分数
+    private String pointsRulesNum;
+    //赠送积分
+    private String handselIntegral;
     /**
      * 设置:主键
      */
@@ -71,14 +81,14 @@ public class Mall2PointsRulesEntity implements Serializable {
     /**
      * 设置:积分类型  00.按金额  10.按数量
      */
-    public void setPointsType(String pointsType) {
+    public void setPointsType(Integer pointsType) {
         this.pointsType = pointsType;
     }
 
     /**
      * 获取:积分类型  00.按金额  10.按数量
      */
-    public String getPointsType() {
+    public Integer getPointsType() {
         return pointsType;
     }
     /**
@@ -121,68 +131,100 @@ public class Mall2PointsRulesEntity implements Serializable {
         return isValid;
     }
     /**
-     * 设置:+创建人编号
+     * 设置:创建人编号
      */
     public void setCreaterSn(String createrSn) {
         this.createrSn = createrSn;
     }
 
     /**
-     * 获取:+创建人编号
+     * 获取:创建人编号
      */
     public String getCreaterSn() {
         return createrSn;
     }
     /**
-     * 设置:+创建时间,yyyy-MM-dd HH:mm:ss
+     * 设置:创建时间,yyyy-MM-dd HH:mm:ss
      */
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
 
     /**
-     * 获取:+创建时间,yyyy-MM-dd HH:mm:ss
+     * 获取:创建时间,yyyy-MM-dd HH:mm:ss
      */
     public Date getCreateTime() {
         return createTime;
     }
     /**
-     * 设置:+修改人编号
+     * 设置:修改人编号
      */
     public void setModerSn(String moderSn) {
         this.moderSn = moderSn;
     }
 
     /**
-     * 获取:+修改人编号
+     * 获取:修改人编号
      */
     public String getModerSn() {
         return moderSn;
     }
     /**
-     * 设置:+修改时间,yyyy-MM-dd HH:mm:ss
+     * 设置:修改时间,yyyy-MM-dd HH:mm:ss
      */
     public void setModTime(Date modTime) {
         this.modTime = modTime;
     }
 
     /**
-     * 获取:+修改时间,yyyy-MM-dd HH:mm:ss
+     * 获取:修改时间,yyyy-MM-dd HH:mm:ss
      */
     public Date getModTime() {
         return modTime;
     }
     /**
-     * 设置:+时间戳
+     * 设置:时间戳
      */
     public void setTstm(Date tstm) {
         this.tstm = tstm;
     }
 
     /**
-     * 获取:+时间戳
+     * 获取:时间戳
      */
     public Date getTstm() {
         return tstm;
     }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    public BigDecimal getPointsRulesMoney() {
+        return pointsRulesMoney;
+    }
+
+    public void setPointsRulesMoney(BigDecimal pointsRulesMoney) {
+        this.pointsRulesMoney = pointsRulesMoney;
+    }
+
+    public String getPointsRulesNum() {
+        return pointsRulesNum;
+    }
+
+    public void setPointsRulesNum(String pointsRulesNum) {
+        this.pointsRulesNum = pointsRulesNum;
+    }
+
+    public String getHandselIntegral() {
+        return handselIntegral;
+    }
+
+    public void setHandselIntegral(String handselIntegral) {
+        this.handselIntegral = handselIntegral;
+    }
 }

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

@@ -71,4 +71,6 @@ public interface SysMacroService {
     int deleteBatch(Long[] macroIds);
 
     List<SysMacroEntity> queryMacrosByValue(String value);
+
+    List<SysMacroEntity> queryMacrosByValueRules(Integer id);
 }

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

@@ -63,4 +63,9 @@ public class SysMacroServiceImpl implements SysMacroService {
     public List<SysMacroEntity> queryMacrosByValue(String value) {
         return sysMacroDao.queryMacrosByValue(value);
     }
+
+    @Override
+    public List<SysMacroEntity> queryMacrosByValueRules(Integer id) {
+        return sysMacroDao.queryMacrosByValueRules(id);
+    }
 }

+ 80 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/vip/Mall2PointsRulesServiceImpl.java

@@ -1,5 +1,11 @@
 package com.kmall.admin.service.impl.vip;
 
+import com.kmall.admin.dao.ProductStoreRelaDao;
+import com.kmall.admin.dao.StoreDao;
+import com.kmall.admin.dto.Mall2RulesDto;
+import com.kmall.admin.entity.ProductStoreRelaEntity;
+import com.kmall.admin.entity.StoreEntity;
+import com.kmall.common.utils.Query;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -21,6 +27,10 @@ import com.kmall.admin.service.vip.Mall2PointsRulesService;
 public class Mall2PointsRulesServiceImpl implements Mall2PointsRulesService {
     @Autowired
     private Mall2PointsRulesDao mall2PointsRulesDao;
+    @Autowired
+    private StoreDao storeDao;
+    @Autowired
+    private ProductStoreRelaDao productStoreRelaDao;
 
     @Override
     public Mall2PointsRulesEntity queryObject(Integer mprId) {
@@ -56,4 +66,74 @@ public class Mall2PointsRulesServiceImpl implements Mall2PointsRulesService {
     public int deleteBatch(Integer[]mprIds) {
         return mall2PointsRulesDao.deleteBatch(mprIds);
     }
+
+
+    /**
+     * 积分规则明细导入
+     * @param pointsRulesList
+     * @param mkaId
+     */
+    @Override
+    public void rulesUploadDetil(List<Mall2RulesDto> pointsRulesList, Integer mkaId) {
+        Integer pointsType = mall2PointsRulesDao.queryRulesDetilId(mkaId);
+        pointsRulesList.forEach(mall2RulesDto -> {
+            switch (pointsType) {
+                //门店
+                case 0:
+                   StoreEntity storeEntity = storeDao.queryObjectByName(mall2RulesDto.getPointsRulesName().trim());
+                   mall2RulesDto.setRulesId(storeEntity.getId());
+                   break;
+                //商品类别
+                case 1:
+
+                    break;
+                //商品
+                case 2:
+                    ProductStoreRelaEntity productStoreRelaEntity = productStoreRelaDao.getByStoreSnAndSku(mall2RulesDto.getPointsRulesName(),mall2RulesDto.getGoodsSku());
+                    mall2RulesDto.setRulesId(productStoreRelaEntity.getId());
+                    break;
+                default:
+                    break;
+            }
+        });
+
+        storeDao.updateObjectStore(pointsRulesList);
+
+        productStoreRelaDao.updateProductStoreRela(pointsRulesList);
+    }
+
+    /**
+     * 查询积分明细数据
+     * @param query
+     * @return
+     */
+    @Override
+    public List<Mall2PointsRulesEntity> queryDetilList(Query query) {
+        Integer id = (Integer) query.get("mkaId");
+        Integer pointsType = mall2PointsRulesDao.queryRulesDetilId(id);
+            switch (pointsType) {
+                //门店
+                case 0:
+                    break;
+                //商品类别
+                case 1:
+                    break;
+                //商品
+                case 2:
+                    break;
+                default:
+                    break;
+            }
+        return null;
+    }
+
+    /**
+     * 查询积分明细总数
+     * @param query
+     * @return
+     */
+    @Override
+    public int queryDetilTotal(Query query) {
+        return 0;
+    }
 }

+ 19 - 1
kmall-admin/src/main/java/com/kmall/admin/service/vip/Mall2PointsRulesService.java

@@ -1,6 +1,8 @@
 package com.kmall.admin.service.vip;
 
+import com.kmall.admin.dto.Mall2RulesDto;
 import com.kmall.admin.entity.vip.Mall2PointsRulesEntity;
+import com.kmall.common.utils.Query;
 
 import java.util.List;
 import java.util.Map;
@@ -17,7 +19,7 @@ public interface Mall2PointsRulesService {
     /**
      * 根据主键查询实体
      *
-     * @param id 主键
+     * @param mprId 主键
      * @return 实体
      */
     Mall2PointsRulesEntity queryObject(Integer mprId);
@@ -69,4 +71,20 @@ public interface Mall2PointsRulesService {
      * @return 删除条数
      */
     int deleteBatch(Integer[] mprIds);
+
+    void rulesUploadDetil(List<Mall2RulesDto> pointsRulesList, Integer mkaId);
+
+    /**
+     * 查询积分明细数据
+     * @param query
+     * @return
+     */
+    List<Mall2PointsRulesEntity> queryDetilList(Query query);
+
+    /**
+     * 查询积分明细总数
+     * @param query
+     * @return
+     */
+    int queryDetilTotal(Query query);
 }

+ 18 - 0
kmall-admin/src/main/resources/mybatis/mapper/ProductStoreRelaDao.xml

@@ -916,4 +916,22 @@
         and p.sku = #{sku}
     </select>
 
+    <select id="getByStoreNameAndSku" resultType="com.kmall.admin.entity.ProductStoreRelaEntity">
+        select p.id,p.store_id as storeId,p.sku from mall_product_store_rela p , mall_store s
+        where p.store_id = s.id and s.store_name = #{storeName}
+        and p.sku = #{sku}
+    </select>
+
+    <update id="updateProductStoreRela" parameterType="java.util.List">
+        <foreach collection="list" item="item" index="index" separator=";">
+            update mall_product_store_rela
+            <set>
+               points_rules_id = #{shopSn,jdbcType=VARCHAR}
+            </set>
+            where
+            store_id = #{shopSn,jdbcType=VARCHAR}
+            and sku = #{item.sku,jdbcType=VARCHAR}
+        </foreach>
+    </update>
+
 </mapper>

+ 10 - 0
kmall-admin/src/main/resources/mybatis/mapper/StoreDao.xml

@@ -339,4 +339,14 @@
 			AND s.id = #{id}
 		</if>
 	</select>
+
+
+	<update id="updateObjectStore" parameterType="java.util.List">
+		update mall_store
+		<set>
+			<if test="mkaId != null">`points_rules_id` = #{mkaId}, </if>
+		</set>
+		where id = #{rulesId}
+	</update>
+
 </mapper>

+ 9 - 0
kmall-admin/src/main/resources/mybatis/mapper/SysMacroDao.xml

@@ -137,4 +137,13 @@
           AND exists(SELECT 1 from sys_macro m WHERE m.id = sys_macro.parent_id and m.value =#{value} )
           AND `type` = '1'
     </select>
+
+    <select id="queryMacrosByValueRules" parameterType="java.lang.Integer" resultType="com.kmall.admin.entity.SysMacroEntity">
+    select
+    `name`,
+    `value`
+    from sys_macro
+    where parent_id = #{id}
+    </select>
+
 </mapper>

+ 16 - 0
kmall-admin/src/main/resources/mybatis/mapper/vip/Mall2PointsRulesDao.xml

@@ -20,6 +20,8 @@
 		select
 			`mpr_id`,
 			`points_type`,
+			 points_rules_money as pointsRulesMoney,
+			 points_rules_num as pointsRulesNum,
 			`points_begin_time`,
 			`points_end_time`,
 			`is_valid`,
@@ -36,6 +38,8 @@
 		select
     		`mpr_id`,
     		`points_type`,
+			 points_rules_money as pointsRulesMoney,
+			 points_rules_num as pointsRulesNum,
     		`points_begin_time`,
     		`points_end_time`,
     		`is_valid`,
@@ -74,6 +78,8 @@
 		insert into mall2_points_rules(
 			`mpr_id`,
 			`points_type`,
+			 points_rules_money,
+			 points_rules_num,
 			`points_begin_time`,
 			`points_end_time`,
 			`is_valid`,
@@ -85,6 +91,8 @@
 		values(
 			#{mprId},
 			#{pointsType},
+			#{pointsRulesMoney},
+			#{pointsRulesNum},
 			#{pointsBeginTime},
 			#{pointsEndTime},
 			#{isValid},
@@ -99,6 +107,8 @@
 		update mall2_points_rules
 		<set>
 			<if test="pointsType != null">`points_type` = #{pointsType}, </if>
+			<if test="pointsRulesMoney != null">`points_rules_money` = #{pointsRulesMoney}, </if>
+			<if test="pointsRulesNum != null">`points_rules_num` = #{pointsRulesNum}, </if>
 			<if test="pointsBeginTime != null">`points_begin_time` = #{pointsBeginTime}, </if>
 			<if test="pointsEndTime != null">`points_end_time` = #{pointsEndTime}, </if>
 			<if test="isValid != null">`is_valid` = #{isValid}, </if>
@@ -121,5 +131,11 @@
 			#{mprId}
 		</foreach>
 	</delete>
+	
+	<select id="queryRulesDetilId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
+       select points_type from mall2_points_rules where mpr_id=#{mkaId}
+	</select>
+
+
 
 </mapper>

+ 60 - 0
kmall-admin/src/main/webapp/WEB-INF/page/mk/mall2RulesDetil.html

@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title></title>
+    #parse("sys/header.html")
+</head>
+<body>
+<div id="rrapp" v-cloak>
+	<Card v-show="showList">
+        <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" style="width: 100%;margin-top: 8px;">
+                <i-col style="display: inline-grid;">
+                    <Upload :show-upload-list="false" :on-success="uploadExcelSuccess" :on-error="uploadExcelError" :on-format-error="uploadExcelFormatError"
+                            :format="['xls','xlsx']"
+                            action="../mall2pointsrules/rulesUpload" :before-upload="beforeUpload"  :data="uploadData" >
+                        <i-button type="ghost" icon="ios-cloud-upload-outline">导入</i-button>
+                    </Upload>
+                </i-col>
+                <a href="../statics/file/mall2RulesDetil_1.0.xlsx">模板下载</a>
+            </div>
+            <div class="buttons-group">
+<!--                <i-button type="info" @click="add"><i class="fa fa-plus"></i>&nbsp;新增</i-button>-->
+<!--                <i-button type="warning" @click="update"><i class="fa fa-pencil-square-o"></i>&nbsp;修改</i-button>-->
+                <i-button type="error" @click="del"><i class="fa fa-trash-o"></i>&nbsp;删除</i-button>
+                <i-button type="warning" @click="reloadMkactivities" v-show="!isMkactivitiesShow">返回积分规则设置页</i-button>
+            </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="mkActivitiesHalfPrice" :rules="ruleValidate" :label-width="80">
+            <Form-item label="积分规则类型" prop="productName">
+                <i-input v-model="mkActivitiesHalfPrice.productName" placeholder="产品中文名"/>
+            </Form-item>
+            <Form-item label="对应的商品/门店/类别" prop="goodsSn">
+                <i-input v-model="mkActivitiesHalfPrice.goodsSn" 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/mall2RulesDetil.js?_${date.systemTime}"></script>
+</body>
+</html>

+ 18 - 21
kmall-admin/src/main/webapp/WEB-INF/page/vip/mall2pointsrules.html

@@ -34,32 +34,29 @@
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
 		<i-form ref="formValidate" :model="mall2PointsRules" :rules="ruleValidate" :label-width="80">
-            <Form-item label="积分类型  00.按金额  10.按数量" prop="pointsType">
-                <i-input v-model="mall2PointsRules.pointsType" placeholder="积分类型  00.按金额  10.按数量"/>
-            </Form-item>
-            <Form-item label="积分规则适用开始时间" prop="pointsBeginTime">
-                <i-input v-model="mall2PointsRules.pointsBeginTime" placeholder="积分规则适用开始时间"/>
-            </Form-item>
-            <Form-item label="积分规则适用结束时间" prop="pointsEndTime">
-                <i-input v-model="mall2PointsRules.pointsEndTime" placeholder="积分规则适用结束时间"/>
-            </Form-item>
-            <Form-item label="积分规则是否有效" prop="isValid">
-                <i-input v-model="mall2PointsRules.isValid" placeholder="积分规则是否有效"/>
+
+            <Form-item  label="积分类型" prop="pointsRulesId" style="height: 30px;">
+                <i-select v-model="mall2PointsRules.pointsType" placeholder="积分类型" @on-change="changeCategories"
+                          label-in-value style="width: 268px;height: 30px;">
+                    <i-option v-for="category in categories" :value="category.value"
+                              :key="category.value">{{category.name}}
+                    </i-option>
+                </i-select>
             </Form-item>
-            <Form-item label="+创建人编号" prop="createrSn">
-                <i-input v-model="mall2PointsRules.createrSn" placeholder="+创建人编号"/>
+            <Form-item label="积分金额" prop="pointsRulesMoney">
+                <i-input v-model="mall2PointsRules.pointsRulesMoney" placeholder="积分金额"/>
             </Form-item>
-            <Form-item label="+创建时间,yyyy-MM-dd HH:mm:ss" prop="createTime">
-                <i-input v-model="mall2PointsRules.createTime" placeholder="+创建时间,yyyy-MM-dd HH:mm:ss"/>
+            <Form-item label="对应积分数" prop="pointsRulesNum">
+                <i-input v-model="mall2PointsRules.pointsRulesNum" placeholder="对应积分数"/>
             </Form-item>
-            <Form-item label="+修改人编号" prop="moderSn">
-                <i-input v-model="mall2PointsRules.moderSn" placeholder="+修改人编号"/>
+            <Form-item label="适用开始时间" prop="pointsBeginTime">
+                <i-input type="date"  v-model="mall2PointsRules.pointsBeginTime" placeholder="积分规则适用开始时间"/>
             </Form-item>
-            <Form-item label="+修改时间,yyyy-MM-dd HH:mm:ss" prop="modTime">
-                <i-input v-model="mall2PointsRules.modTime" placeholder="+修改时间,yyyy-MM-dd HH:mm:ss"/>
+            <Form-item label="适用结束时间" prop="pointsEndTime">
+                <i-input type="date"  v-model="mall2PointsRules.pointsEndTime" placeholder="积分规则适用结束时间"/>
             </Form-item>
-            <Form-item label="+时间戳" prop="tstm">
-                <i-input v-model="mall2PointsRules.tstm" placeholder="+时间戳"/>
+            <Form-item label="是否有效" prop="isValid">
+                <i-input v-model="mall2PointsRules.isValid" placeholder="积分规则是否有效"/>
             </Form-item>
             <Form-item>
                 <i-button type="primary" @click="handleSubmit('formValidate')">提交</i-button>

+ 210 - 0
kmall-admin/src/main/webapp/js/mk/mall2RulesDetil.js

@@ -0,0 +1,210 @@
+$(function () {
+
+
+	let flag = getQueryString("flag");
+	if(flag != null && flag == "false"){
+		vm.isMkactivitiesShow = false;
+	}
+	let mkCode = getQueryString("mkCode");
+	if(mkCode){
+		vm.mkCode = mkCode;
+	}
+
+	let storeId = getQueryString("storeId");
+	console.log(storeId);
+	if(storeId){
+		vm.storeId = storeId;
+	}
+	let mkaId = getQueryString("mkaId");
+	if(mkaId){
+		vm.mkaId = mkaId;
+	}
+
+    $("#jqGrid").jqGrid({
+        url: '../mall2pointsrules/detilList',
+        datatype: "json",
+        colModel: [
+			{label: 'Id', name: 'id', index: 'id', key: true, hidden: true},
+			{label: '积分规则类型', name: 'pointsRulesMoney', index: 'points_rules_money', width: 80, align: 'center'},
+			{label: '对应的商品/门店/类别名称', name: 'pointsRulesNum', index: 'points_rules_num', width: 80, align: 'center'},
+			{label: '备注', name: 'remark', index: 'remark', width: 80, align: 'center'},],
+		viewrecords: true,
+		postData: {'mkaId': vm.mkaId},
+        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,
+		mkActivitiesHalfPrice: {},
+		ruleValidate: {
+			name: [
+				{required: true, message: '名称不能为空', trigger: 'blur'}
+			]
+		},
+		q: {
+		    name: ''
+		},
+        isMkactivitiesShow: true,
+        mkCode: '',
+		uploadData:[],
+		storeId : '',
+		mkaId : ''
+	},
+	methods: {
+		query: function () {
+			vm.reload();
+		},
+		add: function () {
+			vm.showList = false;
+			vm.title = "新增";
+			vm.mkActivitiesHalfPrice = {};
+		},
+		update: function (event) {
+            let mafrId = getSelectedRow();
+			if (mafrId == null) {
+				return;
+			}
+			vm.showList = false;
+            vm.title = "修改";
+
+            vm.getInfo(mafrId)
+		},
+		saveOrUpdate: function (event) {
+            let url = vm.mkActivitiesHalfPrice.mafrId == null ? "../mkactivitieshalfprice/save" : "../mkactivitieshalfprice/update";
+
+			//添加上层的门店编号与营销方式编号
+
+			vm.mkActivitiesHalfPrice.shopSn = vm.storeId;
+			vm.mkActivitiesHalfPrice.mkaId = vm.mkaId;
+
+            $.ajax({
+				type: "POST",
+			    url: url,
+			    contentType: "application/json",
+			    data: JSON.stringify(vm.mkActivitiesHalfPrice),
+                success: function (r) {
+                    if (r.code === 0) {
+                        alert('操作成功', function (index) {
+                            vm.reload();
+                        });
+                    } else {
+                        alert(r.msg);
+                    }
+                }
+			});
+		},
+		del: function (event) {
+            let mafrIds = getSelectedRows();
+			if (mafrIds == null){
+				return;
+			}
+
+			confirm('确定要删除选中的记录?', function () {
+				$.ajax({
+					type: "POST",
+				    url: "../mkactivitieshalfprice/delete",
+				    contentType: "application/json",
+				    data: JSON.stringify(mafrIds),
+				    success: function (r) {
+						if (r.code == 0) {
+							alert('操作成功', function (index) {
+								$("#jqGrid").trigger("reloadGrid");
+							});
+						} else {
+							alert(r.msg);
+						}
+					}
+				});
+			});
+		},
+		getInfo: function(mafrId){
+			$.get("../mkactivitieshalfprice/info/"+mafrId, function (r) {
+                vm.mkActivitiesHalfPrice = r.mkActivitiesHalfPrice;
+            });
+		},
+        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);
+        },
+        //返回积分规则设置页
+        reloadMkactivities: function () {
+            window.location.href = "/vip/mall2pointsrules.html";
+        },
+		uploadExcelSuccess: function (data) {
+			// console.log(data);
+			if(data.code==0){
+				alert('导入成功', function (index) {
+					$("#jqGrid").trigger("reloadGrid");
+				});
+			}else{
+				alert(data.msg);
+			}
+		},
+		uploadExcelError: function () {
+			alert('上传出现异常,请重试!');
+		},
+		uploadExcelFormatError: function (file) {
+			this.$Notice.warning({
+				title: '文件格式不正确',
+				desc: '文件 ' + file.name + ' 格式不正确,请上传 xls 或 xlsx 格式的文件。'
+			});
+		},beforeUpload(){
+			vm.uploadData = {
+				mkaId : vm.mkaId
+			}
+			let promise = new Promise((resolve) => {
+				this.$nextTick(function () {
+					resolve(true);
+				});
+			});
+			return promise; //通过返回一个promis对象解决
+
+		},
+	}
+});

+ 9 - 9
kmall-admin/src/main/webapp/js/shop/goods.js

@@ -28,15 +28,15 @@ $(function () {
                     return '普通货物';
                 }
             },
-            {label: '库存是否共享', name: 'isStockShare', index: 'isStockShare', width: 100, align: 'center',
-                formatter: function (value) {
-                    if (value == '0') {
-                        return '否';
-                    } else if (value == '1') {
-                        return '是';
-                    }
-                    return '-';
-                }},
+            // {label: '库存是否共享', name: 'isStockShare', index: 'isStockShare', width: 100, align: 'center',
+            //     formatter: function (value) {
+            //         if (value == '0') {
+            //             return '否';
+            //         } else if (value == '1') {
+            //             return '是';
+            //         }
+            //         return '-';
+            //     }},
             {label: '商品库存', name: 'goodsNumber', index: 'goodsNumber', width: 100, align: 'right'},
             {label: '待恢复数量', name: 'toBeRestored', index: 'toBeRestored', width: 100, align: 'right',formatter:function(value){
                 if(value){

+ 76 - 6
kmall-admin/src/main/webapp/js/vip/mall2pointsrules.js

@@ -3,11 +3,51 @@ $(function () {
         url: '../mall2pointsrules/list',
         datatype: "json",
         colModel: [
-			{label: 'mprId', name: 'mprId', index: 'mpr_id', key: true, hidden: true},
-			{label: '积分类型  00.按金额  10.按数量', name: 'pointsType', index: 'points_type', width: 80},
-			{label: '积分规则适用开始时间', name: 'pointsBeginTime', index: 'points_begin_time', width: 80},
-			{label: '积分规则适用结束时间', name: 'pointsEndTime', index: 'points_end_time', width: 80},
-			{label: '积分规则是否有效', name: 'isValid', index: 'is_valid', width: 80},
+			{label: 'ID', name: 'mprId', index: 'mpr_id', key: true, hidden: true},
+			{
+				label: '积分类型', name: 'pointsType', index: 'points_type', width: 80, formatter: function (value) {
+					if (value === '0' || value === 0) {
+						return '门店';
+					}
+					if (value == '1') {
+						return '商品类别';
+					}
+					if (value == '2') {
+						return '门店商品';
+					}
+
+				}
+			},
+			{label: '积分金额', name: 'pointsRulesMoney', index: 'points_rules_money', width: 80},
+			{label: '对应积分数', name: 'pointsRulesNum', index: 'points_rules_num', width: 80},
+			{
+				label: '规则适用开始时间', name: 'pointsBeginTime', index: 'points_begin_time',align:"center", width: 200, formatter: function (value) {
+					return transDate(value, 'yyyy-MM-dd');
+				}
+			},
+			{
+				label: '规则适用结束时间', name: 'pointsEndTime', index: 'points_end_time',align:"center", width: 200, formatter: function (value) {
+					return transDate(value, 'yyyy-MM-dd');
+				}
+			},
+			{
+				label: '是否有效', name: 'isValid', index: 'is_valid', width: 80, formatter: function (value) {
+					if (value === '0' || value === 0) {
+						return '是';
+					}
+					if (value == '1') {
+						return '否';
+					}
+				}
+			},
+			{label: '操作', width: 80, align: 'center',
+				formatter: function (value, col, row) {
+					htmlStr = "<button class='btn btn-outline btn-primary' " +
+						"onclick='vm.showMkactivitiesGoods(\""+row.mprId+"\")'>管理详情</button>";
+
+					return htmlStr;
+				}
+			}
 			],
 		viewrecords: true,
         height: 550,
@@ -40,6 +80,8 @@ let vm = new Vue({
 	data: {
         showList: true,
         title: null,
+		categories: [],//一级分类
+		categoriesTwo: [],
 		mall2PointsRules: {},
 		ruleValidate: {
 			name: [
@@ -58,6 +100,7 @@ let vm = new Vue({
 			vm.showList = false;
 			vm.title = "新增";
 			vm.mall2PointsRules = {};
+			vm.getCategories();
 		},
 		update: function (event) {
             let mprId = getSelectedRow();
@@ -66,7 +109,7 @@ let vm = new Vue({
 			}
 			vm.showList = false;
             vm.title = "修改";
-
+			vm.getCategories();
             vm.getInfo(mprId)
 		},
 		saveOrUpdate: function (event) {
@@ -87,6 +130,11 @@ let vm = new Vue({
                 }
 			});
 		},
+        // 管理商品
+		showMkactivitiesGoods: function(mkaId){
+			var url = "/mk/mall2RulesDetil.html"
+			window.location.href =  url+"?flag=false&mkaId="+mkaId;
+		},
 		del: function (event) {
             let mprIds = getSelectedRows();
 			if (mprIds == null){
@@ -114,6 +162,8 @@ let vm = new Vue({
 		getInfo: function(mprId){
 			$.get("../mall2pointsrules/info/"+mprId, function (r) {
                 vm.mall2PointsRules = r.mall2PointsRules;
+				vm.mall2PointsRules.pointsBeginTime = transDate(r.mall2PointsRules.pointsBeginTime, 'yyyy-MM-dd')
+				vm.mall2PointsRules.pointsEndTime = transDate(r.mall2PointsRules.pointsEndTime, 'yyyy-MM-dd')
             });
 		},
         reloadSearch: function() {
@@ -122,6 +172,26 @@ let vm = new Vue({
             }
             vm.reload();
 		},
+		changeCategories: function (opt) {
+			var value = opt.value;
+			vm.brands = [];
+			if(value){
+				vm.getBrand(value);
+				$.get("./sys/macro/getPointRulesDetil?parentId=" + value, function (r) {
+					vm.categoriesTwo = r.list;
+				});
+			}
+		},
+		getCategories: function () {
+			$.get("../sys/macro/queryMacrosByValueRuRules?id=70", function (r) {
+				vm.categories = r.list;
+			});
+		},
+		getBrand: function () {
+			$.get("../sys/macro/queryMacrosByValueRuRules?id=70" , function (r) {
+				vm.brands = r.list;
+			});
+		},
 		reload: function (event) {
 			vm.showList = true;
 			let page = event;

BIN
kmall-admin/src/main/webapp/statics/file/mall2RulesDetil_1.0.xlsx


+ 3 - 0
kmall-common/src/main/java/com/kmall/common/constant/JxlsXmlTemplateName.java

@@ -65,4 +65,7 @@ public class JxlsXmlTemplateName {
     //支付宝账单导入
     public static final String ALI_PAYMENT_ORDER_DTO_List = "/XmlTemplate/AliPaymentOrderDtoList.xml";
 
+    //积分规则导入
+    public static final String MALL_RULES_LIST = "/XmlTemplate/mallRulesList.xml";
+
 }

+ 5 - 0
pom.xml

@@ -173,6 +173,11 @@
             <version>${slf4j-version}</version>
         </dependency>
         <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.4</version>
+        </dependency>
+        <dependency>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
             <version>${log4j-version}</version>