nickchange
2023-11-09 c036557db88c6297b9a626a892dce35c14ab8ee5
cloud-server-account/src/main/java/com/dsh/account/service/impl/StudentHonorServiceImpl.java
@@ -2,15 +2,25 @@
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.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.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;
@@ -26,46 +36,191 @@
@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;
    @Override
    public List<GongVo> queryStuOfMedalData(Integer stuId) {
        List<GongVo> voList = new ArrayList<>();
        List<StudentHonor> studentHonors = this.baseMapper.selectList(new QueryWrapper<StudentHonor>()
                .eq("stuId", 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);
            });
//        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);
        }
        return voList;
    }
    @Override
    public List<StuMedalVo> queryHonorDetails(Integer stuId) {
        List<StudentHonor> studentHonors = this.baseMapper.selectList(new QueryWrapper<StudentHonor>()
                .in("stuId",stuId));
        List<Integer> collect = studentHonors.stream().map(StudentHonor::getHonorRuleId).collect(Collectors.toList());
        return honorDeClient.getStuHonors(collect);
        List<StuMedalVo> studentHonors = new ArrayList<>();
//        List<Integer> collect = studentHonors.stream().map(StudentHonor::getHonorRuleId).collect(Collectors.toList());
        Integer count1 =coursePackageClient.counts(stuId);
        if (count1>0){
            StuMedalVo vo = new StuMedalVo();
            vo.setMedalType(1);
            vo.setMedalName("俱乐部之星");
            //拿到当前对应的rule对象
            List<Integer> integers = new ArrayList<>();
            integers.add(1);
            integers.add(count1);
            HonorRules honorRules = honorDeClient.getHonor(integers);
            if (count1<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())-count1));
                vo.setIsTopLevel(0);
            }else {
                vo.setIsTopLevel(1);
            }
            studentHonors.add(vo);
        }
        Integer count2 = participantClient.counts(stuId);
        if (count2>0){
            StuMedalVo vo = new StuMedalVo();
            vo.setMedalType(2);
            vo.setMedalName("运动达人");
            //拿到当前对应的rule对象
            List<Integer> integers = new ArrayList<>();
            integers.add(2);
            integers.add(count2);
            HonorRules honorRules = honorDeClient.getHonor(integers);
            if (count2<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())-count2));
                vo.setIsTopLevel(0);
            }else {
                vo.setIsTopLevel(1);
            }
            studentHonors.add(vo);
        }
        TStudent student = studentService.getById(stuId);
        Integer count3 = siteClient.counts(student.getAppUserId());
        if (count3>0){
            StuMedalVo vo = new StuMedalVo();
            vo.setMedalType(3);
            vo.setMedalName("社区之王");
            //拿到当前对应的rule对象
            List<Integer> integers = new ArrayList<>();
            integers.add(3);
            integers.add(count3);
            HonorRules honorRules = honorDeClient.getHonor(integers);
            if (count3<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())-count3));
                vo.setIsTopLevel(0);
            }else {
                vo.setIsTopLevel(1);
            }
            studentHonors.add(vo);
        }
        Integer count4 = coursePackageClient.counts1(stuId);
        if (count4>0){
            StuMedalVo vo = new StuMedalVo();
            vo.setMedalType(4);
            vo.setMedalName("深度玩家");
            //拿到当前对应的rule对象
            List<Integer> integers = new ArrayList<>();
            integers.add(4);
            integers.add(count4);
            HonorRules honorRules = honorDeClient.getHonor(integers);
            if (count4<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())-count4));
                vo.setIsTopLevel(0);
            }else {
                vo.setIsTopLevel(1);
            }
            studentHonors.add(vo);
        }
        return studentHonors;
    }
}