package com.dsh.competition.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsh.competition.entity.Participant; import com.dsh.competition.entity.PaymentCompetition; import com.dsh.competition.entity.UserCompetition; import com.dsh.competition.feignclient.account.AppUserClient; import com.dsh.competition.feignclient.account.StudentClient; import com.dsh.competition.feignclient.account.model.AppUser; import com.dsh.competition.feignclient.account.model.Student; import com.dsh.competition.feignclient.account.model.TStudent; import com.dsh.competition.feignclient.course.CoursePackagePaymentClient; import com.dsh.competition.feignclient.model.CompetitionUser; import com.dsh.competition.mapper.ParticipantMapper; import com.dsh.competition.model.AddParticipant; import com.dsh.competition.model.EditParticipant; import com.dsh.competition.model.ParticipantVo; import com.dsh.competition.model.SaveParticipant; import com.dsh.competition.service.IParticipantService; import com.dsh.competition.service.IPaymentCompetitionService; import com.dsh.competition.service.UserCompetitionService; import com.dsh.competition.util.CodeGenerateUtils; import com.dsh.competition.util.JuHeUtil; import com.dsh.competition.util.ResultUtil; import com.dsh.competition.util.ToolUtil; import io.undertow.util.DateUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * @author zhibing.pu * @date 2023/7/6 16:51 */ @Service public class ParticipantServiceImpl extends ServiceImpl implements IParticipantService { @Resource private CoursePackagePaymentClient coursePackagePaymentClient; @Resource private StudentClient studentClient; @Resource private AppUserClient appUserClient; @Autowired private UserCompetitionService userCompetitionService; @Autowired private IPaymentCompetitionService paymentCompetitionService; /** * 添加参赛人员信息 * * @param uid * @param addParticipant * @return * @throws Exception */ @Override public ResultUtil addParticipant(Integer uid, AddParticipant addParticipant) throws Exception { Participant one = this.getOne(new QueryWrapper().eq("appUserId", uid).eq("phone", addParticipant.getPhone()).eq("state", 1)); if (null != one) { return ResultUtil.error("电话号码重复"); } // Participant two = this.getOne(new QueryWrapper().eq("appUserId", uid).eq("idcard", addParticipant.getIdcard()).eq("state", 1)); // if (null != two) { // return ResultUtil.error("身份证号码重复"); // } if (ToolUtil.isNotEmpty(addParticipant.getName()) && ToolUtil.isNotEmpty(addParticipant.getIdcard())) { Boolean aBoolean = JuHeUtil.idcardAuthentication(addParticipant.getIdcard(), addParticipant.getName()); if (!aBoolean) { return ResultUtil.error("身份证和姓名不匹配"); } } Participant participant = new Participant(); BeanUtils.copyProperties(addParticipant, participant); participant.setHeight(Double.valueOf(addParticipant.getHeight()).intValue()); participant.setWeight(addParticipant.getWeight()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (ToolUtil.isNotEmpty(addParticipant.getBirthday())) { Date parse = sdf.parse(addParticipant.getBirthday()); participant.setBirthday(parse); } String s = CodeGenerateUtils.generateOrderSn(); String substring = s.substring(1); participant.setId(Integer.valueOf(substring)); participant.setAppUserId(uid); participant.setState(1); participant.setInsertTime(new Date()); this.save(participant); TStudent tStudent = new TStudent(); tStudent.setAppUserId(uid); tStudent.setName(addParticipant.getName()); tStudent.setPhone(addParticipant.getPhone()); if (ToolUtil.isNotEmpty(addParticipant.getBirthday())){ Date parse = sdf.parse(addParticipant.getBirthday()); tStudent.setBirthday(parse); }else{ String birthDateStr = addParticipant.getIdcard().substring(6, 14); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); Date parse = dateFormat.parse(birthDateStr); tStudent.setBirthday(parse); } tStudent.setHeight(Double.valueOf(addParticipant.getHeight())); tStudent.setWeight(addParticipant.getWeight()); tStudent.setSex(addParticipant.getGender()); tStudent.setIdCard(addParticipant.getIdcard()); tStudent.setState(1); tStudent.setInsertTime(new Date()); tStudent.setHeadImg(addParticipant.getHeadImg()); tStudent.setIsDefault(2); studentClient.addStudent(tStudent); return ResultUtil.success(); } /** * 获取参赛人员列表 * * @param uid * @return * @throws Exception */ @Override public List queryParticipantList(Integer uid) throws Exception { //拿到学员列表 List tStudents = studentClient.queryStudentList(uid); List listVo1 = new ArrayList<>(); //利用HashMap去重身份证 LinkedHashMap linkedHashMap = new LinkedHashMap<>(); SimpleDateFormat sdf_year = new SimpleDateFormat("yyyy"); //查出临时表里的数据,也去重 List list = this.list(new QueryWrapper().eq("appUserId", uid).eq("state", 1)); List listVo = new ArrayList<>(); // for (Participant participant : list) { // ParticipantVo participantVo = new ParticipantVo(); // participantVo.setId(participant.getId()); // participantVo.setName(participant.getName()); // participantVo.setIdcard(participant.getIdcard()); // if (null != participant.getBirthday()){ // Integer age = Integer.valueOf(sdf_year.format(new Date())) - Integer.valueOf(sdf_year.format(participant.getBirthday())); // participantVo.setAge(age); // }else{ // participantVo.setAge(18); // // } // Student student = null; // if(ToolUtil.isNotEmpty(participant.getPhone())){ // student = studentClient.queryStudentByPhone(participant.getPhone()); // } // //设为不是学员 // participantVo.setIsStudent(0); // // if (null != student) { // Integer integer = coursePackagePaymentClient.queryResidueClassHour(student.getId()); // participantVo.setResidueClassHour(integer); // } else { // participantVo.setResidueClassHour(0); // } // participantVo.setPhone(participant.getPhone()); // participantVo.setHeight(participant.getHeight()); // participantVo.setWeight(participant.getWeight()); // participantVo.setHeadImg(participant.getHeadImg()); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // if (null != participant.getBirthday()) { // String format = sdf.format(participant.getBirthday()); // participantVo.setBirthday(format); // } // participantVo.setGender(participant.getGender()); // if (participant.getIdcard() == null || participant.getIdcard().isEmpty()) { // listVo1.add(participantVo); // continue; // } // linkedHashMap.put(participant.getIdcard(), participantVo); // } for (TStudent tStudent : tStudents) { ParticipantVo participantVo = new ParticipantVo(); participantVo.setId(tStudent.getId()); participantVo.setName(tStudent.getName()); participantVo.setIdcard(tStudent.getIdCard()); Integer age = Integer.valueOf(sdf_year.format(new Date())) - Integer.valueOf(sdf_year.format(tStudent.getBirthday())); participantVo.setAge(age); Integer integer = coursePackagePaymentClient.queryResidueClassHour(tStudent.getId()); participantVo.setResidueClassHour(integer); participantVo.setPhone(tStudent.getPhone()); if (tStudent.getHeight()!=null){ participantVo.setHeight(tStudent.getHeight().intValue()); } participantVo.setWeight(tStudent.getWeight()); participantVo.setHeadImg(tStudent.getHeadImg()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); if (null != tStudent.getBirthday()) { String format = sdf.format(tStudent.getBirthday()); participantVo.setBirthday(format); } participantVo.setGender(tStudent.getSex()); participantVo.setIsStudent(1); if (tStudent.getIdCard() == null || tStudent.getIdCard().isEmpty()) { listVo1.add(participantVo); continue; } linkedHashMap.put(tStudent.getIdCard(), participantVo); } listVo1.addAll(linkedHashMap.values()); return listVo1; } /** * 修改参赛人员信息 * * @param editParticipant * @return * @throws Exception */ @Override public ResultUtil editParticipant(Integer uid, EditParticipant editParticipant) throws Exception { Participant one = this.getOne(new QueryWrapper().eq("appUserId", uid).eq("phone", editParticipant.getPhone()).eq("state", 1)); if (null != one && one.getId().compareTo(editParticipant.getId()) != 0) { return ResultUtil.error("电话号码重复"); } if (ToolUtil.isNotEmpty(editParticipant.getName()) && ToolUtil.isNotEmpty(editParticipant.getIdcard())) { Boolean aBoolean = JuHeUtil.idcardAuthentication(editParticipant.getIdcard(), editParticipant.getName()); if (!aBoolean) { return ResultUtil.error("身份证和姓名不匹配"); } } Participant participant = this.getById(editParticipant.getId()); participant.setHeight(editParticipant.getHeight()); participant.setWeight(editParticipant.getWeight()); participant.setPhone(editParticipant.getPhone()); participant.setGender(editParticipant.getGender()); participant.setIdcard(editParticipant.getIdcard()); participant.setName(editParticipant.getName()); participant.setHeadImg(editParticipant.getHeadImg()); if (ToolUtil.isNotEmpty(editParticipant.getBirthday())) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); participant.setBirthday(sdf.parse(editParticipant.getBirthday())); } this.updateById(participant); return ResultUtil.success(); } /** * 删除参赛人员信息 * * @param id * @return * @throws Exception */ @Override public ResultUtil delParticipant(Integer id, Integer isStudent) throws Exception { if(isStudent == 1){ TStudent tStudent = studentClient.queryById(id); tStudent.setState(3); studentClient.updateAppUser(tStudent); }else{ Participant participant = this.getById(id); participant.setState(3); this.updateById(participant); } return ResultUtil.success(); } @Override public void saveParticipant(SaveParticipant saveParticipant) throws Exception { Participant one = this.getOne(new QueryWrapper().eq("appUserId", saveParticipant.getAppUserId()).eq("phone", saveParticipant.getPhone()).eq("state", 1)); if (null != one) { if (ToolUtil.isNotEmpty(saveParticipant.getName())) { one.setName(saveParticipant.getName()); } if (ToolUtil.isNotEmpty(saveParticipant.getBirthday())) { one.setBirthday(saveParticipant.getBirthday()); } if (ToolUtil.isNotEmpty(saveParticipant.getGender())) { one.setGender(saveParticipant.getGender()); } if (ToolUtil.isNotEmpty(saveParticipant.getHeight())) { one.setHeight(saveParticipant.getHeight()); } if (ToolUtil.isNotEmpty(saveParticipant.getWeight())) { one.setWeight(saveParticipant.getWeight()); } if (ToolUtil.isNotEmpty(saveParticipant.getPhone())) { one.setPhone(saveParticipant.getPhone()); } if (ToolUtil.isNotEmpty(saveParticipant.getIdcard())) { one.setIdcard(saveParticipant.getIdcard()); } this.updateById(one); } else { one = new Participant(); BeanUtils.copyProperties(saveParticipant, one); one.setInsertTime(new Date()); this.save(one); } } @Override public Page getPeopleFromId(Page participantPage, Integer id, Integer state) { return this.baseMapper.getPeopleFromId(participantPage, id, state); } @Override public Page getPeopleFromId1(long offset, long limit, Integer id, Integer state) { List peopleFromId1 = this.baseMapper.getPeopleFromId1(id, state, offset, limit); int count = this.baseMapper.getPeopleFromIdCount(id, state); Map userMap = appUserClient.getAllUser().stream().collect(Collectors.toMap(AppUser::getId, e -> e)); List list = new ArrayList<>(); for (UserCompetition userCompetition : peopleFromId1) { Long paymentCompetitionId = userCompetition.getPaymentCompetitionId(); PaymentCompetition paymentCompetition = paymentCompetitionService.getById(paymentCompetitionId); Participant participant = this.getById(userCompetition.getParticipantId()); CompetitionUser competitionUser = new CompetitionUser(); if(null != participant){ AppUser appUser = userMap.get(participant.getAppUserId()); if (appUser!=null){ competitionUser.setAppUserId(appUser.getId()); competitionUser.setRegisterPhone(appUser.getPhone()); } competitionUser.setName(participant.getName()); competitionUser.setSex(participant.getGender()); competitionUser.setPhone(participant.getPhone()); competitionUser.setIdCard(participant.getIdcard()); }else{ TStudent tStudent = studentClient.queryById(userCompetition.getParticipantId()); AppUser appUser = userMap.get(tStudent.getAppUserId()); if (appUser!=null){ competitionUser.setAppUserId(appUser.getId()); competitionUser.setRegisterPhone(appUser.getPhone()); } competitionUser.setName(tStudent.getName()); competitionUser.setSex(tStudent.getSex()); competitionUser.setPhone(tStudent.getPhone()); competitionUser.setIdCard(tStudent.getIdCard()); } if(null != paymentCompetition){ competitionUser.setState(paymentCompetition.getPayStatus()); } competitionUser.setInsertTime(userCompetition.getInsertTime()); list.add(competitionUser); } Page page = new Page<>(); page.setRecords(list); page.setTotal(count); return page; } @Override public List getPeoples(Integer id, Integer state) { return this.baseMapper.getPeoples(id, state); } }