vor 7 Monaten
Ursprung
Commit
984f9a8ec6
17 geänderte Dateien mit 157 neuen und 63 gelöschten Zeilen
  1. 7 7
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/controller/IpInfoController.java
  2. 19 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/domain/IpInfoVo.java
  3. 23 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/mapper/IpInfoVoMapper.java
  4. 26 0
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/service/impl/IpInfoCommonService.java
  5. 1 1
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/controller/ProdController.java
  6. 0 4
      08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/product/domain/ProdVo.java
  7. 7 0
      08.src/Xingxi/xingxi-admin/src/main/resources/mapper/IpInfoVoMapper.xml
  8. 41 30
      08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdVoMapper.xml
  9. 1 1
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/add.html
  10. 1 1
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/edit.html
  11. 13 7
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/add.html
  12. 2 2
      08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/prod.html
  13. 1 1
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/designer/service/impl/DesignerServiceImpl.java
  14. 2 2
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/IIpInfoService.java
  15. 4 4
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/impl/IpInfoServiceImpl.java
  16. 1 1
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/IProdService.java
  17. 8 2
      08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/impl/ProdServiceImpl.java

+ 7 - 7
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/controller/IpInfoController.java

@@ -28,7 +28,7 @@ public class IpInfoController extends BaseController {
     private final String prefix = "master/ipInfo";
 
     @Resource
-    private IIpInfoService IIpInfoService;
+    private IIpInfoService iIpInfoService;
 
     @RequiresPermissions("system:ipInfo:view")
     @GetMapping()
@@ -44,7 +44,7 @@ public class IpInfoController extends BaseController {
     @ResponseBody
     public TableDataInfo list(IpInfo ipInfo) {
         startPage();
-        List<IpInfo> list = IIpInfoService.selectIpInfoList(ipInfo);
+        List<IpInfo> list = iIpInfoService.selectIpInfoList(ipInfo);
         return getDataTable(list);
     }
 
@@ -56,7 +56,7 @@ public class IpInfoController extends BaseController {
     @PostMapping("/export")
     @ResponseBody
     public AjaxResult export(IpInfo ipInfo) {
-        List<IpInfo> list = IIpInfoService.selectIpInfoList(ipInfo);
+        List<IpInfo> list = iIpInfoService.selectIpInfoList(ipInfo);
         ExcelUtil<IpInfo> util = new ExcelUtil<>(IpInfo.class);
         return util.exportExcel(list, "文创品牌数据");
     }
@@ -77,7 +77,7 @@ public class IpInfoController extends BaseController {
     @PostMapping("/add")
     @ResponseBody
     public AjaxResult addSave(IpInfo ipInfo) {
-        return toAjax(IIpInfoService.insertIpInfo(ipInfo));
+        return toAjax(iIpInfoService.insertIpInfo(ipInfo));
     }
 
     /**
@@ -86,7 +86,7 @@ public class IpInfoController extends BaseController {
     @RequiresPermissions("system:ipInfo:edit")
     @GetMapping("/edit/{ipInfoId}")
     public String edit(@PathVariable("ipInfoId") Long ipInfoId, ModelMap mMap) {
-        IpInfo ipInfo = IIpInfoService.selectIpInfoByIpId(ipInfoId);
+        IpInfo ipInfo = iIpInfoService.selectIpInfoByIpId(ipInfoId);
         mMap.put("ipInfo", ipInfo);
         return prefix + "/edit";
     }
@@ -99,7 +99,7 @@ public class IpInfoController extends BaseController {
     @PostMapping("/edit")
     @ResponseBody
     public AjaxResult editSave(IpInfo ipInfo) {
-        return toAjax(IIpInfoService.updateIpInfo(ipInfo));
+        return toAjax(iIpInfoService.updateIpInfo(ipInfo));
     }
 
     /**
@@ -110,6 +110,6 @@ public class IpInfoController extends BaseController {
     @PostMapping("/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
-        return toAjax(IIpInfoService.deleteIpInfoByIpIds(ids));
+        return toAjax(iIpInfoService.logicDeleteIpInfoByIpIds(ids));
     }
 }

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

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

+ 23 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/mapper/IpInfoVoMapper.java

@@ -0,0 +1,23 @@
+package com.xingxi.web.controller.master.ipInfo.mapper;
+
+import com.xingxi.master.ipInfo.mapper.IpInfoMapper;
+import com.xingxi.web.controller.master.ipInfo.domain.IpInfoVo;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 商品Mapper接口
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Repository
+public interface IpInfoVoMapper extends IpInfoMapper {
+    /**
+     * 查询文创列表
+     *
+     * @return 文创列表
+     */
+    List<IpInfoVo> selectIpInfos();
+}

+ 26 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/master/ipInfo/service/impl/IpInfoCommonService.java

@@ -0,0 +1,26 @@
+package com.xingxi.web.controller.master.ipInfo.service.impl;
+
+import com.xingxi.web.controller.master.ipInfo.domain.IpInfoVo;
+import com.xingxi.web.controller.master.ipInfo.mapper.IpInfoVoMapper;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 商品共通Service
+ *
+ * @author xingxi
+ * @date 2025-03-06
+ */
+@Component("ipInfo")
+public class IpInfoCommonService {
+    private final IpInfoVoMapper ipInfoVoMapper;
+
+    public IpInfoCommonService(IpInfoVoMapper ipInfoVoMapper) {
+        this.ipInfoVoMapper = ipInfoVoMapper;
+    }
+
+    public List<IpInfoVo> getIpInfos(){
+        return ipInfoVoMapper.selectIpInfos();
+    }
+}

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

@@ -110,6 +110,6 @@ public class ProdController extends BaseController {
     @PostMapping("/remove")
     @ResponseBody
     public AjaxResult remove(String ids) {
-        return toAjax(prodVoService.deleteProdByIds(ids));
+        return toAjax(prodVoService.logicDeleteProdByIds(ids));
     }
 }

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

@@ -19,11 +19,7 @@ public class ProdVo extends Prod {
 
     private String prodClass;
 
-    private String prodName;
-
     private String ipName;
 
     private String designerName;
-
-    private String prodDesc;
 }

+ 7 - 0
08.src/Xingxi/xingxi-admin/src/main/resources/mapper/IpInfoVoMapper.xml

@@ -0,0 +1,7 @@
+<?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.ipInfo.mapper.IpInfoVoMapper">
+    <select id="selectIpInfos" parameterType="String" resultType="IpInfoVo">
+        select * from m_ipinfo where delFlag = '0'
+    </select>
+</mapper>

+ 41 - 30
08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdVoMapper.xml

@@ -2,45 +2,56 @@
 <!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.ProdVoMapper">
     <resultMap type="ProdVo" id="ProdResult">
-        <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="updateTime"    />
-        <result property="prodName"    column="updateTime"    />
-        <result property="ipName"    column="updateTime"    />
-        <result property="designerName"    column="updateTime"    />
-        <result property="prodDesc"    column="updateTime"    />
+        <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="prodClass"          />
+        <result property="ipName"               column="ipName"             />
+        <result property="designerName"         column="designerName"       />
     </resultMap>
 
     <sql id="selectProdVo">
-        select id, prodClassId, prodName, ipId, designerId, description, prodStatus, thirdIdConfirmFlag, delFlag, createUser, createTime, updateUser, updateTime from m_prod
+        select 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="selectProdVoList" parameterType="ProdVo" resultMap="ProdResult">
         <include refid="selectProdVo"/>
         <where>  
-            <if test="prodClassId != null "> and prodClassId = #{prodClassId}</if>
-            <if test="prodName != null  and prodName != ''"> and prodName like concat('%', #{prodName}, '%')</if>
+            <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 designerId = #{designerId}</if>
-            <if test="description != null  and description != ''"> and description = #{description}</if>
-            <if test="prodStatus != null  and prodStatus != ''"> and prodStatus = #{prodStatus}</if>
-            <if test="thirdIdConfirmFlag != null  and thirdIdConfirmFlag != ''"> and thirdIdConfirmFlag = #{thirdIdConfirmFlag}</if>
-            <if test="delFlag != null  and delFlag != ''"> and delFlag = #{delFlag}</if>
-            <if test="createUser != null  and createUser != ''"> and createUser = #{createUser}</if>
-            <if test="createTime != null "> and createTime = #{createTime}</if>
-            <if test="updateUser != null  and updateUser != ''"> and updateUser = #{updateUser}</if>
-            <if test="updateTime != null "> and updateTime = #{updateTime}</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="className != null  and className != ''"> and m_prod_class.className like concat('%', #{className}, '%')</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>
     

+ 1 - 1
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/add.html

@@ -18,7 +18,7 @@
                 <div class="form-group">
                     <label class="col-sm-3 control-label">文创图片:</label>
                     <div class="col-sm-8">
-                        <img id="ipUrlImg" width="30%" height="30%" src="">
+                        <img id="ipUrlImg" width="30%" height="30%">
                         <input type="file" class="form-control" name="ipInfoUrl" id="ipInfoUrl" accept="image/*"/>
                         <input type="hidden" class="form-control" name="ipUrl" id="ipUrl" />
                     </div>

+ 1 - 1
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/ipInfo/edit.html

@@ -6,7 +6,7 @@
 <body class="white-bg">
     <div class="wrapper wrapper-content animated fadeInRight ibox-content">
         <form class="form-horizontal m" id="form-ipInfo-edit" th:object="${ipInfo}">
-            <input name="ipId" th:field="*{ipInfoId}" type="hidden">
+            <input name="ipId" th:field="*{ipId}" type="hidden">
             <div class="col-xs-12">
                 <div class="form-group">
                     <label class="col-sm-3 control-label">文创品牌名:</label>

+ 13 - 7
08.src/Xingxi/xingxi-admin/src/main/resources/templates/master/product/prod/add.html

@@ -8,25 +8,31 @@
         <form class="form-horizontal m" id="form-prod-add">
             <div class="col-xs-12">
                 <div class="form-group">
-                    <label class="col-sm-3 control-label">商品ID:</label>
+                    <label class="col-sm-3 control-label">商品分类:</label>
                     <div class="col-sm-8">
-                        <input name="prodId" class="form-control" type="text">
+                        <select name="prodClass" class="form-control m-b" th:with="prodClasses=${@product.getProdClasses()}" >
+                            <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>
+                    <label class="col-sm-3 control-label">商品名称:</label>
                     <div class="col-sm-8">
-                        <input name="sort" class="form-control" type="text">
+                        <input name="prodName" class="form-control" type="text">
                     </div>
                 </div>
             </div>
             <div class="col-xs-12">
                 <div class="form-group">
-                    <label class="col-sm-3 control-label">删除标志:</label>
+                    <label class="col-sm-3 control-label">文创名称:</label>
                     <div class="col-sm-8">
-                        <input name="delFlag" class="form-control" type="text">
+                        <select name="ipId" class="form-control m-b" th:with="ipInfos=${@ipInfo.getIpInfos()}" >
+                            <option value="">所有</option>
+                            <option th:each="ipInfo : ${ipInfos}" th:text="${ipInfo.ipName}" th:value="${ipInfo.ipId}"></option>
+                        </select>
                     </div>
                 </div>
             </div>
@@ -34,7 +40,7 @@
     </div>
     <th:block th:include="include :: footer" />
     <script th:inline="javascript">
-        var prefix = ctx + "system/prod"
+        var prefix = ctx + "master/product/prod"
         $("#form-prod-add").validate({
             focusCleanup: true
         });

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

@@ -13,7 +13,7 @@
                             <label class="control-label">商品分类:</label>
                         </div>
                         <div style="width: 150px; float: left;">
-                            <select name="prodClass" th:with="prodClasses=${@product.getProdClasses()}">
+                            <select name="prodClass" class="form-control m-b" th:with="prodClasses=${@product.getProdClasses()}" >
                                 <option value="">所有</option>
                                 <option th:each="prodClass : ${prodClasses}" th:text="${prodClass.className}" th:value="${prodClass.prodClassId}"></option>
                             </select>
@@ -40,7 +40,7 @@
                             <label class="control-label">商品描述:</label>
                         </div>
                         <div style="width: 150px; float: left;">
-                            <input type="text" class="form-control" name="prodDesc">
+                            <input type="text" class="form-control" name="description">
                         </div>
                         <div style="margin-left: 15px; width: 100px; float: left;">
                             <label class="control-label">商品状态:</label>

+ 1 - 1
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/designer/service/impl/DesignerServiceImpl.java

@@ -42,6 +42,7 @@ public class DesignerServiceImpl implements IDesignerService {
      */
     @Override
     public List<Designer> selectDesignerList(Designer designer) {
+        designer.setDelFlag(EDelFlag.NO.getVal());
         return designerMapper.selectDesignerList(designer);
     }
 
@@ -80,7 +81,6 @@ public class DesignerServiceImpl implements IDesignerService {
     public int updateDesigner(Designer designer) {
         designer.setUpdateUser(ShiroUtils.getLoginName());
         designer.setUpdateTime(DateUtils.getNowDate());
-        designer.setDelFlag(EDelFlag.NO.getVal());
         return designerMapper.updateDesigner(designer);
     }
 

+ 2 - 2
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/IIpInfoService.java

@@ -78,10 +78,10 @@ public interface IIpInfoService {
     /**
      * 逻辑批量删除文创品牌
      *
-     * @param ipIds 需要删除的数据主键集合
+     * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    int logicDeleteIpInfoByIpIds(String[] ipIds);
+    int logicDeleteIpInfoByIpIds(String ids);
 
     /**
      * 逻辑批量删除文创品牌

+ 4 - 4
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/ipInfo/service/impl/IpInfoServiceImpl.java

@@ -42,6 +42,7 @@ public class IpInfoServiceImpl implements IIpInfoService {
      */
     @Override
     public List<IpInfo> selectIpInfoList(IpInfo ipInfo) {
+        ipInfo.setDelFlag(EDelFlag.NO.getVal());
         return ipInfoMapper.selectIpInfoList(ipInfo);
     }
 
@@ -80,7 +81,6 @@ public class IpInfoServiceImpl implements IIpInfoService {
     public int updateIpInfo(IpInfo ipInfo) {
         ipInfo.setUpdateUser(ShiroUtils.getLoginName());
         ipInfo.setUpdateTime(DateUtils.getNowDate());
-        ipInfo.setDelFlag(EDelFlag.NO.getVal());
         return ipInfoMapper.updateIpInfo(ipInfo);
     }
 
@@ -120,12 +120,12 @@ public class IpInfoServiceImpl implements IIpInfoService {
     /**
      * 逻辑批量删除文创品牌
      *
-     * @param ipIds 需要删除的数据主键集合
+     * @param ids 需要删除的数据主键集合
      * @return 结果
      */
     @Override
-    public int logicDeleteIpInfoByIpIds(String[] ipIds) {
-        return ipInfoMapper.logicDeleteIpInfoByIpIds(ipIds);
+    public int logicDeleteIpInfoByIpIds(String ids) {
+        return ipInfoMapper.logicDeleteIpInfoByIpIds(Convert.toStrArray(ids));
     }
 
     /**

+ 1 - 1
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/IProdService.java

@@ -81,7 +81,7 @@ public interface IProdService {
      * @param ids 需要删除的数据主键集合
      * @return 结果
      */
-    int logicDeleteProdByIds(String[] ids);
+    int logicDeleteProdByIds(String ids);
 
     /**
      * 逻辑批量删除商品

+ 8 - 2
08.src/Xingxi/xingxi-system/src/main/java/com/xingxi/master/product/service/impl/ProdServiceImpl.java

@@ -1,7 +1,9 @@
 package com.xingxi.master.product.service.impl;
 
 import com.xingxi.common.core.text.Convert;
+import com.xingxi.common.enums.EDelFlag;
 import com.xingxi.common.utils.DateUtils;
+import com.xingxi.common.utils.ShiroUtils;
 import com.xingxi.master.product.domain.Prod;
 import com.xingxi.master.product.mapper.ProdMapper;
 import com.xingxi.master.product.service.IProdService;
@@ -40,6 +42,7 @@ public class ProdServiceImpl implements IProdService {
      */
     @Override
     public List<Prod> selectProdList(Prod prod) {
+        prod.setDelFlag(EDelFlag.NO.getVal());
         return prodMapper.selectProdList(prod);
     }
 
@@ -51,6 +54,8 @@ public class ProdServiceImpl implements IProdService {
      */
     @Override
     public int insertProd(Prod prod) {
+        prod.setDelFlag(EDelFlag.NO.getVal());
+        prod.setCreateUser(ShiroUtils.getLoginName());
         prod.setCreateTime(DateUtils.getNowDate());
         return prodMapper.insertProd(prod);
     }
@@ -74,6 +79,7 @@ public class ProdServiceImpl implements IProdService {
      */
     @Override
     public int updateProd(Prod prod) {
+        prod.setUpdateUser(ShiroUtils.getLoginName());
         prod.setUpdateTime(DateUtils.getNowDate());
         return prodMapper.updateProd(prod);
     }
@@ -118,8 +124,8 @@ public class ProdServiceImpl implements IProdService {
      * @return 结果
      */
     @Override
-    public int logicDeleteProdByIds(String[] ids) {
-        return prodMapper.logicDeleteProdByIds(ids);
+    public int logicDeleteProdByIds(String ids) {
+        return prodMapper.logicDeleteProdByIds(Convert.toStrArray(ids));
     }
 
     /**