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; } }