Ver Fonte

提交代码

há 7 meses atrás
pai
commit
fede30f8e1
16 ficheiros alterados com 481 adições e 244 exclusões
  1. 29 52
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/controller/MerchantProdController.java
  2. 28 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/domain/MerchantProdVo.java
  3. 11 27
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/mapper/MerchantProdVoMapper.java
  4. 39 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/service/IMerchantProdVoService.java
  5. 87 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/service/impl/MerchantProdVoServiceImpl.java
  6. 1 1
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/controller/ProdAttrPriceController.java
  7. 2 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/domain/ProdAttrVo.java
  8. 1 1
      08.src/Xingxi/xingxi-admin/src/main/resources/application-local.yml
  9. 68 0
      08.src/Xingxi/xingxi-admin/src/main/resources/mapper/MerchantProdVoMapper.xml
  10. 3 0
      08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdAttrVoMapper.xml
  11. 7 7
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/merchant.html
  12. 89 0
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/prod/edit.html
  13. 114 0
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/prod/merchantProd.html
  14. 0 156
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/product/merchantProd.html
  15. 0 0
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prodAttrPrice/prodAttrPrice.html
  16. 2 0
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/merchant/service/impl/MerchantProdServiceImpl.java

+ 29 - 52
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/controller/MerchantProdController.java

@@ -4,10 +4,13 @@ import com.xingxi.common.annotation.Log;
 import com.xingxi.common.core.controller.BaseController;
 import com.xingxi.common.core.domain.AjaxResult;
 import com.xingxi.common.core.page.TableDataInfo;
+import com.xingxi.common.core.text.Convert;
 import com.xingxi.common.enums.BusinessType;
 import com.xingxi.common.utils.poi.ExcelUtil;
 import com.xingxi.master.merchant.domain.MerchantProd;
 import com.xingxi.master.merchant.service.IMerchantProdService;
+import com.xingxi.web.controller.master.merchant.domain.MerchantProdVo;
+import com.xingxi.web.controller.master.merchant.service.IMerchantProdVoService;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
@@ -23,93 +26,67 @@ import java.util.List;
  * @date 2025-03-09
  */
 @Controller
-@RequestMapping("/master/merchant/product")
+@RequestMapping("/master/merchant/prod")
 public class MerchantProdController extends BaseController {
-    private final String prefix = "master/merchant/product";
+    private final String prefix = "master/merchant/prod";
 
     @Resource
-    private IMerchantProdService merchantProdService;
+    private IMerchantProdVoService merchantProdVoService;
 
-    @RequiresPermissions("system:merchant:product:view")
-    @GetMapping()
-    public String prod() {
-        return prefix + "/product";
+    @RequiresPermissions("master:merchant:prod:view")
+    @GetMapping("/view/{mercId}")
+    public String prod(@PathVariable("mercId") Long mercId, ModelMap mMap) {
+        mMap.put("mercId", mercId);
+        return prefix + "/merchantProd";
     }
 
     /**
      * 查询店铺商品列表
      */
-    @RequiresPermissions("system:merchant:product:list")
+    @RequiresPermissions("master:merchant:prod:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(MerchantProd merchantProd) {
+    public TableDataInfo list(MerchantProdVo merchantProdVo) {
         startPage();
-        List<MerchantProd> list = merchantProdService.selectMerchantProdList(merchantProd);
+        List<MerchantProdVo> list = merchantProdVoService.selectMerchantProdVoList(merchantProdVo);
         return getDataTable(list);
     }
 
     /**
-     * 导出店铺商品列表
-     */
-    @RequiresPermissions("system:merchant:product:export")
-    @Log(title = "店铺商品", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(MerchantProd merchantProd) {
-        List<MerchantProd> list = merchantProdService.selectMerchantProdList(merchantProd);
-        ExcelUtil<MerchantProd> util = new ExcelUtil<>(MerchantProd.class);
-        return util.exportExcel(list, "店铺商品数据");
-    }
-
-    /**
-     * 新增店铺商品
-     */
-    @GetMapping("/add")
-    public String add() {
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存店铺商品
-     */
-    @RequiresPermissions("system:merchant:product:add")
-    @Log(title = "店铺商品", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(MerchantProd merchantProd) {
-        return toAjax(merchantProdService.insertMerchantProd(merchantProd));
-    }
-
-    /**
      * 修改店铺商品
      */
-    @RequiresPermissions("system:merchant:product:edit")
-    @GetMapping("/edit/{mercProdId}")
-    public String edit(@PathVariable("mercProdId") Long mercProdId, ModelMap mMap) {
-        MerchantProd merchantProd = merchantProdService.selectMerchantProdByMercProdId(mercProdId);
-        mMap.put("merchantProd", merchantProd);
+    @RequiresPermissions("master:merchant:prod:edit")
+    @GetMapping("/edit/{mercId}")
+    public String edit(@PathVariable("mercId") Long mercId, ModelMap mMap) {
+        List<MerchantProdVo> merchantProdVoList = merchantProdVoService.selectMerchantProdVoByMercId(mercId);
+        mMap.put("mercId", mercId);
+        mMap.put("merchantProdVoList", merchantProdVoList);
         return prefix + "/edit";
     }
 
     /**
      * 修改保存店铺商品
      */
-    @RequiresPermissions("system:merchant:product:edit")
+    @RequiresPermissions("master:merchant:prod:edit")
     @Log(title = "店铺商品", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(MerchantProd merchantProd) {
-        return toAjax(merchantProdService.updateMerchantProd(merchantProd));
+    public AjaxResult editSave(@RequestBody MerchantProdVo merchantProdVo) {
+        return toAjax(merchantProdVoService.updateMerchantProdVo(merchantProdVo));
     }
 
     /**
      * 删除店铺商品
      */
-    @RequiresPermissions("system:merchant:product:remove")
+    @RequiresPermissions("master:merchant:prod:remove")
     @Log(title = "店铺商品", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
-        return toAjax(merchantProdService.deleteMerchantProdByMercProdIds(ids));
+        if (ids.indexOf(",") > 0) {
+            return toAjax(merchantProdVoService.logicDeleteMerchantProdByMercProdIds(Convert.toStrArray(ids)));
+        } else {
+            return toAjax(merchantProdVoService.logicDeleteMerchantProdByMercProdId(Long.parseLong(ids)));
+        }
     }
 }

+ 28 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/domain/MerchantProdVo.java

@@ -0,0 +1,28 @@
+package com.xingxi.web.controller.master.merchant.domain;
+
+import com.xingxi.master.merchant.domain.MerchantProd;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+
+/**
+ * 商品对象 m_prod
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString
+public class MerchantProdVo extends MerchantProd {
+    private static final long serialVersionUID = 1L;
+
+    //商品名称
+    private String prodName;
+
+    //商品名称
+    private String attrName;
+
+    //选择的属性Id
+    private String prodAttrIds;
+}

+ 11 - 27
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/mapper/MerchantProdVoMapper.java

@@ -1,48 +1,32 @@
 package com.xingxi.web.controller.master.merchant.mapper;
 
-import com.xingxi.master.designer.domain.Designer;
-import com.xingxi.master.product.domain.ProdClass;
-import com.xingxi.master.product.mapper.ProdMapper;
-import com.xingxi.web.controller.master.product.domain.ProdVo;
+import com.xingxi.master.merchant.mapper.MerchantProdMapper;
+import com.xingxi.web.controller.master.merchant.domain.MerchantProdVo;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
 /**
- * 商品Mapper接口
+ * 店铺商品Mapper接口
  *
  * @author xingxi
  * @date 2025-03-06
  */
 @Repository
-public interface MerchantProdVoMapper extends ProdMapper {
+public interface MerchantProdVoMapper extends MerchantProdMapper {
     /**
-     * 查询商品
+     * 查询店铺商品列表
      *
-     * @param id 商品主键
-     * @return 商品
-     */
-    ProdVo selectProdVoById(Long id);
-
-    /**
-     * 查询商品列表
-     *
-     * @param prodVo 商品
+     * @param mercId 店铺ID
      * @return 商品集合
      */
-    List<ProdVo> selectProdVoList(ProdVo prodVo);
+    List<MerchantProdVo> selectMerchantProdVoByMercId(Long mercId);
 
     /**
-     * 查询商品分类列表
+     * 查询店铺商品列表
      *
-     * @return 商品分类列表
-     */
-    List<ProdClass> selectProdClassList();
-
-    /**
-     * 查询设计师列表
-     *
-     * @return 设计师列表
+     * @param merchantProdVo 店铺商品
+     * @return 商品集合
      */
-    List<Designer> selectDesignerList();
+    List<MerchantProdVo> selectMerchantProdVoList(MerchantProdVo merchantProdVo);
 }

+ 39 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/service/IMerchantProdVoService.java

@@ -0,0 +1,39 @@
+package com.xingxi.web.controller.master.merchant.service;
+
+import com.xingxi.master.merchant.domain.MerchantProd;
+import com.xingxi.master.merchant.service.IMerchantProdService;
+import com.xingxi.web.controller.master.merchant.domain.MerchantProdVo;
+
+import java.util.List;
+
+/**
+ * 店铺商品Service接口
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+public interface IMerchantProdVoService extends IMerchantProdService {
+    /**
+     * 查询店铺商品列表
+     *
+     * @param mercId 店铺ID
+     * @return 商品集合
+     */
+    List<MerchantProdVo> selectMerchantProdVoByMercId(Long mercId);
+
+    /**
+     * 查询店铺商品列表
+     *
+     * @param merchantProdVo 店铺商品Vo
+     * @return 商品集合
+     */
+    List<MerchantProdVo> selectMerchantProdVoList(MerchantProdVo merchantProdVo);
+
+    /**
+     * 修改店铺商品
+     *
+     * @param merchantProdVo 店铺商品Vo
+     * @return 结果
+     */
+    int updateMerchantProdVo(MerchantProdVo merchantProdVo);
+}

+ 87 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/merchant/service/impl/MerchantProdVoServiceImpl.java

@@ -0,0 +1,87 @@
+package com.xingxi.web.controller.master.merchant.service.impl;
+
+import com.xingxi.common.core.text.Convert;
+import com.xingxi.common.enums.EDelFlag;
+import com.xingxi.common.exception.BusinessException;
+import com.xingxi.common.utils.DateUtils;
+import com.xingxi.common.utils.ShiroUtils;
+import com.xingxi.master.merchant.domain.MerchantProd;
+import com.xingxi.master.merchant.service.impl.MerchantProdServiceImpl;
+import com.xingxi.web.controller.master.merchant.domain.MerchantProdVo;
+import com.xingxi.web.controller.master.merchant.mapper.MerchantProdVoMapper;
+import com.xingxi.web.controller.master.merchant.service.IMerchantProdVoService;
+import com.xingxi.web.controller.master.product.domain.ProdVo;
+import com.xingxi.web.controller.master.product.mapper.ProdVoMapper;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 店铺商品Service业务层处理
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Service
+public class MerchantProdVoServiceImpl extends MerchantProdServiceImpl implements IMerchantProdVoService {
+    @Resource
+    private MerchantProdVoMapper merchantProdVoMapper;
+
+    /**
+     * 查询店铺商品列表
+     *
+     * @param mercId 店铺ID
+     * @return 商品
+     */
+    @Override
+    public List<MerchantProdVo> selectMerchantProdVoByMercId(Long mercId) {
+        return merchantProdVoMapper.selectMerchantProdVoByMercId(mercId);
+    }
+
+    /**
+     * 查询店铺商品列表
+     *
+     * @param merchantProdVo 店铺商品
+     * @return 商品
+     */
+    @Override
+    public List<MerchantProdVo> selectMerchantProdVoList(MerchantProdVo merchantProdVo) {
+        merchantProdVo.setDelFlag(EDelFlag.NO.getVal());
+        return merchantProdVoMapper.selectMerchantProdVoList(merchantProdVo);
+    }
+
+    /**
+     * 修改店铺商品
+     *
+     * @param merchantProdVo 店铺商品Vo
+     * @return 结果
+     */
+    @Override
+    public int updateMerchantProdVo(MerchantProdVo merchantProdVo) {
+        String[] prodAttrIds = Convert.toStrArray(merchantProdVo.getProdAttrIds());
+        MerchantProd cond = new MerchantProd();
+        cond.setMercId(merchantProdVo.getMercId());
+        List<MerchantProdVo> checkResult = merchantProdVoMapper.selectMerchantProdVoByMercId(merchantProdVo.getMercId());
+        if (checkResult.size() > 0) {
+            int effectRows = merchantProdVoMapper.logicDeleteMerchantProdByCondition(cond);
+            if (effectRows == 0) {
+                throw new BusinessException("删除失败,请重试!");
+            }
+        }
+        int effectRows = 0;
+        List<MerchantProd> batchInsertList = new ArrayList<>();
+        for (String prodAttrId : prodAttrIds) {
+            MerchantProd merchantProd = new MerchantProd();
+            merchantProd.setMercId(merchantProdVo.getMercId());
+            merchantProd.setProdAttrId(Long.parseLong(prodAttrId));
+            merchantProd.setDelFlag(EDelFlag.NO.getVal());
+            merchantProd.setCreateUser(ShiroUtils.getLoginName());
+            merchantProd.setCreateTime(DateUtils.getNowDate());
+            batchInsertList.add(merchantProd);
+        }
+        effectRows += merchantProdVoMapper.batchInsertMerchantProd(batchInsertList);
+        return effectRows;
+    }
+}

+ 1 - 1
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/controller/ProdAttrPriceController.java

@@ -50,7 +50,7 @@ public class ProdAttrPriceController extends BaseController {
         prodAttrPriceVo.setBuyerRoleKey(ERoleKey.CUSTOMER.getCode());
         prodAttrPriceVo.setBuyerRoleName(ERoleKey.CUSTOMER.getDesc());
         mMap.put("prodAttrPriceVo", prodAttrPriceVo);
-        return prefix + "/prodAttrprice";
+        return prefix + "/prodAttrPrice";
     }
 
     /**

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

@@ -27,4 +27,6 @@ public class ProdAttrVo extends ProdAttr {
     private Long jointId;
     // 属性组和ID
     private Long prodAttrJointId;
+    // 数据库同名ID处理
+    private String prodName;
 }

+ 1 - 1
08.src/Xingxi/xingxi-admin/src/main/resources/application-local.yml

@@ -72,7 +72,7 @@ spring:
         host: redis.njnet.vip
         port: 6379
         password: Biandan123
-        timeout: 10000ms           # 连接超时时长(毫秒)
+        timeout: 20000ms           # 连接超时时长(毫秒)
         lettuce:
             pool:
                 max-active: 1000  # 连接池最大连接数(使用负值表示没有限制)

+ 68 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/mapper/MerchantProdVoMapper.xml

@@ -0,0 +1,68 @@
+<?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.merchant.mapper.MerchantProdVoMapper">
+    <resultMap type="MerchantProdVo"    id="MerchantProdResult">
+        <result property="mercProdId"   column="mercProdId"     />
+        <result property="mercId"       column="mercId"         />
+        <result property="prodId"       column="prodId"         />
+        <result property="prodAttrId"   column="prodAttrId"     />
+        <result property="shelfTime"    column="shelfTime"      />
+        <result property="shelfFlag"    column="shelfFlag"      />
+        <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="prodName"     column="prodName"       />
+        <result property="attrName"     column="AttrName"       />
+    </resultMap>
+
+    <sql id="selectMerchantProdVo">
+        select m_merchant_prod.mercProdId
+             , m_merchant_prod.mercId
+             , m_merchant_prod.prodId
+             , m_merchant_prod.prodAttrId
+             , m_merchant_prod.shelfTime
+             , m_merchant_prod.shelfFlag
+             , m_prod.prodName
+             , m_prod_attr.attrName
+        from m_merchant_prod
+        inner join m_prod on m_prod.id = m_merchant_prod.prodId
+        inner join m_prod_attr on m_prod_attr.prodAttrId = m_merchant_prod.prodAttrId
+    </sql>
+
+    <select id="selectMerchantProdVoByMercId" parameterType="Long" resultMap="MerchantProdResult">
+        <include refid="selectMerchantProdVo"/>
+        <where>
+            and m_merchant_prod.delFlag = 0
+            and m_merchant_prod.mercId = #{mercId}
+        </where>
+    </select>
+
+    <select id="selectMerchantProdVoList" parameterType="MerchantProdVo" resultMap="MerchantProdResult">
+        <include refid="selectMerchantProdVo"/>
+        <where>
+            <if test="mercProdId != null "> and m_merchant_prod.prodClassId = #{prodClassId}</if>
+            <if test="mercId != null "> and m_merchant_prod.mercId = #{mercId}</if>
+            <if test="prodId != null "> and m_merchant_prod.prodId = #{prodId}</if>
+            <if test="prodAttrId != null "> and m_merchant_prod.prodAttrId = #{prodAttrId}</if>
+            <if test="shelfFlag != null "> and m_merchant_prod.shelfFlag = #{shelfFlag}</if>
+            <if test="params.shelfTimeFrom != null and params.shelfTimeFrom != ''"><!-- 开始时间检索 -->
+                and date_format(m_merchant_prod.shelfTime,'%y%m%d') &gt;= date_format(#{shelfTimeFrom},'%y%m%d')
+            </if>
+            <if test="params.shelfTimeTo != null and params.shelfTimeTo != ''"><!-- 开始时间检索 -->
+                and date_format(m_merchant_prod.shelfTime,'%y%m%d') &gt;= date_format(#{shelfTimeTo},'%y%m%d')
+            </if>
+            <if test="delFlag != null and delFlag != ''"> and m_merchant_prod.delFlag = #{delFlag}</if>
+            <if test="prodName != null and prodName != ''"> and m_prod.prodName like concat('%', #{prodName}, '%')</if>
+            <if test="attrName != null  and attrName != ''"> and m_prod_attr.attrName like concat('%', #{attrName}, '%')</if>
+        </where>
+    </select>
+
+    <insert id="batchInsertMerchantProd">
+        insert into m_merchant_prod( mercId, prodId, prodAttrId, shelfTime, shelfFlag, delFlag, createUser, createTime, updateUser, updateTime) values
+        <foreach item="item" index="index" collection="list" separator=",">
+            ( #{item.mercId}, (select prodId from m_prod_attr where prodAttrId = #{item.prodAttrId}), #{item.prodAttrId}, #{item.shelfTime}, #{item.shelfFlag}, #{item.delFlag}, #{item.createUser}, #{item.createTime}, #{item.updateUser}, #{item.updateTime})
+        </foreach>
+    </insert>
+</mapper>

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

@@ -13,6 +13,7 @@
         <result property="updateTime"           column="updateTime" />
         <result property="jointId"              column="jointId" />
         <result property="prodAttrJointId"      column="prodAttrJointId" />
+        <result property="prodName"             column="prodName"   />
     </resultMap>
 
     <sql id="selectProdAttrVo">
@@ -25,7 +26,9 @@
              , m_prod_attr.createTime
              , m_prod_attr.updateUser
              , m_prod_attr.updateTime
+             , m_prod.prodName
         from m_prod_attr
+        inner join m_prod on m_prod.id = m_prod_attr.prodId
     </sql>
 
     <select id="selectProdAttrVoByProdAttrId" parameterType="Long" resultMap="ProdAttrVoResult">

+ 7 - 7
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/merchant.html

@@ -81,11 +81,11 @@
     <th:block th:include="include :: select2-js" />
     <th:block th:include="include :: bootstrap-select-js" />
     <script th:inline="javascript">
-        var editFlag = [[${@permission.hasPermi('master:merchant:edit')}]];
-        var allocProdFlag = [[${@permission.hasPermi('master:merchant:allocProd')}]];
-        var setPayInfoFlag = [[${@permission.hasPermi('master:merchant:setPayInfo')}]];
-        var setInvFlag = [[${@permission.hasPermi('master:merchant:setInv')}]];
-        var removeFlag = [[${@permission.hasPermi('master:merchant:remove')}]];
+        var editFlag = [[${@permission.hasPermi('master:merchant:prod:edit')}]];
+        var allocProdFlag = [[${@permission.hasPermi('master:merchant:prod:allocProd')}]];
+        var setPayInfoFlag = [[${@permission.hasPermi('master:merchant:prod:setPayInfo')}]];
+        var setInvFlag = [[${@permission.hasPermi('master:merchant:prod:setInv')}]];
+        var removeFlag = [[${@permission.hasPermi('master:merchant:prod:remove')}]];
         var mercStatuses = [[${@dict.getType('merchant_status')}]];
         var mercTypes = [[${@dict.getType('merchant_type')}]];
 
@@ -172,10 +172,10 @@
             $.table.init(options);
         });
         function setPayInfo(mercId) {
-            $.modal.openTab("支付信息",ctx + "business/merchant/wxpay/edit/" + mercId);
+            $.modal.openTab("支付信息",ctx + "business/merchant/prod/wxpay/edit/" + mercId);
         }
         function allocProd(mercId) {
-            $.modal.openTab("分配商品",ctx + "business/merchant/allocProd/edit/" + mercId);
+            $.modal.openTab("分配商品",ctx + "master/merchant/prod/view/" + mercId);
         }
     </script>
 </body>

+ 89 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/prod/edit.html

@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
+<head>
+    <th:block th:include="include :: header('新增商户')" />
+</head>
+<body class="white-bg">
+    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
+        <form class="form-horizontal m" id="form-merchant-add">
+            <input id="mercId" name="mercId" type="hidden" th:value="${mercId}">
+            <div class="select-list">
+                <ul>
+                    <li>
+                        商品名称:<input type="text" name="prodName" placeholder="商品名称">
+                    </li>
+                </ul>
+                <ul>
+                    <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>
+            </div>
+            <div class="btn-group-sm" id="toolbar" role="group"></div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="prodAttr-select-table"></table>
+            </div>
+        </form>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "master/merchant/prod"
+
+        $(function() {
+            var options = {
+                id: 'prodAttr-select-table',
+                uniqueId: 'prodAttrId',
+                url: ctx + "master/product/prodAttr/list",
+                createUrl: prefix + "/add/{id}",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove",
+                exportUrl: prefix + "/export",
+                clickToSelect: true,
+                modalName: "商品",
+                columns: [
+                    {
+                        checkbox: true
+                    },
+                    {
+                        field: 'prodName',
+                        title: '商品名称'
+                    },
+                    {
+                        field: 'attrName',
+                        title: '属性名称'
+                    }
+                ]
+            };
+            $.table.init(options);
+        });
+
+        $("#form-merchant-add").validate({
+            focusCleanup: true
+        });
+
+        function submitHandler(index, layero) {
+            var rows = $.table.selectColumns("prodAttrId");
+            if (rows.length === 0) {
+                $.modal.alertWarning("请至少选择一条记录");
+                return;
+            }
+            var data = {
+                "mercId" : $("#mercId").val(),
+                "prodAttrIds" : rows.join(),
+            }
+            $.ajax({
+                url: prefix + "/edit",
+                contentType: 'application/json',
+                data: JSON.stringify(data),
+                type: "post",
+                processData: false,
+                success: function(result) {
+                    $.operate.successCallback(result);
+                    $.modal.close();
+                }
+            });
+        }
+    </script>
+</body>
+</html>

+ 114 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/prod/merchantProd.html

@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head>
+    <th:block th:include="include :: header('推荐商品列表')" />
+</head>
+<body class="gray-bg">
+     <div class="container-div">
+        <div class="row">
+            <div class="col-sm-12 search-collapse">
+                <form id="formId">
+                    <input id="mercId" name="mercId" type="hidden" th:value="${mercId}">
+                    <div class="select-list">
+                        <ul>
+                            <li>
+                                商品名称:<input type="text" name="prodName" placeholder="商品名称">
+                            </li>
+                            <li>
+                                商品属性:<input type="text" name="attrName" placeholder="商品属性">
+                            </li>
+                            <li>
+                                上架状态:
+                                <select name="shelf_flag" th:with="type=${@dict.getType('shelf_flag')}">
+                                    <option value="">所有</option>
+                                    <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
+                                </select>
+                            </li>
+                            <li>
+                                上架时间:
+                                <input type="text" class="time-input" placeholder="开始时间" id="shelfTimeFrom" name="params[shelfTimeFrom]"/>
+                                <span>-</span>
+                                <input type="text" class="time-input" placeholder="结束时间" id="shelfTimeTo" name="params[shelfTimeTo]"/>
+                            </li>
+                        </ul>
+                        <ul>
+                            <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>
+                    </div>
+                </form>
+            </div>
+
+            <div class="btn-group-sm" id="toolbar" role="group">
+                <a class="btn btn-success" onclick="addProduct()" shiro:hasPermission="master:product:prod:add">
+                    <i class="fa fa-plus"></i> 添加
+                </a>
+                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="master:product:prod:remove">
+                    <i class="fa fa-remove"></i> 删除
+                </a>
+            </div>
+            <div class="col-sm-12 select-table table-striped">
+                <table id="bootstrap-table"></table>
+            </div>
+        </div>
+    </div>
+    <th:block th:include="include :: footer" />
+    <script th:inline="javascript">
+        var prefix = ctx + "master/merchant/prod";
+        var removeFlag = [[${@permission.hasPermi('master:merchant:prod:remove')}]];
+        var shelfFlags = [[${@dict.getType('shelf_flag')}]];
+
+        $(function() {
+            var options = {
+                url: prefix + "/list",
+                createUrl: prefix + "/add/{id}",
+                updateUrl: prefix + "/edit/{id}",
+                removeUrl: prefix + "/remove",
+                exportUrl: prefix + "/export",
+                uniqueId: "mercProdId",
+                modalName: "商品属性",
+                columns: [
+                    {
+                        checkbox: true
+                    },
+                    {
+                        field: 'prodName',
+                        title: '商品名称'
+                    },
+                    {
+                        field: 'attrName',
+                        title: '属性名称'
+                    },
+                    {
+                        field: 'shelfFlag',
+                        title: '上架状态',
+                        formatter: function (value, row, index) {
+                            return $.table.selectDictLabel(shelfFlags, value);
+                        }
+                    },
+                    {
+                        field: 'shelfTime',
+                        title: '上架时间'
+                    },
+                    {
+                        title: '操作',
+                        align: 'center',
+                        formatter: function(value, row, index) {
+                            var actions = [];
+                            actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.mercProdId + '\')"><i class="fa fa-remove"></i>删除</a> ');
+                            return actions.join('');
+                        }
+                    }
+                ]
+            };
+            $.table.init(options);
+        });
+
+        function addProduct() {
+            $.modal.open("添加商品", prefix + "/edit/" + $("#mercId").val());
+        }
+    </script>
+</body>
+</html>

+ 0 - 156
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/merchant/product/merchantProd.html

@@ -1,156 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
-<head>
-    <th:block th:include="include :: header('推荐商品列表')" />
-</head>
-<body class="gray-bg">
-     <div class="container-div">
-        <div class="row">
-            <div class="col-sm-12 search-collapse">
-                <form id="formId" class="form-horizontal m-t">
-                    <div class="form-group">
-                        <div style="margin-left: 15px; width: 100px; float: left;">
-                            <label class="control-label">商品名称:</label>
-                        </div>
-                        <div style="width: 150px; float: left;">
-                            <input type="text" class="form-control" name="prodName" placeholder="商品名称">
-                        </div>
-                        <div style="margin-left: 15px; width: 100px; float: left;">
-                            <label class="control-label">商品属性:</label>
-                        </div>
-                        <div style="width: 150px; float: left;">
-                            <input type="text" class="form-control" name="attrName" placeholder="商品属性">
-                        </div>
-                        <div style="margin-left: 15px; width: 100px; float: left;">
-                            <label class="control-label">上架状态:</label>
-                        </div>
-                        <div style="width: 150px; float: left;">
-                            <select name="shelf_flag" class="form-control m-b" th:with="type=${@dict.getType('shelf_flag')}">
-                                <option value="">所有</option>
-                                <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
-                            </select>
-                        </div>
-                        <div style="margin-left: 15px; width: 100px; float: left;">
-                            <label class="control-label">上架时间:</label>
-                        </div>
-                        <div style="width: 150px; float: left;">
-                            <input type="text" class="time-input" placeholder="开始时间" id="shelfTimeFrom" name="params[shelfTimeFrom]"/>
-                            <span>-</span>
-                            <input type="text" class="time-input" placeholder="结束时间" id="shelfTimeTo" name="params[shelfTimeTo]"/>
-                        </div>
-                        <div style="margin-left: 15px; float: left;">
-                            <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>
-                        </div>
-                    </div>
-                </form>
-            </div>
-
-            <div class="btn-group-sm" id="toolbar" role="group">
-                <a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="master:product:prod:add">
-                    <i class="fa fa-plus"></i> 添加
-                </a>
-                <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="master:product:prod:edit">
-                    <i class="fa fa-edit"></i> 修改
-                </a>
-                <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="master:product:prod:remove">
-                    <i class="fa fa-remove"></i> 删除
-                </a>
-            </div>
-            <div class="col-sm-12 select-table table-striped">
-                <table id="bootstrap-table"></table>
-            </div>
-        </div>
-    </div>
-    <th:block th:include="include :: footer" />
-    <script th:inline="javascript">
-        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:viewAttrs')}]];
-        var editTagFlag = [[${@permission.hasPermi('master:product:prod:editTag')}]];
-        var prefix = ctx + "master/product/prod";
-        var prodStatuses = [[${@dict.getType('prod_status')}]];
-
-        $(function() {
-            var options = {
-                url: prefix + "/list",
-                createUrl: prefix + "/add",
-                updateUrl: prefix + "/edit/{id}",
-                removeUrl: prefix + "/remove",
-                exportUrl: prefix + "/export",
-                modalName: "推荐商品",
-                columns: [
-                    {
-                        field: 'prodName',
-                        title: '商品名称'
-                    },
-                    {
-                        field: 'prodClass',
-                        title: '商品分类'
-                    },
-                    {
-                        field: 'ipName',
-                        title: '文创品牌'
-                    },
-                    {
-                        field: 'designerName',
-                        title: '设计师名称'
-                    },
-                    {
-                        field: 'prodStatus',
-                        title: '商品状态',
-                        formatter: function (value, row, index) {
-                            return $.table.selectDictLabel(prodStatuses, value);
-                        }
-                    },
-                    {
-                        title: '操作',
-                        align: 'center',
-                        formatter: function(value, row, index) {
-                            var actions = [];
-                            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-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> ');
-                                actions.push('<a class="btn btn-primary btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="editPic(\'' + row.id + '\')"><i class="fa fa-file-picture-o"></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> ');
-                                actions.push('<a class="btn btn-warning btn-xs ' + approveFlag + '" href="javascript:void(0)" onclick="reject(\'' + row.id + '\')"><i class="fa fa-thumbs-o-down"></i>驳回</a>');
-                            }
-                            return actions.join('');
-                        }
-                    }
-                ]
-            };
-            $.table.init(options);
-        });
-
-        function editAttr(id) {
-            $.modal.openTab("商品属性信息",ctx + "master/product/prodAttr/" + id);
-        }
-
-        function editTag(id) {
-            $.modal.openTab("商品标签信息", ctx + "master/product/prodTag/editTag/" + id);
-        }
-
-        function editPic(id) {
-            $.modal.openTab("商品图片信息", ctx + "master/product/prodPic/editPic/" + id);
-        }
-
-        function approve(id) {
-            $.modal.confirm("确认同意该商品的申请吗?", function() {
-                $.operate.post(prefix + "/approve", {"id": id});
-            });
-        }
-
-        function reject(id) {
-            $.modal.confirm("确认驳回该商品的申请吗?", function() {
-                $.operate.post(prefix + "/reject/", {"id": id});
-            });
-        }
-    </script>
-</body>
-</html>

+ 0 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prodAttrPrice/prodAttrprice.html → 08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prodAttrPrice/prodAttrPrice.html


+ 2 - 0
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/merchant/service/impl/MerchantProdServiceImpl.java

@@ -2,6 +2,7 @@ package com.xingxi.master.merchant.service.impl;
 
 import com.xingxi.common.core.text.Convert;
 import com.xingxi.common.utils.DateUtils;
+import com.xingxi.common.utils.ShiroUtils;
 import com.xingxi.master.merchant.domain.MerchantProd;
 import com.xingxi.master.merchant.mapper.MerchantProdMapper;
 import com.xingxi.master.merchant.service.IMerchantProdService;
@@ -51,6 +52,7 @@ public class MerchantProdServiceImpl implements IMerchantProdService {
      */
     @Override
     public int insertMerchantProd(MerchantProd merchantProd) {
+        merchantProd.setCreateUser(ShiroUtils.getLoginName());
         merchantProd.setCreateTime(DateUtils.getNowDate());
         return merchantProdMapper.insertMerchantProd(merchantProd);
     }