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;
/**
*
* 学员-荣耀中间表 服务实现类
*
*
* @author jqs
* @since 2023-07-04
*/
@Service
public class StudentHonorServiceImpl extends ServiceImpl 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 queryStuOfMedalData(Integer stuId) {
List voList = new ArrayList<>();
// List studentHonors = this.baseMapper.selectList(new QueryWrapper()
// .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 queryHonorDetails(Integer appUserId) {
List list = new ArrayList<>();
List studentHonors = this.list(new QueryWrapper().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 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;
}
}