cloudroam
2024-08-26 0eace7110d0c6875807ccebb281a52962ae6d6fb
add:会员管理
已添加9个文件
288 ■■■■■ 文件已修改
src/main/java/com/mzl/flower/dto/request/menber/MemberDTO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/dto/request/menber/MemberQueryDTO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/entity/menber/Member.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/mapper/member/MemberMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/menber/MemberService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/service/menber/impl/MemberServiceImpl.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/vo/member/MemberVO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/mzl/flower/web/member/MemberController.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/member/MemberMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | 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>