From f7f2ff006ef29b700da8c98fb9c876aed9aa7bef Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期四, 29 八月 2024 14:12:45 +0800
Subject: [PATCH] 积分商品

---
 src/main/java/com/mzl/flower/dto/request/point/PointGoodsQueryDTO.java  |   28 +++++
 src/main/java/com/mzl/flower/dto/response/point/PointGoodsDTO.java      |   12 ++
 src/main/表设计.xlsx                                                       |    0 
 src/main/java/com/mzl/flower/entity/point/PointGoods.java               |   33 ++++++
 src/main/resources/mapper/point/PointGoodsMapper.xml                    |   30 ++++++
 src/main/java/com/mzl/flower/constant/Constants.java                    |   16 +++
 src/main/java/com/mzl/flower/service/point/PointGoodsService.java       |   78 +++++++++++++++
 src/main/java/com/mzl/flower/dto/request/point/PointGoodsCreateDTO.java |   28 +++++
 src/main/java/com/mzl/flower/dto/response/point/PointGoodsListDTO.java  |   31 ++++++
 src/main/java/com/mzl/flower/mapper/point/PointGoodsMapper.java         |   16 +++
 src/main/java/com/mzl/flower/dto/request/point/PointGoodsUpdateDTO.java |   11 ++
 11 files changed, 283 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/mzl/flower/constant/Constants.java b/src/main/java/com/mzl/flower/constant/Constants.java
index 04d154f..beace01 100644
--- a/src/main/java/com/mzl/flower/constant/Constants.java
+++ b/src/main/java/com/mzl/flower/constant/Constants.java
@@ -430,4 +430,20 @@
         }
     }
 
+    public enum POINT_GOODS_STATUS {
+        A("已上架"),
+        I("已下架"),
+        ;
+
+        POINT_GOODS_STATUS(String desc) {
+            this.desc = desc;
+        }
+
+        private String desc;
+
+        public String getDesc() {
+            return desc;
+        }
+    }
+
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/point/PointGoodsCreateDTO.java b/src/main/java/com/mzl/flower/dto/request/point/PointGoodsCreateDTO.java
new file mode 100644
index 0000000..0194aa3
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/point/PointGoodsCreateDTO.java
@@ -0,0 +1,28 @@
+package com.mzl.flower.dto.request.point;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PointGoodsCreateDTO {
+    @ApiModelProperty(value = "商品名称")
+    private String name;
+
+    @ApiModelProperty(value = "商品描述")
+    private String description;
+
+    @ApiModelProperty(value = "库存")
+    private Integer stock;
+
+    @ApiModelProperty(value = "封面图")
+    private String cover;
+
+    @ApiModelProperty(value = "商品图片")
+    private List<String> pictureList;
+
+    @ApiModelProperty(value = "兑换积分")
+    private Integer point;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/point/PointGoodsQueryDTO.java b/src/main/java/com/mzl/flower/dto/request/point/PointGoodsQueryDTO.java
new file mode 100644
index 0000000..ff598cd
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/point/PointGoodsQueryDTO.java
@@ -0,0 +1,28 @@
+package com.mzl.flower.dto.request.point;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PointGoodsQueryDTO {
+    @ApiModelProperty(value = "商品名称")
+    private String name;
+
+    @ApiModelProperty(value = "状态")
+    private String status;
+
+    @ApiModelProperty(value = "库存-下限")
+    private Integer stockLower;
+
+    @ApiModelProperty(value = "库存-上限")
+    private Integer stockUpper;
+
+    @ApiModelProperty(value = "兑换积分-下限")
+    private Integer pointLower;
+
+    @ApiModelProperty(value = "兑换积分-上限")
+    private Integer pointUpper;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/point/PointGoodsUpdateDTO.java b/src/main/java/com/mzl/flower/dto/request/point/PointGoodsUpdateDTO.java
new file mode 100644
index 0000000..0e8d586
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/point/PointGoodsUpdateDTO.java
@@ -0,0 +1,11 @@
+package com.mzl.flower.dto.request.point;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PointGoodsUpdateDTO extends PointGoodsCreateDTO{
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/point/PointGoodsDTO.java b/src/main/java/com/mzl/flower/dto/response/point/PointGoodsDTO.java
new file mode 100644
index 0000000..ed93b32
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/point/PointGoodsDTO.java
@@ -0,0 +1,12 @@
+package com.mzl.flower.dto.response.point;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PointGoodsDTO extends PointGoodsListDTO {
+    @ApiModelProperty(value = "商品图片")
+    private List<String> pictureList;
+}
diff --git a/src/main/java/com/mzl/flower/dto/response/point/PointGoodsListDTO.java b/src/main/java/com/mzl/flower/dto/response/point/PointGoodsListDTO.java
new file mode 100644
index 0000000..b455255
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/response/point/PointGoodsListDTO.java
@@ -0,0 +1,31 @@
+package com.mzl.flower.dto.response.point;
+
+import com.mzl.flower.base.AbstractTransDTO;
+import com.mzl.flower.base.annotation.DictTrans;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class PointGoodsListDTO extends AbstractTransDTO {
+    private Long id;
+
+    @ApiModelProperty(value = "商品名称")
+    private String name;
+
+    @ApiModelProperty(value = "商品描述")
+    private String description;
+
+    @ApiModelProperty(value = "库存")
+    private Integer stock;
+
+    @ApiModelProperty(value = "封面图")
+    private String cover;
+
+    @ApiModelProperty(value = "兑换积分")
+    private Integer point;
+
+    @ApiModelProperty(value = "状态")
+    @DictTrans(target = "statusStr", codeType = "POINT_GOODS_STATUS")
+    private String status;
+    private String statusStr;
+}
diff --git a/src/main/java/com/mzl/flower/entity/point/PointGoods.java b/src/main/java/com/mzl/flower/entity/point/PointGoods.java
new file mode 100644
index 0000000..5b08efd
--- /dev/null
+++ b/src/main/java/com/mzl/flower/entity/point/PointGoods.java
@@ -0,0 +1,33 @@
+package com.mzl.flower.entity.point;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mzl.flower.base.BaseAutoEntity;
+import lombok.Data;
+
+@Data
+@TableName("t_point_goods")
+public class PointGoods extends BaseAutoEntity {
+
+    @TableField("name")
+    private String name;//商品名称
+
+    @TableField("description")
+    private String description;//商品描述
+
+    @TableField("stock")
+    private Integer stock;//库存
+
+    @TableField("cover")
+    private String cover;//封面图
+
+    @TableField("pictures")
+    private String pictures;//商品图片
+
+    @TableField("point")
+    private Integer point;//兑换积分
+
+    @TableField("status")
+    private String status;//状态
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/mzl/flower/mapper/point/PointGoodsMapper.java b/src/main/java/com/mzl/flower/mapper/point/PointGoodsMapper.java
new file mode 100644
index 0000000..8825c9b
--- /dev/null
+++ b/src/main/java/com/mzl/flower/mapper/point/PointGoodsMapper.java
@@ -0,0 +1,16 @@
+package com.mzl.flower.mapper.point;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.dto.request.point.PointGoodsQueryDTO;
+import com.mzl.flower.dto.response.point.PointGoodsListDTO;
+import com.mzl.flower.entity.point.PointGoods;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface PointGoodsMapper extends BaseMapper<PointGoods> {
+    List<PointGoodsListDTO> selectGoodsList(Page page, @Param("condition") PointGoodsQueryDTO dto);
+}
diff --git a/src/main/java/com/mzl/flower/service/point/PointGoodsService.java b/src/main/java/com/mzl/flower/service/point/PointGoodsService.java
new file mode 100644
index 0000000..0b25f44
--- /dev/null
+++ b/src/main/java/com/mzl/flower/service/point/PointGoodsService.java
@@ -0,0 +1,78 @@
+package com.mzl.flower.service.point;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.constant.Constants;
+import com.mzl.flower.dto.request.point.PointGoodsCreateDTO;
+import com.mzl.flower.dto.request.point.PointGoodsQueryDTO;
+import com.mzl.flower.dto.request.point.PointGoodsUpdateDTO;
+import com.mzl.flower.dto.response.point.PointGoodsDTO;
+import com.mzl.flower.dto.response.point.PointGoodsListDTO;
+import com.mzl.flower.entity.point.PointGoods;
+import com.mzl.flower.mapper.point.PointGoodsMapper;
+import com.mzl.flower.service.BaseService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@Transactional
+public class PointGoodsService extends BaseService {
+
+    @Autowired
+    private PointGoodsMapper pointGoodsMapper;
+
+    public Long addPointGoods(PointGoodsCreateDTO dto){
+        PointGoods p = new PointGoods();
+        BeanUtils.copyProperties(dto, p);
+        p.setPictures(toJSONString(dto.getPictureList()));
+        p.setStatus(Constants.POINT_GOODS_STATUS.I.name());
+
+        p.create(SecurityUtils.getUserId());
+        pointGoodsMapper.insert(p);
+
+        return p.getId();
+    }
+
+    public Long updatePointGoods(PointGoodsUpdateDTO dto){
+        PointGoods p = pointGoodsMapper.selectById(dto.getId());
+        if(p == null){
+            throw new ValidationException("商品未找到");
+        }
+
+        BeanUtils.copyProperties(dto, p);
+        p.setPictures(toJSONString(dto.getPictureList()));
+
+        p.update(SecurityUtils.getUserId());
+        pointGoodsMapper.updateById(p);
+
+        return p.getId();
+    }
+
+    public void deletePointGoods(Long id){
+        pointGoodsMapper.deleteById(id);
+    }
+
+    public Page<PointGoodsListDTO> selectGoodsList(Page page, PointGoodsQueryDTO dto){
+        List<PointGoodsListDTO> ls = pointGoodsMapper.selectGoodsList(page, dto);
+
+        page.setRecords(ls);
+        return page;
+    }
+
+    public PointGoodsDTO getGoodsInfo(Long id){
+        PointGoods p = pointGoodsMapper.selectById(id);
+        if(p == null){
+            throw new ValidationException("商品未找到");
+        }
+        PointGoodsDTO dto = new PointGoodsDTO();
+        BeanUtils.copyProperties(p, dto);
+        dto.setPictureList(parseArray(p.getPictures(), String.class));
+
+        return dto;
+    }
+}
diff --git a/src/main/resources/mapper/point/PointGoodsMapper.xml b/src/main/resources/mapper/point/PointGoodsMapper.xml
new file mode 100644
index 0000000..7e1357a
--- /dev/null
+++ b/src/main/resources/mapper/point/PointGoodsMapper.xml
@@ -0,0 +1,30 @@
+<?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.mzl.flower.mapper.point.PointGoodsMapper">
+
+    <select id="selectGoodsList" resultType="com.mzl.flower.dto.response.point.PointGoodsListDTO">
+        SELECT p.*
+        FROM t_point_goods p
+        WHERE p.deleted = 0
+        <if test="condition.name != null and condition.name != ''">
+            AND p.name LIKE concat('%', #{condition.name},'%')
+        </if>
+        <if test="condition.status != null and condition.status != ''">
+            AND p.status = #{condition.status}
+        </if>
+        <if test="condition.stockLower != null">
+            AND p.stock &gt; #{condition.stockLower}
+        </if>
+        <if test="condition.stockUpper != null">
+            AND p.stock &lt;= #{condition.stockUpper}
+        </if>
+        <if test="condition.pointLower != null">
+            AND p.point &gt; #{condition.pointLower}
+        </if>
+        <if test="condition.pointUpper != null">
+            AND p.point &lt;= #{condition.pointUpper}
+        </if>
+        ORDER BY p.create_time desc
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git "a/src/main/\350\241\250\350\256\276\350\256\241.xlsx" "b/src/main/\350\241\250\350\256\276\350\256\241.xlsx"
index 2e1e3ae..e85ae38 100644
--- "a/src/main/\350\241\250\350\256\276\350\256\241.xlsx"
+++ "b/src/main/\350\241\250\350\256\276\350\256\241.xlsx"
Binary files differ

--
Gitblit v1.9.3