cloudroam
2024-08-29 9891487fc5a112f180eab34caef9788bae2e3acf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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.MemberGrowthRecordDTO;
import com.mzl.flower.dto.request.menber.TargetMemberDTO;
import com.mzl.flower.dto.request.menber.UserGrowthRecordDTO;
import com.mzl.flower.entity.menber.Member;
import com.mzl.flower.entity.menber.MemberGrowthRecord;
import com.mzl.flower.mapper.member.MemberGrowthRecordMapper;
import com.mzl.flower.mapper.member.MemberMapper;
import com.mzl.flower.service.menber.MemberGrowthRecordService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
/**
 * @author fanghaowei
 * @version version2.0
 * @className MemberGrowthRecordServiceImpl
 * @date 2024/8/26
 * @description 会员记录功能逻辑层
 */
@Service
@Transactional
@RequiredArgsConstructor
public class MemberGrowthRecordServiceImpl extends ServiceImpl<MemberGrowthRecordMapper, MemberGrowthRecord> implements MemberGrowthRecordService {
 
    private final MemberGrowthRecordMapper memberGrowthRecordMapper;
 
    private final MemberMapper memberMapper;
 
    @Override
    public void saveMemberGrowthRecord(MemberGrowthRecord memberGrowthRecord) {
        memberGrowthRecord.setRecordDate(new Date());
        memberGrowthRecordMapper.insert(memberGrowthRecord);
    }
 
    @Override
    public void updateMemberGrowthRecord(MemberGrowthRecordDTO memberGrowthRecordDTO) {
        MemberGrowthRecord memberGrowthRecord = memberGrowthRecordMapper.selectById(memberGrowthRecordDTO.getId());
        if (memberGrowthRecord == null) {
            throw new ValidationException("成长记录信息不存在");
        }
        BeanUtils.copyProperties(memberGrowthRecordDTO, memberGrowthRecord);
        memberGrowthRecord.update(SecurityUtils.getUserId());
        memberGrowthRecordMapper.updateById(memberGrowthRecord);
    }
 
    @Override
    public void deleteMemberGrowthRecord(String id) {
        MemberGrowthRecord memberGrowthRecord = memberGrowthRecordMapper.selectById(id);
        if (memberGrowthRecord == null) {
            throw new ValidationException("成长记录信息不存在");
        }
        memberGrowthRecordMapper.deleteById(id);
    }
 
    @Override
    public UserGrowthRecordDTO getInfoByUserId(String userId) {
        UserGrowthRecordDTO userGrowthRecordDTO = new UserGrowthRecordDTO();
        List<TargetMemberDTO> targetMemberDTOList = new ArrayList<>();
        //查询当前人员的成长值 最少是0
        Integer sumGrowth = memberGrowthRecordMapper.getSumGrowthByUsertId(userId);
        userGrowthRecordDTO.setCurrentGrowthValue(sumGrowth);
        //查询当前会员等级
        Member member = memberMapper.getMemberByGrowthValue(sumGrowth);
        userGrowthRecordDTO.setCurrentMemberLevel(member.getName());
        //查询比当前等级高的会员等级信息
        List<Member> memberList = memberMapper.getgtMembersByGrowthValue(sumGrowth);
        if (!CollectionUtils.isEmpty(memberList)) {
            memberList.forEach(m -> {
                TargetMemberDTO targetMemberDTO = new TargetMemberDTO();
                targetMemberDTO.setTargetMemberLevel(m.getName());
                targetMemberDTO.setTargetStartPoint(m.getStartPoint());
                targetMemberDTO.setTargetGap(m.getStartPoint() - sumGrowth);
                targetMemberDTO.setTargetDiscountAmount(m.getDiscountAmount());
                targetMemberDTOList.add(targetMemberDTO);
            });
        }
        userGrowthRecordDTO.setTargetMemberInfos(targetMemberDTOList);
 
        return userGrowthRecordDTO;
    }
}