浏览代码

供应商百科part1

Aslee 3 年之前
父节点
当前提交
a000858009

+ 41 - 4
src/main/java/com/caimei365/user/controller/ShopApi.java

@@ -1,13 +1,11 @@
 package com.caimei365.user.controller;
 
 import com.caimei365.user.model.ResponseJson;
+import com.caimei365.user.model.dto.BaikeProductDto;
 import com.caimei365.user.model.dto.ShopArticleDto;
 import com.caimei365.user.model.dto.ShopBannerDto;
 import com.caimei365.user.model.dto.ShopUpdateDto;
-import com.caimei365.user.model.vo.ArticleTypeVo;
-import com.caimei365.user.model.vo.ShopArticleVo;
-import com.caimei365.user.model.vo.ShopBannerVo;
-import com.caimei365.user.model.vo.ShopHomeVo;
+import com.caimei365.user.model.vo.*;
 import com.caimei365.user.service.ShopService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
@@ -210,5 +208,44 @@ public class ShopApi {
         return shopService.deleteArticle(articleId);
     }
 
+    @ApiOperation("供应商百科商品表单")
+    @ApiImplicitParam(required = true, name = "productId",value = "百科商品id")
+    @GetMapping("/baike/product/form")
+    public ResponseJson<BaikeProductFormVo> baikeProductForm(Integer productId) {
+        return shopService.getBaikeProductById(productId);
+    }
+
+    @ApiOperation("供应商百科商品保存")
+    @PostMapping("/baike/product/save")
+    public ResponseJson<Void> saveBaikeProduct(BaikeProductDto baikeProductDto) {
+        return shopService.saveBaikeProduct(baikeProductDto);
+    }
+
+    @ApiOperation("供应商百科商品列表")
+    @GetMapping("/baike/product/list")
+    public ResponseJson<PageInfo<BaikeProductListVo>> getBaikeProductList(BaikeProductDto baikeProductDto,
+                                                                      @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                                                      @RequestParam(value = "pageSize", defaultValue = "20") int pageSize) {
+        return shopService.getBaikeProductList(baikeProductDto, pageNum, pageSize);
+    }
+
+    @ApiOperation("更新供应商百科商品状态")
+    @PostMapping("/baike/product/status/update")
+    public ResponseJson<Void> updateBaikeProductStatus(BaikeProductDto baikeProductDto) {
+        return shopService.updateBaikeProductStatus(baikeProductDto);
+    }
+
+    @ApiOperation("百科商品分类列表")
+    @GetMapping("/baike/product/type/list")
+    public ResponseJson<List<BaikeProductTypeVo>> getBaikeProductTypeList(Integer commodityType){
+        return shopService.getBaikeProductTypeList(commodityType);
+    }
+
+    @ApiOperation("删除百科商品")
+    @PostMapping("/baike/product/delete")
+    public ResponseJson<Void> deleteBaikeProduct(Integer productId){
+        return shopService.deleteBaikeProduct(productId);
+    }
+
 
 }

+ 75 - 0
src/main/java/com/caimei365/user/mapper/BaikeProductMapper.java

@@ -0,0 +1,75 @@
+package com.caimei365.user.mapper;
+
+import com.caimei365.user.model.dto.BaikeProductDto;
+import com.caimei365.user.model.po.BaikeProductParamPo;
+import com.caimei365.user.model.po.BaikeProductPo;
+import com.caimei365.user.model.po.BaikeProductQuestionPo;
+import com.caimei365.user.model.vo.BaikeProductFormVo;
+import com.caimei365.user.model.vo.BaikeProductListVo;
+import com.caimei365.user.model.vo.BaikeProductTypeVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/3/16
+ */
+@Mapper
+public interface BaikeProductMapper {
+    /**
+     * 新增供应商百科商品
+     */
+    void insertBaikeProduct(BaikeProductPo baikeProductPo);
+    /**
+     * 更新供应商百科商品
+     * @param baikeProductPo
+     */
+    void updateBaikeProduct(BaikeProductPo baikeProductPo);
+    /**
+     * 根据百科商品id查询供应商百科商品内容
+     */
+    BaikeProductFormVo getBaikeProductById(Integer productId);
+    /**
+     * 查询百科商品分类列表
+     * @param commodityType
+     */
+    List<BaikeProductTypeVo> getBaikeProductTypeList(Integer commodityType);
+    /**
+     * 查询供应商百科商品列表
+     * @param shopBaikeProductDto
+     */
+    List<BaikeProductListVo> getBaikeProductList(BaikeProductDto shopBaikeProductDto);
+
+    /**
+     * 更新供应商百科商品状态
+     */
+    void updateBaikeProductStatus(@Param("productId") Integer productId, @Param("status") Integer status);
+
+    /**
+     * 删除百科商品
+     * @param productId
+     */
+    void deleteBaikeProduct(Integer productId);
+
+    void deleteParamsByProductId(Integer productId);
+
+    void deleteImagesByProductId(Integer productId);
+
+    void deleteQuestionsByProductId(Integer productId);
+
+    void insertProductParam(@Param("name") String name, @Param("content") String content, @Param("productId") Integer productId);
+
+    void insertProductImage(@Param("authImage") String authImage, @Param("produtId") Integer productId, @Param("imageType") int imageType);
+
+    void insertProductQuestion(@Param("question") String question, @Param("answer") String answer, @Param("productId") Integer productId);
+
+    List<BaikeProductParamPo> getParamList(Integer productId);
+
+    List<String> getImageList(@Param("productId") Integer productId, @Param("imageType") int imageType);
+
+    List<BaikeProductQuestionPo> getQuestionList(Integer productId);
+}

+ 101 - 0
src/main/java/com/caimei365/user/model/dto/BaikeProductDto.java

@@ -0,0 +1,101 @@
+package com.caimei365.user.model.dto;
+
+import com.caimei365.user.model.po.BaikeProductParamPo;
+import com.caimei365.user.model.po.BaikeProductQuestionPo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * Description
+ * @author Aslee
+ * @version 2021-12-10
+ */
+@ApiModel("供应商保存百科商品")
+@Data
+public class BaikeProductDto {
+	@ApiModelProperty("百科商品id")
+	private Integer productId;
+
+	@ApiModelProperty("分类:1产品,2仪器")
+	private Integer commodityType;
+
+	@ApiModelProperty("供应商id")
+	private Integer shopId;
+
+	@ApiModelProperty("名称")
+	private String name;
+
+	@ApiModelProperty("别名")
+	private String alias;
+
+	@ApiModelProperty("描述")
+	private String discription;
+
+	@ApiModelProperty("seo关键词")
+	private String seoKeyword;
+
+	@ApiModelProperty("图片")
+	private String image;
+
+	@ApiModelProperty("认证链接")
+	private String authLink;
+
+	@ApiModelProperty("认证二维码")
+	private String authQrCode;
+
+	@ApiModelProperty("优点")
+	private String advantage;
+
+	@ApiModelProperty("缺点")
+	private String disadvantage;
+
+	@ApiModelProperty("原理")
+	private String principle;
+
+	@ApiModelProperty("品牌")
+	private String brand;
+
+	@ApiModelProperty("产地")
+	private String producePlace;
+
+	@ApiModelProperty("上市时间")
+	private String marketTime;
+
+	@ApiModelProperty("公司/供应商")
+	private String company;
+
+	@ApiModelProperty("NMPA认证时间")
+	private Date nmpaTime;
+
+	@ApiModelProperty("适应人群")
+	private String adaptiveMan;
+
+	@ApiModelProperty("不适应人群")
+	private String unAdaptiveMan;
+
+	@ApiModelProperty("术前术后")
+	private String aroundOperation;
+
+	@ApiModelProperty("分类id")
+	private Integer typeId;
+
+	@ApiModelProperty("状态:0停用,1启用")
+	private Integer status;
+
+	@ApiModelProperty("参数列表")
+	private List<BaikeProductParamPo> paramList;
+
+	@ApiModelProperty("产品认证图片列表")
+	private List<String> authImageList;
+
+	@ApiModelProperty("效果展示图片列表")
+	private List<String> displayImageList;
+
+	@ApiModelProperty("问题列表")
+	private List<BaikeProductQuestionPo> questionList;
+}

+ 29 - 0
src/main/java/com/caimei365/user/model/po/BaikeProductParamPo.java

@@ -0,0 +1,29 @@
+package com.caimei365.user.model.po;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 采美百科商品参数
+ * @author Aslee
+ * @version 2021-12-13
+ */
+@Data
+public class BaikeProductParamPo implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 采美百科商品Id
+	 */
+	private Integer productId;
+	/**
+	 *参数名称
+	 */
+	private String name;
+	/**
+	 *参数信息
+	 */
+	private String content;
+}

+ 154 - 0
src/main/java/com/caimei365/user/model/po/BaikeProductPo.java

@@ -0,0 +1,154 @@
+package com.caimei365.user.model.po;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ * Description
+ * @author Aslee
+ * @version 2021-12-10
+ */
+@ApiModel("供应商保存百科商品")
+@Data
+public class BaikeProductPo {
+	/**
+	 * 百科商品id
+	 */
+	private Integer productId;
+
+	/**
+	 * 分类:1产品,2仪器
+	 */
+	private Integer commodityType;
+
+	/**
+	 * 供应商id
+	 */
+	private Integer shopId;
+
+	/**
+	 * 名称
+	 */
+	private String name;
+
+	/**
+	 * 别名
+	 */
+	private String alias;
+
+	/**
+	 * 描述
+	 */
+	private String discription;
+
+	/**
+	 * seo关键词
+	 */
+	private String seoKeyword;
+
+	/**
+	 * 图片
+	 */
+	private String image;
+
+	/**
+	 * 认证链接
+	 */
+	private String authLink;
+
+	/**
+	 * 认证二维码
+	 */
+	private String authQrCode;
+
+	/**
+	 * 优点
+	 */
+	private String advantage;
+
+	/**
+	 * 缺点
+	 */
+	private String disadvantage;
+
+	/**
+	 * 原理
+	 */
+	private String principle;
+
+	/**
+	 * 品牌
+	 */
+	private String brand;
+
+	/**
+	 * 产地
+	 */
+	private String producePlace;
+
+	/**
+	 * 上市时间
+	 */
+	private String marketTime;
+
+	/**
+	 * 公司/供应商
+	 */
+	private String company;
+
+	/**
+	 * NMPA认证时间
+	 */
+	private Date nmpaTime;
+
+	/**
+	 * 适应人群
+	 */
+	private String adaptiveMan;
+
+	/**
+	 * 不适应人群
+	 */
+	private String unAdaptiveMan;
+
+	/**
+	 * 术前术后
+	 */
+	private String aroundOperation;
+
+	/**
+	 * 分类id
+	 */
+	private Integer typeId;
+
+	/**
+	 * 状态:0停用,1启用
+	 */
+	private Integer status;
+
+	/**
+	 * 文章发布来源:1采美,2供应商
+	 */
+	private Integer publishSource;
+
+	/**
+	 * 基础浏览量
+	 */
+	private Integer basePv;
+
+	/**
+	 * 实际浏览量
+	 */
+	private Integer actualPv;
+
+	/**
+	 * 文章审核状态:1待审核,2审核通过,3审核失败
+	 */
+	private Integer auditStatus;
+}

+ 29 - 0
src/main/java/com/caimei365/user/model/po/BaikeProductQuestionPo.java

@@ -0,0 +1,29 @@
+package com.caimei365.user.model.po;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 采美百科商品问题
+ * @author Aslee
+ * @version 2021-12-13
+ */
+@Data
+public class BaikeProductQuestionPo implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+	/**
+	 * 采美百科商品Id
+	 */
+	private Integer productId;
+	/**
+	 * 问题
+	 */
+	private String question;
+	/**
+	 * 回答
+	 */
+	private String answer;
+}

+ 155 - 0
src/main/java/com/caimei365/user/model/vo/BaikeProductFormVo.java

@@ -0,0 +1,155 @@
+package com.caimei365.user.model.vo;
+
+import com.caimei365.user.model.po.BaikeProductParamPo;
+import com.caimei365.user.model.po.BaikeProductQuestionPo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+
+/**
+ * Description
+ * @author Aslee
+ * @version 2021-12-10
+ */
+@ApiModel("供应商保存百科商品")
+@Data
+public class BaikeProductFormVo {
+	/**
+	 * 百科商品id
+	 */
+	private Integer productId;
+
+	/**
+	 * 分类:1产品,2仪器
+	 */
+	private Integer commodityType;
+
+	/**
+	 * 名称
+	 */
+	private Integer name;
+
+	/**
+	 * 别名
+	 */
+	private Integer alias;
+
+	/**
+	 * 描述
+	 */
+	private Integer discription;
+
+	/**
+	 * seo关键词
+	 */
+	private Integer seoKeyword;
+
+	/**
+	 * 图片
+	 */
+	private Integer image;
+
+	/**
+	 * 认证链接
+	 */
+	private Integer authLink;
+
+	/**
+	 * 认证二维码
+	 */
+	private Integer authQrCode;
+
+	/**
+	 * 优点
+	 */
+	private Integer advantage;
+
+	/**
+	 * 缺点
+	 */
+	private Integer disadvantage;
+
+	/**
+	 * 原理
+	 */
+	private Integer principle;
+
+	/**
+	 * 品牌
+	 */
+	private Integer brand;
+
+	/**
+	 * 产地
+	 */
+	private Integer producePlace;
+
+	/**
+	 * 上市时间
+	 */
+	private Integer marketTime;
+
+	/**
+	 * 公司/供应商
+	 */
+	private Integer company;
+
+	/**
+	 * NMPA认证时间
+	 */
+	private Integer nmpaTime;
+
+	/**
+	 * 适应人群
+	 */
+	private Integer adaptiveMan;
+
+	/**
+	 * 不适应人群
+	 */
+	private Integer unAdaptiveMan;
+
+	/**
+	 * 术前术后
+	 */
+	private Integer aroundOperation;
+
+	/**
+	 * 发布时间
+	 */
+	private Integer publishTime;
+
+	/**
+	 * 分类id
+	 */
+	private Integer typeId;
+
+	/**
+	 * 状态:0停用,1启用
+	 */
+	private Integer status;
+
+	/**
+	 * 参数列表
+	 */
+	private List<BaikeProductParamPo> paramList;
+
+	/**
+	 * 产品认证图片列表
+	 */
+	private List<String> authImageList;
+
+	/**
+	 * 效果展示图片列表
+	 */
+	private List<String> displayImageList;
+
+	/**
+	 * 问题列表
+	 */
+	private List<BaikeProductQuestionPo> questionList;
+}

+ 62 - 0
src/main/java/com/caimei365/user/model/vo/BaikeProductListVo.java

@@ -0,0 +1,62 @@
+package com.caimei365.user.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+
+/**
+ * Description
+ * @author Aslee
+ * @version 2021-12-10
+ */
+@ApiModel("供应商百科商品列表Vo")
+@Data
+public class BaikeProductListVo {
+	/**
+	 * 百科商品id
+	 */
+	private Integer productId;
+
+	/**
+	 * 分类:1产品,2仪器
+	 */
+	private Integer commodityType;
+
+	/**
+	 * 名称
+	 */
+	private String name;
+
+	/**
+	 * 分类名称
+	 */
+	private String typeName;
+
+	/**
+	 * 阅读量
+	 */
+	private Integer actualPv;
+
+	/**
+	 * 发布时间
+	 */
+	private Date publishTime;
+
+	/**
+	 * 审核状态:1待审核,2审核通过,3审核失败
+	 */
+	private Integer auditStatus;
+
+	/**
+	 * 添加时间
+	 */
+	private Date addTime;
+
+	/**
+	 * 状态:0停用,1启用
+	 */
+	private Integer status;
+}

+ 26 - 0
src/main/java/com/caimei365/user/model/vo/BaikeProductTypeVo.java

@@ -0,0 +1,26 @@
+package com.caimei365.user.model.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Aslee
+ * @date : 2021/12/10
+ */
+@Data
+public class BaikeProductTypeVo implements Serializable {
+    /**
+     * 百科商品分类id
+     */
+    private Integer typeId;
+
+    /**
+     * 百科商品分类名称
+     */
+    private String typeName;
+
+    private static final long serialVersionUID = 1L;
+}

+ 44 - 4
src/main/java/com/caimei365/user/service/ShopService.java

@@ -2,13 +2,11 @@ package com.caimei365.user.service;
 
 
 import com.caimei365.user.model.ResponseJson;
+import com.caimei365.user.model.dto.BaikeProductDto;
 import com.caimei365.user.model.dto.ShopArticleDto;
 import com.caimei365.user.model.dto.ShopBannerDto;
 import com.caimei365.user.model.dto.ShopUpdateDto;
-import com.caimei365.user.model.vo.ArticleTypeVo;
-import com.caimei365.user.model.vo.ShopArticleVo;
-import com.caimei365.user.model.vo.ShopBannerVo;
-import com.caimei365.user.model.vo.ShopHomeVo;
+import com.caimei365.user.model.vo.*;
 import com.github.pagehelper.PageInfo;
 
 import java.util.List;
@@ -147,4 +145,46 @@ public interface ShopService {
      * @return
      */
     ResponseJson<Void> deleteArticle(Integer articleId);
+
+    /**
+     * 保存供应商百科商品
+     * @param baikeProductDto
+     * @return
+     */
+    ResponseJson<Void> saveBaikeProduct(BaikeProductDto baikeProductDto);
+
+    /**
+     * 获取供应商百科商品表单数据
+     * @param baikeProductId     百科商品id
+     * @return
+     */
+    ResponseJson<BaikeProductFormVo> getBaikeProductById(Integer productId);
+
+    /**
+     * 根据供应商id查询供应商百科商品列表
+     * @param baikeProductDto    供应商id
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    ResponseJson<PageInfo<BaikeProductListVo>> getBaikeProductList(BaikeProductDto baikeProductDto, int pageNum, int pageSize);
+
+    /**
+     * 更改供应商百科商品状态
+     */
+    ResponseJson<Void> updateBaikeProductStatus(BaikeProductDto baikeProductDto);
+
+    /**
+     * 获取供应商百科商品分类列表
+     * @return
+     * @param commodityType
+     */
+    ResponseJson<List<BaikeProductTypeVo>> getBaikeProductTypeList(Integer commodityType);
+
+    /**
+     * 删除供应商百科商品
+     * @param productId 百科商品id
+     * @return
+     */
+    ResponseJson<Void> deleteBaikeProduct(Integer productId);
 }

+ 117 - 8
src/main/java/com/caimei365/user/service/impl/ShopServiceImpl.java

@@ -1,17 +1,13 @@
 package com.caimei365.user.service.impl;
 
 import com.caimei365.user.feign.CommodityFeign;
-import com.caimei365.user.mapper.ArticleMapper;
-import com.caimei365.user.mapper.BaseMapper;
-import com.caimei365.user.mapper.PersonalCenterMapper;
-import com.caimei365.user.mapper.ShopMapper;
+import com.caimei365.user.mapper.*;
 import com.caimei365.user.model.ResponseJson;
+import com.caimei365.user.model.dto.BaikeProductDto;
 import com.caimei365.user.model.dto.ShopArticleDto;
 import com.caimei365.user.model.dto.ShopBannerDto;
 import com.caimei365.user.model.dto.ShopUpdateDto;
-import com.caimei365.user.model.po.ArticlePo;
-import com.caimei365.user.model.po.ShopCertPo;
-import com.caimei365.user.model.po.UserPo;
+import com.caimei365.user.model.po.*;
 import com.caimei365.user.model.vo.*;
 import com.caimei365.user.service.ShopService;
 import com.caimei365.user.utils.DateUtil;
@@ -48,6 +44,8 @@ public class ShopServiceImpl implements ShopService {
     @Resource
     private ArticleMapper articleMapper;
     @Resource
+    private BaikeProductMapper baikeProductMapper;
+    @Resource
     private PersonalCenterMapper personalCenterMapper;
     @Value("${spring.cloud.config.profile}")
     private String active;
@@ -499,7 +497,7 @@ public class ShopServiceImpl implements ShopService {
 
     @Override
     public ResponseJson<PageInfo<ShopArticleVo>> getShopArticleList(ShopArticleDto shopArticleDto, int pageNum, int pageSize) {
-        if (null == shopArticleDto) {
+        if (null == shopArticleDto.getShopId()) {
             return ResponseJson.error("参数异常", null);
         }
         PageHelper.startPage(pageNum, pageSize);
@@ -534,4 +532,115 @@ public class ShopServiceImpl implements ShopService {
         commodityFeign.updateArticleIndex(articleId);
         return ResponseJson.success(null);
     }
+
+    @Override
+    public ResponseJson<Void> saveBaikeProduct(BaikeProductDto baikeProductDto) {
+        if (null == baikeProductDto.getShopId()) {
+            return ResponseJson.error("参数异常,供应商id不能为空", null);
+        }
+        if (StringUtils.isEmpty(baikeProductDto.getName())) {
+            return ResponseJson.error("参数异常,百科名称不能为空", null);
+        }
+        // 新增商品标识
+        boolean newProductFlag = null == baikeProductDto.getProductId() || 0 == baikeProductDto.getProductId();
+        BaikeProductPo baikeProductPo = new BaikeProductPo();
+        BeanUtils.copyProperties(baikeProductDto, baikeProductPo);
+        // 保存供应商百科商品
+        if (newProductFlag) {
+            baikeProductPo.setPublishSource(2);
+            baikeProductPo.setAuditStatus(1);
+            baikeProductPo.setBasePv(0);
+            baikeProductPo.setActualPv(0);
+            baikeProductMapper.insertBaikeProduct(baikeProductPo);
+        } else {
+            baikeProductPo.setAuditStatus(1);
+            baikeProductMapper.updateBaikeProduct(baikeProductPo);
+        }
+        Integer productId = baikeProductPo.getProductId();
+        // 删除原先的图片/参数/问题数据
+        if (!newProductFlag) {
+            baikeProductMapper.deleteParamsByProductId(productId);
+            baikeProductMapper.deleteImagesByProductId(productId);
+            baikeProductMapper.deleteQuestionsByProductId(productId);
+        }
+        // 保存参数
+        List<BaikeProductParamPo> paramList = baikeProductDto.getParamList();
+        paramList.forEach(param->{
+            if (StringUtils.isNotEmpty(param.getName()) && StringUtils.isNotEmpty(param.getContent())) {
+                baikeProductMapper.insertProductParam(param.getName(), param.getContent(), productId);
+            }
+        });
+        // 保存认证图片
+        List<String> authImageList = baikeProductDto.getAuthImageList();
+        authImageList.forEach(authImage-> baikeProductMapper.insertProductImage(authImage, productId, 1));
+        // 保存展示图片
+        List<String> displayImageList = baikeProductDto.getDisplayImageList();
+        displayImageList.forEach(diplayImage-> baikeProductMapper.insertProductImage(diplayImage, productId, 2));
+        // 保存问题
+        List<BaikeProductQuestionPo> questionList = baikeProductDto.getQuestionList();
+        questionList.forEach(question->{
+            if (StringUtils.isNotEmpty(question.getQuestion()) && StringUtils.isNotEmpty(question.getAnswer())) {
+                baikeProductMapper.insertProductQuestion(question.getQuestion(), question.getAnswer(), productId);
+            }
+        });
+        return ResponseJson.success(null);
+    }
+
+    @Override
+    public ResponseJson<BaikeProductFormVo> getBaikeProductById(Integer productId) {
+        if (null == productId) {
+            return ResponseJson.error("参数异常", null);
+        }
+        // 查询商品信息
+        BaikeProductFormVo baikeProduct = baikeProductMapper.getBaikeProductById(productId);
+        // 参数列表
+        List<BaikeProductParamPo> paramList = baikeProductMapper.getParamList(productId);
+        baikeProduct.setParamList(paramList);
+        // 产品/仪器认证图片列表
+        List<String> authImageList = baikeProductMapper.getImageList(productId, 1);
+        baikeProduct.setAuthImageList(authImageList);
+        // 效果展示图片列表
+        List<String> displayImageList = baikeProductMapper.getImageList(productId, 2);
+        baikeProduct.setDisplayImageList(displayImageList);
+        // 问题列表
+        List<BaikeProductQuestionPo> questionList = baikeProductMapper.getQuestionList(productId);
+        baikeProduct.setQuestionList(questionList);
+        return ResponseJson.success(baikeProduct);
+    }
+
+
+    @Override
+    public ResponseJson<PageInfo<BaikeProductListVo>> getBaikeProductList(BaikeProductDto baikeProductDto, int pageNum, int pageSize) {
+        if (null == baikeProductDto.getShopId()) {
+            return ResponseJson.error("参数异常", null);
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        List<BaikeProductListVo> baikeProductList = baikeProductMapper.getBaikeProductList(baikeProductDto);
+        PageInfo<BaikeProductListVo> pageInfo = new PageInfo<>(baikeProductList);
+        return ResponseJson.success(pageInfo);
+    }
+
+    @Override
+    public ResponseJson<Void> updateBaikeProductStatus(BaikeProductDto baikeProductDto) {
+        Integer productId = baikeProductDto.getProductId();
+        Integer status = baikeProductDto.getStatus();
+        if (null == productId || null == status) {
+            return ResponseJson.error("参数异常", null);
+        }
+        baikeProductMapper.updateBaikeProductStatus(productId, status);
+        return ResponseJson.success(null);
+    }
+
+    @Override
+    public ResponseJson<List<BaikeProductTypeVo>> getBaikeProductTypeList(Integer commodityType) {
+        List<BaikeProductTypeVo> baikeProductTypeList = baikeProductMapper.getBaikeProductTypeList(commodityType);
+        return ResponseJson.success(baikeProductTypeList);
+    }
+
+    @Override
+    public ResponseJson<Void> deleteBaikeProduct(Integer productId) {
+        baikeProductMapper.deleteBaikeProduct(productId);
+        return ResponseJson.success(null);
+    }
+
 }

+ 134 - 0
src/main/resources/mapper/BaikeProductMapper.xml

@@ -0,0 +1,134 @@
+<?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.caimei365.user.mapper.BaikeProductMapper">
+
+    <insert id="insertBaikeProduct" parameterType="com.caimei365.user.model.po.BaikeProductPo" keyProperty="productId" useGeneratedKeys="true">
+        insert into cm_baike_product (commodityType, name, alias, discription, seoKeyword, image,
+                                      authLink,authQrCode, advantage,disadvantage, principle, brand,
+                                      producePlace, marketTime,company, nmpaTime, adaptiveMan,
+                                      unAdaptiveMan, aroundOperation,basePv, actualPv, typeId,
+                                      topPosition, status,addTime)
+        VALUES (#{commodityType}, #{name}, #{alias}, #{discription}, #{seoKeyword}, #{image},
+                #{authLink},#{authQrCode}, #{advantage},#{disadvantage}, #{principle}, #{brand},
+                #{producePlace}, #{marketTime},#{company}, #{nmpaTime}, #{adaptiveMan},
+                #{unAdaptiveMan}, #{aroundOperation},#{basePv}, #{actualPv}, #{typeId}, null,
+                #{status}, NOW());
+    </insert>
+    <insert id="insertProductParam">
+        insert into cm_baike_product_param (productId, name, content)
+        VALUES (#{productId}, #{name}, #{content})
+    </insert>
+    <insert id="insertProductImage">
+        insert into cm_baike_product_image (productId, type, image)
+        values (#{produtId}, #{imageType}, #{authImage})
+    </insert>
+    <insert id="insertProductQuestion">
+        insert into cm_baike_product_question (productId, question, answer)
+        values (#{productId}, #{question}, #{answer})
+    </insert>
+    <update id="updateBaikeProduct">
+        update cm_baike_product
+        set name            = #{name},
+            alias           = #{alias},
+            discription     = #{discription},
+            seoKeyword      = #{seoKeyword},
+            image           = #{image},
+            authLink        = #{authLink},
+            authQrCode      = #{authQrCode},
+            advantage       = #{advantage},
+            disadvantage    = #{disadvantage},
+            principle       = #{principle},
+            brand           = #{brand},
+            producePlace    = #{producePlace},
+            marketTime      = #{marketTime},
+            company         = #{company},
+            nmpaTime        = #{nmpaTime},
+            adaptiveMan     = #{adaptiveMan},
+            unAdaptiveMan   = #{unAdaptiveMan},
+            aroundOperation = #{aroundOperation},
+            typeId          = #{typeId},
+            status          = #{status}
+        where id = #{productId};
+    </update>
+    <update id="updateBaikeProductStatus">
+        update cm_baike_product set status = #{status} where id = #{productId}
+    </update>
+    <update id="deleteBaikeProduct">
+        update cm_baike_product set delFlag = 1 where id = #{productId}
+    </update>
+    <delete id="deleteParamsByProductId">
+        delete from cm_baike_product_param where productId = #{productId}
+    </delete>
+    <delete id="deleteImagesByProductId">
+        delete from cm_baike_product_image where productId = #{productId}
+    </delete>
+    <delete id="deleteQuestionsByProductId">
+        delete from cm_baike_product_question where productId = #{productId}
+    </delete>
+    <select id="getBaikeProductById" resultType="com.caimei365.user.model.vo.BaikeProductFormVo">
+        select id as productId,
+               commodityType,
+               name,
+               alias,
+               discription,
+               seoKeyword,
+               image,
+               authLink,
+               authQrCode,
+               advantage,
+               disadvantage,
+               principle,
+               brand,
+               producePlace,
+               marketTime,
+               company,
+               nmpaTime,
+               adaptiveMan,
+               unAdaptiveMan,
+               aroundOperation,
+               typeId,
+               status
+        from cm_baike_product
+        where id = #{productId}
+    </select>
+    <select id="getBaikeProductTypeList" resultType="com.caimei365.user.model.vo.BaikeProductTypeVo">
+        select id as typeId, name as typeName from cm_baike_type where status = 1 order by sort desc,addTime desc
+    </select>
+    <select id="getBaikeProductList" resultType="com.caimei365.user.model.vo.BaikeProductListVo">
+        select p.id     as productId,
+               p.name,
+               cbt.name as typeName,
+               p.actualPv,
+               p.auditStatus,
+               p.publishTime,
+               p.addTime,
+               p.status
+        from cm_baike_product p
+                 left join cm_baike_type cbt on p.typeId = cbt.id
+        where shopId = #{shopId} and publishSource = 2
+        <if test="productId != null">
+            and p.id = #{productId}
+        </if>
+        <if test="name != null and name != ''">
+            and p.name like concat('%',#{name},'%')
+        </if>
+        <if test="typeId != null">
+            and typeId = #{typeId}
+        </if>
+        <if test="auditStatus != null">
+            and auditStatus = #{auditStatus}
+        </if>
+        order by p.addTime desc
+    </select>
+    <select id="getParamList" resultType="com.caimei365.user.model.po.BaikeProductParamPo">
+        select productId, name, content from cm_baike_product_param where productId = #{id}
+    </select>
+    <select id="getImageList" resultType="java.lang.String">
+        select image from cm_baike_product_image where productId = #{productId} and type = #{imageType}
+    </select>
+    <select id="getQuestionList" resultType="com.caimei365.user.model.po.BaikeProductQuestionPo">
+        select productId, question, answer
+        from cm_baike_product_question
+        where productId = #{id}
+    </select>
+</mapper>