src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
@@ -3,6 +3,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; import java.math.BigDecimal; @Data @@ -11,30 +12,39 @@ private Long id; @ApiModelProperty("会员等级名称") @NotNull private String name; @ApiModelProperty("成长点-区间-开始") @NotNull private int startPoint; @ApiModelProperty("成长点-区间-结束") @NotNull private int endPoint; @ApiModelProperty("会员折扣类型(百分比、固定金额)") private int discountType; @NotNull private String discountType; @ApiModelProperty("会员折扣百分比") @NotNull private BigDecimal discountRatio; @ApiModelProperty("会员折扣固定金额") @NotNull private BigDecimal discountAmount; @ApiModelProperty("消费金额(元)") @NotNull private int consumptionAmount; @ApiModelProperty("已消费产生的成长值") @NotNull private int growthValue; @ApiModelProperty("未消费产生的下降值") @NotNull private int downgradeValue; } src/main/java/com/mzl/flower/dto/request/menber/MemberQueryDTO.java
@@ -5,6 +5,6 @@ @Data public class MemberQueryDTO { @ApiModelProperty(value = "会员等级") private String levelName; @ApiModelProperty(value = "会员等级名称") private String name; } src/main/java/com/mzl/flower/dto/response/member/MemberGrowthRecordVO.java
对比新文件 @@ -0,0 +1,48 @@ package com.mzl.flower.dto.response.member; import com.mzl.flower.base.AbstractTransDTO; import com.mzl.flower.base.annotation.DictTrans; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigInteger; import java.time.LocalDateTime; import java.util.Date; @Data public class MemberGrowthRecordVO extends AbstractTransDTO { private Long id; @ApiModelProperty("记录日期") private Date recordDate; @ApiModelProperty("成长值") private int growth; @ApiModelProperty("用户id") private String userId; @ApiModelProperty("商户ID") private BigInteger customerId; @ApiModelProperty("成长值来源(growth_source:签到、消费)") @DictTrans(target = "sourceStr", codeType = "GROWTH_SOURCE") private String source; private String sourceStr; @ApiModelProperty("新增、扣除(growth_type)") @DictTrans(target = "typeStr", codeType = "GROWTH_TYPE") private String type; private String typeStr; @ApiModelProperty("备注") private String remarks; @ApiModelProperty("创建日期") private LocalDateTime createTime; @ApiModelProperty("修改日期") private LocalDateTime updateTime; } src/main/java/com/mzl/flower/dto/response/member/MemberVO.java
@@ -1,4 +1,50 @@ package com.mzl.flower.dto.response.member; public class MemberVO { import com.mzl.flower.base.AbstractTransDTO; import com.mzl.flower.base.annotation.DictTrans; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class MemberVO extends AbstractTransDTO { private Long id; @ApiModelProperty("会员等级名称") private String name; @ApiModelProperty("成长点-区间-开始") private int startPoint; @ApiModelProperty("成长点-区间-结束") private int endPoint; @ApiModelProperty("会员折扣类型(百分比、固定金额)") @DictTrans(target = "discountTypeStr", codeType = "DISCOUNT_TYPE") private String discountType; private String discountTypeStr; @ApiModelProperty("会员折扣百分比") private BigDecimal discountRatio; @ApiModelProperty("会员折扣固定金额") private BigDecimal discountAmount; @ApiModelProperty("消费金额(元)") private int consumptionAmount; @ApiModelProperty("已消费产生的成长值") private int growthValue; @ApiModelProperty("未消费产生的下降值") private int downgradeValue; @ApiModelProperty("创建日期") private LocalDateTime createTime; @ApiModelProperty("修改日期") private LocalDateTime updateTime; } src/main/java/com/mzl/flower/entity/menber/Member.java
@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; import java.math.BigDecimal; /** @@ -28,7 +29,7 @@ private int endPoint; @ApiModelProperty("会员折扣类型(百分比、固定金额)") private int discountType; private String discountType; @ApiModelProperty("会员折扣百分比") private BigDecimal discountRatio; src/main/java/com/mzl/flower/mapper/member/MemberGrowthRecordMapper.java
@@ -1,11 +1,15 @@ package com.mzl.flower.mapper.member; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mzl.flower.entity.menber.Member; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO; import com.mzl.flower.dto.response.member.MemberGrowthRecordVO; import com.mzl.flower.entity.menber.MemberGrowthRecord; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import java.util.List; /** @@ -22,4 +26,6 @@ @Select("SELECT CASE WHEN SUM(growth) < 0 THEN 0 ELSE SUM(growth) END as total_growth from t_member_growth_record WHERE user_id = #{userId} and deleted = '0'") Integer getSumGrowthByUsertId(@Param("userId") String userId); List<MemberGrowthRecordVO> queryPage(@Param("dto") MemberRecordQueryDTO dto, Page page); } src/main/java/com/mzl/flower/mapper/member/MemberMapper.java
@@ -1,6 +1,9 @@ package com.mzl.flower.mapper.member; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mzl.flower.dto.request.menber.MemberQueryDTO; import com.mzl.flower.dto.response.member.MemberVO; import com.mzl.flower.entity.menber.Member; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -30,4 +33,6 @@ @Select("select * from t_member where start_point > #{growthValue} and deleted = '0' ") List<Member> getgtMembersByGrowthValue(@Param("growthValue") Integer growthValue); List<MemberVO> queryPage(@Param("dto") MemberQueryDTO dto, Page page); } src/main/java/com/mzl/flower/service/menber/MemberGrowthRecordService.java
@@ -1,9 +1,12 @@ package com.mzl.flower.service.menber; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO; import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO; import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO; import com.mzl.flower.dto.response.member.MemberGrowthRecordVO; import com.mzl.flower.entity.menber.MemberGrowthRecord; @@ -13,4 +16,6 @@ void updateMemberGrowthRecord(MemberGrowthRecordDTO memberGrowthRecordDTO); void deleteMemberGrowthRecord(String id); UserGrowthRecordDTO getInfoByUserId(String userId); Page<MemberGrowthRecordVO> queryPage(MemberRecordQueryDTO memberRecordQueryDTO, Page page); } src/main/java/com/mzl/flower/service/menber/MemberService.java
@@ -1,8 +1,11 @@ package com.mzl.flower.service.menber; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.mzl.flower.dto.request.menber.MemberDTO; import com.mzl.flower.dto.request.menber.MemberQueryDTO; import com.mzl.flower.dto.response.member.MemberVO; import com.mzl.flower.entity.menber.Member; @@ -12,4 +15,6 @@ void updateMember(MemberDTO memberDTO); void deleteMember(String id); Page<MemberVO> queryPage(MemberQueryDTO memberQueryDTO, Page page); } src/main/java/com/mzl/flower/service/menber/impl/MemberGrowthRecordServiceImpl.java
@@ -1,11 +1,14 @@ package com.mzl.flower.service.menber.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.dto.request.menber.MemberGrowthRecordDTO; import com.mzl.flower.dto.request.menber.MemberRecordQueryDTO; import com.mzl.flower.dto.request.menber.TargetMemberDTO; import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO; import com.mzl.flower.dto.response.member.MemberGrowthRecordVO; import com.mzl.flower.entity.menber.Member; import com.mzl.flower.entity.menber.MemberGrowthRecord; import com.mzl.flower.mapper.member.MemberGrowthRecordMapper; @@ -89,4 +92,11 @@ return userGrowthRecordDTO; } @Override public Page<MemberGrowthRecordVO> queryPage(MemberRecordQueryDTO memberRecordQueryDTO, Page page) { List<MemberGrowthRecordVO> list = memberGrowthRecordMapper.queryPage(memberRecordQueryDTO, page); page.setRecords(list); return page; } } src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
@@ -1,9 +1,12 @@ package com.mzl.flower.service.menber.impl; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mzl.flower.config.exception.ValidationException; import com.mzl.flower.config.security.SecurityUtils; import com.mzl.flower.dto.request.menber.MemberDTO; import com.mzl.flower.dto.request.menber.MemberQueryDTO; import com.mzl.flower.dto.response.member.MemberVO; import com.mzl.flower.entity.menber.Member; import com.mzl.flower.mapper.member.MemberMapper; import com.mzl.flower.service.menber.MemberService; @@ -13,6 +16,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; import java.util.List; /** * @author fanghaowei @@ -33,6 +38,10 @@ if (StringUtils.isEmpty(member.getName())) { throw new ValidationException("会员等级名称不能为空"); } if (member.getStartPoint()>member.getEndPoint()) { throw new ValidationException("成长点开始不能大于结束"); } //保存时判断是否有重复的名称 Member memberByName = memberMapper.getMemberByName(member.getName()); if (!ObjectUtils.isEmpty(memberByName)) { @@ -47,9 +56,9 @@ if (memberInfo == null) { throw new ValidationException("会员等级信息不存在"); } if (!memberInfo.getCreateBy().equals(SecurityUtils.getUserId())) { throw new ValidationException("无权限修改"); } // if (!memberInfo.getCreateBy().equals(SecurityUtils.getUserId())) { // throw new ValidationException("无权限修改"); // } Member memberTemp = memberMapper.getMemberByName(memberDTO.getName()); //判断如果按照会员等级查询到得名称和当前得Id不一致,不能修改。 if (!ObjectUtils.isEmpty(memberTemp)) { @@ -72,4 +81,11 @@ // TODO: 2024/8/26 如果当前会员绑定了优惠券,不能删除,等优惠券逻辑完成。 memberMapper.deleteById(id); } @Override public Page<MemberVO> queryPage(MemberQueryDTO memberQueryDTO, Page page) { List<MemberVO> list = memberMapper.queryPage(memberQueryDTO, page); page.setRecords(list); return page; } } src/main/java/com/mzl/flower/web/member/MemberController.java
@@ -1,12 +1,13 @@ package com.mzl.flower.web.member; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.config.security.SecurityUtils; import com.mzl.flower.dto.request.menber.*; import com.mzl.flower.dto.response.member.MemberGrowthRecordVO; import com.mzl.flower.dto.response.member.MemberVO; import com.mzl.flower.entity.menber.Member; import com.mzl.flower.entity.menber.MemberGrowthRecord; import com.mzl.flower.service.menber.MemberGrowthRecordService; @@ -16,9 +17,10 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull; import javax.validation.constraints.NotNull; /** * @author fanghaowei @@ -39,21 +41,18 @@ @PostMapping("/member/list") @ApiOperation(value = "会员列表", httpMethod = "POST") public ResponseEntity<ReturnDataDTO> getMemberList(Page page, MemberQueryDTO dto) { QueryWrapper<Member> queryWrapper = new QueryWrapper(); queryWrapper.lambda().eq(isNotNull(dto.getLevelName()), Member::getName, dto.getLevelName()); page = (Page) memberService.page(page, queryWrapper); return returnData(R.SUCCESS.getCode(), page); public ResponseEntity<ReturnDataDTO<Page<MemberVO>>> getMemberList(Page page, MemberQueryDTO dto) { return returnData(R.SUCCESS.getCode(), memberService.queryPage(dto, page)); } @DeleteMapping(value = "/member/delete/{id}") @ApiOperation(value = "删除会员 ", httpMethod = "DELETE", notes = "ID") public ResponseEntity delete(@PathVariable("id") Long id) { @GetMapping(value = "/member/delete") @ApiOperation(value = "删除会员 ", httpMethod = "GET", notes = "ID") public ResponseEntity delete(@NotNull(message = "id不能为空") Long id) { memberService.deleteMember(String.valueOf(id)); return returnData(R.SUCCESS.getCode(), null); } @PostMapping(value = "/member/save") @PostMapping(value = "/member/new") @ApiOperation(value = "保存会员", httpMethod = "POST") public ResponseEntity insert(@RequestBody MemberDTO memberDTO) { Member member = new Member(); @@ -63,35 +62,28 @@ return returnData(R.SUCCESS.getCode(), null); } @PutMapping(value = "/member/update") @ApiOperation(value = "更新会员", httpMethod = "PUT") public ResponseEntity update(@RequestBody MemberDTO memberDTO) { @PostMapping(value = "/member/edit") @ApiOperation(value = "更新会员", httpMethod = "POST") public ResponseEntity update(@Validated @RequestBody MemberDTO memberDTO) { memberService.updateMember(memberDTO); return returnData(R.SUCCESS.getCode(), null); } @PostMapping("/memberGrowthRecord/list") @ApiOperation(value = "会员记录列表", httpMethod = "POST") public ResponseEntity<ReturnDataDTO> getMemberRecordList(Page page, MemberRecordQueryDTO dto) { QueryWrapper<MemberGrowthRecord> queryWrapper = new QueryWrapper(); queryWrapper.lambda().eq(isNotNull(dto.getType()), MemberGrowthRecord::getType, dto.getType()) .eq(isNotNull(dto.getSource()), MemberGrowthRecord::getSource, dto.getSource()) .ge(isNotNull(dto.getStartRecordDate()), MemberGrowthRecord::getRecordDate, dto.getStartRecordDate()) .le(isNotNull(dto.getEndRecordDate()), MemberGrowthRecord::getRecordDate, dto.getEndRecordDate()); page = (Page) memberGrowthRecordService.page(page, queryWrapper); return returnData(R.SUCCESS.getCode(), page); public ResponseEntity<ReturnDataDTO<Page<MemberGrowthRecordVO>>> getMemberRecordList(Page page, MemberRecordQueryDTO dto) { return returnData(R.SUCCESS.getCode(), memberGrowthRecordService.queryPage(dto, page)); } @DeleteMapping(value = "/memberGrowthRecord/delete/{id}") @ApiOperation(value = "删除会员记录 ", httpMethod = "DELETE", notes = "ID") public ResponseEntity deleteGrowthRecord(@PathVariable("id") Long id) { @GetMapping(value = "/memberGrowthRecord/delete") @ApiOperation(value = "删除会员记录 ", httpMethod = "GET", notes = "ID") public ResponseEntity deleteGrowthRecord(@NotNull(message = "id不能为空") Long id) { memberGrowthRecordService.deleteMemberGrowthRecord(String.valueOf(id)); return returnData(R.SUCCESS.getCode(), null); } @PostMapping(value = "/memberGrowthRecord/save") @PostMapping(value = "/memberGrowthRecord/new") @ApiOperation(value = "保存会员记录", httpMethod = "POST") public ResponseEntity insertGrowthRecord(@RequestBody MemberGrowthRecordDTO memberGrowthRecordDTO) { MemberGrowthRecord memberGrowthRecord = new MemberGrowthRecord(); @@ -101,9 +93,9 @@ return returnData(R.SUCCESS.getCode(), null); } @PutMapping(value = "/memberGrowthRecord/update") @ApiOperation(value = "更新会员记录", httpMethod = "PUT") public ResponseEntity updateGrowthRecord(@RequestBody MemberGrowthRecordDTO memberGrowthRecordDTO) { @PostMapping(value = "/memberGrowthRecord/edit") @ApiOperation(value = "更新会员记录", httpMethod = "POST") public ResponseEntity updateGrowthRecord(@Validated @RequestBody MemberGrowthRecordDTO memberGrowthRecordDTO) { memberGrowthRecordService.updateMemberGrowthRecord(memberGrowthRecordDTO); return returnData(R.SUCCESS.getCode(), null); } src/main/resources/mapper/member/MemberGrowthRecordMapper.xml
对比新文件 @@ -0,0 +1,25 @@ <?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.member.MemberGrowthRecordMapper"> <select id="queryPage" resultType="com.mzl.flower.dto.response.member.MemberGrowthRecordVO"> select * from t_member_growth_record t where t.deleted= 0 <if test="dto.type != null and dto.type != ''"> and t.type = #{dto.type} </if> <if test="dto.source != null and dto.source != ''"> and t.source = #{dto.source} </if> <if test="dto.startRecordDate!=null "> <![CDATA[ AND t.create_time >= #{dto.startRecordDate} ]]> </if> <if test="dto.endRecordDate!=null "> <![CDATA[ AND t.create_time <= #{dto.endRecordDate} ]]> </if> order by t.update_time desc </select> </mapper> src/main/resources/mapper/member/MemberMapper.xml
@@ -2,4 +2,11 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.mzl.flower.mapper.member.MemberMapper"> <select id="queryPage" resultType="com.mzl.flower.dto.response.member.MemberVO"> select * from t_member t where t.deleted= 0 <if test="dto.name != null and dto.name != ''"> and t.name like concat('%', #{dto.name}, '%') </if> order by t.update_time desc </select> </mapper>