puzhibing
2024-02-05 640ff18d2d7f4be02ddb7f8f75e899f05545eb98
更新bug修改
23个文件已修改
12个文件已添加
1272 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/StudentHonorController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/entity/StudentHonor.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/other/HonorRulesClient.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/HonorRules.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/StudentHonorService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/StudentHonorServiceImpl.java 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java 135 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/resources/sharding-jdbc.properties 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentHonorClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/model/StudentHonor.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/util/TaskUtilCompetition.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 175 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentHonorClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/StudentHonor.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StudentHonorClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/StudentHonor.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CancelledClassesClient.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageSchedulingClient.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/HonorController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/controller/HonorRulesController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/feignclient/account/StudentHonorClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/feignclient/account/model/StudentHonor.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -170,11 +170,9 @@
                return ResultUtil.tokenErr();
            }
            TAppGift one = appGiftService.getOne(new LambdaQueryWrapper<TAppGift>().eq(TAppGift::getUserId, appUserId));
            Boolean b = false;
            Integer i = 0;
            if (one != null && one.getNum() > 0) {
                i = appGiftService.weeksOfAddHours(packetId, appUserId, one.getNum());
            }
            if (i == 1) {
                // 送完清0
@@ -575,13 +573,11 @@
    })
    public ResultUtil<List<StuMedalVo>> queryStuMedal(Integer stuId) {
        try {
            Integer appUserId = tokenUtil.getUserIdFormRedis();
            if (null == appUserId) {
                return ResultUtil.tokenErr();
            }
            return ResultUtil.success(honorService.queryHonorDetails(stuId));
            return ResultUtil.success(honorService.queryHonorDetails(appUserId));
        } catch (Exception e) {
            return ResultUtil.runErr();
        }
cloud-server-account/src/main/java/com/dsh/account/controller/StudentHonorController.java
New file
@@ -0,0 +1,59 @@
package com.dsh.account.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.account.entity.StudentHonor;
import com.dsh.account.feignclient.other.HonorRulesClient;
import com.dsh.account.feignclient.other.model.HonorRules;
import com.dsh.account.service.StudentHonorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Date;
/**
 * 勋章
 */
@RestController
@RequestMapping("/studentHonor")
public class StudentHonorController {
    @Autowired
    private StudentHonorService studentHonorService;
    @Resource
    private HonorRulesClient honorRulesClient;
    /**
     * 保存用户勋章
     * @param studentHonor
     */
    @ResponseBody
    @PostMapping("/saveStudentHonor")
    public void saveStudentHonor(@RequestBody StudentHonor studentHonor){
        StudentHonor one = studentHonorService.getOne(new QueryWrapper<StudentHonor>()
                .eq("appUserId", studentHonor.getAppUserId()).eq("honorType", studentHonor.getHonorType()));
        if(null == one){
            one = new StudentHonor();
        }
        //获取荣耀规则
        HonorRules honorRules = new HonorRules();
        honorRules.setType(studentHonor.getHonorType());
        honorRules.setCondition(studentHonor.getNumber());
        HonorRules honorRules1 = honorRulesClient.getHonorRules(honorRules);
        if(null != honorRules1){
            one.setAppUserId(studentHonor.getAppUserId());
            one.setHonorType(studentHonor.getHonorType());
            one.setNumber(studentHonor.getNumber());
            one.setHonorRuleId(honorRules1.getId());
            one.setHonorLevel(honorRules1.getLevel());
            one.setInsertTime(new Date());
            studentHonorService.saveOrUpdate(one);
        }
    }
}
cloud-server-account/src/main/java/com/dsh/account/entity/StudentHonor.java
@@ -34,10 +34,10 @@
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 学员id
     * 用户id
     */
    @TableField("stuId")
    private Integer stuId;
    @TableField("appUserId")
    private Integer appUserId;
    /**
     * 荣耀规则id
     */
@@ -54,6 +54,11 @@
    @TableField("honorLevel")
    private Integer honorLevel;
    /**
     * 当前次数
     */
    @TableField("number")
    private Integer number;
    /**
     * 添加时间
     */
    @TableField("insertTime")
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java
@@ -18,7 +18,7 @@
    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody IntrduceOfUserRequest request);
    @PostMapping("/base/introduce/getGiftList")
    IntroduceRewards getGiftList(@RequestBody String cityCode);
    List<IntroduceRewards> getGiftList(@RequestBody String cityCode);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/other/HonorRulesClient.java
New file
@@ -0,0 +1,30 @@
package com.dsh.account.feignclient.other;
import com.dsh.account.feignclient.other.model.HonorRules;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
 * 荣耀规则
 */
@FeignClient("mb-cloud-other")
public interface HonorRulesClient {
    /**
     * 获取合适的规则
     * @param honorRules
     * @return
     */
    @PostMapping("/honorRules/getHonorRules")
    HonorRules getHonorRules(HonorRules honorRules);
    /**
     * 根据id获取数据
     * @param id
     * @return
     */
    @PostMapping("/honorRules/getHonorRulesById")
    HonorRules getHonorRulesById(Integer id);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/other/model/HonorRules.java
New file
@@ -0,0 +1,21 @@
package com.dsh.account.feignclient.other.model;
import lombok.Data;
@Data
public class HonorRules {
    private Integer id;
    /**
     * 数据类型(1=俱乐部之星,2=运动达人,3=社区之王,4=深度玩家)
     */
    private Integer type;
    /**
     * 等级
     */
    private Integer level;
    /**
     * 满足条件值
     */
    private Integer condition;
}
cloud-server-account/src/main/java/com/dsh/account/service/StudentHonorService.java
@@ -19,6 +19,6 @@
    List<GongVo> queryStuOfMedalData(Integer stuId);
    List<StuMedalVo> queryHonorDetails(Integer stuId);
    List<StuMedalVo> queryHonorDetails(Integer appUserId);
}
cloud-server-account/src/main/java/com/dsh/account/service/impl/StudentHonorServiceImpl.java
@@ -9,6 +9,7 @@
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;
@@ -45,13 +46,19 @@
    @Resource
    private SiteClient siteClient;
    @Autowired
    private HonorDeClient honorDeClient;
    @Autowired
    private TStudentService studentService;
    @Autowired
    private HonorRulesClient honorRulesClient;
    @Override
    public List<GongVo> queryStuOfMedalData(Integer stuId) {
@@ -124,101 +131,41 @@
    @Override
    public List<StuMedalVo> queryHonorDetails(Integer stuId) {
        List<StuMedalVo> studentHonors = new ArrayList<>();
//        List<Integer> collect = studentHonors.stream().map(StudentHonor::getHonorRuleId).collect(Collectors.toList());
        Integer count1 = coursePackageClient.counts(stuId);
        if (count1 > 0) {
    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(1);
            vo.setMedalName("俱乐部之星");
            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;
            }
            //拿到当前对应的rule对象
            List<Integer> integers = new ArrayList<>();
            integers.add(1);
            integers.add(count1);
            integers.add(studentHonor.getHonorType());
            integers.add(studentHonor.getNumber());
            HonorRules honorRules = honorDeClient.getHonor(integers);
            if (count1 < Integer.valueOf(honorRules.getCondition())) {
            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()) - count1));
                vo.setUpgradeConditions(String.valueOf(Integer.valueOf(honorRules.getCondition()) - studentHonor.getNumber()));
                vo.setIsTopLevel(0);
            } else {
                vo.setIsTopLevel(1);
            }
            studentHonors.add(vo);
            list.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;
        return list;
    }
}
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -459,43 +459,40 @@
                return ResultUtil.error("请先开启定位", "");
            }
            Map<String, String> geocode = gdMapGeocodingUtil.geocode(addAppUserVo.getLon(), addAppUserVo.getLat());
            Integer num = 0;
            Integer activityId = null;
            if (null != geocode) {
                String province = geocode.get("province");
                String provinceCode = geocode.get("provinceCode");
                String city = geocode.get("city");
                String cityCode = geocode.get("cityCode");
                // 根据所在市code 查询是否有介绍有礼活动
                IntroduceRewards res = introduceRewardsClient.getGiftList(cityCode);
                List<IntroduceRewards> res = introduceRewardsClient.getGiftList(cityCode);
                if (res != null) {
                    num = res.getGiveClass();
                    activityId = res.getId();
                    if (ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())) {
                        List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>()
                                .eq(TAppUser::getPhone, addAppUserVo.getInvitePhone()));
                        if (tAppUsers.size() > 0) {
                            addAppUserVo.setReferralUserId(tAppUsers.get(0).getId());
                    for (IntroduceRewards re : res) {
                        Integer num = re.getGiveClass();
                        Integer activityId = re.getId();
                        if (ToolUtil.isNotEmpty(addAppUserVo.getInvitePhone())) {
                            List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>()
                                    .eq(TAppUser::getPhone, addAppUserVo.getInvitePhone()));
                            if (tAppUsers.size() > 0) {
                                addAppUserVo.setReferralUserId(tAppUsers.get(0).getId());
                            }
                        }
                    }
                    if (num != 0) {
                        TAppGift tAppGift = new TAppGift();
                        TAppUser phone = appUserService.getOne(new QueryWrapper<TAppUser>()
                                .eq("phone", addAppUserVo.getInvitePhone()));
                        if (phone == null) {
                            return ResultUtil.error("推荐人手机号未注册玩湃会员!");
                        } else {
                            tAppGift.setUserName(phone.getName());
                            tAppGift.setUserPhone(phone.getPhone());
                        if (num != 0) {
                            TAppGift tAppGift = new TAppGift();
                            TAppUser phone = appUserService.getOne(new QueryWrapper<TAppUser>()
                                    .eq("phone", addAppUserVo.getInvitePhone()));
                            if (phone == null) {
                                return ResultUtil.error("推荐人手机号未注册玩湃会员!");
                            } else {
                                tAppGift.setUserName(phone.getName());
                                tAppGift.setUserPhone(phone.getPhone());
                            }
                            tAppGift.setUserId(addAppUserVo.getReferralUserId());
                            tAppGift.setNum(num);
                            tAppGift.setShareUserId(tAppUser.getId());
                            tAppGift.setShareUserName(tAppUser.getPhone());
                            tAppGift.setShareUserPhone(tAppUser.getPhone());
                            tAppGift.setActivityId(activityId);
                            tAppGift.setInsertTime(new Date());
                            appGiftService.save(tAppGift);
                        }
                        tAppGift.setUserId(addAppUserVo.getReferralUserId());
                        tAppGift.setNum(num);
                        tAppGift.setShareUserId(tAppUser.getId());
                        tAppGift.setShareUserName(tAppUser.getPhone());
                        tAppGift.setShareUserPhone(tAppUser.getPhone());
                        tAppGift.setActivityId(activityId);
                        tAppGift.setInsertTime(new Date());
                        appGiftService.save(tAppGift);
                    }
                }
            }
@@ -1175,6 +1172,7 @@
        if (tAppUser.getState() == 2) {
            return ResultUtil.error("您的账号已被冻结");
        }
        boolean newUser = false;
        List<TAppUser> tAppUsers1 = appUserMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).eq(TAppUser::getState, 1));
        if (tAppUsers1.size() > 0) {
            TAppUser tAppUser1 = tAppUsers1.get(0);
@@ -1192,56 +1190,49 @@
            appUserMapper.updateById(tAppUser);
            token = getToken(tAppUser);
            map.put("token", token);
            newUser = true;
        }
//        tAppUser.setPhone(dto.getPhone());
        if (ToolUtil.isNotEmpty(dto.getInvitePhone())) {
        if (newUser && ToolUtil.isNotEmpty(dto.getInvitePhone())) {
            if (ToolUtil.isEmpty(dto.getLat()) || ToolUtil.isEmpty(dto.getLon())) {
                return ResultUtil.error("请先开启定位");
            }
            TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState, 1));
            if (tAppUser1 != null) {
                Map<String, String> geocode = null;
                try {
                    geocode = gdMapGeocodingUtil.geocode(dto.getLon(), dto.getLat());
                } catch (Exception e) {
                    e.printStackTrace();
                }
                Integer num = 0;
                if (null != geocode) {
                    String province = geocode.get("province");
                    String provinceCode = geocode.get("provinceCode");
                    String city = geocode.get("city");
                    String cityCode = geocode.get("cityCode");
                    IntroduceRewards giftList = introduceRewardsClient.getGiftList(cityCode);
                    num = giftList.getGiveClass();
                }
                Integer userId = null;
                if (ToolUtil.isNotEmpty(dto.getInvitePhone())) {
                    List<TAppUser> tAppUsers = this.baseMapper.selectList(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getInvitePhone()));
                    if (tAppUsers.size() > 0) {
                        userId = tAppUsers.get(0).getId();
                    }
                }
                if (userId != null) {
                    TAppGift one = appGiftService.getOne(new LambdaQueryWrapper<TAppGift>().eq(TAppGift::getUserId, userId));
                    if (one != null) {
                        one.setNum(one.getNum() + num);
                        appGiftService.updateById(one);
                    } else {
                        TAppGift tAppGift = new TAppGift();
                        tAppGift.setUserId(userId);
                        tAppGift.setNum(num);
                        appGiftService.save(tAppGift);
            TAppUser tAppUser1 = appUserMapper.selectOne(new LambdaQueryWrapper<TAppUser>()
                    .eq(TAppUser::getPhone, dto.getInvitePhone()).eq(TAppUser::getState, 1));
            if(null == tAppUser1){
                return ResultUtil.error("邀请人还未注册账号");
            }
            Map<String, String> geocode = null;
            try {
                geocode = gdMapGeocodingUtil.geocode(dto.getLon(), dto.getLat());
            } catch (Exception e) {
                e.printStackTrace();
            }
            if (null != geocode) {
                String cityCode = geocode.get("cityCode");
                // 根据所在市code 查询是否有介绍有礼活动
                List<IntroduceRewards> res = introduceRewardsClient.getGiftList(cityCode);
                if (res != null) {
                    for (IntroduceRewards re : res) {
                        Integer num = re.getGiveClass();
                        Integer activityId = re.getId();
                        if (num != 0) {
                            TAppGift tAppGift = new TAppGift();
                            tAppGift.setUserName(tAppUser1.getName());
                            tAppGift.setUserPhone(tAppUser1.getPhone());
                            tAppGift.setUserId(tAppUser1.getId());
                            tAppGift.setNum(num);
                            tAppGift.setShareUserId(tAppUser.getId());
                            tAppGift.setShareUserName(tAppUser.getPhone());
                            tAppGift.setShareUserPhone(tAppUser.getPhone());
                            tAppGift.setActivityId(activityId);
                            tAppGift.setInsertTime(new Date());
                            appGiftService.save(tAppGift);
                        }
                    }
                }
            }
        }
//        appUserMapper.updateById(tAppUser);
        return ResultUtil.success(map);
    }
cloud-server-account/src/main/resources/sharding-jdbc.properties
@@ -1,20 +1,7 @@
#datasource.names=master0
#datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
#datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
#datasource.master0.url=jdbc:mysql://192.168.110.80:3306/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
#datasource.master0.username=root
#datasource.master0.password=123456
#datasource.master0.maxActive=20
#datasource.master0.maxWait=60000
#datasource.master0.minIdle=5
#datasource.master0.initialSize=2
datasource.names=master0
datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
datasource.master0.url=jdbc:mysql://192.168.110.80/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
datasource.master0.url=jdbc:mysql://192.168.110.80:3306/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
datasource.master0.username=root
datasource.master0.password=123456
datasource.master0.maxActive=20
@@ -24,3 +11,16 @@
#datasource.names=master0
#datasource.master0.type=com.alibaba.druid.pool.DruidDataSource
#datasource.master0.driverClassName=com.mysql.cj.jdbc.Driver
#datasource.master0.url=jdbc:mysql://192.168.110.80/playpai_account?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
#datasource.master0.username=root
#datasource.master0.password=123456
#datasource.master0.maxActive=20
#datasource.master0.maxWait=60000
#datasource.master0.minIdle=5
#datasource.master0.initialSize=2
cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java
@@ -147,17 +147,15 @@
    @PostMapping("/base/introduce/getGiftList")
    @ResponseBody
    public IntroduceRewards getGiftList(@RequestBody String cityCode) {
    public List<IntroduceRewards> getGiftList(@RequestBody String cityCode) {
        List<IntroduceRewards> list = idrService.list(new LambdaQueryWrapper<IntroduceRewards>()
                .eq(IntroduceRewards::getCityCode, cityCode)
                .le(IntroduceRewards::getStartTime, new Date())
                .ge(IntroduceRewards::getEndTime, new Date())
                .eq(IntroduceRewards::getState, 1)
                .orderByDesc(IntroduceRewards::getInsertTime)
                .last("LIMIT 1"));
        if (list.size() > 0) {
            return list.get(0);
        }
        return null;
        );
        return list;
    }
}
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -12,7 +12,9 @@
import com.dsh.competition.entity.UserCompetition;
import com.dsh.competition.feignclient.account.AppUserClient;
import com.dsh.competition.feignclient.account.StudentClient;
import com.dsh.competition.feignclient.account.StudentHonorClient;
import com.dsh.competition.feignclient.account.model.AppUser;
import com.dsh.competition.feignclient.account.model.StudentHonor;
import com.dsh.competition.feignclient.account.model.TStudent;
import com.dsh.competition.feignclient.course.CoursePackagePaymentClient;
import com.dsh.competition.feignclient.course.model.PaymentDeductionClassHour;
@@ -81,6 +83,12 @@
    @Autowired
    private AppUserClient appUserClient;
    @Resource
    private StudentHonorClient studentHonorClient;
    /**
     * 根据门店ids 获取对应的赛事 根据赛事支付记录获取用户ids
@@ -356,8 +364,6 @@
        try {
            Competition byId = competitionService.getById(paymentCompetitionVo.getId());
            Date date = byId.getEndTime();
            // Assuming you have a Date object
            // Check if the date is past the current time
            boolean isPast = date.after(new Date());
            if (!isPast) {
                return new ResultUtil(0, "已超过截至报名时间");
@@ -694,9 +700,27 @@
                } else {
                    competition.setStatus(3);
                }
                if(competition.getStatus() == 2){
                    //添加勋章数据
                    List<PaymentCompetition> list = paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>()
                            .eq("competitionId", competition.getId()).eq("payStatus", 2).eq("state", 1));
                    Set<Integer> collect = list.stream().map(PaymentCompetition::getAppUserId).collect(Collectors.toSet());
                    for (Integer integer : collect) {
                        int count = paymentCompetitionService.count(new QueryWrapper<PaymentCompetition>()
                                .eq("appUserId", integer).eq("payStatus", 2).eq("state", 1));
                        StudentHonor studentHonor = new StudentHonor();
                        studentHonor.setAppUserId(integer);
                        studentHonor.setHonorType(2);
                        studentHonor.setNumber(count);
                        studentHonorClient.saveStudentHonor(studentHonor);
                    }
                }
            }
            competition.setInsertTime(new Date());
            cttService.save(competition);
        } catch (Exception e) {
            e.printStackTrace();
        }
@@ -714,8 +738,26 @@
                } else {
                    competition.setStatus(3);
                }
                if(competition.getStatus() == 2){
                    //添加勋章数据
                    List<PaymentCompetition> list = paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>()
                            .eq("competitionId", competition.getId()).eq("payStatus", 2).eq("state", 1));
                    Set<Integer> collect = list.stream().map(PaymentCompetition::getAppUserId).collect(Collectors.toSet());
                    for (Integer integer : collect) {
                        int count = paymentCompetitionService.count(new QueryWrapper<PaymentCompetition>()
                                .eq("appUserId", integer).eq("payStatus", 2).eq("state", 1));
                        StudentHonor studentHonor = new StudentHonor();
                        studentHonor.setAppUserId(integer);
                        studentHonor.setHonorType(2);
                        studentHonor.setNumber(count);
                        studentHonorClient.saveStudentHonor(studentHonor);
                    }
                }
            }
            cttService.updateById(competition);
        } catch (Exception e) {
            e.printStackTrace();
        }
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/StudentHonorClient.java
New file
@@ -0,0 +1,20 @@
package com.dsh.competition.feignclient.account;
import com.dsh.competition.feignclient.account.model.StudentHonor;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
 * 勋章
 */
@FeignClient("mb-cloud-account")
public interface StudentHonorClient {
    /**
     * 保存用户勋章
      * @param studentHonor
     */
    @PostMapping("/studentHonor/saveStudentHonor")
    void saveStudentHonor(StudentHonor studentHonor);
}
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/account/model/StudentHonor.java
New file
@@ -0,0 +1,19 @@
package com.dsh.competition.feignclient.account.model;
import lombok.Data;
@Data
public class StudentHonor {
    /**
     * 用户id
     */
    private Integer appUserId;
    /**
     * 荣耀类型
     */
    private Integer honorType;
    /**
     * 当前次数
     */
    private Integer number;
}
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
@@ -259,18 +259,9 @@
        }
        if (paymentCompetitionVo.getPayType() == 4) {//课程
            money = new BigDecimal(competition.getClassPrice()).multiply(new BigDecimal(jsonArray.size())).setScale(2, RoundingMode.HALF_EVEN);
            for (int i = 0; i < jsonArray.size(); i++) {
//                Participant participant = participantService.getById(s);
//                Student student = studentClient.queryStudentByPhone(participant.getPhone());
//                if(null == student){
//                    return ResultUtil.error(participant.getName() + "不是学员,无法使用课时支付。");
//                }
                // 2.0
                Integer integer = coursePackagePaymentClient.queryResidueClassHourById(paymentCompetitionVo.getCoursePaymentId());
                if (new BigDecimal(integer).compareTo(new BigDecimal(competition.getClassPrice())) < 0) {
                    return new ResultUtil(3, "剩余课时不足,无法完成支付。");
                }
            Integer integer = coursePackagePaymentClient.queryResidueClassHourById(paymentCompetitionVo.getCoursePaymentId());
            if (new BigDecimal(integer).compareTo(money) < 0) {
                return new ResultUtil(3, "剩余课时不足,无法完成支付。");
            }
        }
@@ -327,7 +318,6 @@
            paymentCompetition.setPayOrderNo("");
            paymentCompetitionService.updateById(paymentCompetition);
//            competition.setApplicantsNumber(competition.getApplicantsNumber() + 1);
            this.updateById(competition);
        }
        if (paymentCompetitionVo.getPayType() == 4) {//课程
@@ -338,6 +328,7 @@
                if(isStudent == 0){
                    continue;
                }
                //扣减课时
                PaymentDeductionClassHour paymentDeductionClassHour = new PaymentDeductionClassHour();
                paymentDeductionClassHour.setId(id);
                paymentDeductionClassHour.setClassHour(competition.getClassPrice());
@@ -346,6 +337,7 @@
                paymentDeductionClassHour.setUid(uid);
                coursePackagePaymentClient.paymentDeductionClassHour(paymentDeductionClassHour);
            }
            paymentCompetition = paymentCompetitionService.getById(paymentCompetition.getId());
            paymentCompetition.setAppUserId(null);
            paymentCompetition.setPayStatus(2);
cloud-server-competition/src/main/java/com/dsh/competition/util/TaskUtilCompetition.java
@@ -3,14 +3,22 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.competition.entity.Competition;
import com.dsh.competition.entity.PaymentCompetition;
import com.dsh.competition.feignclient.account.StudentHonorClient;
import com.dsh.competition.feignclient.account.model.StudentHonor;
import com.dsh.competition.model.TCompetition;
import com.dsh.competition.service.CompetitionService;
import com.dsh.competition.service.IPaymentCompetitionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
 * @author shaqian
@@ -22,6 +30,14 @@
    @Resource
    private CompetitionService competitionService;
    @Resource
    private StudentHonorClient studentHonorClient;
    @Autowired
    private IPaymentCompetitionService paymentCompetitionService;
    /**
     * 每秒去处理的定时任务
     */
@@ -32,15 +48,31 @@
                    .ne("status", 4).ne("state", 3));
            for (Competition competition : list) {
                // 当前时间小于开始时间
                if (competition.getStartTime().after(new Date())) {
                if (competition.getStatus() != 1 && competition.getStartTime().after(new Date())) {
                    competition.setStatus(1);
                }
                if (competition.getStartTime().before(new Date())) {
                if (competition.getStatus() == 1 && competition.getStartTime().before(new Date())) {
                    if (competition.getEndTime().after(new Date())) {
                        competition.setStatus(2);
                    } else {
                        competition.setStatus(3);
                    }
                    if(competition.getStatus() == 2){
                        //添加勋章数据
                        List<PaymentCompetition> list1 = paymentCompetitionService.list(new QueryWrapper<PaymentCompetition>()
                                .eq("competitionId", competition.getId()).eq("payStatus", 2).eq("state", 1));
                        Set<Integer> collect = list1.stream().map(PaymentCompetition::getAppUserId).collect(Collectors.toSet());
                        for (Integer integer : collect) {
                            int count = paymentCompetitionService.count(new QueryWrapper<PaymentCompetition>()
                                    .eq("appUserId", integer).eq("payStatus", 2).eq("state", 1));
                            StudentHonor studentHonor = new StudentHonor();
                            studentHonor.setAppUserId(integer);
                            studentHonor.setHonorType(2);
                            studentHonor.setNumber(count);
                            studentHonorClient.saveStudentHonor(studentHonor);
                        }
                    }
                }
                competitionService.updateById(competition);
            }
cloud-server-course/src/main/java/com/dsh/course/controller/CancelledClassesController.java
@@ -1,6 +1,7 @@
package com.dsh.course.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.course.entity.*;
import com.dsh.course.feignclient.account.AppUserClient;
import com.dsh.course.feignclient.account.CoachClient;
@@ -140,8 +141,6 @@
    @PostMapping("/cancelledClasses/addCancelledClasses")
    public void addCancelledClasses(@RequestBody CancelledClasses cancelledClasses) {
        cancelledClassesService.save(cancelledClasses);
//        TCoursePackagePayment byId = coursePackagePaymentService.getById(cancelledClasses.getCoursePackagePaymentId());
        orderStudentService.getById(cancelledClasses.getCoursePackagePaymentId());
        CourseCounsum courseCounsum = new CourseCounsum();
        courseCounsum.setPaymentId(cancelledClasses.getCoursePackagePaymentId());
@@ -152,4 +151,5 @@
        courseCounsumService.save(courseCounsum);
    }
}
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -1303,18 +1303,7 @@
    @PostMapping("/coursePackagePayment/paymentDeductionClassHour")
    public void paymentDeductionClassHour(@RequestBody PaymentDeductionClassHour paymentDeductionClassHour) {
        try {
            // 2.0 用id进行查询
//            TCoursePackagePayment coursePackagePayment = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2)
//                    .eq("status", 1).eq("state", 1).gt("laveClassHours", 0));
//            Integer classHour = paymentDeductionClassHour.getClassHour();
//            for (TCoursePackagePayment coursePackagePayment : list) {
            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(paymentDeductionClassHour.getCourseId());
//            if (paymentDeductionClassHour.getClassHour() > coursePackageOrderStudent.getLaveClassHours()) {
//                return ResultUtil.error("当前课包课时数不足");
//            }
            TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
            coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() - paymentDeductionClassHour.getClassHour());
            coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
@@ -1343,131 +1332,14 @@
                }
            }
//            if (coursePackagePayment.getLaveClassHours().compareTo(classHour) >= 0) {
//                coursePackagePayment.setLaveClassHours(coursePackagePayment.getLaveClassHours() - classHour);
//                coursePackagePayment.setAppUserId(null);
//                packagePaymentService.updateById(coursePackagePayment);
//
//                CourseCounsum courseCounsum = new CourseCounsum();
//                courseCounsum.setPaymentId(coursePackagePayment.getId());
//                courseCounsum.setChangeType(0);
//                courseCounsum.setNum(classHour);
//                courseCounsum.setInsertTime(new Date());
//                courseCounsum.setReason("报名赛事");
//                courseCounsumService.save(courseCounsum);
//
//
//                List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", coursePackagePayment.getStudentId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
//                List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
//                coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
//                coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", paymentDeductionClassHour.getId()).eq("coursePackageId", coursePackagePayment.getCoursePackageId()));
//
//
//                TCoursePackage tCoursePackage = packageService.getById(coursePackagePayment.getCoursePackageId());
//                String classWeeks = tCoursePackage.getClassWeeks();
//                List<Integer> week = week(classWeeks);
//
//                TCoursePackagePayment pay = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", coursePackagePayment.getCoursePackageId()).eq("studentId", coursePackagePayment.getStudentId()));
//
//                Date today = new Date();
//                Calendar calendar = Calendar.getInstance();
//                calendar.add(Calendar.DATE, -1);
//                today = calendar.getTime();
//
//
//                Integer laveClassHours = pay.getLaveClassHours();
//                Integer codeTime = tCoursePackage.getCodeTime();
//                Integer can = laveClassHours / codeTime;
//
//                int count = 0;
//                String[] split = tCoursePackage.getClassStartTime().split(",");
//                String[] split1 = tCoursePackage.getClassEndTime().split(",");
//                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//                SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//
//                Date[] dates = generateDateArray(14, today);
//                for (Date date : dates) {
//                    if (count == can) {
//                        break;
//                    }
//                    int wei = cn.hutool.core.date.DateUtil.dayOfWeek(date);
//                    if (week.contains(wei)) {
//                        for (int i1 = 0; i1 < split.length; i1++) {
//                            if (count == can) {
//                                break;
//                            }
//                            CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
//                            coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
//                            Date parse = format1.parse(format.format(date) + " " + split[i1]);
//                            Date parse1 = format1.parse(format.format(date) + " " + split1[i1]);
//                            coursePackageScheduling.setClassDate(parse);
//                            coursePackageScheduling.setEndDate(parse1);
//                            coursePackageScheduling.setStatus(1);
//                            coursePackageSchedulingService.save(coursePackageScheduling);
//                            CoursePackageStudent student1 = new CoursePackageStudent();
//                            student1.setAppUserId(pay.getAppUserId());
//                            student1.setStudentId(pay.getStudentId());
//                            student1.setCoursePackageId(pay.getCoursePackageId());
//                            student1.setCoursePackagePaymentId(pay.getId());
//                            student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
//                            student1.setSignInOrNot(1);
//                            student1.setReservationStatus(1);
//                            student1.setInsertTime(new Date());
//                            studentService.save(student1);
//                            count++;
//                        }
//                    }
//                }
//
//
//                // 2.0 少于3课时 推送
//                if (coursePackagePayment.getLaveClassHours() <= 3) {
//                    Integer appUserId = coursePackagePayment.getAppUserId();
//
//                    //调用推送
//                    HttpHeaders headers = new HttpHeaders();
//                    // 以表单的方式提交
//                    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
//                    String s1 = appUserId + "_" + "Three";
//                    //定时修改排课状态
//                    String s = internalRestTemplate.getForObject("http://mb-cloud-gateway/netty/sendMsgToClient?id=" + s1, String.class);
//                    JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class);
//                    if (jsonObject1.getIntValue("code") != 200) {
//                        System.err.println(jsonObject1.getString("msg"));
//                    }
//                }
//
//                CancelledClasses cancelledClasses = new CancelledClasses();
//                cancelledClasses.setType(2);
//                cancelledClasses.setVoucher(paymentDeductionClassHour.getCode());
//                cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId());
//                cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId());
//                cancelledClasses.setCancelledClassesNumber(classHour);
//                cancelledClasses.setInsertTime(new Date());
//                cancelledClassesService.save(cancelledClasses);
//
//            } else {
//                CancelledClasses cancelledClasses = new CancelledClasses();
//                cancelledClasses.setType(2);
//                cancelledClasses.setVoucher(paymentDeductionClassHour.getCode());
//                cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId());
//                cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId());
//                cancelledClasses.setCancelledClassesNumber(coursePackagePayment.getLaveClassHours());
//                cancelledClasses.setInsertTime(new Date());
//                cancelledClassesService.save(cancelledClasses);
//
//                coursePackagePayment.setLaveClassHours(0);
//                packagePaymentService.updateById(coursePackagePayment);
//
//                classHour -= cancelledClasses.getCancelledClassesNumber();
//            }
//                }
            CourseCounsum courseCounsum = new CourseCounsum();
            courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
            courseCounsum.setChangeType(0);
            courseCounsum.setNum(paymentDeductionClassHour.getClassHour());
            courseCounsum.setInsertTime(new Date());
            courseCounsum.setReason("赛事报名");
            courseCounsum.setAppUserId(coursePackageOrderStudent.getAppUserId());
            courseCounsumService.save(courseCounsum);
        } catch (Exception e) {
            e.printStackTrace();
@@ -2206,12 +2078,7 @@
    @ResponseBody
    @PostMapping("/base/coursePack/obtainStudentClassDetails")
    public List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody WeeksOfCourseRest stuId) {
//        try {
        return coursePackageOrderStudentService.obtainStuClassDetails(stuId.getStuId(), stuId.getAppUserId(), stuId.getPageNum());
//        }catch (Exception e){
//            e.printStackTrace();
//            throw new RuntimeException();
//        }
    }
@@ -2233,12 +2100,13 @@
    @PostMapping("/base/coursePack/sendHours")
    public Integer sendHours(@RequestBody String s) throws ParseException {
        String[] split2 = s.split("_");
        TCoursePackagePayment byId = packagePaymentService.getById(Long.valueOf(split2[0]));
        byId.setTotalClassHours(byId.getTotalClassHours() + Integer.valueOf(split2[2]));
        boolean b = packagePaymentService.updateHoursById(byId, Integer.valueOf(split2[2]));
        CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService.getById(Long.valueOf(split2[0]));
        coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + Integer.valueOf(split2[2]));
        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + Integer.valueOf(split2[2]));
        coursePackageOrderStudentService.updateById(coursePackageOrderStudent);
        CourseCounsum courseCounsum = new CourseCounsum();
        courseCounsum.setPaymentId(byId.getId());
        courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
        courseCounsum.setChangeType(1);
        courseCounsum.setNum(Integer.valueOf(split2[2]));
        courseCounsum.setInsertTime(new Date());
@@ -2246,17 +2114,17 @@
        courseCounsumService.save(courseCounsum);
        List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", byId.getStudentId()).eq("coursePackageId", byId.getCoursePackageId()));
        List<CoursePackageStudent> studentCourse = coursePackageStudentService.list(new QueryWrapper<CoursePackageStudent>().eq("studentId", coursePackageOrderStudent.getStudentId()).eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()));
        List<Long> collect = studentCourse.stream().map(CoursePackageStudent::getCoursePackageSchedulingId).collect(Collectors.toList());
        coursePackageSchedulingService.remove(new QueryWrapper<CoursePackageScheduling>().in("id", collect));
        coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", byId.getStudentId()).eq("coursePackageId", byId.getCoursePackageId()));
        coursePackageStudentService.remove(new QueryWrapper<CoursePackageStudent>().eq("studentId", coursePackageOrderStudent.getStudentId()).eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()));
        TCoursePackage tCoursePackage = packageService.getById(byId.getCoursePackageId());
        TCoursePackage tCoursePackage = packageService.getById(coursePackageOrderStudent.getCoursePackageId());
        String classWeeks = tCoursePackage.getClassWeeks();
        List<Integer> week = week(classWeeks);
        TCoursePackagePayment pay = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", byId.getCoursePackageId()).eq("studentId", byId.getStudentId()));
        TCoursePackagePayment pay = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", coursePackageOrderStudent.getCoursePackageId()).eq("studentId", coursePackageOrderStudent.getStudentId()));
        Date today = new Date();
@@ -2303,14 +2171,7 @@
                }
            }
        }
        if (b) {
            return 1;
        } else {
            return 0;
        }
        return 1;
    }
cloud-server-course/src/main/java/com/dsh/course/controller/CourseStudentController.java
@@ -389,9 +389,9 @@
            courseCounsum.setReason("退费");
            courseCounsum.setPaymentId(o.getId());
            courseCounsum.setInsertTime(new Date());
            courseCounsum.setAppUserId(o.getAppUserId());
            counsumService.save(courseCounsum);
            o.setTotalClassHours(0);
            o.setLaveClassHours(0);
            o.setStatus(2);
            o.setAppUserId(null);
@@ -509,6 +509,7 @@
            courseCounsum.setNum(laveClassHours);
            courseCounsum.setChangeType(0);
            courseCounsum.setPaymentId(orinPay.getId());
            courseCounsum.setAppUserId(orinPay.getAppUserId());
            counsumService.save(courseCounsum);
            CourseCounsum courseCounsum1 = new CourseCounsum();
@@ -521,6 +522,7 @@
            courseCounsum1.setNum(laveClassHours);
            courseCounsum1.setChangeType(1);
            courseCounsum1.setPaymentId(studentPay.getId());
            courseCounsum1.setAppUserId(studentPay.getAppUserId());
            counsumService.save(courseCounsum1);
            schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours);
@@ -578,6 +580,7 @@
            courseCounsum.setNum(laveClassHours1);
            courseCounsum.setChangeType(0);
            courseCounsum.setPaymentId(orinPay.getId());
            courseCounsum.setAppUserId(orinPay.getAppUserId());
            counsumService.save(courseCounsum);
@@ -587,6 +590,7 @@
            courseCounsum1.setNum(laveClassHours1);
            courseCounsum1.setChangeType(1);
            courseCounsum1.setPaymentId(to.getId());
            courseCounsum1.setAppUserId(to.getAppUserId());
            counsumService.save(courseCounsum1);
            //开始排课
@@ -787,45 +791,54 @@
            Student student = studentClient.queryStudentById(Integer.valueOf(stuId));
            // 扣除 原来的课时数
        // 添加购买课时 paytyoe为7
        // 排课可期  判断课程时间段  添加排课表  添加上课记录表
        // 找到原来的课包 扣课时
//        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getById(toHoliDto.getId());
        CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId",toHoliDto.getId()).eq("studentId",stuId));
            // 添加购买课时 paytyoe为7
            // 排课可期  判断课程时间段  添加排课表  添加上课记录表
            // 找到原来的课包 扣课时
            CoursePackageOrderStudent coursePackageOrderStudent = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId",toHoliDto.getId()).eq("studentId",stuId));
        TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
        TCoursePackage coursePackage1 = coursePackageService.getById(toHoliDto.getClassId());
        //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
        List<CoursePackageScheduling> list1 = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
                .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
                .eq("type", 1).orderByDesc("classDate"));
        //已经排课但没有使用的课时数量
        int number = list1.size() * coursePackage.getNeedNum();
        Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
        laveClassHours1 -= number;
        //需要购买使用的课时数
        Integer num = toHoliDto.getClassNum();
        //需要删除多余的排课记录
        if(num.compareTo(laveClassHours1) > 0){
            //课时数差额
            int number1 = num - laveClassHours1;
            double o = number1 % coursePackage.getNeedNum();
            int l = 0;
            if(0 != o){
                l = 1;
            }
            int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l;
            for (int i = 0; i < n; i++) {
                CoursePackageScheduling coursePackageScheduling = list1.get(i);
                coursePackageSchedulingService.deleteById(coursePackageScheduling.getId());
            TCoursePackage coursePackage = coursePackageService.getById(coursePackageOrderStudent.getCoursePackageId());
            TCoursePackage coursePackage1 = coursePackageService.getById(toHoliDto.getClassId());
            //判断剩余课时是否已经全部进行排课,如果排课需要删除已经排好的记录
            List<CoursePackageScheduling> list1 = coursePackageSchedulingService.selectList(new QueryWrapper<CoursePackageScheduling>()
                    .eq("studentId", coursePackageOrderStudent.getStudentId()).eq("status", 1)
                    .eq("type", 1).orderByDesc("classDate"));
            //已经排课但没有使用的课时数量
            int number = list1.size() * coursePackage.getNeedNum();
            Integer laveClassHours1 = coursePackageOrderStudent.getLaveClassHours();
            laveClassHours1 -= number;
            //需要购买使用的课时数
            Integer num = toHoliDto.getClassNum();
            //需要删除多余的排课记录
            if(num.compareTo(laveClassHours1) > 0){
                //课时数差额
                int number1 = num - laveClassHours1;
                double o = number1 % coursePackage.getNeedNum();
                int l = 0;
                if(0 != o){
                    l = 1;
                }
                int n = Double.valueOf(number1 / coursePackage.getNeedNum()).intValue() + l;
                for (int i = 0; i < n; i++) {
                    CoursePackageScheduling coursePackageScheduling = list1.get(i);
                    coursePackageSchedulingService.deleteById(coursePackageScheduling.getId());
                coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>()
                        .eq("coursePackageSchedulingId", coursePackageScheduling.getId()));
                    coursePackageStudentService.getBaseMapper().delete(new QueryWrapper<CoursePackageStudent>()
                            .eq("coursePackageSchedulingId", coursePackageScheduling.getId()));
                }
            }
        }
            coursePackageOrderStudent.setAppUserId(null);
        coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-toHoliDto.getClassNum());
            coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()-toHoliDto.getClassNum());
            orderStudentService.updateById(coursePackageOrderStudent);
            CourseCounsum courseCounsum = new CourseCounsum();
            courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
            courseCounsum.setChangeType(0);
            courseCounsum.setNum(toHoliDto.getClassNum());
            courseCounsum.setInsertTime(new Date());
            courseCounsum.setReason("报名假期班");
            courseCounsum.setAppUserId(coursePackageOrderStudent.getAppUserId());
            courseCounsumService.save(courseCounsum);
            Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
            if(3 >= laveClassHours){
                AppUser appUser = appUserClient.queryAppUser(coursePackageOrderStudent.getAppUserId());
@@ -890,18 +903,6 @@
                //增加日期,用于判断
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
            }
        CourseCounsum courseCounsum = new CourseCounsum();
        courseCounsum.setPaymentId(coursePackageOrderStudent.getId());
        courseCounsum.setChangeType(0);
        courseCounsum.setNum(toHoliDto.getClassNum());
        courseCounsum.setInsertTime(new Date());
        courseCounsum.setReason("报名假期班");
//        courseCounsum.setAppUserId(userId);
        courseCounsumService.save(courseCounsum);
        }
        return "报名成功";
@@ -966,23 +967,8 @@
    @ResponseBody
    public String toTrans(@RequestBody ToHoliDto toHoliDto) throws ParseException {
        String[] stuIds = toHoliDto.getIds();
//        //查询出学员ids对应的棵树,判断剩余课时数是否够
//        List<CoursePackageOrderStudent> list = orderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>().eq("coursePackageId", toHoliDto.getClassId()).in("studentId", stuIds));
//        List<String> notStudent = new ArrayList<>();
//        for (CoursePackageOrderStudent coursePackageOrderStudent : list) {
//            if (coursePackageOrderStudent.getLaveClassHours() < toHoliDto.getClassNum()) {
//                notStudent.add(studentClient.queryStudentById(coursePackageOrderStudent.getStudentId()).getName());
//            }
//        }
//        if (!notStudent.isEmpty()) {
//            String notStudentStr = String.join(",", notStudent);
//            return notStudentStr+":课时数不足";
//        }
        //转移课程
        for (String stuId : stuIds) {
//            CoursePackageOrderStudent orinPay = orderStudentService.getById(toHoliDto.getId());
            CoursePackageOrderStudent orinPay = orderStudentService.getOne(new QueryWrapper<CoursePackageOrderStudent>()
                    .eq("studentId", stuId)
                    .eq("coursePackageId", toHoliDto.getId()));
@@ -999,10 +985,7 @@
                courseCounsum.setInsertTime(new Date());
                Integer appUserId = orinPay.getAppUserId();
                Integer appUserId1 = studentPay.getAppUserId();
                    courseCounsum.setReason("换课");
                courseCounsum.setReason("换课");
                orinPay.setLaveClassHours(0);
                orinPay.setStatus(3);
                orinPay.setAppUserId(null);
@@ -1011,18 +994,16 @@
                courseCounsum.setNum(laveClassHours);
                courseCounsum.setChangeType(0);
                courseCounsum.setPaymentId(orinPay.getId());
                courseCounsum.setAppUserId(orinPay.getAppUserId());
                counsumService.save(courseCounsum);
                CourseCounsum courseCounsum1 = new CourseCounsum();
                courseCounsum1.setInsertTime(new Date());
//                if (appUserId.compareTo(appUserId1) != 0) {
//                    courseCounsum1.setReason("赠课");
//                } else {
                    courseCounsum1.setReason("换课");
//                }
                courseCounsum1.setReason("换课");
                courseCounsum1.setNum(laveClassHours);
                courseCounsum1.setChangeType(1);
                courseCounsum1.setPaymentId(studentPay.getId());
                courseCounsum1.setAppUserId(studentPay.getAppUserId());
                counsumService.save(courseCounsum1);
                schedulingService.addNewCoursePackageScheduling(studentPay.getId(), laveClassHours);
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/StudentHonorClient.java
New file
@@ -0,0 +1,20 @@
package com.dsh.course.feignclient.account;
import com.dsh.course.feignclient.account.model.StudentHonor;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
 * 勋章
 */
@FeignClient("mb-cloud-account")
public interface StudentHonorClient {
    /**
     * 保存用户勋章
      * @param studentHonor
     */
    @PostMapping("/studentHonor/saveStudentHonor")
    void saveStudentHonor(StudentHonor studentHonor);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/account/model/StudentHonor.java
New file
@@ -0,0 +1,19 @@
package com.dsh.course.feignclient.account.model;
import lombok.Data;
@Data
public class StudentHonor {
    /**
     * 用户id
     */
    private Integer appUserId;
    /**
     * 荣耀类型
     */
    private Integer honorType;
    /**
     * 当前次数
     */
    private Integer number;
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/CoursePackageOrderStudentServiceImpl.java
@@ -69,7 +69,6 @@
        List<CoursePackageScheduling> list = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>()
                        .eq("appUserId", appUserId)
                        .eq("studentId", stuId)
//                        .lt("classDate", sdf.format(calendar.getTime()))
                        .orderByAsc("classDate")
        );
        List<Long> ids = list.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList());
@@ -77,8 +76,6 @@
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd");
        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
        if (list.size() > 0) {
//            int pageNum = 1; // 页码
            int pageSize = 10; // 每页记录数
            Page<CoursePackageStudent> page = new Page<>(pageNum, pageSize);
            IPage<CoursePackageStudent> coursePackageStudentPage = cpsMapper.selectPage(page, new QueryWrapper<CoursePackageStudent>()
@@ -115,12 +112,12 @@
                    }
                    CoursePackageScheduling byId = coursePackageSchedulingService.getById(coursePackageStudent.getCoursePackageSchedulingId());
                    if (byId == null) {
                    CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingService.getById(coursePackageStudent.getCoursePackageSchedulingId());
                    if (coursePackageScheduling == null) {
                        continue;
                    }
                    String dateString1 = sdf.format(byId.getClassDate());
                    String dateString2 = sdf.format(byId.getEndDate());
                    String dateString1 = sdf.format(coursePackageScheduling.getClassDate());
                    String dateString2 = sdf.format(coursePackageScheduling.getEndDate());
                    recordVo.setTimeFrame(dateString1 + "-" + dateString2.substring(11));
@@ -132,73 +129,45 @@
                    String[] split = classWeeks.split(";");
                    List<String> integerList = Arrays.asList(split);
                    String weekOfDate = DateTimeHelper.getWeekOfDate(new Date());
//                    if (integerList.contains(weekOfDate)) {
                        String dat = simpleDateFormat.format(byId.getClassDate()) + " " + dateString1.substring(11);
                    String ed = simpleDateFormat.format(byId.getEndDate()) + " " + dateString2.substring(11);
                    String dat = simpleDateFormat.format(coursePackageScheduling.getClassDate()) + " " + dateString1.substring(11);
                    String ed = simpleDateFormat.format(coursePackageScheduling.getEndDate()) + " " + dateString2.substring(11);
                        Date start = null;
                        Date end = null;
                        try {
                            start = format.parse(dat);
                            end = format.parse(ed);
                        } catch (ParseException e) {
                            throw new RuntimeException(e);
                        }
                    Date start = null;
                    Date end = null;
                    try {
                        start = format.parse(dat);
                        end = format.parse(ed);
                    } catch (ParseException e) {
                        throw new RuntimeException(e);
                    }
                    CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
                            .eq("coursePackageSchedulingId", byId.getId()).last("limit 1"));
//                   else {
//                        Date now = new Date();
//                        if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) {
//                            recordVo.setStatus(2);
//                        } else {
//                            recordVo.setStatus(3);
//
//                        }
//                    }
                            .eq("coursePackageSchedulingId", coursePackageScheduling.getId()).last("limit 1"));
                        //已取消
                        if (byId.getStatus() == 4) {
                            recordVo.setStatus(4);
                        } else if (coursePackageStudent.getSignInOrNot() == 2) {
                            //已请假
                            recordVo.setStatus(5);
                        }else if  (ToolUtil.isNotEmpty(cancelledClasses)) {
                    if (new Date().after(start)&&new Date().before(end)){
                        recordVo.setStatus(2);
                    }
                    //待上课
                    if (start.after(new Date())) {
                        recordVo.setStatus(1);
                    }
                    //已取消
                    if (coursePackageScheduling.getStatus() == 4) {
                        recordVo.setStatus(4);
                    }
                    //已请假
                    if (coursePackageStudent.getSignInOrNot() == 2) {
                        recordVo.setStatus(5);
                    }
                    //已完成
                    if (ToolUtil.isNotEmpty(cancelledClasses)) {
                        recordVo.setStatus(3);
                        // 消课 到课状态0 旷课
                        if (coursePackageStudent.getSignInOrNot() == 0) {
                            recordVo.setStatus(6);
                        }
                    }else if (new Date().after(start)&&new Date().before(end)){
                            recordVo.setStatus(2);
                        }else if (start.after(new Date())) {
                            //待上课
                            recordVo.setStatus(1);
                        }
                        else {
//                            CancelledClasses cancelledClasses = cacMapper.selectOne(new QueryWrapper<CancelledClasses>()
//                                    .eq("coursePackageSchedulingId", byId.getId()).last("limit 1"));
//                            if (ToolUtil.isNotEmpty(cancelledClasses)) {
//                                recordVo.setStatus(3);
//                                // 消课 到课状态0 旷课
//                                if (coursePackageStudent.getSignInOrNot() == 0) {
//                                    recordVo.setStatus(6);
//                                }
//
//                            } else {
//                                Date now = new Date();
//                                if (now.after(byId.getClassDate()) && now.before(byId.getEndDate())) {
//                                    recordVo.setStatus(2);
//                                } else {
//                                    recordVo.setStatus(3);
//
//                                }
//                            }
                        }
//                    } else {
//                        recordVo.setStatus(1);
//                    }
                    }
                    recordVoList.add(recordVo);
                }
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -16,10 +16,7 @@
import com.dsh.course.entity.*;
import com.dsh.course.entity.TAppUser;
import com.dsh.course.entity.dto.StudentQeryDto;
import com.dsh.course.feignclient.account.AppUserClient;
import com.dsh.course.feignclient.account.CoachClient;
import com.dsh.course.feignclient.account.StudentClient;
import com.dsh.course.feignclient.account.UserIntegralChangesClient;
import com.dsh.course.feignclient.account.*;
import com.dsh.course.feignclient.account.model.*;
import com.dsh.course.feignclient.activity.BenefitVideoClient;
import com.dsh.course.feignclient.activity.CouponClient;
@@ -123,6 +120,14 @@
    @Resource
    private UserIntegralChangesClient userIntegralChangesClient;
    @Resource
    private StudentHonorClient studentHonorClient;
    @Override
@@ -361,6 +366,7 @@
                .eq("coursePackageId", detailsRequest.getCoursePackageId())
                .eq("courseId", detailsRequest.getVideoId())
        );
        //完成学习
        if (null != userVideoDetails && userVideoDetails.getState() == 1 && detailsRequest.getIsOver() == 1) {
            userVideoDetails.setState(2);
            userVideoDetails.setUpdateTime(new Date());
@@ -371,11 +377,19 @@
            AppUser appUser = appuClient.queryAppUser(coursePackageScheduling.getAppUserId());
            appUser.setIntegral((null == appUser.getIntegral() ? 0 : appUser.getIntegral()) + (null == coursePackageScheduling.getIntegral() ? 0 : coursePackageScheduling.getIntegral()));
            appuClient.updateAppUser(appUser);
            //保存用户积分变动记录
            SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
            vo.setAppUserId(coursePackageScheduling.getAppUserId());
            vo.setIntegral(coursePackageScheduling.getIntegral());
            vo.setType(4);
            userIntegralChangesClient.saveUserIntegralChanges(vo);
            //添加勋章数据
            Integer number = uvdmapper.selectCount(new QueryWrapper<UserVideoDetails>().eq("appUserId", appUserId).eq("state", 2));
            StudentHonor studentHonor = new StudentHonor();
            studentHonor.setAppUserId(appUserId);
            studentHonor.setHonorType(4);
            studentHonor.setNumber(number);
            studentHonorClient.saveStudentHonor(studentHonor);
            return "SUCCESS";
        }
        return "ERROR";
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/StudentHonorClient.java
New file
@@ -0,0 +1,20 @@
package com.dsh.course.feignClient.account;
import com.dsh.course.feignClient.account.model.StudentHonor;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
 * 勋章
 */
@FeignClient("mb-cloud-account")
public interface StudentHonorClient {
    /**
     * 保存用户勋章
      * @param studentHonor
     */
    @PostMapping("/studentHonor/saveStudentHonor")
    void saveStudentHonor(StudentHonor studentHonor);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/account/model/StudentHonor.java
New file
@@ -0,0 +1,19 @@
package com.dsh.course.feignClient.account.model;
import lombok.Data;
@Data
public class StudentHonor {
    /**
     * 用户id
     */
    private Integer appUserId;
    /**
     * 荣耀类型
     */
    private Integer honorType;
    /**
     * 当前次数
     */
    private Integer number;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CancelledClassesClient.java
@@ -28,4 +28,7 @@
     */
    @PostMapping("/cancelledClasses/addCancelledClasses")
    void addCancelledClasses(CancelledClasses cancelledClasses);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackageSchedulingClient.java
@@ -1,6 +1,7 @@
package com.dsh.course.feignClient.course;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.course.model.CancelledClasses;
import com.dsh.course.feignClient.course.model.CoursePackageScheduling;
import com.dsh.course.feignClient.course.model.QueryCoursePackageSchedulingList;
import org.springframework.cloud.openfeign.FeignClient;
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/TStudentController.java
@@ -329,17 +329,6 @@
        model.addAttribute("item", tStudentDto);
        if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.equals("")) {
//            String[] pics = tStudentDto.getLateralSurface().split(";");
//            model.addAttribute("pic1", pics[0]);
//            System.out.println("=====pic1==" + pics[0]);
//            if (pics.length > 1) {
//                model.addAttribute("pic2", pics[1]);
//                System.out.println("=====pic2==" + pics[1]);
//            }
//            if (pics.length > 2) {
//                model.addAttribute("pic3", pics[2]);
//                System.out.println("=====pic3==" + pics[2]);
//            }
            model.addAttribute("images",tStudentDto.getLateralSurface());
        }
@@ -598,11 +587,6 @@
    @RequestMapping("/changeStatus/{id}")
    @ResponseBody
    public ResultUtil changeStatus(@PathVariable Integer id) {
//        InsertBackDto insertBackDto= new InsertBackDto();
//        insertBackDto.setId(id);
////        insertBackDto.setIds(ids);
//        System.out.println("=====insertBackDto========"+insertBackDto);
        courseStuddentClient.changeStatus(id);
        courseStuddentClient.zeroClass(id);
@@ -613,14 +597,8 @@
    @RequestMapping("/noStatus/{id}")
    @ResponseBody
    public ResultUtil noStatus(@PathVariable Integer id) {
//        InsertBackDto insertBackDto= new InsertBackDto();
//        insertBackDto.setId(id);
////        insertBackDto.setIds(ids);
//        System.out.println("=====insertBackDto========"+insertBackDto);
        courseStuddentClient.noStatus(id);
        courseStuddentClient.backStausClass(id);
//        courseStuddentClient.zeroClass(id);
        System.out.println("============学员查询接口=========");
        return new ResultUtil<>(0,0,"已拒绝",null,null);
@@ -833,14 +811,12 @@
        System.out.println("========ToHoliDto========="+resultUtil);
        if (resultUtil.equals("换课成功")) {
//            return ResultUtil.success(resultUtil);
                        return new ResultUtil<>(0,0,resultUtil);
        }else {
            return new ResultUtil<>(0,1,resultUtil);}
            return new ResultUtil<>(0,1,resultUtil);
        }
//        if (resultUtil==""){
//        }else{
    }
    //赠课
cloud-server-management/src/main/java/com/dsh/guns/modular/system/service/impl/CoursePackageService.java
@@ -3,8 +3,11 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.entity.CoursePackageOrderStudent;
import com.dsh.course.feignClient.account.StudentHonorClient;
import com.dsh.course.feignClient.account.model.StudentHonor;
import com.dsh.course.feignClient.course.*;
import com.dsh.course.feignClient.course.model.*;
import com.dsh.guns.config.UserExt;
@@ -23,10 +26,8 @@
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
@@ -58,6 +59,9 @@
    @Resource
    private CancelledClassesClient cancelledClassesClient;
    @Resource
    private StudentHonorClient studentHonorClient;
@@ -548,8 +552,6 @@
     */
    @Override
    public ResultUtil cancellationRecord(Long id, String cancelClasses, Integer deductClassHour) {
//        CoursePackageScheduling coursePackageScheduling = coursePackageSchedulingClient.queryCoursePackageSchedulingById(id);
        List<CoursePackageScheduling> coursePackageSchedulings =  coursePackageSchedulingClient.queryCoursePackageSchedulingsById(id);
        CoursePackageScheduling coursePackageScheduling1 = coursePackageSchedulings.get(0);
        Date classDate = coursePackageScheduling1.getEndDate();
@@ -564,15 +566,6 @@
            coursePackageScheduling.setDeductClassHour(deductClassHour);
            coursePackageScheduling.setStatus(3);
        }
//        for (CoursePackageScheduling coursePackageScheduling : coursePackageSchedulings) {
//        if(coursePackageScheduling.getStatus() == 1 || coursePackageScheduling.getStatus() == 4){
//            return ResultUtil.error("不能添加消课凭证");
//        }
//        coursePackageScheduling.setCancelClasses(cancelClasses);
//        coursePackageScheduling.setDeductClassHour(deductClassHour);
        coursePackageSchedulingClient.editCoursePackageScheduling(coursePackageSchedulings);
        List<CoursePackageStudent> coursePackageStudents = coursePackageStudentClient.queryByCoursePackageSchedulingId(integers);
@@ -580,8 +573,6 @@
            if(coursePackageStudent.getSignInOrNot() == 2){
                continue;
            }
//            TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(coursePackageStudent.getCoursePackagePaymentId());
            CoursePackageOrderStudent coursePackageOrderStudent = coursePackagePaymentClient.queryCoursePackagePaymentById1(coursePackageStudent.getCoursePackagePaymentId());
            if (deductClassHour!=null) {
@@ -606,17 +597,23 @@
            cancelledClasses.setCoursePackageSchedulingId(coursePackageStudent.getCoursePackageSchedulingId());
            cancelledClasses.setVoucher(cancelClasses);
            if (deductClassHour!=null) {
            cancelledClasses.setCancelledClassesNumber(deductClassHour);}
                cancelledClasses.setCancelledClassesNumber(deductClassHour);
            }
            cancelledClasses.setInsertTime(new Date());
            cancelledClassesClient.addCancelledClasses(cancelledClasses);
            //添加勋章数据
            QueryCoursePackageStudent queryCoursePackageStudent = new QueryCoursePackageStudent();
            queryCoursePackageStudent.setAppUserId(coursePackageStudent.getAppUserId());
            queryCoursePackageStudent.setSignInOrNot(1);
            queryCoursePackageStudent.setReservationStatus(1);
            List<CoursePackageStudent> coursePackageStudents1 = coursePackageStudentClient.queryCoursePackageStudent(queryCoursePackageStudent);
            StudentHonor studentHonor = new StudentHonor();
            studentHonor.setAppUserId(coursePackageStudent.getAppUserId());
            studentHonor.setHonorType(1);
            studentHonor.setNumber(coursePackageStudents1.size());
            studentHonorClient.saveStudentHonor(studentHonor);
        }
//        }
        return ResultUtil.success();
    }
cloud-server-other/src/main/java/com/dsh/other/controller/HonorController.java
@@ -84,10 +84,9 @@
    @PostMapping("/base/honor/getHonor")
    public HonorRules getHonor(@RequestBody List<Integer> integers) {
//        HonorRules one = honorRulesService.getOne(new QueryWrapper<HonorRules>().eq("type", integers.get(0)).le("condition", String.valueOf(integers.get(1))).last("limit 1"));
        HonorRules one = honorRulesService.getOne(new QueryWrapper<HonorRules>()
                .eq("type", integers.get(0))
                .le("`condition`", integers.get(1)).orderByDesc("level")
                .le("`condition`", integers.get(1)).orderByDesc("condition")
                .last("LIMIT 1"));
        if (one == null) {
@@ -101,7 +100,8 @@
        if (one.getLevel() == 10) {
            return one;
        }
        HonorRules one2 = honorRulesService.getOne(new QueryWrapper<HonorRules>().eq("type", integers.get(0)).eq("level", Integer.valueOf(one.getLevel()) + 1));
        HonorRules one2 = honorRulesService.getOne(new QueryWrapper<HonorRules>().eq("type", integers.get(0))
                .eq("level", Integer.valueOf(one.getLevel()) + 1));
        return one2;
    }
cloud-server-other/src/main/java/com/dsh/other/controller/HonorRulesController.java
New file
@@ -0,0 +1,49 @@
package com.dsh.other.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.other.entity.HonorRules;
import com.dsh.other.service.HonorRulesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/honorRules")
public class HonorRulesController {
    @Autowired
    private HonorRulesService honorRulesService;
    /**
     * 获取当前合适的推责
     * @param honorRules
     * @return
     */
    @ResponseBody
    @PostMapping("/getHonorRules")
    public HonorRules getHonorRules(@RequestBody HonorRules honorRules){
        List<HonorRules> list = honorRulesService.list(new QueryWrapper<HonorRules>()
                .eq("type", honorRules.getType()).orderByDesc("condition"));
        for (HonorRules rules : list) {
            Integer condition = rules.getCondition();
            if(honorRules.getCondition().compareTo(condition) >= 0){
                return rules;
            }
        }
        return null;
    }
    /**
     * 根据id获取数据
     * @param id
     * @return
     */
    @ResponseBody
    @PostMapping("/getHonorRulesById")
    public HonorRules getHonorRulesById(Integer id){
        return honorRulesService.getById(id);
    }
}
cloud-server-other/src/main/java/com/dsh/other/feignclient/account/StudentHonorClient.java
New file
@@ -0,0 +1,20 @@
package com.dsh.other.feignclient.account;
import com.dsh.other.feignclient.account.model.StudentHonor;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
/**
 * 勋章
 */
@FeignClient("mb-cloud-account")
public interface StudentHonorClient {
    /**
     * 保存用户勋章
      * @param studentHonor
     */
    @PostMapping("/studentHonor/saveStudentHonor")
    void saveStudentHonor(StudentHonor studentHonor);
}
cloud-server-other/src/main/java/com/dsh/other/feignclient/account/model/StudentHonor.java
New file
@@ -0,0 +1,19 @@
package com.dsh.other.feignclient.account.model;
import lombok.Data;
@Data
public class StudentHonor {
    /**
     * 用户id
     */
    private Integer appUserId;
    /**
     * 荣耀类型
     */
    private Integer honorType;
    /**
     * 当前次数
     */
    private Integer number;
}
cloud-server-other/src/main/java/com/dsh/other/service/impl/SiteServiceImpl.java
@@ -327,7 +327,6 @@
     */
    @Override
    public ResultUtil reservationSite(Integer uid, ReservationSite reservationSite) throws Exception {
        Site site = this.getById(reservationSite.getId());
        AppUser appUser = appUserClient.queryAppUser(uid);
        String[] split = reservationSite.getTimes().split(";");
@@ -387,7 +386,6 @@
                    return ResultUtil.error("优惠券已过期");
                }
                if (userCoupon != null && coupon.getType() == 1) {//满减
//                {"conditionalAmount":50,"deductionAmount":10,"experienceName":""}
                    JSONObject jsonObject = JSON.parseObject(coupon.getContent());
                    Double num1 = jsonObject.getDouble("conditionalAmount");
                    Double num2 = jsonObject.getDouble("deductionAmount");
@@ -449,6 +447,9 @@
        }
        if (reservationSite.getPayType() == 3) {//玩湃币支付
            if (reservationSite.getIsHalf() == 2) {
                return playPaiCoinPaymentSite(appUser, Double.valueOf(site.getPlayPaiCoin()), siteBooking);
            } else {
                return playPaiCoinPaymentSite(appUser, site.getPlayPaiCoinOne(), siteBooking);
cloud-server-other/src/main/java/com/dsh/other/util/TaskUtil.java
@@ -1,13 +1,17 @@
package com.dsh.other.util;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.other.entity.SiteBooking;
import com.dsh.other.feignclient.account.StudentHonorClient;
import com.dsh.other.feignclient.account.model.StudentHonor;
import com.dsh.other.mapper.SiteBookingMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@@ -22,6 +26,12 @@
    @Resource
    private SiteBookingMapper siteBookingMapper;
    @Resource
    private StudentHonorClient studentHonorClient;
    /**
     * 每隔一分钟去处理的定时任务
@@ -74,6 +84,16 @@
                if (System.currentTimeMillis() > time) {
                    siteBooking.setStatus(4);
                    siteBookingMapper.updateById(siteBooking);
                    //添加勋章数据
                    Integer number = siteBookingMapper.selectCount(new QueryWrapper<SiteBooking>()
                            .eq("appUserId", siteBooking.getAppUserId()).in("status", Arrays.asList(3, 4)));
                    StudentHonor studentHonor = new StudentHonor();
                    studentHonor.setAppUserId(siteBooking.getAppUserId());
                    studentHonor.setHonorType(3);
                    studentHonor.setNumber(number);
                    studentHonorClient.saveStudentHonor(studentHonor);
                }
            }
            //定时修改赛事状态
@@ -88,14 +108,11 @@
        try {
            // 获取待核销状态的记录
            List<SiteBooking> siteBookings = siteBookingMapper.selectList(new LambdaQueryWrapper<SiteBooking>()
                    .eq(SiteBooking::getStatus, 1));
                    .eq(SiteBooking::getStatus, 0).eq(SiteBooking::getState, 1));
            for (SiteBooking siteBooking : siteBookings) {
                if(null == siteBooking.getEndTime()){
                    continue;
                }
                long time = siteBooking.getEndTime().getTime();
                if (System.currentTimeMillis() > time) {
                    siteBooking.setStatus(4);
                long time = siteBooking.getInsertTime().getTime();
                if (System.currentTimeMillis() > time + 1800000L) {
                    siteBooking.setState(3);
                    siteBookingMapper.updateById(siteBooking);
                }
            }