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; 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 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 targetMemberDTOList = new ArrayList<>(); //查询当前人员的成长值 最少是0 Integer sumGrowth = memberGrowthRecordMapper.getSumGrowthByUsertId(userId); userGrowthRecordDTO.setCurrentGrowthValue(sumGrowth); //查询当前会员等级 Member member = memberMapper.getMemberByGrowthValue(sumGrowth); userGrowthRecordDTO.setCurrentMemberLevel(member.getName()); //查询比当前等级高的会员等级信息 List 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; } @Override public Page queryPage(MemberRecordQueryDTO memberRecordQueryDTO, Page page) { List list = memberGrowthRecordMapper.queryPage(memberRecordQueryDTO, page); page.setRecords(list); return page; } }