Browse Source

专题管理-商品管理

wwl 4 years ago
parent
commit
0de947a39c

+ 48 - 0
zzjs-admin/src/main/java/com/miaxis/pc/controller/goods/GoodsInfoController.java

@@ -0,0 +1,48 @@
+package com.miaxis.pc.controller.goods;
+
+import com.miaxis.common.annotation.Log;
+import com.miaxis.common.core.controller.BaseController;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.common.enums.BusinessTypeEnum;
+import com.miaxis.goods.service.IGoodsInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 【商品管理】Controller
+ *
+ * @author miaxis
+ * @date 2021-03-11
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/goods/info")
+@Api(tags={"【pc-商品管理】"})
+public class GoodsInfoController extends BaseController{
+
+    private final IGoodsInfoService goodsInfoService;
+
+
+    /**
+     * 删除商品
+     */
+    @PreAuthorize("@ss.hasPermi('goods:info:remove')")
+    @Log(title = "商品", businessType = BusinessTypeEnum.UPDATE)
+	@PutMapping("/{ids}")
+    @ApiOperation("删除商品")
+    public  Response<Integer> remove(
+            @ApiParam(name = "ids", value = "商品ids参数", required = true)
+            @PathVariable Long[] ids
+    ){
+        return goodsInfoService.removeGoodsByIds(ids);
+    }
+
+
+}

+ 20 - 4
zzjs-admin/src/main/java/com/miaxis/pc/controller/topic/TopicInfoController.java

@@ -8,6 +8,7 @@ import com.miaxis.common.enums.BusinessTypeEnum;
 import com.miaxis.topic.domain.TopicInfo;
 import com.miaxis.topic.domain.TopicInfo;
 import com.miaxis.topic.dto.TopicInfoDto;
 import com.miaxis.topic.dto.TopicInfoDto;
 import com.miaxis.topic.service.ITopicInfoService;
 import com.miaxis.topic.service.ITopicInfoService;
+import com.miaxis.topic.vo.TopicInfoVo;
 import io.swagger.annotations.*;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -39,9 +40,9 @@ public class TopicInfoController extends BaseController{
             @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
             @ApiImplicitParam(name = "pageNum",value = "当前页码" ,dataType = "int", paramType = "query", required = false),
             @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
             @ApiImplicitParam(name = "pageSize",value = "每页数据量" , dataType = "int", paramType = "query", required = false),
     })
     })
-    public ResponsePageInfo<TopicInfo> list(@ModelAttribute TopicInfo topicInfo){
+    public ResponsePageInfo<TopicInfoVo> list(@ModelAttribute TopicInfoVo topicInfoVo){
         startPage();
         startPage();
-        List<TopicInfo> list = topicInfoService.selectTopicInfoList(topicInfo);
+        List<TopicInfoVo> list = topicInfoService.selectTopicInfoList(topicInfoVo);
         return toResponsePageInfo(list);
         return toResponsePageInfo(list);
     }
     }
 
 
@@ -52,11 +53,11 @@ public class TopicInfoController extends BaseController{
     @PreAuthorize("@ss.hasPermi('topic:info:query')")
     @PreAuthorize("@ss.hasPermi('topic:info:query')")
     @GetMapping(value = "/{id}")
     @GetMapping(value = "/{id}")
     @ApiOperation("获取专题详细信息")
     @ApiOperation("获取专题详细信息")
-    public Response<TopicInfo> getInfo(
+    public Response<TopicInfoVo> getInfo(
             @ApiParam(name = "id", value = "专题参数", required = true)
             @ApiParam(name = "id", value = "专题参数", required = true)
             @PathVariable("id") Long id
             @PathVariable("id") Long id
     ){
     ){
-        return Response.success(topicInfoService.getById(id));
+        return topicInfoService.getTopicById(id);
     }
     }
 
 
     /**
     /**
@@ -81,6 +82,21 @@ public class TopicInfoController extends BaseController{
         return toResponse(topicInfoService.updateById(topicInfo) ? 1 : 0);
         return toResponse(topicInfoService.updateById(topicInfo) ? 1 : 0);
     }
     }
 
 
+    /**
+     * 更新 0:上架 / 1:下架
+     */
+    @PreAuthorize("@ss.hasPermi('topic:info:updateShelfStatus')")
+    @Log(title = "客户信息", businessType = BusinessTypeEnum.UPDATE)
+    @PutMapping("/updateShelfStatus")
+    @ApiOperation("上架、下架")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "ids", value = "客户信息ids参数", dataType = "List", required = true),
+            @ApiImplicitParam(name = "shelfStatus", value = "上架状态  0:上架、1:下架", dataType = "int", required = true),
+    })
+    public Response updateShelfStatus(Long[] ids,Integer shelfStatus) {
+        return topicInfoService.updateShelfStatus(ids,shelfStatus);
+    }
+
     /**
     /**
      * 删除专题
      * 删除专题
      */
      */

+ 9 - 15
zzjs-service/src/main/java/com/miaxis/goods/domain/GoodsInfo.java

@@ -1,18 +1,14 @@
 package com.miaxis.goods.domain;
 package com.miaxis.goods.domain;
 
 
-import java.math.BigDecimal;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.miaxis.common.annotation.Excel;
-import com.miaxis.common.core.domain.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.miaxis.common.core.domain.BaseBusinessEntity;
 import com.miaxis.common.core.domain.BaseBusinessEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
+
+import java.math.BigDecimal;
 /**
 /**
  * 商品对象 goods_info
  * 商品对象 goods_info
  *
  *
@@ -31,37 +27,35 @@ public class GoodsInfo extends BaseBusinessEntity{
     private Long id;
     private Long id;
 
 
     /** 商品名称 */
     /** 商品名称 */
-    @Excel(name = "商品名称")
     @TableField("goods_name")
     @TableField("goods_name")
     @ApiModelProperty(value = "商品名称")
     @ApiModelProperty(value = "商品名称")
     private String goodsName;
     private String goodsName;
 
 
     /** 商品价格 */
     /** 商品价格 */
-    @Excel(name = "商品价格")
     @TableField("goods_price")
     @TableField("goods_price")
     @ApiModelProperty(value = "商品价格")
     @ApiModelProperty(value = "商品价格")
     private BigDecimal goodsPrice;
     private BigDecimal goodsPrice;
 
 
     /** 商品链接 */
     /** 商品链接 */
-    @Excel(name = "商品链接")
     @TableField("goods_link")
     @TableField("goods_link")
     @ApiModelProperty(value = "商品链接")
     @ApiModelProperty(value = "商品链接")
     private String goodsLink;
     private String goodsLink;
 
 
     /** 商品描述 */
     /** 商品描述 */
-    @Excel(name = "商品描述")
     @TableField("goods_describe")
     @TableField("goods_describe")
     @ApiModelProperty(value = "商品描述")
     @ApiModelProperty(value = "商品描述")
     private String goodsDescribe;
     private String goodsDescribe;
 
 
     /** 商品图片---对应file_info的id */
     /** 商品图片---对应file_info的id */
-    @Excel(name = "商品图片---对应file_info的id")
     @TableField("goods_picture")
     @TableField("goods_picture")
     @ApiModelProperty(value = "商品图片---对应file_info的id")
     @ApiModelProperty(value = "商品图片---对应file_info的id")
     private Long goodsPicture;
     private Long goodsPicture;
 
 
+    @TableField("topic_id")
+    @ApiModelProperty(value = "专题id")
+    private Integer topicId;
+
     /** 状态  0:有效(默认)、1:失效 (伪删除) */
     /** 状态  0:有效(默认)、1:失效 (伪删除) */
-    @Excel(name = "状态  0:有效(默认)、1:失效 (伪删除)", readConverterExp = "伪=删除")
     @TableField("status")
     @TableField("status")
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     private Integer status;
     private Integer status;

+ 1 - 0
zzjs-service/src/main/java/com/miaxis/goods/mapper/GoodsInfoMapper.java

@@ -11,6 +11,7 @@ import com.miaxis.goods.domain.GoodsInfo;
  * @date 2021-03-11
  * @date 2021-03-11
  */
  */
 public interface GoodsInfoMapper extends BaseMapper<GoodsInfo> {
 public interface GoodsInfoMapper extends BaseMapper<GoodsInfo> {
+
     /**
     /**
      * 查询商品列表
      * 查询商品列表
      *
      *

+ 7 - 7
zzjs-service/src/main/java/com/miaxis/goods/service/IGoodsInfoService.java

@@ -1,8 +1,8 @@
 package com.miaxis.goods.service;
 package com.miaxis.goods.service;
 
 
-import java.util.List;
-import com.miaxis.goods.domain.GoodsInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.miaxis.common.core.domain.Response;
+import com.miaxis.goods.domain.GoodsInfo;
 
 
 /**
 /**
  * 商品Service接口
  * 商品Service接口
@@ -11,11 +11,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @date 2021-03-11
  * @date 2021-03-11
  */
  */
 public interface IGoodsInfoService extends IService<GoodsInfo>{
 public interface IGoodsInfoService extends IService<GoodsInfo>{
+
     /**
     /**
-     * 查询商品列表
-     *
-     * @param goodsInfo 商品
-     * @return 商品集合
+     * 删除商品
+     * @param ids
+     * @return
      */
      */
-    List<GoodsInfo> selectGoodsInfoList(GoodsInfo goodsInfo);
+    Response<Integer> removeGoodsByIds(Long[] ids);
 }
 }

+ 15 - 8
zzjs-service/src/main/java/com/miaxis/goods/service/impl/GoodsInfoServiceImpl.java

@@ -1,13 +1,15 @@
 package com.miaxis.goods.service.impl;
 package com.miaxis.goods.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.miaxis.common.core.domain.Response;
 import com.miaxis.goods.domain.GoodsInfo;
 import com.miaxis.goods.domain.GoodsInfo;
 import com.miaxis.goods.mapper.GoodsInfoMapper;
 import com.miaxis.goods.mapper.GoodsInfoMapper;
 import com.miaxis.goods.service.IGoodsInfoService;
 import com.miaxis.goods.service.IGoodsInfoService;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
-
-import java.util.List;
+import org.springframework.transaction.annotation.Transactional;
 
 
 /**
 /**
  * 商品Service业务层处理
  * 商品Service业务层处理
@@ -22,13 +24,18 @@ public class GoodsInfoServiceImpl extends ServiceImpl<GoodsInfoMapper, GoodsInfo
     private final GoodsInfoMapper goodsInfoMapper;
     private final GoodsInfoMapper goodsInfoMapper;
 
 
     /**
     /**
-     * 查询商品列表
-     *
-     * @param goodsInfo 商品
-     * @return 商品
+     * 删除商品
+     * @param ids
+     * @return
      */
      */
     @Override
     @Override
-    public List<GoodsInfo> selectGoodsInfoList(GoodsInfo goodsInfo){
-        return goodsInfoMapper.selectGoodsInfoList(goodsInfo);
+    @SneakyThrows
+    @Transactional(rollbackFor = Exception.class)
+    public Response<Integer> removeGoodsByIds(Long[] ids) {
+        for (Long id : ids) {
+            this.update(new UpdateWrapper<GoodsInfo>().set("status",1).eq("id",id));
+        }
+        return Response.success();
     }
     }
+
 }
 }

+ 5 - 5
zzjs-service/src/main/java/com/miaxis/topic/domain/TopicInfo.java

@@ -34,11 +34,6 @@ public class TopicInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "专题插图--对应file_info的id")
     @ApiModelProperty(value = "专题插图--对应file_info的id")
     private Long topicIllustration;
     private Long topicIllustration;
 
 
-    /** 商品id---对应goods_info商品表 */
-    @TableField("goods_id")
-    @ApiModelProperty(value = "商品id---对应goods_info商品表")
-    private String goodsId;
-
     /** 是否允许分享   0:是 、1:否 */
     /** 是否允许分享   0:是 、1:否 */
     @TableField("sharing_status")
     @TableField("sharing_status")
     @ApiModelProperty(value = "是否允许分享   0:是 、1:否")
     @ApiModelProperty(value = "是否允许分享   0:是 、1:否")
@@ -69,6 +64,11 @@ public class TopicInfo extends BaseBusinessEntity{
     @ApiModelProperty(value = "专题内容")
     @ApiModelProperty(value = "专题内容")
     private String topicContent;
     private String topicContent;
 
 
+    /** 上架状态  0:已上架、1:未上架 */
+    @TableField("shelf_status")
+    @ApiModelProperty(value = "上架状态  0:已上架、1:未上架")
+    private Integer shelfStatus;
+
     /** 状态  0:有效(默认)、1:失效 (伪删除) */
     /** 状态  0:有效(默认)、1:失效 (伪删除) */
     @TableField("status")
     @TableField("status")
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")

+ 3 - 3
zzjs-service/src/main/java/com/miaxis/topic/dto/TopicInfoDto.java

@@ -34,9 +34,6 @@ public class TopicInfoDto extends BaseBusinessEntity{
     @ApiModelProperty(value = "专题插图--对应file_info的id")
     @ApiModelProperty(value = "专题插图--对应file_info的id")
     private Long topicIllustration;
     private Long topicIllustration;
 
 
-    @ApiModelProperty(value = "商品id---对应goods_info商品表")
-    private String goodsId;
-
     @ApiModelProperty(value = "是否允许分享   0:是 、1:否")
     @ApiModelProperty(value = "是否允许分享   0:是 、1:否")
     private Integer sharingStatus;
     private Integer sharingStatus;
 
 
@@ -58,6 +55,9 @@ public class TopicInfoDto extends BaseBusinessEntity{
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     private Integer status;
     private Integer status;
 
 
+    @ApiModelProperty(value = "上架状态  0:已上架、1:未上架")
+    private Integer shelfStatus;
+
     @ApiModelProperty(value = "商品集合")
     @ApiModelProperty(value = "商品集合")
     private List<GoodsInfo> goodsInfoList;
     private List<GoodsInfo> goodsInfoList;
 
 

+ 2 - 1
zzjs-service/src/main/java/com/miaxis/topic/mapper/TopicInfoMapper.java

@@ -3,6 +3,7 @@ package com.miaxis.topic.mapper;
 import java.util.List;
 import java.util.List;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.miaxis.topic.domain.TopicInfo;
 import com.miaxis.topic.domain.TopicInfo;
+import com.miaxis.topic.vo.TopicInfoVo;
 
 
 /**
 /**
  * 专题Mapper接口
  * 专题Mapper接口
@@ -17,6 +18,6 @@ public interface TopicInfoMapper extends BaseMapper<TopicInfo> {
      * @param topicInfo 专题
      * @param topicInfo 专题
      * @return 专题集合
      * @return 专题集合
      */
      */
-    List<TopicInfo> selectTopicInfoList(TopicInfo topicInfo);
+    List<TopicInfo> selectTopicInfoList(TopicInfoVo topicInfo);
 
 
 }
 }

+ 18 - 2
zzjs-service/src/main/java/com/miaxis/topic/service/ITopicInfoService.java

@@ -6,6 +6,7 @@ import com.miaxis.common.core.domain.Response;
 import com.miaxis.topic.domain.TopicInfo;
 import com.miaxis.topic.domain.TopicInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.miaxis.topic.dto.TopicInfoDto;
 import com.miaxis.topic.dto.TopicInfoDto;
+import com.miaxis.topic.vo.TopicInfoVo;
 
 
 /**
 /**
  * 专题Service接口
  * 专题Service接口
@@ -18,10 +19,10 @@ public interface ITopicInfoService extends IService<TopicInfo>{
     /**
     /**
      * 查询专题列表
      * 查询专题列表
      *
      *
-     * @param topicInfo 专题
+     * @param topicInfoVo 专题
      * @return 专题集合
      * @return 专题集合
      */
      */
-    List<TopicInfo> selectTopicInfoList(TopicInfo topicInfo);
+    List<TopicInfoVo> selectTopicInfoList(TopicInfoVo topicInfoVo);
 
 
     /**
     /**
      * 新增专题
      * 新增专题
@@ -36,4 +37,19 @@ public interface ITopicInfoService extends IService<TopicInfo>{
      * @return
      * @return
      */
      */
     Response<Integer> removeTopicByIds(Long[] ids);
     Response<Integer> removeTopicByIds(Long[] ids);
+
+    /**
+     * 查询专题详情
+     * @param id
+     * @return
+     */
+    Response<TopicInfoVo> getTopicById(Long id);
+
+    /**
+     * 更新 0:上架 / 1:下架
+     * @param ids
+     * @param shelfStatus
+     * @return
+     */
+    Response updateShelfStatus(Long[] ids, Integer shelfStatus);
 }
 }

+ 61 - 24
zzjs-service/src/main/java/com/miaxis/topic/service/impl/TopicInfoServiceImpl.java

@@ -1,23 +1,27 @@
 package com.miaxis.topic.service.impl;
 package com.miaxis.topic.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.utils.bean.BeanUtils;
 import com.miaxis.common.utils.bean.BeanUtils;
+import com.miaxis.customer.domain.CustomerInfo;
 import com.miaxis.goods.domain.GoodsInfo;
 import com.miaxis.goods.domain.GoodsInfo;
 import com.miaxis.goods.service.IGoodsInfoService;
 import com.miaxis.goods.service.IGoodsInfoService;
 import com.miaxis.topic.domain.TopicInfo;
 import com.miaxis.topic.domain.TopicInfo;
 import com.miaxis.topic.dto.TopicInfoDto;
 import com.miaxis.topic.dto.TopicInfoDto;
 import com.miaxis.topic.mapper.TopicInfoMapper;
 import com.miaxis.topic.mapper.TopicInfoMapper;
 import com.miaxis.topic.service.ITopicInfoService;
 import com.miaxis.topic.service.ITopicInfoService;
+import com.miaxis.topic.vo.TopicInfoVo;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.List;
-import java.util.stream.Collectors;
 
 
 /**
 /**
  * 专题Service业务层处理
  * 专题Service业务层处理
@@ -36,12 +40,26 @@ public class TopicInfoServiceImpl extends ServiceImpl<TopicInfoMapper, TopicInfo
     /**
     /**
      * 查询专题列表
      * 查询专题列表
      *
      *
-     * @param topicInfo 专题
+     * @param topicInfoVo 专题
      * @return 专题
      * @return 专题
      */
      */
     @Override
     @Override
-    public List<TopicInfo> selectTopicInfoList(TopicInfo topicInfo){
-        return topicInfoMapper.selectTopicInfoList(topicInfo);
+    public List<TopicInfoVo> selectTopicInfoList(TopicInfoVo topicInfoVo){
+
+        ArrayList<TopicInfoVo> topicInfoVos = new ArrayList<>();
+        //专题列表
+        List<TopicInfo> topicInfos = topicInfoMapper.selectTopicInfoList(topicInfoVo);
+
+        for (TopicInfo topic : topicInfos) {
+            TopicInfoVo topicInfoVo1 = new TopicInfoVo();
+            BeanUtils.copyProperties(topic,topicInfoVo1);
+            topicInfoVo1.setGoodsInfoList(goodsInfoService.listByMap(new HashMap<String, Object>(){{
+                put("status",0);
+                put("topic_id",topic.getId());
+            }}));
+            topicInfoVos.add(topicInfoVo1);
+        }
+        return topicInfoVos;
     }
     }
 
 
     /**
     /**
@@ -54,22 +72,16 @@ public class TopicInfoServiceImpl extends ServiceImpl<TopicInfoMapper, TopicInfo
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
     public Response<Integer> addTopic(TopicInfoDto topicInfoDto) {
     public Response<Integer> addTopic(TopicInfoDto topicInfoDto) {
 
 
-        //保存商品信息
-        List<GoodsInfo> goodsInfoList = topicInfoDto.getGoodsInfoList();
-        goodsInfoService.saveBatch(goodsInfoList);
-
         //保存专题信息
         //保存专题信息
         TopicInfo topicInfo = new TopicInfo();
         TopicInfo topicInfo = new TopicInfo();
         BeanUtils.copyProperties(topicInfoDto,topicInfo);
         BeanUtils.copyProperties(topicInfoDto,topicInfo);
-        String s1 = goodsInfoList.stream()
-                .map(g -> g.getId() + ",")
-                .collect(Collectors.toList())
-                .toString()
-                .replace("[","")
-                .replace("]","");
-        topicInfo.setGoodsId(s1);
         this.save(topicInfo);
         this.save(topicInfo);
 
 
+        //保存商品信息
+        List<GoodsInfo> goodsInfoList = topicInfoDto.getGoodsInfoList();
+        goodsInfoList.forEach(g -> g.setTopicId(Integer.valueOf(topicInfo.getId().toString())));
+        goodsInfoService.saveBatch(goodsInfoList);
+
         return Response.success();
         return Response.success();
     }
     }
 
 
@@ -84,19 +96,44 @@ public class TopicInfoServiceImpl extends ServiceImpl<TopicInfoMapper, TopicInfo
     public Response<Integer> removeTopicByIds(Long[] ids) {
     public Response<Integer> removeTopicByIds(Long[] ids) {
 
 
         for (Long id : ids) {
         for (Long id : ids) {
-            //首先删除专题对应商品
-            String goodsIds = this.getById(id).getGoodsId();
-            if (goodsIds.indexOf(",") != -1){
-                for (String goodsId : Arrays.asList(goodsIds.split(","))) {
-                    goodsInfoService.update(new UpdateWrapper<GoodsInfo>().set("status",1).eq("id",goodsId));
-                }
-            }else {
-                goodsInfoService.update(new UpdateWrapper<GoodsInfo>().set("status",1).eq("id",goodsIds));
-            }
             //删除专题
             //删除专题
             this.update(new UpdateWrapper<TopicInfo>().set("status",1).eq("id",id));
             this.update(new UpdateWrapper<TopicInfo>().set("status",1).eq("id",id));
+            //删除商品
+            goodsInfoService.update(new UpdateWrapper<GoodsInfo>().set("status",1).eq("topic_id",id));
         }
         }
         return Response.success();
         return Response.success();
     }
     }
 
 
+    /**
+     * 查询专题详情
+     * @param id
+     * @return
+     */
+    @Override
+    @SneakyThrows
+    public Response getTopicById(Long id) {
+        TopicInfoVo topicInfoVo = new TopicInfoVo();
+        TopicInfo topicInfo = this.getById(id);
+        BeanUtils.copyProperties(topicInfo,topicInfoVo);
+        topicInfoVo.setGoodsInfoList(goodsInfoService.list(new QueryWrapper<GoodsInfo>().eq("status",0).eq("topic_id",topicInfo.getId())));
+        return Response.success(topicInfoVo);
+    }
+
+    /**
+     * 更新 0:上架 / 1:下架
+     * @param ids
+     * @param shelfStatus
+     * @return
+     */
+    @Override
+    @SneakyThrows
+    @Transactional(rollbackFor = Exception.class)
+    public Response updateShelfStatus(Long[] ids, Integer shelfStatus) {
+        for (Long id : ids) {
+            this.update(new UpdateWrapper<TopicInfo>().set("shelf_status",shelfStatus).eq("id",id));
+        }
+        return Response.success();
+    }
+
+
 }
 }

+ 62 - 0
zzjs-service/src/main/java/com/miaxis/topic/vo/TopicInfoVo.java

@@ -0,0 +1,62 @@
+package com.miaxis.topic.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.miaxis.common.core.domain.BaseBusinessEntity;
+import com.miaxis.goods.domain.GoodsInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 专题对象返回参
+ *
+ * @author miaxis
+ * @date 2021-03-11
+ */
+@Data
+@ApiModel(value = "TopicInfoVo", description = "专题对象返回参")
+public class TopicInfoVo extends BaseBusinessEntity{
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @TableId(value = "id")
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "专题名称")
+    private String topicName;
+
+    @ApiModelProperty(value = "专题插图--对应file_info的id")
+    private Long topicIllustration;
+
+    @ApiModelProperty(value = "是否允许分享   0:是 、1:否")
+    private Integer sharingStatus;
+
+    @ApiModelProperty(value = "是否显示分享数量    0:是 、1:否")
+    private Integer sharingNumberStatus;
+
+    @ApiModelProperty(value = "是否允许评论   0:是 、1:否")
+    private Integer commentStatus;
+
+    @ApiModelProperty(value = "是否显示评论数量    0:是 、1:否")
+    private Integer commentNumberStatus;
+
+    @ApiModelProperty(value = "是否显示收藏数量   0:是 、1:否")
+    private Integer collectionNumberStatus;
+
+    @ApiModelProperty(value = "专题内容")
+    private String topicContent;
+
+    @ApiModelProperty(value = "上架状态  0:已上架、1:未上架")
+    private Integer shelfStatus;
+
+    @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
+    private Integer status;
+
+    @ApiModelProperty(value = "商品集合")
+    private List<GoodsInfo> goodsInfoList;
+
+}

+ 3 - 1
zzjs-service/src/main/resources/mapper/goods/GoodsInfoMapper.xml

@@ -13,11 +13,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="goodsPicture"    column="goods_picture"    />
         <result property="goodsPicture"    column="goods_picture"    />
         <result property="createTime"    column="create_time"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateTime"    column="update_time"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="topicId"    column="topic_id"    />
         <result property="status"    column="status"    />
         <result property="status"    column="status"    />
     </resultMap>
     </resultMap>
 
 
     <sql id="selectGoodsInfoVo">
     <sql id="selectGoodsInfoVo">
-        select id, goods_name, goods_price, goods_link, goods_describe, goods_picture, create_time, update_time, status from goods_info
+        select id, goods_name, goods_price, goods_link, goods_describe, goods_picture, create_time, update_time,topic_id ,status from goods_info
     </sql>
     </sql>
 
 
     <select id="selectGoodsInfoList" parameterType="GoodsInfo" resultMap="GoodsInfoResult">
     <select id="selectGoodsInfoList" parameterType="GoodsInfo" resultMap="GoodsInfoResult">
@@ -28,6 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="goodsLink != null  and goodsLink != ''"> and goods_link = #{goodsLink}</if>
             <if test="goodsLink != null  and goodsLink != ''"> and goods_link = #{goodsLink}</if>
             <if test="goodsDescribe != null  and goodsDescribe != ''"> and goods_describe = #{goodsDescribe}</if>
             <if test="goodsDescribe != null  and goodsDescribe != ''"> and goods_describe = #{goodsDescribe}</if>
             <if test="goodsPicture != null "> and goods_picture = #{goodsPicture}</if>
             <if test="goodsPicture != null "> and goods_picture = #{goodsPicture}</if>
+            <if test="topicId != null "> and topic_id = #{topicId}</if>
             <if test="status != null "> and status = #{status}</if>
             <if test="status != null "> and status = #{status}</if>
         </where>
         </where>
     </select>
     </select>

+ 4 - 4
zzjs-service/src/main/resources/mapper/topic/TopicInfoMapper.xml

@@ -8,7 +8,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="id"    column="id"    />
         <result property="id"    column="id"    />
         <result property="topicName"    column="topic_name"    />
         <result property="topicName"    column="topic_name"    />
         <result property="topicIllustration"    column="topic_illustration"    />
         <result property="topicIllustration"    column="topic_illustration"    />
-        <result property="goodsId"    column="goods_id"    />
         <result property="sharingStatus"    column="sharing_status"    />
         <result property="sharingStatus"    column="sharing_status"    />
         <result property="sharingNumberStatus"    column="sharing_number_status"    />
         <result property="sharingNumberStatus"    column="sharing_number_status"    />
         <result property="commentStatus"    column="comment_status"    />
         <result property="commentStatus"    column="comment_status"    />
@@ -17,25 +16,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="topicContent"    column="topic_content"    />
         <result property="topicContent"    column="topic_content"    />
         <result property="createTime"    column="create_time"    />
         <result property="createTime"    column="create_time"    />
         <result property="updateTime"    column="update_time"    />
         <result property="updateTime"    column="update_time"    />
+        <result property="shelfStatus"    column="shelf_status"    />
         <result property="status"    column="status"    />
         <result property="status"    column="status"    />
     </resultMap>
     </resultMap>
 
 
     <sql id="selectTopicInfoVo">
     <sql id="selectTopicInfoVo">
-        select id, topic_name, topic_illustration, goods_id, sharing_status, sharing_number_status, comment_status, comment_number_status, collection_number_status, topic_content, create_time, update_time, status from topic_info
+        select id, topic_name, topic_illustration, sharing_status, sharing_number_status, comment_status, comment_number_status, collection_number_status, topic_content, create_time, update_time, shelf_status,status from topic_info
     </sql>
     </sql>
 
 
-    <select id="selectTopicInfoList" parameterType="TopicInfo" resultMap="TopicInfoResult">
+    <select id="selectTopicInfoList" resultMap="TopicInfoResult">
         <include refid="selectTopicInfoVo"/>
         <include refid="selectTopicInfoVo"/>
         <where>
         <where>
             <if test="topicName != null  and topicName != ''"> and topic_name like concat('%', #{topicName}, '%')</if>
             <if test="topicName != null  and topicName != ''"> and topic_name like concat('%', #{topicName}, '%')</if>
             <if test="topicIllustration != null "> and topic_illustration = #{topicIllustration}</if>
             <if test="topicIllustration != null "> and topic_illustration = #{topicIllustration}</if>
-            <if test="goodsId != null  and goodsId != ''"> and goods_id = #{goodsId}</if>
             <if test="sharingStatus != null "> and sharing_status = #{sharingStatus}</if>
             <if test="sharingStatus != null "> and sharing_status = #{sharingStatus}</if>
             <if test="sharingNumberStatus != null "> and sharing_number_status = #{sharingNumberStatus}</if>
             <if test="sharingNumberStatus != null "> and sharing_number_status = #{sharingNumberStatus}</if>
             <if test="commentStatus != null "> and comment_status = #{commentStatus}</if>
             <if test="commentStatus != null "> and comment_status = #{commentStatus}</if>
             <if test="commentNumberStatus != null "> and comment_number_status = #{commentNumberStatus}</if>
             <if test="commentNumberStatus != null "> and comment_number_status = #{commentNumberStatus}</if>
             <if test="collectionNumberStatus != null "> and collection_number_status = #{collectionNumberStatus}</if>
             <if test="collectionNumberStatus != null "> and collection_number_status = #{collectionNumberStatus}</if>
             <if test="topicContent != null  and topicContent != ''"> and topic_content = #{topicContent}</if>
             <if test="topicContent != null  and topicContent != ''"> and topic_content = #{topicContent}</if>
+            <if test="shelfStatus != null "> and shelf_status = #{shelfStatus}</if>
             <if test="status != null "> and status = #{status}</if>
             <if test="status != null "> and status = #{status}</if>
         </where>
         </where>
     </select>
     </select>