src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/request/menber/MemberQueryDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/entity/menber/Member.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/mapper/member/MemberMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/menber/MemberService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/vo/member/MemberVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/web/member/MemberController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/member/MemberMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java
对比新文件 @@ -0,0 +1,39 @@ package com.mzl.flower.dto.request.menber; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data public class MemberDTO { @ApiModelProperty(value = "会员等级id") private Long id; @ApiModelProperty("会员等级名称") private String levelName; @ApiModelProperty("该等级所需的最低成长值") private int minGrowthValue; @ApiModelProperty("该等级所需的最高成长值") private int maxGrowthValue; @ApiModelProperty("会员折扣类型(百分比、固定金额)") private int discountType; @ApiModelProperty("会员折扣百分比") private BigDecimal discountRatio; @ApiModelProperty("会员折扣固定金额") private BigDecimal discountAmount; @ApiModelProperty("消费金额(元)") private int consumptionAmount; @ApiModelProperty("已消费产生的成长值") private int upGrowthValue; @ApiModelProperty("未消费产生的下降值") private int downGrowthValue; } src/main/java/com/mzl/flower/dto/request/menber/MemberQueryDTO.java
对比新文件 @@ -0,0 +1,10 @@ package com.mzl.flower.dto.request.menber; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class MemberQueryDTO { @ApiModelProperty(value = "会员等级") private String levelName; } src/main/java/com/mzl/flower/entity/menber/Member.java
对比新文件 @@ -0,0 +1,47 @@ package com.mzl.flower.entity.menber; import com.baomidou.mybatisplus.annotation.TableName; import com.mzl.flower.base.BaseAutoEntity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; /** * @author fanghaowei * @version version2.0 * @className Member * @date 2024/8/26 * @description 会员管理功能实体类 */ @Data @TableName("t_member") public class Member extends BaseAutoEntity { @ApiModelProperty("会员等级名称") private String levelName; @ApiModelProperty("该等级所需的最低成长值") private int minGrowthValue; @ApiModelProperty("该等级所需的最高成长值") private int maxGrowthValue; @ApiModelProperty("会员折扣类型(百分比、固定金额)") private int discountType; @ApiModelProperty("会员折扣百分比") private BigDecimal discountRatio; @ApiModelProperty("会员折扣固定金额") private BigDecimal discountAmount; @ApiModelProperty("消费金额(元)") private int consumptionAmount; @ApiModelProperty("已消费产生的成长值") private int upGrowthValue; @ApiModelProperty("未消费产生的下降值") private int downGrowthValue; } src/main/java/com/mzl/flower/mapper/member/MemberMapper.java
对比新文件 @@ -0,0 +1,25 @@ package com.mzl.flower.mapper.member; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mzl.flower.entity.menber.Member; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; /** * @author fanghaowei * @version version2.0 * @className MemberMapper * @date 2024/8/26 * @description 会员管理功能mapper */ @SuppressWarnings("ALL") @Repository public interface MemberMapper extends BaseMapper<Member> { @SuppressWarnings("AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc") @Select("select * from t_member where level_name = #{levelName} and deleted = '0' limit 1") Member getMemberByName(@Param("levelName") String levelName); } src/main/java/com/mzl/flower/service/menber/MemberService.java
对比新文件 @@ -0,0 +1,15 @@ package com.mzl.flower.service.menber; import com.baomidou.mybatisplus.extension.service.IService; import com.mzl.flower.dto.request.menber.MemberDTO; import com.mzl.flower.entity.menber.Member; public interface MemberService extends IService<Member> { void saveMember(Member member); void updateMember(MemberDTO memberDTO); void deleteMember(String id); } src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java
对比新文件 @@ -0,0 +1,73 @@ package com.mzl.flower.service.menber.impl; 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.entity.menber.Member; import com.mzl.flower.mapper.member.MemberMapper; import com.mzl.flower.service.menber.MemberService; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; /** * @author fanghaowei * @version version2.0 * @className MemberServiceImpl * @date 2024/8/26 * @description 会员管理功能逻辑层 */ @Service @RequiredArgsConstructor public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements MemberService { private final MemberMapper memberMapper; @Override public void saveMember(Member member) { if (StringUtils.isEmpty(member.getLevelName())) { throw new ValidationException("会员等级名称不能为空"); } //保存时判断是否有重复的名称 Member memberByName = memberMapper.getMemberByName(member.getLevelName()); if (!ObjectUtils.isEmpty(memberByName)) { throw new ValidationException("会员等级名称重复"); } memberMapper.insert(member); } @Override public void updateMember(MemberDTO memberDTO) { Member memberInfo = memberMapper.selectById(memberDTO.getId()); if (memberInfo == null) { throw new ValidationException("会员等级信息不存在"); } if (!memberInfo.getCreateBy().equals(SecurityUtils.getUserId())) { throw new ValidationException("无权限修改"); } Member memberTemp = memberMapper.getMemberByName(memberDTO.getLevelName()); //判断如果按照会员等级查询到得名称和当前得Id不一致,不能修改。 if (!ObjectUtils.isEmpty(memberTemp)) { if (memberTemp.getLevelName().equals(memberDTO.getLevelName())) { throw new ValidationException("已存在会员等级名称,无法修改"); } } BeanUtils.copyProperties(memberDTO,memberInfo); memberInfo.update(SecurityUtils.getUserId()); memberMapper.updateById(memberInfo); } @Override public void deleteMember(String id) { Member member = memberMapper.selectById(id); if (member == null) { throw new ValidationException("会员等级信息不存在"); } // TODO: 2024/8/26 如果当前会员绑定了优惠券,不能删除,等优惠券逻辑完成。 memberMapper.deleteById(id); } } src/main/java/com/mzl/flower/vo/member/MemberVO.java
对比新文件 @@ -0,0 +1,4 @@ package com.mzl.flower.vo.member; public class MemberVO { } src/main/java/com/mzl/flower/web/member/MemberController.java
对比新文件 @@ -0,0 +1,70 @@ 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.MemberDTO; import com.mzl.flower.dto.request.menber.MemberQueryDTO; import com.mzl.flower.entity.menber.Member; import com.mzl.flower.service.menber.MemberService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import static com.baomidou.mybatisplus.core.toolkit.ObjectUtils.isNotNull; /** * @author fanghaowei * @version version2.0 * @className MemberController * @date 2024/8/26 * @description 会员管理功能开发 */ @Api(value = "会员管理", tags = "会员管理") @RestController @RequestMapping("/api") @RequiredArgsConstructor public class MemberController extends BaseController { private final MemberService memberService; @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::getLevelName, dto.getLevelName()); page = (Page) memberService.page(page, queryWrapper); return returnData(R.SUCCESS.getCode(), page); } @DeleteMapping(value = "/member/delete/{id}") @ApiOperation(value = "删除会员 ", httpMethod = "DELETE", notes = "ID") public ResponseEntity delete(@PathVariable("id") Long id) { memberService.deleteMember(String.valueOf(id)); return returnData(R.SUCCESS.getCode(), null); } @PostMapping(value = "/member/save") @ApiOperation(value = "保存会员", httpMethod = "POST") public ResponseEntity insert(@RequestBody MemberDTO memberDTO) { Member member = new Member(); BeanUtils.copyProperties(memberDTO, member); member.create(SecurityUtils.getUserId()); memberService.saveMember(member); return returnData(R.SUCCESS.getCode(), null); } @PutMapping(value = "/member/update") @ApiOperation(value = "更新会员", httpMethod = "PUT") public ResponseEntity update(@RequestBody MemberDTO memberDTO) { memberService.updateMember(memberDTO); return returnData(R.SUCCESS.getCode(), null); } } src/main/resources/mapper/member/MemberMapper.xml
对比新文件 @@ -0,0 +1,5 @@ <?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.MemberMapper"> </mapper>