Parcourir la source

Merge branch 'master' of hyq/kmall-pt into master

黄亚琴 il y a 6 ans
Parent
commit
2c694eb8c7
19 fichiers modifiés avec 438 ajouts et 45 suppressions
  1. 12 0
      kmall-admin/src/main/java/com/kmall/admin/controller/ExportExceptionDataController.java
  2. 12 0
      kmall-admin/src/main/java/com/kmall/admin/controller/FeedbackController.java
  3. 29 4
      kmall-admin/src/main/java/com/kmall/admin/controller/GoodsIssueController.java
  4. 31 3
      kmall-admin/src/main/java/com/kmall/admin/controller/HelpIssueController.java
  5. 27 0
      kmall-admin/src/main/java/com/kmall/admin/entity/FeedbackEntity.java
  6. 81 0
      kmall-admin/src/main/java/com/kmall/admin/entity/GoodsIssueEntity.java
  7. 28 0
      kmall-admin/src/main/java/com/kmall/admin/entity/HelpIssueEntity.java
  8. 2 0
      kmall-admin/src/main/java/com/kmall/admin/service/impl/GoodsIssueServiceImpl.java
  9. 8 2
      kmall-admin/src/main/resources/mybatis/mapper/ExportExceptionDataDao.xml
  10. 19 5
      kmall-admin/src/main/resources/mybatis/mapper/FeedbackDao.xml
  11. 59 10
      kmall-admin/src/main/resources/mybatis/mapper/GoodsIssueDao.xml
  12. 29 9
      kmall-admin/src/main/resources/mybatis/mapper/HelpIssueDao.xml
  13. 10 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/goodsissue.html
  14. 11 2
      kmall-admin/src/main/webapp/WEB-INF/page/shop/helpissue.html
  15. 4 0
      kmall-admin/src/main/webapp/WEB-INF/page/shop/offilineOrderList.html
  16. 3 1
      kmall-admin/src/main/webapp/js/shop/feedback.js
  17. 29 3
      kmall-admin/src/main/webapp/js/shop/goodsissue.js
  18. 35 6
      kmall-admin/src/main/webapp/js/shop/helpissue.js
  19. 9 0
      kmall-api/src/main/java/com/kmall/api/entity/FeedbackVo.java

+ 12 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/ExportExceptionDataController.java

@@ -5,9 +5,12 @@ import java.util.Map;
 
 import com.kmall.admin.entity.ExportExceptionDataEntity;
 import com.kmall.admin.service.ExportExceptionDataService;
+import com.kmall.api.contants.Dict;
+import com.kmall.common.entity.SysUserEntity;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
+import com.kmall.common.utils.ShiroUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -33,6 +36,15 @@ public class ExportExceptionDataController {
     @RequiresPermissions("exportexceptiondata:list")
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if (user != null) {
+            if (Dict.roleType.item_2.getItem().equals(user.getRoleType())) {
+                params.put("storeId", user.getStoreId());
+                params.put("merchSn", user.getMerchSn());
+            } else if (Dict.roleType.item_3.getItem().equals(user.getRoleType())) {
+                params.put("merchSn", user.getMerchSn());
+            }
+        }
         //查询列表数据
         Query query = new Query(params);
 

+ 12 - 0
kmall-admin/src/main/java/com/kmall/admin/controller/FeedbackController.java

@@ -2,9 +2,12 @@ package com.kmall.admin.controller;
 
 import com.kmall.admin.entity.FeedbackEntity;
 import com.kmall.admin.service.FeedbackService;
+import com.kmall.api.contants.Dict;
+import com.kmall.common.entity.SysUserEntity;
 import com.kmall.common.utils.PageUtils;
 import com.kmall.common.utils.Query;
 import com.kmall.common.utils.R;
+import com.kmall.common.utils.ShiroUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -31,6 +34,15 @@ public class FeedbackController {
     @RequestMapping("/list")
     @RequiresPermissions("feedback:list")
     public R list(@RequestParam Map<String, Object> params) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if (user != null) {
+            if (Dict.roleType.item_2.getItem().equals(user.getRoleType())) {
+                params.put("storeId", user.getStoreId());
+                params.put("merchSn", user.getMerchSn());
+            } else if (Dict.roleType.item_3.getItem().equals(user.getRoleType())) {
+                params.put("merchSn", user.getMerchSn());
+            }
+        }
         //查询列表数据
         Query query = new Query(params);
 

+ 29 - 4
kmall-admin/src/main/java/com/kmall/admin/controller/GoodsIssueController.java

@@ -1,10 +1,11 @@
 package com.kmall.admin.controller;
 
+import com.google.common.collect.ImmutableBiMap;
 import com.kmall.admin.entity.GoodsIssueEntity;
 import com.kmall.admin.service.GoodsIssueService;
-import com.kmall.common.utils.PageUtils;
-import com.kmall.common.utils.Query;
-import com.kmall.common.utils.R;
+import com.kmall.api.contants.Dict;
+import com.kmall.common.entity.SysUserEntity;
+import com.kmall.common.utils.*;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -31,9 +32,17 @@ public class GoodsIssueController {
     @RequestMapping("/list")
     @RequiresPermissions("goodsissue:list")
     public R list(@RequestParam Map<String, Object> params) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if (user != null) {
+            if (Dict.roleType.item_2.getItem().equals(user.getRoleType())) {
+                params.put("storeId", user.getStoreId());
+                params.put("merchSn", user.getMerchSn());
+            } else if (Dict.roleType.item_3.getItem().equals(user.getRoleType())) {
+                params.put("merchSn", user.getMerchSn());
+            }
+        }
         //查询列表数据
         Query query = new Query(params);
-
         List<GoodsIssueEntity> goodsIssueList = goodsIssueService.queryList(query);
         int total = goodsIssueService.queryTotal(query);
 
@@ -59,6 +68,14 @@ public class GoodsIssueController {
     @RequestMapping("/save")
     @RequiresPermissions("goodsissue:save")
     public R save(@RequestBody GoodsIssueEntity goodsIssue) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(goodsIssue);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("merchSn", "商户");
+        builder.put("storeId", "门店");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
         goodsIssueService.save(goodsIssue);
 
         return R.ok();
@@ -70,6 +87,14 @@ public class GoodsIssueController {
     @RequestMapping("/update")
     @RequiresPermissions("goodsissue:update")
     public R update(@RequestBody GoodsIssueEntity goodsIssue) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(goodsIssue);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("merchSn", "商户");
+        builder.put("storeId", "门店");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
         goodsIssueService.update(goodsIssue);
 
         return R.ok();

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

@@ -1,10 +1,11 @@
 package com.kmall.admin.controller;
 
+import com.google.common.collect.ImmutableBiMap;
 import com.kmall.admin.entity.HelpIssueEntity;
 import com.kmall.admin.service.HelpIssueService;
-import com.kmall.common.utils.PageUtils;
-import com.kmall.common.utils.Query;
-import com.kmall.common.utils.R;
+import com.kmall.api.contants.Dict;
+import com.kmall.common.entity.SysUserEntity;
+import com.kmall.common.utils.*;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -33,6 +34,15 @@ public class HelpIssueController {
     @RequiresPermissions("helpissue:list")
     @ResponseBody
     public R list(@RequestParam Map<String, Object> params) {
+        SysUserEntity user = ShiroUtils.getUserEntity();
+        if (user != null) {
+            if (Dict.roleType.item_2.getItem().equals(user.getRoleType())) {
+                params.put("storeId", user.getStoreId());
+                params.put("merchSn", user.getMerchSn());
+            } else if (Dict.roleType.item_3.getItem().equals(user.getRoleType())) {
+                params.put("merchSn", user.getMerchSn());
+            }
+        }
         //查询列表数据
         Query query = new Query(params);
 
@@ -63,6 +73,15 @@ public class HelpIssueController {
     @RequiresPermissions("helpissue:save")
     @ResponseBody
     public R save(@RequestBody HelpIssueEntity helpIssue) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(helpIssue);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("merchSn", "商户");
+        builder.put("storeId", "门店");
+        builder.put("typeId", "问题分类");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
         helpIssueService.save(helpIssue);
 
         return R.ok();
@@ -75,6 +94,15 @@ public class HelpIssueController {
     @RequiresPermissions("helpissue:update")
     @ResponseBody
     public R update(@RequestBody HelpIssueEntity helpIssue) {
+        Map<String, Object> valideDate = MapBeanUtil.fromObject(helpIssue);
+        ImmutableBiMap.Builder builder = new ImmutableBiMap.Builder();
+        builder.put("merchSn", "商户");
+        builder.put("storeId", "门店");
+        builder.put("typeId", "问题分类");
+        R r = ValidatorUtil.isEmpty(builder.build(), valideDate);
+        if (Integer.valueOf(r.get("code").toString()) != 0) {
+            throw new RRException(r.get("msg").toString());
+        }
         helpIssueService.update(helpIssue);
 
         return R.ok();

+ 27 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/FeedbackEntity.java

@@ -31,6 +31,33 @@ public class FeedbackEntity implements Serializable {
     private Integer status;
     //反馈时间
     private Date addTime;
+    private String merchSn;
+    private String storeId;
+    private String storeName;
+
+    public String getMerchSn() {
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    public String getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(String storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
 
     /**
      * 设置:主键

+ 81 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/GoodsIssueEntity.java

@@ -1,6 +1,9 @@
 package com.kmall.admin.entity;
 
+import com.kmall.common.utils.StringUtils;
+
 import java.io.Serializable;
+import java.util.Date;
 
 
 /**
@@ -20,6 +23,84 @@ public class GoodsIssueEntity implements Serializable {
     private String question;
     //回答
     private String answer;
+    private String merchSn;
+    private Integer storeId;
+    private String storeName;
+
+    private String createrSn;
+
+    private Date createTime;
+
+    private String moderSn;
+
+    private Date modTime;
+
+    private Date tstm;
+
+    public String getCreaterSn() {
+        return createrSn;
+    }
+
+    public void setCreaterSn(String createrSn) {
+        this.createrSn = createrSn;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getModerSn() {
+        return moderSn;
+    }
+
+    public void setModerSn(String moderSn) {
+        this.moderSn = moderSn;
+    }
+
+    public Date getModTime() {
+        return modTime;
+    }
+
+    public void setModTime(Date modTime) {
+        this.modTime = modTime;
+    }
+
+    public Date getTstm() {
+        return tstm;
+    }
+
+    public void setTstm(Date tstm) {
+        this.tstm = tstm;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getMerchSn() {
+
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
 
     /**
      * 设置:主键

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

@@ -40,6 +40,34 @@ public class HelpIssueEntity implements Serializable {
      */
     private String typeName;
 
+    private String merchSn;
+    private Integer storeId;
+    private String storeName;
+
+    public String getMerchSn() {
+        return merchSn;
+    }
+
+    public void setMerchSn(String merchSn) {
+        this.merchSn = merchSn;
+    }
+
+    public Integer getStoreId() {
+        return storeId;
+    }
+
+    public void setStoreId(Integer storeId) {
+        this.storeId = storeId;
+    }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
     /**
      * 设置:
      */

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

@@ -3,6 +3,8 @@ package com.kmall.admin.service.impl;
 import com.kmall.admin.dao.GoodsIssueDao;
 import com.kmall.admin.entity.GoodsIssueEntity;
 import com.kmall.admin.service.GoodsIssueService;
+import com.kmall.common.utils.RRException;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 

+ 8 - 2
kmall-admin/src/main/resources/mybatis/mapper/ExportExceptionDataDao.xml

@@ -8,13 +8,13 @@
         <result property="exportExceptionData" column="export_exception_data"/>
         <result property="exportDataType" column="export_data_type"/>
         <result property="userId" column="user_id"/>
+		<result property="merchSn" column="merch_sn"/>
+		<result property="storeId" column="store_id"/>
         <result property="createrSn" column="creater_sn"/>
         <result property="createTime" column="create_time"/>
         <result property="moderSn" column="moder_sn"/>
         <result property="modTime" column="mod_time"/>
         <result property="tstm" column="tstm"/>
-		<result property="merchSn" column="merch_sn"/>
-		<result property="storeId" column="store_id"/>
     </resultMap>
 
 	<select id="queryObject" resultType="com.kmall.admin.entity.ExportExceptionDataEntity">
@@ -49,6 +49,12 @@
     		`tstm`
 		from mall_export_exception_data
 		WHERE 1=1
+		<if test="storeId != null and storeId != '' ">
+			AND a.store_id = #{storeId}
+		</if>
+		<if test="merchSn != null and merchSn.trim() != '' ">
+			AND a.merch_sn = #{merchSn}
+		</if>
 		<if test="name != null and name.trim() != ''">
 			AND name LIKE concat('%',#{name},'%')
 		</if>

+ 19 - 5
kmall-admin/src/main/resources/mybatis/mapper/FeedbackDao.xml

@@ -12,12 +12,17 @@
 		<result property="content" column="content"/>
 		<result property="status" column="status"/>
 		<result property="addTime" column="add_time"/>
+		<result property="merchSn" column="merch_sn"/>
+		<result property="storeId" column="store_id"/>
+		<result property="storeName" column="store_name"/>
 	</resultMap>
 
 	<select id="queryObject" resultType="com.kmall.admin.entity.FeedbackEntity">
 		select
 		`msg_id`,
 		`user_id`,
+		`merch_sn`,
+		`store_id`,
 		`user_name`,
 		`mobile`,
 		`feed_Type`,
@@ -30,19 +35,28 @@
 
 	<select id="queryList" resultType="com.kmall.admin.entity.FeedbackEntity">
 		select
-		`msg_id`,
-		`user_id`,
-		`user_name`,
+		msg_id,
+		user_id,
+		f.merch_sn,
+		f.store_id,
+		user_name,
 		`mobile`,
 		`feed_Type`,
 		`content`,
 		`status`,
-		`add_time`
-		from mall_feedback
+		`add_time`,
+		s.store_name
+		from mall_feedback f left join mall_store s on f.store_id = s.id
 		WHERE 1=1
 		<if test="userName != null and userName.trim() != ''">
 			AND user_name LIKE concat('%',#{userName},'%')
 		</if>
+		<if test="storeId != null and storeId != '' ">
+			AND f.store_id = #{storeId}
+		</if>
+		<if test="merchSn != null and merchSn.trim() != '' ">
+			AND f.merch_sn = #{merchSn}
+		</if>
 		<choose>
 			<when test="sidx != null and sidx.trim() != ''">
 				order by ${sidx} ${order}

+ 59 - 10
kmall-admin/src/main/resources/mybatis/mapper/GoodsIssueDao.xml

@@ -7,33 +7,61 @@
         <result property="id" column="id"/>
         <result property="question" column="question"/>
         <result property="answer" column="answer"/>
+        <result property="merchSn" column="merch_sn"/>
+        <result property="storeId" column="store_id"/>
+        <result property="createrSn" column="creater_sn"/>
+        <result property="createTime" column="create_time"/>
+        <result property="moderSn" column="moder_sn"/>
+        <result property="modTime" column="mod_time"/>
+        <result property="tstm" column="tstm"/>
     </resultMap>
 
     <select id="queryObject" resultType="com.kmall.admin.entity.GoodsIssueEntity">
 		select
 			`id`,
 			`question`,
-			`answer`
+			`answer`,
+			`merch_sn`,
+			`store_id`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`
 		from mall_goods_issue
 		where id = #{id}
 	</select>
 
     <select id="queryList" resultType="com.kmall.admin.entity.GoodsIssueEntity">
         select
-        mall_goods_issue.id,
-        mall_goods_issue.question,
-        mall_goods_issue.answer
-        from mall_goods_issue
+        f.id,
+        f.question,
+        f.answer,
+        f.merch_sn,
+        f.store_id,
+        f.creater_sn,
+        f.create_time,
+        f.moder_sn,
+        f.mod_time,
+        f.tstm,
+        s.store_name
+        from mall_goods_issue f  left join mall_store s on f.store_id = s.id
         WHERE 1=1
+        <if test="storeId != null and storeId != '' ">
+            AND f.store_id = #{storeId}
+        </if>
+        <if test="merchSn != null and merchSn.trim() != '' ">
+            AND f.merch_sn = #{merchSn}
+        </if>
         <if test="question != null and question.trim() != ''">
-            AND mall_goods_issue.question LIKE concat('%',#{question},'%')
+            AND f.question LIKE concat('%',#{question},'%')
         </if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
                 order by ${sidx} ${order}
             </when>
             <otherwise>
-                order by id desc
+                order by f.id desc
             </otherwise>
         </choose>
         <if test="offset != null and limit != null">
@@ -52,17 +80,38 @@
     <insert id="save" parameterType="com.kmall.admin.entity.GoodsIssueEntity" useGeneratedKeys="true" keyProperty="id">
 		insert into mall_goods_issue(
 			`question`,
-			`answer`)
+			`answer`,
+			`merch_sn`,
+			`store_id`,
+			`creater_sn`,
+			`create_time`,
+			`moder_sn`,
+			`mod_time`,
+			`tstm`)
 		values(
 			#{question},
-			#{answer})
+			#{answer},
+			#{merchSn},
+			#{storeId},
+			#{createrSn},
+			#{createTime},
+			#{moderSn},
+			#{modTime},
+			#{tstm})
 	</insert>
 
     <update id="update" parameterType="com.kmall.admin.entity.GoodsIssueEntity">
         update mall_goods_issue
         <set>
             <if test="question != null">`question` = #{question},</if>
-            <if test="answer != null">`answer` = #{answer}</if>
+            <if test="answer != null">`answer` = #{answer},</if>
+            <if test="merchSn != null">`merch_sn` = #{merchSn}, </if>
+            <if test="storeId != null">`store_id` = #{storeId}, </if>
+            <if test="createrSn != null">`creater_sn` = #{createrSn}, </if>
+            <if test="createTime != null">`create_time` = #{createTime}, </if>
+            <if test="moderSn != null">`moder_sn` = #{moderSn}, </if>
+            <if test="modTime != null">`mod_time` = #{modTime}, </if>
+            <if test="tstm != null">`tstm` = #{tstm}</if>
         </set>
         where id = #{id}
     </update>

+ 29 - 9
kmall-admin/src/main/resources/mybatis/mapper/HelpIssueDao.xml

@@ -9,6 +9,9 @@
         <result property="question" column="question"/>
         <result property="answer" column="answer"/>
         <result property="sort" column="sort"/>
+		<result property="merchSn" column="merch_sn"/>
+		<result property="storeId" column="store_id"/>
+		<result property="storeName" column="store_name"/>
     </resultMap>
 
 	<select id="queryObject" resultType="com.kmall.admin.entity.HelpIssueEntity">
@@ -17,6 +20,8 @@
 			`type_id`,
 			`question`,
 			`answer`,
+			`merch_sn`,
+			`store_id`,
 			`sort`
 		from mall_help_issue
 		where id = #{id}
@@ -24,17 +29,26 @@
 
 	<select id="queryList" resultType="com.kmall.admin.entity.HelpIssueEntity">
 		select
-		mall_help_issue.id,
-		mall_help_issue.type_id,
-		mall_help_issue.question,
-		mall_help_issue.answer,
-		mall_help_issue.sort,
-		mall_help_type.type_name
-		from mall_help_issue
-		LEFT JOIN mall_help_type ON mall_help_issue.type_id = mall_help_type.id
+		h.id,
+		h.type_id,
+		h.question,
+		h.answer,
+		h.sort,
+		t.type_name,
+		h.merch_sn,
+		h.store_id,
+		s.store_name
+		from mall_help_issue h left join mall_store s on h.store_id = s.id
+		LEFT JOIN mall_help_type t ON h.type_id = t.id
 		WHERE 1=1
+		<if test="storeId != null and storeId != '' ">
+			AND h.store_id = #{storeId}
+		</if>
+		<if test="merchSn != null and merchSn.trim() != '' ">
+			AND h.merch_sn = #{merchSn}
+		</if>
 		<if test="typeName != null and typeName.trim() != ''">
-			AND mall_help_type.type_name LIKE concat('%',#{typeName},'%')
+			AND h.type_name LIKE concat('%',#{typeName},'%')
 		</if>
         <choose>
             <when test="sidx != null and sidx.trim() != ''">
@@ -63,11 +77,15 @@
 			`type_id`,
 			`question`,
 			`answer`,
+			`merch_sn`,
+			`store_id`,
 			`sort`)
 		values(
 			#{typeId},
 			#{question},
 			#{answer},
+			#{merchSn},
+			#{storeId},
 			#{sort})
 	</insert>
 	 
@@ -77,6 +95,8 @@
 			<if test="typeId != null">`type_id` = #{typeId}, </if>
 			<if test="question != null">`question` = #{question}, </if>
 			<if test="answer != null">`answer` = #{answer}, </if>
+			<if test="merchSn != null">`merch_sn` = #{merchSn}, </if>
+			<if test="storeId != null">`store_id` = #{storeId}, </if>
 			<if test="sort != null">`sort` = #{sort}</if>
 		</set>
 		where id = #{id}

+ 10 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/goodsissue.html

@@ -33,6 +33,16 @@
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
         <i-form ref="formValidate" :model="goodsIssue" :rules="ruleValidate" :label-width="80">
+            <Form-item label="商户" prop="merchSn">
+                <i-select v-model="goodsIssue.merchSn" filterable placeholder="商户" @on-change="getStoresByMerch" 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="storeId">
+                <i-select v-model="goodsIssue.storeId" filterable 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="question">
                 <i-input v-model="goodsIssue.question" placeholder="问题"/>
             </Form-item>

+ 11 - 2
kmall-admin/src/main/webapp/WEB-INF/page/shop/helpissue.html

@@ -34,10 +34,19 @@
     <Card v-show="!showList">
         <p slot="title">{{title}}</p>
         <i-form ref="formValidate" :model="helpIssue" :rules="ruleValidate" :label-width="80">
+            <Form-item label="商户" prop="merchSn">
+                <i-select v-model="helpIssue.merchSn" filterable placeholder="商户" @on-change="getStoresByMerch" 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="storeId">
+                <i-select v-model="helpIssue.storeId" filterable 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="typeId">
                 <i-select v-model="helpIssue.typeId" filterable style="width: 188px;">
-                    <i-option v-for="helpType in helpTypes" :value="helpType.id" :key="helpType.id">
-                        {{helpType.typeName}}
+                    <i-option v-for="helpType in helpTypes" :value="helpType.id" :key="helpType.id">{{helpType.typeName}}
                     </i-option>
                 </i-select>
             </Form-item>

+ 4 - 0
kmall-admin/src/main/webapp/WEB-INF/page/shop/offilineOrderList.html

@@ -33,12 +33,16 @@
                 <i-button @click="query">查询</i-button>
                 <i-button @click="reloadSearch">重置</i-button>
             </div>
+            #if($shiro.hasPermission("order:wxMicropayPay"))
             <div class="buttons-group">
                 <i-button type="error" @click="showInputAuthCode">微信付款</i-button>
             </div>
+            #end
+            #if($shiro.hasPermission("order:confirmPay"))
             <div class="buttons-group">
                 <i-button type="error" @click="confirm">现金付款</i-button>
             </div>
+            #end
         </Row>
         <table id="jqGrid"></table>
         <div id="jqGridPager"></div>

+ 3 - 1
kmall-admin/src/main/webapp/js/shop/feedback.js

@@ -4,8 +4,10 @@ $(function () {
         datatype: "json",
         colModel: [
             {label: 'msgId', name: 'msgId', index: 'msg_id', key: true, hidden: true},
+            {label: '商户编号', name: 'merchSn', index: 'merchSn', width: 60},
+            {label: '门店名称', name: 'storeName', index: 'storeName', width: 80},
             {label: '会员名称', name: 'userName', index: 'user_name', width: 80},
-            {label: '手机', name: 'mobile', index: 'mobile', width: 80},
+            {label: '手机', name: 'mobile', index: 'mobile', width: 100},
             {
                 label: '反馈类型', name: 'feedType', index: 'feed_Type', width: 80, formatter: function (value) {
                 if (value == 1) {

+ 29 - 3
kmall-admin/src/main/webapp/js/shop/goodsissue.js

@@ -4,8 +4,10 @@ $(function () {
         datatype: "json",
         colModel: [
             {label: 'id', name: 'id', index: 'id', key: true, hidden: true},
+            {label: '商户编号', name: 'merchSn', index: 'merchSn', width: 80},
+            {label: '门店名称', name: 'storeName', index: 'storeName', width: 80},
             {label: '问题', name: 'question', index: 'question', width: 80},
-            {label: '回答', name: 'answer', index: 'answer', width: 150}],
+            {label: '回答', name: 'answer', index: 'answer', width: 250}],
         viewrecords: true,
         height: 385,
         rowNum: 10,
@@ -48,7 +50,9 @@ var vm = new Vue({
         },
         q: {
             question: ''
-        }
+        },
+        storeList: [],
+        merchList: []
     },
     methods: {
         query: function () {
@@ -58,6 +62,9 @@ var vm = new Vue({
             vm.showList = false;
             vm.title = "新增";
             vm.goodsIssue = {};
+            vm.storeList = [];
+            vm.merchList = [];
+            vm.getMerchList();
         },
         update: function (event) {
             var id = getSelectedRow();
@@ -67,7 +74,26 @@ var vm = new Vue({
             vm.showList = false;
             vm.title = "修改";
 
-            vm.getInfo(id)
+            vm.getInfo(id);
+            vm.getMerchList();
+            var rowData = $("#jqGrid").jqGrid('getRowData', id);
+            vm.getStoresByValue(rowData.merchSn);
+        },
+        getStoresByValue: function (value) {
+            $.get("../store/getStoresByMerch?merchSn=" + value, function (r) {
+                vm.storeList = r.list;
+            });
+        },
+        getStoresByMerch: function (opt) {
+            var value = opt.value;
+            $.get("../store/getStoresByMerch?merchSn=" + value, function (r) {
+                vm.storeList = r.list;
+            });
+        },
+        getMerchList: function() {
+            $.get("../merch/queryAll", function (r) {
+                vm.merchList = r.list;
+            });
         },
         saveOrUpdate: function (event) {
             var url = vm.goodsIssue.id == null ? "../goodsissue/save" : "../goodsissue/update";

+ 35 - 6
kmall-admin/src/main/webapp/js/shop/helpissue.js

@@ -4,9 +4,11 @@ $(function () {
         datatype: "json",
         colModel: [
             {label: 'id', name: 'id', index: 'id', key: true, hidden: true},
-            {label: '问题分类', name: 'typeName', index: 'type_id', width: 80},
+            {label: '商户编号', name: 'merchSn', index: 'merchSn', width: 60},
+            {label: '门店名称', name: 'storeName', index: 'storeName', width: 80},
+            {label: '问题分类', name: 'typeName', index: 'type_id', width: 60},
             {label: '问', name: 'question', index: 'question', width: 80},
-            {label: '答', name: 'answer', index: 'answer', width: 80},
+            {label: '答', name: 'answer', index: 'answer', width: 280},
             {label: '排序', name: 'sort', index: 'sort', width: 80}],
         viewrecords: true,
         height: 385,
@@ -41,14 +43,19 @@ let vm = new Vue({
         title: null,
         helpIssue: {},
         ruleValidate: {
-            name: [
-                {required: true, message: '名称不能为空', trigger: 'blur'}
-            ]
+            question: [
+                {required: true, message: '问题不能为空', trigger: 'blur'}
+            ],
+            answer: [
+                {required: true, message: '答案不能为空', trigger: 'blur'}
+            ],
         },
         q: {
             typeName: ''
         },
-        helpTypes: []
+        helpTypes: [],
+        storeList: [],
+        merchList: []
     },
     methods: {
         query: function () {
@@ -60,6 +67,9 @@ let vm = new Vue({
             vm.helpIssue = {};
 
             vm.getHelpType();
+            vm.storeList = [];
+            vm.merchList = [];
+            vm.getMerchList();
         },
         update: function (event) {
             let id = getSelectedRow();
@@ -70,6 +80,25 @@ let vm = new Vue({
             vm.title = "修改";
 
             vm.getInfo(id);
+            vm.getMerchList();
+            var rowData = $("#jqGrid").jqGrid('getRowData', id);
+            vm.getStoresByValue(rowData.merchSn);
+        },
+        getStoresByValue: function (value) {
+            $.get("../store/getStoresByMerch?merchSn=" + value, function (r) {
+                vm.storeList = r.list;
+            });
+        },
+        getStoresByMerch: function (opt) {
+            var value = opt.value;
+            $.get("../store/getStoresByMerch?merchSn=" + value, function (r) {
+                vm.storeList = r.list;
+            });
+        },
+        getMerchList: function() {
+            $.get("../merch/queryAll", function (r) {
+                vm.merchList = r.list;
+            });
         },
         saveOrUpdate: function (event) {
             let url = vm.helpIssue.id == null ? "../helpissue/save" : "../helpissue/update";

+ 9 - 0
kmall-api/src/main/java/com/kmall/api/entity/FeedbackVo.java

@@ -32,8 +32,17 @@ public class FeedbackVo implements Serializable {
     //反馈时间
     private Date addTime;
     private String merchSn;
+    private String storeName;
     private Long storeId;
 
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
+
     public String getMerchSn() {
         return merchSn;
     }