package com.dsh.communityWorldCup.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.dsh.communityWorldCup.entity.WorldCup;
|
import com.dsh.communityWorldCup.entity.WorldCupPayment;
|
import com.dsh.communityWorldCup.entity.WorldCupPaymentParticipant;
|
import com.dsh.communityWorldCup.feignclient.account.StudentClient;
|
import com.dsh.communityWorldCup.feignclient.account.model.TStudent;
|
import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient;
|
import com.dsh.communityWorldCup.feignclient.competition.model.Participant;
|
import com.dsh.communityWorldCup.mapper.WorldCupPaymentParticipantMapper;
|
import com.dsh.communityWorldCup.model.MyWorldCupInfo;
|
import com.dsh.communityWorldCup.model.MyWorldCupList;
|
import com.dsh.communityWorldCup.model.WorldCupListVo;
|
import com.dsh.communityWorldCup.model.*;
|
import com.dsh.communityWorldCup.service.IWorldCupPaymentParticipantService;
|
import com.dsh.communityWorldCup.service.IWorldCupPaymentService;
|
import com.dsh.communityWorldCup.service.IWorldCupService;
|
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 2024/2/19 11:07
|
*/
|
@Service
|
public class WorldCupPaymentParticipantServiceImpl extends ServiceImpl<WorldCupPaymentParticipantMapper, WorldCupPaymentParticipant> implements IWorldCupPaymentParticipantService {
|
|
@Autowired
|
private IWorldCupPaymentService worldCupPaymentService;
|
|
@Resource
|
private StudentClient studentClient;
|
|
@Resource
|
private ParticipantClient participantClient;
|
|
@Autowired
|
private IWorldCupService worldCupService;
|
|
|
|
|
/**
|
* 获取报名数据
|
* @param worldCupId
|
* @param participantType
|
* @param participantId
|
* @return
|
*/
|
@Override
|
public WorldCupPaymentParticipant getWorldCupPaymentParticipant(Integer worldCupId, Integer participantType, Integer participantId) {
|
return this.baseMapper.getWorldCupPaymentParticipant(worldCupId, participantType, participantId);
|
}
|
|
|
/**
|
* 获取社区世界杯我的报名列表
|
* @param myWorldCupList
|
* @return
|
*/
|
@Override
|
public List<WorldCupListVo> getMyWorldCupList(MyWorldCupList myWorldCupList) {
|
int pageNo = (myWorldCupList.getPageNo() - 1) * myWorldCupList.getPageSize();
|
myWorldCupList.setPageNo(pageNo);
|
myWorldCupList.setIsStudent(myWorldCupList.getIsStudent() == 0 ? 2 : 1);
|
return this.baseMapper.getMyWorldCupList(myWorldCupList);
|
}
|
|
|
/**
|
* 获取已报名的世界杯详情
|
* @param id 社区世界杯支付对应的参与者记录id
|
* @return
|
*/
|
@Override
|
public MyWorldCupInfo getMyWorldCupInfo(String id) {
|
WorldCupPaymentParticipant worldCupPaymentParticipant = this.getById(id);
|
Integer worldCupId = worldCupPaymentParticipant.getWorldCupId();
|
WorldCupPayment worldCupPayment = worldCupPaymentService.getById(worldCupPaymentParticipant.getWorldCupPaymentId());
|
WorldCupInfo worldCupInfo = worldCupService.getWorldCupInfo(worldCupId, null, null);
|
WorldCup worldCup = worldCupService.getById(worldCupId);
|
MyWorldCupInfo myWorldCupInfo = new MyWorldCupInfo();
|
BeanUtils.copyProperties(worldCupInfo, myWorldCupInfo);
|
myWorldCupInfo.setUnitPrice(worldCupPayment.getUnitPrice().doubleValue());
|
myWorldCupInfo.setExpense(worldCupPayment.getAmount().doubleValue());
|
myWorldCupInfo.setStatus(worldCup.getStatus());
|
myWorldCupInfo.setRevocable(1);
|
//开始前一天不能取消
|
if(worldCup.getStartTime().getTime() < System.currentTimeMillis() + 86400000L){
|
myWorldCupInfo.setRevocable(0);
|
}
|
List<ParticipantVo> datas = new ArrayList<>();
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
|
List<WorldCupPaymentParticipant> list1 = this.list(new QueryWrapper<WorldCupPaymentParticipant>().eq("worldCupPaymentId", worldCupPaymentParticipant.getWorldCupPaymentId()));
|
for (WorldCupPaymentParticipant wcpp : list1) {
|
Integer participantType = wcpp.getParticipantType();
|
Integer participantId = wcpp.getParticipantId();
|
ParticipantVo participantVo = new ParticipantVo();
|
//学员
|
if(1 == participantType){
|
TStudent tStudent = studentClient.queryById(participantId);
|
participantVo.setId(tStudent.getId());
|
participantVo.setName(tStudent.getName());
|
int age = Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(tStudent.getBirthday()));
|
participantVo.setAge(age);
|
participantVo.setIdcard(tStudent.getIdCard());
|
participantVo.setPhone(tStudent.getPhone());
|
participantVo.setIsStudent(1);
|
datas.add(participantVo);
|
}
|
//参赛人员
|
if(2 == participantType){
|
Participant participant = participantClient.getParticipant(participantId);
|
participantVo.setId(participant.getId());
|
participantVo.setName(participant.getName());
|
int age = Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(participant.getBirthday()));
|
participantVo.setAge(age);
|
participantVo.setIdcard(participant.getIdcard());
|
participantVo.setPhone(participant.getPhone());
|
participantVo.setIsStudent(0);
|
datas.add(participantVo);
|
}
|
}
|
|
myWorldCupInfo.setParticipants(datas);
|
return myWorldCupInfo;
|
}
|
|
|
/**
|
* 获取已报过名的参赛人员
|
* @param uid 当前用户
|
* @return
|
*/
|
@Override
|
public List<ParticipantVo> getParticipant(Integer uid) {
|
List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("appUserId", uid)
|
.eq("payStatus", 2).eq("state", 1));
|
List<Long> collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList());
|
List<ParticipantVo> datas = new ArrayList<>();
|
Set<Integer> csry = new HashSet<>();
|
Set<Integer> xy = new HashSet<>();
|
if(collect.size() > 0){
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
|
List<WorldCupPaymentParticipant> list1 = this.list(new QueryWrapper<WorldCupPaymentParticipant>().in("worldCupPaymentId", collect));
|
for (WorldCupPaymentParticipant worldCupPaymentParticipant : list1) {
|
Integer participantType = worldCupPaymentParticipant.getParticipantType();
|
Integer participantId = worldCupPaymentParticipant.getParticipantId();
|
ParticipantVo participantVo = new ParticipantVo();
|
//学员
|
if(1 == participantType && !xy.contains(participantId)){
|
TStudent tStudent = studentClient.queryById(participantId);
|
participantVo.setId(tStudent.getId());
|
participantVo.setName(tStudent.getName());
|
int age = Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(tStudent.getBirthday()));
|
participantVo.setAge(age);
|
participantVo.setIdcard(tStudent.getIdCard());
|
participantVo.setPhone(tStudent.getPhone());
|
participantVo.setIsStudent(1);
|
datas.add(participantVo);
|
}
|
//参赛人员
|
if(2 == participantType && !csry.contains(participantId)){
|
Participant participant = participantClient.getParticipant(participantId);
|
participantVo.setId(participant.getId());
|
participantVo.setName(participant.getName());
|
int age = Integer.valueOf(sdf.format(new Date())) - Integer.valueOf(sdf.format(participant.getBirthday()));
|
participantVo.setAge(age);
|
participantVo.setIdcard(participant.getIdcard());
|
participantVo.setPhone(participant.getPhone());
|
participantVo.setIsStudent(0);
|
datas.add(participantVo);
|
}
|
}
|
}
|
return datas;
|
}
|
}
|