package com.dsh.account.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.dsh.account.entity.HonorRules;
|
import com.dsh.account.entity.StudentHonor;
|
import com.dsh.account.entity.TStudent;
|
import com.dsh.account.feignclient.communityWorldCup.WorldCupCompetitorClient;
|
import com.dsh.account.feignclient.competition.ParticipantClient;
|
import com.dsh.account.feignclient.course.CoursePackageClient;
|
import com.dsh.account.feignclient.course.model.CoursePackage;
|
import com.dsh.account.feignclient.other.HonorDeClient;
|
import com.dsh.account.feignclient.other.HonorRulesClient;
|
import com.dsh.account.feignclient.other.SiteClient;
|
import com.dsh.account.mapper.StudentHonorMapper;
|
import com.dsh.account.model.vo.medalDetail.GongVo;
|
import com.dsh.account.model.vo.medalDetail.StuMedalVo;
|
import com.dsh.account.service.StudentHonorService;
|
import com.dsh.account.service.TAppUserService;
|
import com.dsh.account.service.TStudentService;
|
import io.swagger.models.auth.In;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* <p>
|
* 学员-荣耀中间表 服务实现类
|
* </p>
|
*
|
* @author jqs
|
* @since 2023-07-04
|
*/
|
@Service
|
public class StudentHonorServiceImpl extends ServiceImpl<StudentHonorMapper, StudentHonor> implements StudentHonorService {
|
|
@Resource
|
private CoursePackageClient coursePackageClient;
|
|
@Resource
|
private ParticipantClient participantClient;
|
|
@Resource
|
private SiteClient siteClient;
|
|
@Autowired
|
private HonorDeClient honorDeClient;
|
|
@Autowired
|
private TStudentService studentService;
|
|
@Autowired
|
private HonorRulesClient honorRulesClient;
|
|
@Resource
|
private WorldCupCompetitorClient worldCupCompetitorClient;
|
|
|
|
|
|
|
@Override
|
public List<GongVo> queryStuOfMedalData(Integer stuId) {
|
List<GongVo> voList = new ArrayList<>();
|
// List<StudentHonor> studentHonors = this.baseMapper.selectList(new QueryWrapper<StudentHonor>()
|
// .eq("stuId", stuId));
|
//
|
TStudent student = studentService.getById(stuId);
|
//
|
//
|
// if (studentHonors.size() > 0){
|
// studentHonors.forEach( stuoHo -> {
|
// GongVo vo = new GongVo();
|
// vo.setMedalType(stuoHo.getHonorType());
|
// switch (stuoHo.getHonorType()){
|
// case 1:
|
// vo.setMedalName("俱乐部之星");
|
// break;
|
// case 2:
|
// vo.setMedalName("运动达人");
|
// break;
|
// case 3:
|
// vo.setMedalName("社区之王");
|
// break;
|
// case 4:
|
// vo.setMedalName("深度玩家");
|
// break;
|
// default:
|
// break;
|
// }
|
// voList.add(vo);
|
// });
|
// }
|
Integer count1 = coursePackageClient.counts(stuId);
|
if (count1 > 0) {
|
GongVo vo = new GongVo();
|
vo.setMedalType(1);
|
vo.setMedalName("俱乐部之星");
|
voList.add(vo);
|
}
|
|
Integer count2 = participantClient.counts(stuId);
|
if (count2 > 0) {
|
GongVo vo = new GongVo();
|
vo.setMedalType(2);
|
vo.setMedalName("运动达人");
|
voList.add(vo);
|
}
|
|
Integer count3 = siteClient.counts(student.getAppUserId());
|
if (count3 > 0) {
|
GongVo vo = new GongVo();
|
vo.setMedalType(3);
|
vo.setMedalName("社区之王");
|
voList.add(vo);
|
}
|
|
|
Integer count4 = coursePackageClient.counts1(stuId);
|
if (count4 > 0) {
|
GongVo vo = new GongVo();
|
vo.setMedalType(4);
|
vo.setMedalName("深度玩家");
|
voList.add(vo);
|
}
|
|
Integer count5 = worldCupCompetitorClient.winCount(stuId);
|
if (count5 > 0) {
|
GongVo vo = new GongVo();
|
vo.setMedalType(5);
|
vo.setMedalName("常胜将军");
|
voList.add(vo);
|
}
|
|
Integer count6 = worldCupCompetitorClient.count(stuId);
|
if (count6 > 0) {
|
GongVo vo = new GongVo();
|
vo.setMedalType(6);
|
vo.setMedalName("越战越勇");
|
voList.add(vo);
|
}
|
|
return voList;
|
}
|
|
|
@Override
|
public List<StuMedalVo> queryHonorDetails(Integer appUserId) {
|
List<StuMedalVo> list = new ArrayList<>();
|
List<StudentHonor> studentHonors = this.list(new QueryWrapper<StudentHonor>().eq("appUserId", appUserId));
|
for (StudentHonor studentHonor : studentHonors) {
|
StuMedalVo vo = new StuMedalVo();
|
vo.setMedalType(studentHonor.getHonorType());
|
switch (studentHonor.getHonorType()){
|
case 1:
|
vo.setMedalName("俱乐部之星");
|
break;
|
case 2:
|
vo.setMedalName("运动达人");
|
break;
|
case 3:
|
vo.setMedalName("社区之王");
|
break;
|
case 4:
|
vo.setMedalName("深度玩家");
|
break;
|
case 5:
|
vo.setMedalName("常胜将军");
|
break;
|
case 6:
|
vo.setMedalName("越战越勇");
|
break;
|
}
|
//拿到当前对应的rule对象
|
List<Integer> integers = new ArrayList<>();
|
integers.add(studentHonor.getHonorType());
|
integers.add(studentHonor.getNumber());
|
HonorRules honorRules = honorDeClient.getHonor(integers);
|
if (studentHonor.getNumber() < Integer.valueOf(honorRules.getCondition())) {
|
vo.setLevelNum(Integer.valueOf(honorRules.getLevel()) - 1);
|
vo.setNextLevel(Integer.valueOf(honorRules.getLevel()));
|
vo.setUpgradeConditions(String.valueOf(Integer.valueOf(honorRules.getCondition()) - studentHonor.getNumber()));
|
vo.setIsTopLevel(0);
|
} else {
|
vo.setIsTopLevel(1);
|
}
|
list.add(vo);
|
}
|
return list;
|
}
|
}
|