7 hónapja
szülő
commit
8588aab2ab
16 módosított fájl, 566 hozzáadás és 13 törlés
  1. 35 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/controller/ProdController.java
  2. 19 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/domain/ProdAttrVo.java
  3. 19 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/domain/ProdTagVo.java
  4. 24 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/mapper/ProdAttrVoMapper.java
  5. 24 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/mapper/ProdTagVoMapper.java
  6. 21 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/IProdAttrVoService.java
  7. 22 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/IProdTagVoService.java
  8. 32 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/impl/ProdAttrVoServiceImpl.java
  9. 32 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/impl/ProdTagVoServiceImpl.java
  10. 1 1
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/impl/ProdVoServiceImpl.java
  11. 57 0
      08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdAttrVoMapper.xml
  12. 25 0
      08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdTagVoMapper.xml
  13. 141 0
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/editAttr.html
  14. 102 0
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/editTag.html
  15. 12 2
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/prod.html
  16. 0 10
      08.src/Xingxi/xingxi-mq-server/pom.xml

+ 35 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/controller/ProdController.java

@@ -8,7 +8,12 @@ import com.xingxi.common.enums.BusinessType;
 import com.xingxi.common.enums.EProdStatus;
 import com.xingxi.common.utils.poi.ExcelUtil;
 import com.xingxi.master.product.domain.Prod;
+import com.xingxi.master.product.service.IProdService;
+import com.xingxi.web.controller.master.product.domain.ProdAttrVo;
+import com.xingxi.web.controller.master.product.domain.ProdTagVo;
 import com.xingxi.web.controller.master.product.domain.ProdVo;
+import com.xingxi.web.controller.master.product.service.IProdAttrVoService;
+import com.xingxi.web.controller.master.product.service.IProdTagVoService;
 import com.xingxi.web.controller.master.product.service.IProdVoService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
@@ -31,6 +36,10 @@ public class ProdController extends BaseController {
 
     @Resource
     private IProdVoService prodVoService;
+    @Resource
+    private IProdTagVoService prodTagVoService;
+    @Resource
+    private IProdAttrVoService prodAttrVoService;
 
     @RequiresPermissions("master:product:view")
     @GetMapping()
@@ -136,4 +145,30 @@ public class ProdController extends BaseController {
         prod.setProdStatus(EProdStatus.REJECTED.getVal());
         return toAjax(prodVoService.updateProd(prod));
     }
+
+    /**
+     * 修改商品属性
+     */
+    @RequiresPermissions("master:product:editAttr")
+    @GetMapping("/editAttr/{id}")
+    public String editAttr(@PathVariable("id") Long id, ModelMap mMap) {
+        ProdAttrVo cond = new ProdAttrVo();
+        cond.setProdId(id);
+        List<ProdAttrVo> prodAttrVo = prodAttrVoService.selectProdAttrVoList(cond);
+        mMap.put("prodAttrVo", prodAttrVo);
+        return prefix + "/editAttr";
+    }
+
+    /**
+     * 修改商品属性
+     */
+    @RequiresPermissions("master:product:editTag")
+    @GetMapping("/editTag/{id}")
+    public String editTag(@PathVariable("id") Long id, ModelMap mMap) {
+        ProdTagVo cond = new ProdTagVo();
+        cond.setProdId(id);
+        List<ProdTagVo> prodTagVoList = prodTagVoService.selectProdTagVoList(cond);
+        mMap.put("prodTagVoList", prodTagVoList);
+        return prefix + "/editTag";
+    }
 }

+ 19 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/domain/ProdAttrVo.java

@@ -0,0 +1,19 @@
+package com.xingxi.web.controller.master.product.domain;
+
+import com.xingxi.master.product.domain.ProdAttr;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 商品属性对象 m_prod_attr
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString
+public class ProdAttrVo extends ProdAttr {
+    private static final long serialVersionUID = 1L;
+}

+ 19 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/domain/ProdTagVo.java

@@ -0,0 +1,19 @@
+package com.xingxi.web.controller.master.product.domain;
+
+import com.xingxi.master.product.domain.ProdTag;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 商品标签对象 m_prod_tag
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString
+public class ProdTagVo extends ProdTag {
+    private static final long serialVersionUID = 1L;
+}

+ 24 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/mapper/ProdAttrVoMapper.java

@@ -0,0 +1,24 @@
+package com.xingxi.web.controller.master.product.mapper;
+
+import com.xingxi.master.product.mapper.ProdAttrMapper;
+import com.xingxi.web.controller.master.product.domain.ProdAttrVo;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 商品属性Mapper接口
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Repository
+public interface ProdAttrVoMapper extends ProdAttrMapper {
+    /**
+     * 查询商品属性列表
+     *
+     * @param prodAttrVo 商品属性
+     * @return 商品属性集合
+     */
+    List<ProdAttrVo> selectProdAttrVoList(ProdAttrVo prodAttrVo);
+}

+ 24 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/mapper/ProdTagVoMapper.java

@@ -0,0 +1,24 @@
+package com.xingxi.web.controller.master.product.mapper;
+
+import com.xingxi.master.product.mapper.ProdTagMapper;
+import com.xingxi.web.controller.master.product.domain.ProdTagVo;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 商品标签Mapper接口
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Repository
+public interface ProdTagVoMapper extends ProdTagMapper {
+    /**
+     * 查询商品标签列表
+     *
+     * @param prodTagVo 商品标签
+     * @return 商品标签集合
+     */
+    List<ProdTagVo> selectProdTagVoList(ProdTagVo prodTagVo);
+}

+ 21 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/IProdAttrVoService.java

@@ -0,0 +1,21 @@
+package com.xingxi.web.controller.master.product.service;
+
+import com.xingxi.web.controller.master.product.domain.ProdAttrVo;
+
+import java.util.List;
+
+/**
+ * 商品属性Service接口
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+public interface IProdAttrVoService {
+    /**
+     * 查询商品属性列表
+     *
+     * @param prodAttrVo 商品属性Vo
+     * @return 商品属性集合
+     */
+    List<ProdAttrVo> selectProdAttrVoList(ProdAttrVo prodAttrVo);
+}

+ 22 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/IProdTagVoService.java

@@ -0,0 +1,22 @@
+package com.xingxi.web.controller.master.product.service;
+
+import com.xingxi.master.product.service.IProdTagService;
+import com.xingxi.web.controller.master.product.domain.ProdTagVo;
+
+import java.util.List;
+
+/**
+ * 商品Service接口
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+public interface IProdTagVoService {
+    /**
+     * 查询商品标签列表
+     *
+     * @param prodTagVo 商品标签Vo
+     * @return 商品集合
+     */
+    List<ProdTagVo> selectProdTagVoList(ProdTagVo prodTagVo);
+}

+ 32 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/impl/ProdAttrVoServiceImpl.java

@@ -0,0 +1,32 @@
+package com.xingxi.web.controller.master.product.service.impl;
+
+import com.xingxi.web.controller.master.product.domain.ProdAttrVo;
+import com.xingxi.web.controller.master.product.mapper.ProdAttrVoMapper;
+import com.xingxi.web.controller.master.product.service.IProdAttrVoService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 商品属性Service业务层处理
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Service
+public  class ProdAttrVoServiceImpl implements IProdAttrVoService {
+    @Resource
+    private ProdAttrVoMapper prodAttrVoMapper;
+
+    /**
+     * 查询商品属性列表
+     *
+     * @param prodAttrVo 商品属性
+     * @return 商品属性
+     */
+    @Override
+    public List<ProdAttrVo> selectProdAttrVoList(ProdAttrVo prodAttrVo) {
+        return prodAttrVoMapper.selectProdAttrVoList(prodAttrVo);
+    }
+}

+ 32 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/impl/ProdTagVoServiceImpl.java

@@ -0,0 +1,32 @@
+package com.xingxi.web.controller.master.product.service.impl;
+
+import com.xingxi.web.controller.master.product.domain.ProdTagVo;
+import com.xingxi.web.controller.master.product.mapper.ProdTagVoMapper;
+import com.xingxi.web.controller.master.product.service.IProdTagVoService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * 商品标签Service业务层处理
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Service
+public class ProdTagVoServiceImpl implements IProdTagVoService {
+    @Resource
+    private ProdTagVoMapper prodTagVoMapper;
+
+    /**
+     * 查询商品标签列表
+     *
+     * @param prodTagVo 商品标签
+     * @return 商品标签
+     */
+    @Override
+    public List<ProdTagVo> selectProdTagVoList(ProdTagVo prodTagVo) {
+        return prodTagVoMapper.selectProdTagVoList(prodTagVo);
+    }
+}

+ 1 - 1
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/impl/ProdServiceVoImpl.java → 08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/service/impl/ProdVoServiceImpl.java

@@ -16,7 +16,7 @@ import java.util.List;
  * @date 2025-03-06
  */
 @Service
-public class ProdServiceVoImpl extends ProdServiceImpl implements IProdVoService {
+public class ProdVoServiceImpl extends ProdServiceImpl implements IProdVoService {
     @Resource
     private ProdVoMapper prodVoMapper;
 

+ 57 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdAttrVoMapper.xml

@@ -0,0 +1,57 @@
+<?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.xingxi.web.controller.master.product.mapper.ProdAttrVoMapper">
+    <resultMap type="ProdAttrVo" id="ProdAttrVoResult">
+        <result property="id"                   column="id"                 />
+        <result property="prodClassId"          column="prodClassId"        />
+        <result property="prodName"             column="prodName"           />
+        <result property="ipId"                 column="ipId"               />
+        <result property="designerId"           column="designerId"         />
+        <result property="description"          column="description"        />
+        <result property="prodStatus"           column="prodStatus"         />
+        <result property="thirdIdConfirmFlag"   column="thirdIdConfirmFlag" />
+        <result property="delFlag"              column="delFlag"            />
+        <result property="createUser"           column="createUser"         />
+        <result property="createTime"           column="createTime"         />
+        <result property="updateUser"           column="updateUser"         />
+        <result property="updateTime"           column="updateTime"         />
+        <result property="prodClass"            column="className"          />
+        <result property="ipName"               column="ipName"             />
+        <result property="designerName"         column="designerName"       />
+    </resultMap>
+
+    <sql id="selectProdAttrVo">
+        select m_prod.id
+             , m_prod.prodClassId
+             , m_prod.prodName
+             , m_prod.ipId
+             , m_prod.designerId
+             , m_prod.description
+             , m_prod.prodStatus
+             , m_prod.thirdIdConfirmFlag
+             , m_prod_class.className
+             , m_designer.designerName
+             , m_ipinfo.ipName
+        from m_prod
+        inner join m_prod_class on m_prod.prodClassId = m_prod_class.prodClassId
+        inner join m_designer on m_prod.designerId = m_designer.id
+        inner join m_ipinfo on m_prod.ipId = m_ipinfo.ipId
+    </sql>
+
+    <select id="selectProdAttrVoList" parameterType="ProdAttrVo" resultMap="ProdAttrVoResult">
+        <include refid="selectProdAttrVo"/>
+        <where>
+            <if test="prodClassId != null "> and m_prod.prodClassId = #{prodClassId}</if>
+            <if test="prodName != null  and prodName != ''"> and m_prod.prodName like concat('%', #{prodName}, '%')</if>
+            <if test="ipId != null "> and ipId = #{ipId}</if>
+            <if test="designerId != null "> and m_prod.designerId = #{designerId}</if>
+            <if test="description != null  and description != ''"> and m_prod.description = #{description}</if>
+            <if test="prodStatus != null  and prodStatus != ''"> and m_prod.prodStatus = #{prodStatus}</if>
+            <if test="thirdIdConfirmFlag != null  and thirdIdConfirmFlag != ''"> and m_prod.thirdIdConfirmFlag = #{thirdIdConfirmFlag}</if>
+            <if test="delFlag != null  and delFlag != ''"> and m_prod.delFlag = #{delFlag}</if>
+            <if test="prodClass != null  and prodClass != ''"> and m_prod_class.className like concat('%', #{prodClass}, '%')</if>
+            <if test="designerName != null  and designerName != ''"> and m_designer.designerName like concat('%', #{designerName}, '%')</if>
+            <if test="ipName != null  and ipName != ''"> and m_ipinfo.ipName like concat('%', #{ipName}, '%')</if>
+        </where>
+    </select>
+</mapper>

+ 25 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdTagVoMapper.xml

@@ -0,0 +1,25 @@
+<?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.xingxi.web.controller.master.product.mapper.ProdTagVoMapper">
+    <resultMap type="ProdTagVo" id="ProdTagResult">
+        <result property="prodId"               column="prodId"             />
+        <result property="tagId"                column="tagId"              />
+        <result property="tagName"              column="tagName"            />
+    </resultMap>
+
+    <sql id="selectProdTagVo">
+        select m_prod_tag.prodId
+             , m_prod_tag.tagId
+             , m_tag.tagName
+        from m_prod
+        inner join m_prod_tag on m_prod.id = m_prod_tag.prodId
+        inner join m_tag on m_prod_tag.tagId = m_prod_tag.tagId
+    </sql>
+
+    <select id="selectProdTagVoList" parameterType="ProdTagVo" resultMap="ProdTagResult">
+        <include refid="selectProdTagVo"/>
+        <where>
+            <if test="prodId != null "> and m_prod_tag.prodId = #{prodId}</if>
+        </where>
+    </select>
+</mapper>

+ 141 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/editAttr.html

@@ -0,0 +1,141 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('编辑标签')" />
+    <th:block th:include="include :: select2-css" />
+    <th:block th:include="include :: bootstrap-select-css" />
+    <th:block th:include="include :: summernote-css" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-prod-edit" th:object="${prodVo}">
+            <input name="id" th:field="*{id}" type="hidden">
+            <div class="col-xs-12">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">商品分类:</label>
+                    <div class="col-sm-8">
+                        <select name="prodClassId" class="form-control" th:with="prodClasses=${@product.getProdClasses()}" th:field="*{prodClassId}" >
+                            <option value="">所有</option>
+                            <option th:each="prodClass : ${prodClasses}" th:text="${prodClass.className}" th:value="${prodClass.prodClassId}"></option>
+                        </select>
+                    </div>
+                </div>
+            </div>
+            <div class="col-xs-12">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">商品名称:</label>
+                    <div class="col-sm-8">
+                        <input name="prodName" class="form-control" type="text" th:field="*{prodName}">
+                    </div>
+                </div>
+            </div>
+            <div class="col-xs-12">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">文创名称:</label>
+                    <div class="col-sm-8">
+                        <select name="ipId" class="form-control m-b" th:with="ipInfos=${@ipInfo.getIpInfos()}" th:field="*{ipId}" >
+                            <option value="">所有</option>
+                            <option th:each="ipInfo : ${ipInfos}" th:text="${ipInfo.ipName}" th:value="${ipInfo.ipId}"></option>
+                        </select>
+                    </div>
+                </div>
+            </div>
+            <div class="col-xs-12">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">设计师:</label>
+                    <div class="col-sm-8">
+                        <select name="designerId" class="form-control m-b" th:with="designers=${@product.getDesigners()}" th:field="*{designerId}" >
+                            <option value="">所有</option>
+                            <option th:each="designer : ${designers}" th:text="${designer.designerName}" th:value="${designer.id}"></option>
+                        </select>
+                    </div>
+                </div>
+            </div>
+            <div class="col-xs-12">
+                <div class="form-group">
+                    <label class="col-sm-3 control-label">商品描述:</label>
+                    <div class="col-sm-10" style="margin-left: 80px">
+                        <div class="summernote" style="border: red;" id="summernote"></div>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: select2-js" />
+    <th:block th:include="include :: bootstrap-select-js" />
+    <th:block th:include="include :: summernote-js" />
+    <script th:inline="javascript">
+        var prefix = ctx + "master/product/prod"
+        $(".summernote").summernote({
+            lang: 'zh-CN',
+            callbacks:{
+                onImageUpload: function (files) {
+                    var fileSize = 0;
+                    fileSize = files[0].size;
+                    fileSize=Math. round( fileSize/1024*100)/100;
+
+                    if(fileSize>2048){
+                        layer.msg('上传文件不得大于2M,请重新上传。', {time: 3000, icon:6});
+                        return false;
+                    }
+
+                    if (!/image\/\w+/.test(files[0].type)) {
+                        layer.msg('上传的不是图片文件,请重新上传。', {time: 3000, icon:6});
+                        return false;
+                    }
+
+                    var formData = new FormData();
+                    formData.append('imageFile', files[0]);
+                    $.ajax({
+                        url : ctx + "common/upload/file/image",
+                        type : 'POST',
+                        data : formData,
+                        processData : false,
+                        contentType : false,
+                        success : function(result) {
+                            $('.summernote').summernote('insertImage', result.imageUrl);
+                        },error:function(){
+                            $.modal.alertError("上传失败");
+                        }
+                    });
+                }
+            },
+            height: 600,
+            toolbar: [
+                ['style', ['fontname', 'bold', 'italic', 'underline', 'clear']],
+                ['font', ['strikethrough', 'superscript', 'subscript']],
+                ['fontsize', ['fontsize', 'undo', 'redo']],
+                ['color', ['color']],
+                ['para', ['ul', 'ol', 'paragraph']],
+                ['height', ['height']],
+                ['insert', ['picture', 'table']],
+                ['search', ['findnreplace', 'changecolor']]
+            ],
+        });
+        $('.summernote').summernote('code', [[${prodVo.description}]]);
+
+        $("#form-prod-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                var form = document.getElementById("form-prod-edit");
+                var formData = new FormData(form);
+                formData.append("description", $('#summernote').summernote('code'));
+                $.ajax({
+                    url: prefix + "/edit",
+                    data: formData,
+                    type: "post",
+                    processData: false,
+                    contentType: false,
+                    success: function(result) {
+                        $.operate.successCallback(result);
+                    }
+                });
+            }
+        }
+    </script>
+</body>
+</html>

+ 102 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/editTag.html

@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('修改推荐商品')" />
+    <th:block th:include="include :: select2-css" />
+    <th:block th:include="include :: bootstrap-select-css" />
+    <th:block th:include="include :: summernote-css" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-prod-edit" th:object="${prodVo}">
+            <input name="id" th:field="*{id}" type="hidden">
+            <ul>
+                <li>
+                    <label>品牌名:</label>
+                    <input type="text" name="ipName"/>
+                </li>
+                <li>
+                    <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
+                    <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
+                </li>
+            </ul>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <th:block th:include="include :: select2-js" />
+    <th:block th:include="include :: bootstrap-select-js" />
+    <th:block th:include="include :: summernote-js" />
+    <script th:inline="javascript">
+        var prefix = ctx + "master/product/prod"
+        $(".summernote").summernote({
+            lang: 'zh-CN',
+            callbacks:{
+                onImageUpload: function (files) {
+                    var fileSize = 0;
+                    fileSize = files[0].size;
+                    fileSize=Math. round( fileSize/1024*100)/100;
+
+                    if(fileSize>2048){
+                        layer.msg('上传文件不得大于2M,请重新上传。', {time: 3000, icon:6});
+                        return false;
+                    }
+
+                    if (!/image\/\w+/.test(files[0].type)) {
+                        layer.msg('上传的不是图片文件,请重新上传。', {time: 3000, icon:6});
+                        return false;
+                    }
+
+                    var formData = new FormData();
+                    formData.append('imageFile', files[0]);
+                    $.ajax({
+                        url : ctx + "common/upload/file/image",
+                        type : 'POST',
+                        data : formData,
+                        processData : false,
+                        contentType : false,
+                        success : function(result) {
+                            $('.summernote').summernote('insertImage', result.imageUrl);
+                        },error:function(){
+                            $.modal.alertError("上传失败");
+                        }
+                    });
+                }
+            },
+            height: 600,
+            toolbar: [
+                ['style', ['fontname', 'bold', 'italic', 'underline', 'clear']],
+                ['font', ['strikethrough', 'superscript', 'subscript']],
+                ['fontsize', ['fontsize', 'undo', 'redo']],
+                ['color', ['color']],
+                ['para', ['ul', 'ol', 'paragraph']],
+                ['height', ['height']],
+                ['insert', ['picture', 'table']],
+                ['search', ['findnreplace', 'changecolor']]
+            ],
+        });
+        $('.summernote').summernote('code', [[${prodVo.description}]]);
+
+        $("#form-prod-edit").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler() {
+            if ($.validate.form()) {
+                var form = document.getElementById("form-prod-edit");
+                var formData = new FormData(form);
+                formData.append("description", $('#summernote').summernote('code'));
+                $.ajax({
+                    url: prefix + "/edit",
+                    data: formData,
+                    type: "post",
+                    processData: false,
+                    contentType: false,
+                    success: function(result) {
+                        $.operate.successCallback(result);
+                    }
+                });
+            }
+        }
+    </script>
+</body>
+</html>

+ 12 - 2
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/prod.html

@@ -77,9 +77,10 @@
         var editFlag = [[${@permission.hasPermi('master:product:prod:edit')}]];
         var removeFlag = [[${@permission.hasPermi('master:product:prod:remove')}]];
         var approveFlag = [[${@permission.hasPermi('master:product:prod:approve')}]];
+        var editAttrFlag = [[${@permission.hasPermi('master:product:prod:editAttr')}]];
+        var editTagFlag = [[${@permission.hasPermi('master:product:prod:editTag')}]];
         var prefix = ctx + "master/product/prod";
         var prodStatuses = [[${@dict.getType('prod_status')}]];
-        console.log(prodStatuses)
 
         $(function() {
             var options = {
@@ -121,7 +122,8 @@
                             if (row.prodStatus === 'SAVED') {
                                 actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                                 actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a> ');
-                                actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
+                                actions.push('<a class="btn btn-warning btn-xs ' + editAttrFlag + '" href="javascript:void(0)" onclick="editAttr(\'' + row.id + '\')"><i class="fa fa-at"></i>编辑属性</a> ');
+                                actions.push('<a class="btn btn-info btn-xs ' + editTagFlag + '" href="javascript:void(0)" onclick="editTag(\'' + row.id + '\')"><i class="fa fa-info"></i>编辑标签</a> ');
                             }
                             if (row.prodStatus === 'SUBMITTED') {
                                 actions.push('<a class="btn btn-warning btn-xs ' + approveFlag + '" href="javascript:void(0)" onclick="approve(\'' + row.id + '\')"><i class="fa fa-thumbs-o-up"></i>审核</a> ');
@@ -135,6 +137,14 @@
             $.table.init(options);
         });
 
+        function editAttr(id) {
+            $.modal.openTab("商品属性信息",prefix + "/editAttr/" + id);
+        }
+
+        function editTag(id) {
+            $.modal.openTab("商品标签信息",prefix + "/editTag/" + id);
+        }
+
         function approve(id) {
             $.modal.confirm("确认同意该商品的申请吗?", function() {
                 $.operate.post(prefix + "/approve", {"id": id});

+ 0 - 10
08.src/Xingxi/xingxi-mq-server/pom.xml

@@ -95,13 +95,6 @@
             <artifactId>httpmime</artifactId>
         </dependency>
         <dependency>
-            <groupId>kp</groupId>
-            <artifactId>kp</artifactId>
-            <version>1.0</version>
-            <scope>system</scope>
-            <systemPath>${pom.basedir}/lib/kp-1.0.jar</systemPath>
-        </dependency>
-        <dependency>
             <groupId>com.github.binarywang</groupId>
             <artifactId>weixin-java-pay</artifactId>
             <version>4.5.0</version>
@@ -156,9 +149,6 @@
                             <useUniqueVersions>false</useUniqueVersions>
                             <mainClass>com.xingxi.XingxiMqServerApplication</mainClass>
                         </manifest>
-                        <manifestEntries>
-                            <Class-Path>lib/kp-1.0.jar</Class-Path>
-                        </manifestEntries>
                     </archive>
                 </configuration>
             </plugin>