已修改2个文件
已添加10个文件
353 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/constant/Constants.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/point/PointGoodsCreateDTO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/point/PointGoodsQueryDTO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/point/PointGoodsUpdateDTO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/point/PointGoodsDTO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/response/point/PointGoodsListDTO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/entity/point/PointGoods.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/mapper/point/PointGoodsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/point/PointGoodsService.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/point/PointGoodsController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/point/PointGoodsMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/表设计.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/constant/Constants.java
@@ -430,6 +430,21 @@
        }
    }
    public enum POINT_GOODS_STATUS {
        A("上架"),
        I("下架");
        POINT_GOODS_STATUS(String desc) {
            this.desc = desc;
        }
        private String desc;
        public String getDesc() {
            return desc;
        }
    }
    public enum POINT_GOOD_STATUS {
        up("上架"),
        off("下架");
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;
}
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;
}
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;
}
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;
}
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;
}
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;//状态
}
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);
}
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;
    }
}
src/main/java/com/mzl/flower/web/point/PointGoodsController.java
对比新文件
@@ -0,0 +1,71 @@
package com.mzl.flower.web.point;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
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.service.point.PointGoodsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/point/goods")
@Api(value = "积分商品管理-运营端", tags = "积分商品管理-运营端")
@Validated
@Slf4j
public class PointGoodsController extends BaseController {
    @Autowired
    private PointGoodsService pointGoodsService;
    @PostMapping("/list/new")
    @ApiOperation(value = "新增商品")
    public ResponseEntity<ReturnDataDTO> addPointGoods(@RequestBody PointGoodsCreateDTO dto) {
        return returnData(R.SUCCESS.getCode(), pointGoodsService.addPointGoods(dto));
    }
    @PostMapping("/list/edit")
    @ApiOperation(value = "编辑商品")
    public ResponseEntity<ReturnDataDTO> updatePointGoods(@RequestBody PointGoodsUpdateDTO dto) {
        return returnData(R.SUCCESS.getCode(), pointGoodsService.updatePointGoods(dto));
    }
    @GetMapping("/list")
    @ApiOperation(value = "商品列表")
    public ResponseEntity<ReturnDataDTO<Page<PointGoodsListDTO>>> selectGoodsList(Page page, PointGoodsQueryDTO dto){
        return returnData(R.SUCCESS.getCode(), pointGoodsService.selectGoodsList(page, dto));
    }
    @GetMapping("/list/view")
    @ApiOperation(value = "商品详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "商品id", required = true, dataType = "Long", paramType = "query")
    })
    public ResponseEntity<ReturnDataDTO<PointGoodsDTO>> getGoodsInfo(Long id) {
        return returnData(R.SUCCESS.getCode(), pointGoodsService.getGoodsInfo(id));
    }
    @GetMapping("/list/delete")
    @ApiOperation(value = "商品删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "商品id", required = true, dataType = "Long", paramType = "query")
    })
    public ResponseEntity<ReturnDataDTO<?>> deletePointGoods(Long id) {
        pointGoodsService.deletePointGoods(id);
        return returnData(R.SUCCESS.getCode(), null);
    }
}
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>
src/main/表设计.xlsx
Binary files differ