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.StudentClient;
|
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 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<ParticipantMapper, Participant> implements IParticipantService {
|
|
@Resource
|
private CoursePackagePaymentClient coursePackagePaymentClient;
|
|
@Resource
|
private StudentClient studentClient;
|
|
@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<Participant>().eq("appUserId", uid).eq("phone", addParticipant.getPhone()).eq("state", 1));
|
if (null != one) {
|
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());
|
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);
|
return ResultUtil.success();
|
}
|
|
|
/**
|
* 获取参赛人员列表
|
*
|
* @param uid
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public List<ParticipantVo> queryParticipantList(Integer uid) throws Exception {
|
//拿到学员列表
|
List<TStudent> tStudents = studentClient.queryStudentList(uid);
|
|
List<ParticipantVo> listVo1 = new ArrayList<>();
|
|
//利用HashMap去重身份证
|
LinkedHashMap<String, ParticipantVo> linkedHashMap = new LinkedHashMap<>();
|
SimpleDateFormat sdf_year = new SimpleDateFormat("yyyy");
|
|
|
//查出临时表里的数据,也去重
|
List<Participant> list = this.list(new QueryWrapper<Participant>().eq("appUserId", uid).eq("state", 1));
|
List<ParticipantVo> listVo = new ArrayList<>();
|
for (Participant participant : list) {
|
ParticipantVo participantVo = new ParticipantVo();
|
participantVo.setId(participant.getId());
|
participantVo.setName(participant.getName());
|
participantVo.setIdcard(participant.getIdcard());
|
Integer age = Integer.valueOf(sdf_year.format(new Date())) - Integer.valueOf(sdf_year.format(participant.getBirthday()));
|
participantVo.setAge(age);
|
Student student = studentClient.queryStudentByPhone(participant.getPhone() == null ? "0" : participant.getPhone());
|
|
//设为不是学员
|
participantVo.setIsStudent(0);
|
|
if (null != student) {
|
Integer integer = coursePackagePaymentClient.queryResidueClassHour(student.getId());
|
participantVo.setResidueClassHour(integer);
|
participantVo.setIsStudent(1);
|
|
} else {
|
participantVo.setResidueClassHour(0);
|
}
|
participantVo.setPhone(participant.getPhone());
|
participantVo.setHeight(participant.getHeight());
|
participantVo.setWeight(participant.getWeight());
|
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);
|
// listVo.add(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());
|
participantVo.setHeight(tStudent.getHeight().intValue());
|
participantVo.setWeight(tStudent.getWeight());
|
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());
|
|
|
// List<ParticipantVo> listVo1 = new ArrayList<>(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<Participant>().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());
|
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) throws Exception {
|
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<Participant>().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<CompetitionUser> getPeopleFromId(Page<UserCompetition> participantPage, Integer id, Integer state) {
|
return this.baseMapper.getPeopleFromId(participantPage, id, state);
|
}
|
@Override
|
public Page<CompetitionUser> getPeopleFromId1(long offset, long limit, Integer id, Integer state) {
|
List<UserCompetition> peopleFromId1 = this.baseMapper.getPeopleFromId1(id, state, offset, limit);
|
int count = this.baseMapper.getPeopleFromIdCount(id, state);
|
List<CompetitionUser> 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){
|
competitionUser.setName(participant.getName());
|
competitionUser.setSex(participant.getGender());
|
competitionUser.setPhone(participant.getPhone());
|
competitionUser.setIdCard(participant.getIdcard());
|
}else{
|
TStudent tStudent = studentClient.queryById(userCompetition.getParticipantId());
|
competitionUser.setName(tStudent.getName());
|
competitionUser.setSex(tStudent.getSex());
|
competitionUser.setPhone(tStudent.getPhone());
|
competitionUser.setIdCard(tStudent.getIdCard());
|
}
|
if(null != paymentCompetition){
|
competitionUser.setState(paymentCompetition.getPayStatus());
|
}
|
list.add(competitionUser);
|
}
|
Page<CompetitionUser> page = new Page<>();
|
page.setRecords(list);
|
page.setTotal(count);
|
return page;
|
}
|
|
@Override
|
public List<CompetitionUser> getPeoples(Integer id, Integer state) {
|
return this.baseMapper.getPeoples(id, state);
|
}
|
}
|