java
2023-06-29 38209c2eceafc11e6d0f3b63a61e91d8d4a642a6
课程信息:课时详情中的记录的数据处理
2 文件已复制
1 文件已重命名
24个文件已修改
32个文件已添加
1204 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/CouponMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/web/CancelledClassesController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.account.entity.TStudent;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import com.dsh.account.model.vo.classDetails.classInsVo.*;
import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest;
import com.dsh.account.service.TAppUserService;
cloud-server-account/src/main/java/com/dsh/account/entity/TAppUser.java
@@ -1,14 +1,13 @@
package com.dsh.account.entity;
import java.util.Date;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.Date;
/**
 * <p>
@@ -127,6 +126,10 @@
     * 用户头像
     */
    private String headImg;
    /**
     * 添加时间
     */
    private Date insertTime;
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/activity/IntroduceRewardsClient.java
New file
@@ -0,0 +1,21 @@
package com.dsh.account.feignclient.activity;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-activity")
public interface IntroduceRewardsClient {
    @PostMapping("/introduce/useOfRewards")
    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime,
                                                           @RequestBody  Date endTime,
                                                           @RequestBody  List<Integer> userIds);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/DeductionCompetitionsClient.java
@@ -1,16 +1,19 @@
package com.dsh.account.feignclient.competition;
import com.dsh.account.model.vo.classDetails.classInsVo.PurchaseRecordVo;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-competition")
public interface DeductionCompetitionsClient {
    @PostMapping("/competition/getCompetitionsDetails")
    public List<PurchaseRecordVo> getStuSourseList(@RequestParam("appUserId") Integer appUserId);
    public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime,
                                                   @RequestBody Date  endTime,
                                                   @RequestBody Integer appUserId);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java
copy from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java copy to cloud-server-account/src/main/java/com/dsh/account/feignclient/competition/model/PurchaseRecordVo.java
File was copied from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
@@ -1,4 +1,4 @@
package com.dsh.account.model.vo.classDetails.classInsVo;
package com.dsh.account.feignclient.competition.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CancelListClient.java
New file
@@ -0,0 +1,20 @@
package com.dsh.account.feignclient.course;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-course")
public interface CancelListClient {
    @PostMapping("/cancelSource/cancelList")
    public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime,
                                                      @RequestBody Date  endTime,
                                                      @RequestBody Integer stuId,
                                                      @RequestBody Integer appUserId);
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CourseSessionNameClient.java
@@ -1,11 +1,13 @@
package com.dsh.account.feignclient.course;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-course")
@@ -13,6 +15,15 @@
    @PostMapping("/coursePack/sessionNames")
    List<StuSessionDetailsVo> getStuSessionList(@RequestParam("stuId") Integer stuId,@RequestParam("appUserId") Integer appUserId);
    List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime,
                                                @RequestBody Date  endTime,
                                                @RequestBody Integer stuId,
                                                @RequestBody Integer appUserId);
    @PostMapping("/coursePack/paymentCourse")
    public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime,
                                                     @RequestBody Date  endTime,
                                                     @RequestBody Integer stuId,
                                                     @RequestBody Integer appUserId);
}
cloud-server-account/src/main/java/com/dsh/account/mapper/TAppUserMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.account.entity.TAppUser;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -12,6 +13,7 @@
 * @author administrator
 * @since 2023-06-14
 */
@Mapper
public interface TAppUserMapper extends BaseMapper<TAppUser> {
}
cloud-server-account/src/main/java/com/dsh/account/mapper/TStudentMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.account.entity.TStudent;
import org.apache.ibatis.annotations.Mapper;
/**
@@ -12,6 +13,7 @@
 * @author administrator
 * @since 2023-06-14
 */
@Mapper
public interface TStudentMapper extends BaseMapper<TStudent> {
}
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDataDetails.java
@@ -1,5 +1,6 @@
package com.dsh.account.model.vo.classDetails.classInsVo;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassDetailsInsVo.java
@@ -1,5 +1,6 @@
package com.dsh.account.model.vo.classDetails.classInsVo;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -18,8 +19,6 @@
    @ApiModelProperty(value = "学员姓名")
    private String stuName;
    @ApiModelProperty(value = "课时有效期(xxxx-xx-xx)")
    private String periodOfValidity;
    @ApiModelProperty(value = "总学时数")
    private Integer totalNums;
@@ -33,7 +32,10 @@
    @ApiModelProperty(value = "课包名称列表")
    private List<StuSessionDetailsVo> sessionNames;
    @ApiModelProperty(value = "已扣课时数")
    private Integer deductionClassHours;
    @ApiModelProperty(value = "课包列表")
    private List<ClassDataDetails> details;
    private List<PurchaseRecordVo> details;
}
cloud-server-account/src/main/java/com/dsh/account/service/impl/TStudentServiceImpl.java
@@ -1,20 +1,30 @@
package com.dsh.account.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.entity.TStudent;
import com.dsh.account.feignclient.activity.IntroduceRewardsClient;
import com.dsh.account.feignclient.competition.DeductionCompetitionsClient;
import com.dsh.account.feignclient.competition.model.PurchaseRecordVo;
import com.dsh.account.feignclient.course.CancelListClient;
import com.dsh.account.feignclient.course.CourseSessionNameClient;
import com.dsh.account.feignclient.course.model.StuSessionDetailsVo;
import com.dsh.account.mapper.TAppUserMapper;
import com.dsh.account.mapper.TStudentMapper;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassDetailsInsVo;
import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq;
import com.dsh.account.service.TStudentService;
import com.dsh.account.util.DateTimeHelper;
import com.dsh.account.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
@@ -29,6 +39,18 @@
    @Autowired
    private CourseSessionNameClient sessionNameClient;
    @Autowired
    private DeductionCompetitionsClient dcttClient;
    @Autowired
    private CancelListClient cancelcClient;
    @Autowired
    private IntroduceRewardsClient idrClient;
    @Autowired
    private TAppUserMapper tauMapper;
    @Override
    public void addStuOfAppUser(StuDetailsReq stu,Integer appUserId) {
@@ -54,17 +76,93 @@
    @Override
    public ClassDetailsInsVo querySessionDetailsDt(Integer userIdFormRedis, Integer lessonId, Integer stuId) {
        ClassDetailsInsVo insVo = new ClassDetailsInsVo();
        List<StuSessionDetailsVo> stuSessionList = sessionNameClient.getStuSessionList(stuId,userIdFormRedis);
        Date localMonthStart = DateTimeHelper.getCurrentMouthStart();
        Date localMonthEnd = DateTimeHelper.getCurrentMouthEnd();
        List<StuSessionDetailsVo> stuSessionList = sessionNameClient.getStuSessionList(localMonthStart,localMonthEnd,stuId,userIdFormRedis);
        TStudent tStudent = this.baseMapper.selectById(stuId);
        if (ToolUtil.isNotEmpty(tStudent)){
            insVo.setStuId(tStudent.getId());
            insVo.setStuName(tStudent.getName());
            insVo.setStuImage(tStudent.getHeadImg());
            insVo.setSessionNames(stuSessionList);
            List<PurchaseRecordVo> purchaseRecordVoList = new ArrayList<>();
            List<PurchaseRecordVo> stuSourseList = dcttClient.getStuSourseList(localMonthStart,localMonthEnd,userIdFormRedis);
            purchaseRecordVoList.addAll(stuSourseList);
            List<PurchaseRecordVo> cancelCourseList = cancelcClient.getCancelCourseList(localMonthStart,localMonthEnd,stuId,userIdFormRedis);
            purchaseRecordVoList.addAll(cancelCourseList);
            List<PurchaseRecordVo> purchaseRecordVos = sessionNameClient.queryCourseDetails(localMonthStart,localMonthEnd,stuId,userIdFormRedis);
            purchaseRecordVoList.addAll(purchaseRecordVos);
            List<TAppUser> tAppUsers = tauMapper.selectList(new QueryWrapper<TAppUser>()
                    .eq("referralUserId",userIdFormRedis )
                    .between("insertTime",localMonthStart ,localMonthEnd));
            List<Integer> userIds = tAppUsers.stream().map(TAppUser::getId).collect(Collectors.toList());
            List<PurchaseRecordVo> purchaseRecordVos1 = idrClient.queryAppUsersofIntroduce(localMonthStart, localMonthEnd, userIds);
            purchaseRecordVoList.addAll(purchaseRecordVos1);
            insVo.setSessionNames(stuSessionList);
            insVo.setDetails(dealDataOfTime(purchaseRecordVoList));
            insVo.setTotalNums(0);
            insVo.setDeductedNums(0);
            insVo.setRemainingNums(0);
            insVo.setDeductionClassHours(0);
        }
        return insVo;
    }
    public static List<PurchaseRecordVo> dealDataOfTime(List<PurchaseRecordVo> purchaseRecords) {
        Collections.sort(purchaseRecords, new Comparator<PurchaseRecordVo>() {
            @Override
            public int compare(PurchaseRecordVo record1, PurchaseRecordVo record2) {
                SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm");
                Date date1 = null;
                Date date2 = null;
                try {
                    date1 = dateFormat.parse(record1.getPurchaseTime());
                    date2 = dateFormat.parse(record2.getPurchaseTime());
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                // 倒序排序
                return date2.compareTo(date1);
            }
        });
        return purchaseRecords;
    }
//    public static List<String> dealDataOfTime(List<String> timeStrings) {
//        Collections.sort(timeStrings, new Comparator<String>() {
//            @Override
//            public int compare(String time1, String time2) {
//                String[] parts1 = time1.split(" ");
//                String[] parts2 = time2.split(" ");
//                String[] dateParts1 = parts1[0].split("-");
//                String[] dateParts2 = parts2[0].split("-");
//                String[] timeParts1 = parts1[1].split(":");
//                String[] timeParts2 = parts2[1].split(":");
//                int month1 = Integer.parseInt(dateParts1[0]);
//                int day1 = Integer.parseInt(dateParts1[1]);
//                int hour1 = Integer.parseInt(timeParts1[0]);
//                int minute1 = Integer.parseInt(timeParts1[1]);
//                int month2 = Integer.parseInt(dateParts2[0]);
//                int day2 = Integer.parseInt(dateParts2[1]);
//                int hour2 = Integer.parseInt(timeParts2[0]);
//                int minute2 = Integer.parseInt(timeParts2[1]);
//                // 倒序排序
//                if (month1 != month2) {
//                    return month2 - month1;
//                } else if (day1 != day2) {
//                    return day2 - day1;
//                } else if (hour1 != hour2) {
//                    return hour2 - hour1;
//                } else {
//                    return minute2 - minute1;
//                }
//            }
//        });
//        return timeStrings;
//    }
}
cloud-server-account/src/main/java/com/dsh/account/util/DateTimeHelper.java
@@ -1350,6 +1350,23 @@
    }
    /**
     * 获取当月结束时23点59分59秒
     *
     * @return
     */
    public static Date getCurrentMouthEnd() {
        Date d = getSystemDate();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(d);
        int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        calendar.set(Calendar.DAY_OF_MONTH, lastDay);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        return calendar.getTime();
    }
    /**
     * 返回下月的这天
     *
     * @param date
cloud-server-activity/src/main/java/com/dsh/activity/controller/IntroduceRewardsController.java
New file
@@ -0,0 +1,46 @@
package com.dsh.activity.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.IntroduceRewards;
import com.dsh.activity.feignclient.model.PurchaseRecordVo;
import com.dsh.activity.service.IntroduceRewardsService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Api
@CrossOrigin
@RestController
@RequestMapping("")
public class IntroduceRewardsController {
    @Autowired
    private IntroduceRewardsService idrService;
    private final SimpleDateFormat mat = new SimpleDateFormat("MM-dd HH:mm");
    @PostMapping("/introduce/useOfRewards")
    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime, @RequestBody  Date endTime, @RequestBody  List<Integer> userIds){
        List<PurchaseRecordVo> recordVos = new ArrayList<>();
        List<IntroduceRewards> list = idrService.list(new QueryWrapper<IntroduceRewards>()
                .ge("startTime",startTime)
                .lt("endTime",endTime));
        IntroduceRewards introduceRewards = list.get(0);
        userIds.forEach( userId -> {
            PurchaseRecordVo recordVo = new PurchaseRecordVo();
            recordVo.setPurchaseAmount("+"+introduceRewards.getGiveClass());
            recordVo.setPurchaseType("介绍有礼");
            recordVos.add(recordVo);
        } );
        return recordVos;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/entity/Coupon.java
New file
@@ -0,0 +1,139 @@
package com.dsh.activity.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
 * <p>
 * 优惠券
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_coupon")
public class Coupon extends Model<Coupon> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 优惠券名称
     */
    private String name;
    /**
     * 优惠券类型(1=满减券,2=代金券,3=体验券)
     */
    private Integer type;
    /**
     * 优惠券规则JSON
     */
    private String content;
    /**
     * 优惠券说明
     */
    private String illustrate;
    /**
     * 发放方式(1=积分购买,2=注册赠送,3=自动发券)
     */
    private Integer distributionMethod;
    /**
     * 兑换方式(1=积分,2=积分+现金)
     */
    private Integer redemptionMethod;
    /**
     * 所需现金
     */
    private BigDecimal cash;
    /**
     * 所属积分
     */
    private BigDecimal integral;
    /**
     * 用户人群(1=全部用户,2=年度会员,3=已有学员用户)
     */
    private Integer userPopulation;
    /**
     * 发放数量
     */
    private Integer quantityIssued;
    /**
     * 限领数量
     */
    private Integer pickUpQuantity;
    /**
     * 开始时间
     */
    private Date startTime;
    /**
     * 结束时间
     */
    private Date endTime;
    /**
     * 使用范围(1=全国,2=指定城市,3=指定门店)
     */
    private Integer useScope;
    /**
     * 省
     */
    private String province;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 市
     */
    private String city;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 审核状态(1=待审核,2=已通过,3=已拒绝)
     */
    private Integer auditStatus;
    /**
     * 审核人id
     */
    private Integer auditUserId;
    /**
     * 审核备注
     */
    private String auditRemark;
    /**
     * 状态(1=未开始,2=已开始,3=已结束,4=已取消)
     */
    private Integer status;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
    /**
     * 添加时间
     */
    private Date insertTime;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/entity/IntroduceRewards.java
New file
@@ -0,0 +1,78 @@
package com.dsh.activity.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * 介绍奖励
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_introduce_rewards")
public class IntroduceRewards extends Model<IntroduceRewards> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 省
     */
    private String province;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 市
     */
    private String city;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 开始时间
     */
    private Date startTime;
    /**
     * 结束时间
     */
    private Date endTime;
    /**
     * 赠送课时
     */
    private Integer giveClass;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
    /**
     * 添加时间
     */
    private Date insertTime;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/entity/UserCoupon.java
New file
@@ -0,0 +1,66 @@
package com.dsh.activity.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * 用户优惠券领取记录
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_user_coupon")
public class UserCoupon extends Model<UserCoupon> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 优惠券id
     */
    private Integer couponId;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 状态(1=待核销,2=已核销)
     */
    private Integer status;
    /**
     * 核销人员id
     */
    private Integer verificationUserId;
    /**
     * 核销时间
     */
    private Date verificationTime;
    /**
     * 领取时间
     */
    private Date insertTime;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/entity/UserPointsMerchandise.java
New file
@@ -0,0 +1,66 @@
package com.dsh.activity.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * 用户积分商品领取记录
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_user_points_merchandise")
public class UserPointsMerchandise extends Model<UserPointsMerchandise> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 优惠券id
     */
    private Integer pointsMerchandiseId;
    /**
     * 用户id
     */
    private Integer userId;
    /**
     * 状态(1=待核销,2=已核销)
     */
    private Integer status;
    /**
     * 核销人员id
     */
    private Integer verificationUserId;
    /**
     * 核销时间
     */
    private Date verificationTime;
    /**
     * 领取时间
     */
    private Date insertTime;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/IntroduceRewardsClient.java
New file
@@ -0,0 +1,20 @@
package com.dsh.activity.feignclient;
import com.dsh.activity.feignclient.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-activity")
public interface IntroduceRewardsClient {
    @PostMapping("/introduce/useOfRewards")
    public List<PurchaseRecordVo> queryAppUsersofIntroduce(@RequestBody Date startTime,
                                                           @RequestBody  Date endTime,
                                                           @RequestBody  List<Integer> userIds);
}
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/model/PurchaseRecordVo.java
File was renamed from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
@@ -1,4 +1,4 @@
package com.dsh.account.model.vo.classDetails.classInsVo;
package com.dsh.activity.feignclient.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
cloud-server-activity/src/main/java/com/dsh/activity/mapper/CouponMapper.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.activity.entity.Coupon;
/**
 * <p>
 * 优惠券 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface CouponMapper extends BaseMapper<Coupon> {
}
cloud-server-activity/src/main/java/com/dsh/activity/mapper/IntroduceRewardsMapper.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.activity.entity.IntroduceRewards;
/**
 * <p>
 * 介绍奖励 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface IntroduceRewardsMapper extends BaseMapper<IntroduceRewards> {
}
cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserCouponMapper.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.activity.entity.UserCoupon;
/**
 * <p>
 * 用户优惠券领取记录 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface UserCouponMapper extends BaseMapper<UserCoupon> {
}
cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserPointsMerchandiseMapper.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.activity.entity.UserPointsMerchandise;
/**
 * <p>
 * 用户积分商品领取记录 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface UserPointsMerchandiseMapper extends BaseMapper<UserPointsMerchandise> {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/CouponService.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.Coupon;
/**
 * <p>
 * 优惠券 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface CouponService extends IService<Coupon> {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/IntroduceRewardsService.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.IntroduceRewards;
/**
 * <p>
 * 介绍奖励 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface IntroduceRewardsService extends IService<IntroduceRewards> {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/UserCouponService.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.UserCoupon;
/**
 * <p>
 * 用户优惠券领取记录 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface UserCouponService extends IService<UserCoupon> {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/UserPointsMerchandiseService.java
New file
@@ -0,0 +1,16 @@
package com.dsh.activity.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.UserPointsMerchandise;
/**
 * <p>
 * 用户积分商品领取记录 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface UserPointsMerchandiseService extends IService<UserPointsMerchandise> {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/CouponServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.dsh.activity.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.Coupon;
import com.dsh.activity.mapper.CouponMapper;
import com.dsh.activity.service.CouponService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 优惠券 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Service
public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements CouponService {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/IntroduceRewardsServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.dsh.activity.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.IntroduceRewards;
import com.dsh.activity.mapper.IntroduceRewardsMapper;
import com.dsh.activity.service.IntroduceRewardsService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 介绍奖励 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Service
public class IntroduceRewardsServiceImpl extends ServiceImpl<IntroduceRewardsMapper, IntroduceRewards> implements IntroduceRewardsService {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserCouponServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.dsh.activity.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.UserCoupon;
import com.dsh.activity.mapper.UserCouponMapper;
import com.dsh.activity.service.UserCouponService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 用户优惠券领取记录 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Service
public class UserCouponServiceImpl extends ServiceImpl<UserCouponMapper, UserCoupon> implements UserCouponService {
}
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserPointsMerchandiseServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.dsh.activity.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.activity.entity.UserPointsMerchandise;
import com.dsh.activity.mapper.UserPointsMerchandiseMapper;
import com.dsh.activity.service.UserPointsMerchandiseService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 用户积分商品领取记录 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Service
public class UserPointsMerchandiseServiceImpl extends ServiceImpl<UserPointsMerchandiseMapper, UserPointsMerchandise> implements UserPointsMerchandiseService {
}
cloud-server-activity/src/main/resources/mapper/CouponMapper.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.activity.mapper.CouponMapper">
    <!-- 开启二级缓存 -->
    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
</mapper>
cloud-server-activity/src/main/resources/mapper/IntroduceRewardsMapper.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.activity.mapper.IntroduceRewardsMapper">
    <!-- 开启二级缓存 -->
    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
</mapper>
cloud-server-activity/src/main/resources/mapper/UserCouponMapper.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.activity.mapper.UserCouponMapper">
    <!-- 开启二级缓存 -->
    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
</mapper>
cloud-server-activity/src/main/resources/mapper/UserPointsMerchandiseMapper.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.activity.mapper.UserPointsMerchandiseMapper">
    <!-- 开启二级缓存 -->
    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>
</mapper>
cloud-server-competition/src/main/java/com/dsh/competition/controller/CompetitionController.java
@@ -8,13 +8,11 @@
import com.dsh.competition.service.CompetitionService;
import com.dsh.competition.service.UserCompetitionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -40,7 +38,7 @@
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm");
    @PostMapping("/competition/getCompetitionsDetails")
    public List<PurchaseRecordVo> getStuSourseList(@RequestParam("appUserId") Integer appUserId){
    public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime, @RequestBody Date  endTime,@RequestParam("appUserId") Integer appUserId){
        List<PurchaseRecordVo> recordVos = new ArrayList<>();
@@ -48,7 +46,7 @@
                .eq("payType",3 )
                .eq("auditStatus",2));
        List<Integer> comIds = list.stream().map(Competition::getId).collect(Collectors.toList());
        List<UserCompetition> userCompetitions = ucttService.queryUsersCompetetions(appUserId,comIds);
        List<UserCompetition> userCompetitions = ucttService.queryUsersCompetetions(startTime,endTime,appUserId,comIds);
        if (userCompetitions.size() > 0){
            userCompetitions.forEach(coms ->{
                PurchaseRecordVo recordVo = new PurchaseRecordVo();
cloud-server-competition/src/main/java/com/dsh/competition/feignclient/DeductionCompetitionsClient.java
@@ -4,14 +4,18 @@
import com.dsh.competition.feignclient.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-competition")
public interface DeductionCompetitionsClient {
    @PostMapping("/competition/getCompetitionsDetails")
    public List<PurchaseRecordVo> getStuSourseList(@RequestParam("appUserId") Integer appUserId);
    public List<PurchaseRecordVo> getStuSourseList(@RequestBody Date startTime,
                                                   @RequestBody Date  endTime,
                                                   @RequestParam("appUserId") Integer appUserId);
}
cloud-server-competition/src/main/java/com/dsh/competition/mapper/UserCompetitionMapper.java
@@ -4,6 +4,7 @@
import com.dsh.competition.entity.UserCompetition;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@@ -17,6 +18,9 @@
public interface UserCompetitionMapper extends BaseMapper<UserCompetition> {
    List<UserCompetition> queryUsersCompetetions(@Param("appUserId") Integer appUserId,@Param("comIds") List<Integer> comIds);
    List<UserCompetition> queryUsersCompetetions(@Param("startTime") Date startTime,
                                                 @Param("endTime") Date endTime ,
                                                 @Param("appUserId") Integer appUserId,
                                                 @Param("comIds") List<Integer> comIds);
}
cloud-server-competition/src/main/java/com/dsh/competition/service/UserCompetitionService.java
@@ -3,6 +3,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.competition.entity.UserCompetition;
import java.util.Date;
import java.util.List;
/**
@@ -16,6 +17,6 @@
public interface UserCompetitionService extends IService<UserCompetition> {
    List<UserCompetition> queryUsersCompetetions(Integer appUserId, List<Integer> comIds);
    List<UserCompetition> queryUsersCompetetions(Date startTime, Date  endTime ,Integer appUserId, List<Integer> comIds);
}
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/UserCompetitionServiceImpl.java
@@ -6,6 +6,7 @@
import com.dsh.competition.service.UserCompetitionService;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@@ -21,7 +22,7 @@
    @Override
    public List<UserCompetition> queryUsersCompetetions(Integer appUserId, List<Integer> comIds) {
        return this.baseMapper.queryUsersCompetetions(appUserId,comIds);
    public List<UserCompetition> queryUsersCompetetions(Date startTime, Date endTime , Integer appUserId, List<Integer> comIds) {
        return this.baseMapper.queryUsersCompetetions(startTime,endTime,appUserId,comIds);
    }
}
cloud-server-competition/src/main/resources/mapper/UserCompetitionMapper.xml
@@ -30,6 +30,9 @@
            #{item}
        </foreach>
        </if>
        <if test="startTime != null and endTime != null">
            and (insertTime between #{startTime} and #{endTime})
        </if>
    </select>
</mapper>
cloud-server-course/src/main/java/com/dsh/course/controller/CancelSourceController.java
New file
@@ -0,0 +1,66 @@
package com.dsh.course.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.course.entity.CancelledClasses;
import com.dsh.course.entity.TCoursePackagePayment;
import com.dsh.course.feignclient.model.PurchaseRecordVo;
import com.dsh.course.service.CancelledClassesService;
import com.dsh.course.service.TCoursePackagePaymentService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Api
@CrossOrigin
@RestController
@RequestMapping("")
public class CancelSourceController {
    @Autowired
    private CancelledClassesService caceService;
    @Autowired
    private TCoursePackagePaymentService tcppService;
    private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
    /**
     * 获取课包对应的消费记录
     * @param stuId 学员id
     * @param appUserId 用户id
     * @return
     */
    @PostMapping("/cancelSource/cancelList")
    public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime,@RequestBody Date  endTime,@RequestBody Integer stuId,@RequestBody Integer appUserId){
        List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>();
        List<TCoursePackagePayment> tCoursePackagePayments = tcppService.queryAllCoursePackage(startTime,endTime,stuId, appUserId);
        List<Integer> coursePackageIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList());
        List<CancelledClasses> list = caceService.list(new QueryWrapper<CancelledClasses>()
                .in("coursePackageId", coursePackageIds)
                .between("insertTime",startTime,endTime));
        if (list.size() > 0){
            list.forEach( canse -> {
                PurchaseRecordVo purchaseRecordVo = new PurchaseRecordVo();
                purchaseRecordVo.setPurchaseTime(format.format(canse.getInsertTime()));
                purchaseRecordVo.setPurchaseType("");
                purchaseRecordVo.setPurchaseAmount("-"+canse.getCancelledClassesNumber());
                purchaseRecordVos.add(purchaseRecordVo);
            });
        }
        return purchaseRecordVos;
    }
}
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -9,10 +9,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@@ -30,7 +27,7 @@
    @PostMapping("/course/queryList")
    public List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds){
    public List<ExerciseVideo> queryStuCourseAfterVideos(@RequestBody List<Integer> courseIds){
        List<ExerciseVideo> videos = new ArrayList<>();
        List<TCourse> list = courseService.list(new QueryWrapper<TCourse>()
                .in("id", courseIds)
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -5,6 +5,7 @@
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.entity.TCoursePackagePayment;
import com.dsh.course.feignclient.model.CourseOfStoreVo;
import com.dsh.course.feignclient.model.PurchaseRecordVo;
import com.dsh.course.feignclient.model.StuCourseResp;
import com.dsh.course.feignclient.model.StuSessionDetailsVo;
import com.dsh.course.service.TCoursePackagePaymentService;
@@ -16,7 +17,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -35,6 +38,8 @@
    @Autowired
    private TCoursePackageService tcpService;
    private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm");
    /**
     * 获取 没有学员信息的图片配置
     * @param stuId 学员id
@@ -43,7 +48,7 @@
    @PostMapping("/coursePack/queryPayment")
    public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId,@RequestBody Integer appUserId){
        List<StuCourseResp> resps = new ArrayList<>();
        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId,appUserId);
        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(null,null,stuId,appUserId);
        if (byUserId.size() > 0 ){
            for (TCoursePackagePayment tCoursePackagePayment : byUserId) {
                TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
@@ -86,9 +91,9 @@
     * 课程名称列表
     */
    @PostMapping("/coursePack/sessionNames")
    public List<StuSessionDetailsVo> getStuSessionList(@RequestParam("stuId") Integer stuId,@RequestParam("appUserId") Integer appUserId){
    public List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime, @RequestBody Date  endTime, @RequestBody Integer stuId, @RequestBody Integer appUserId){
        List<StuSessionDetailsVo> detailsVos = new ArrayList<>();
        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId,appUserId);
        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(startTime,endTime,stuId,appUserId);
        if (byUserId.size() > 0){
            List<Integer> collect = byUserId.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList());
            List<TCoursePackage> list = tcpService.list(new QueryWrapper<TCoursePackage>()
@@ -104,4 +109,22 @@
        }
        return detailsVos;
    }
    @PostMapping("/coursePack/paymentCourse")
    public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime, @RequestBody Date  endTime,@RequestBody Integer stuId, @RequestBody Integer appUserId) {
        List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>();
        List<TCoursePackagePayment> coursePackage = packagePaymentService.queryAllCoursePackage(startTime,endTime,stuId, appUserId);
        if (coursePackage.size() > 0 ){
            coursePackage.forEach( cspackage -> {
                PurchaseRecordVo recordVo = new PurchaseRecordVo();
                recordVo.setPurchaseAmount("+"+cspackage.getClassHours());
                recordVo.setPurchaseTime(format.format(cspackage.getInsertTime()));
                recordVo.setPurchaseType("购买课包");
                purchaseRecordVos.add(recordVo);
            });
        }
        return purchaseRecordVos;
    }
}
cloud-server-course/src/main/java/com/dsh/course/entity/CancelledClasses.java
New file
@@ -0,0 +1,58 @@
package com.dsh.course.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * 课包消课记录
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_cancelled_classes")
public class CancelledClasses extends Model<CancelledClasses> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 课包id
     */
    private Integer coursePackageId;
    /**
     * 消课凭证
     */
    private String voucher;
    /**
     * 消课数量
     */
    private Integer cancelledClassesNumber;
    /**
     * 添加时间
     */
    private Date insertTime;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/CancelListClient.java
New file
@@ -0,0 +1,20 @@
package com.dsh.course.feignclient;
import com.dsh.course.feignclient.model.PurchaseRecordVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-course")
public interface CancelListClient {
    @PostMapping("/cancelSource/cancelList")
    public List<PurchaseRecordVo> getCancelCourseList(@RequestBody Date startTime,
                                                      @RequestBody Date  endTime,
                                                      @RequestBody Integer stuId,
                                                      @RequestBody Integer appUserId);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java
@@ -4,6 +4,7 @@
import com.dsh.course.feignclient.model.ExerciseVideo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -11,5 +12,5 @@
public interface CourseListClient {
    @PostMapping("/course/queryList")
    List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds);
    List<ExerciseVideo> queryStuCourseAfterVideos(@RequestBody List<Integer> courseIds);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseSessionNameClient.java
@@ -1,11 +1,13 @@
package com.dsh.course.feignclient;
import com.dsh.course.feignclient.model.PurchaseRecordVo;
import com.dsh.course.feignclient.model.StuSessionDetailsVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.Date;
import java.util.List;
@FeignClient(value = "mb-cloud-course")
@@ -13,6 +15,16 @@
    @PostMapping("/coursePack/sessionNames")
    List<StuSessionDetailsVo> getStuSessionList(@RequestParam("stuId") Integer stuId, @RequestParam("appUserId") Integer appUserId);
    List<StuSessionDetailsVo> getStuSessionList(@RequestBody Date startTime,
                                                @RequestBody Date  endTime,
                                                @RequestBody Integer stuId,
                                                @RequestBody Integer appUserId);
    @PostMapping("/coursePack/paymentCourse")
    public List<PurchaseRecordVo> queryCourseDetails(@RequestBody Date startTime,
                                                     @RequestBody Date  endTime,
                                                     @RequestBody Integer stuId,
                                                     @RequestBody Integer appUserId);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java
copy from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java copy to cloud-server-course/src/main/java/com/dsh/course/feignclient/model/PurchaseRecordVo.java
File was copied from cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/PurchaseRecordVo.java
@@ -1,4 +1,4 @@
package com.dsh.account.model.vo.classDetails.classInsVo;
package com.dsh.course.feignclient.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -14,10 +14,10 @@
    @ApiModelProperty(value = "类型名称")
    private String purchaseType;
    @ApiModelProperty(value = "类型变动时间 例如 06-29 10:48")
    @ApiModelProperty(value = "类型变动时间")
    private String purchaseTime;
    @ApiModelProperty(value = "类型涉及金额 例如 +100  -50")
    @ApiModelProperty(value = "类型涉及金额")
    private String purchaseAmount;
}
cloud-server-course/src/main/java/com/dsh/course/mapper/CancelledClassesMapper.java
New file
@@ -0,0 +1,16 @@
package com.dsh.course.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.course.entity.CancelledClasses;
/**
 * <p>
 * 课包消课记录 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface CancelledClassesMapper extends BaseMapper<CancelledClasses> {
}
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@@ -16,7 +17,9 @@
 */
public interface TCoursePackagePaymentMapper extends BaseMapper<TCoursePackagePayment> {
    List<TCoursePackagePayment> queryAllCoursePackage(@Param("stuId") Integer stuId,
    List<TCoursePackagePayment> queryAllCoursePackage(@Param("startTime")Date startTime,
                                                      @Param("endTime")Date  endTime ,
                                                      @Param("stuId") Integer stuId,
                                                      @Param("appUserId") Integer appUserId);
}
cloud-server-course/src/main/java/com/dsh/course/service/CancelledClassesService.java
New file
@@ -0,0 +1,16 @@
package com.dsh.course.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.course.entity.CancelledClasses;
/**
 * <p>
 * 课包消课记录 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
public interface CancelledClassesService extends IService<CancelledClasses> {
}
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
@@ -1,8 +1,9 @@
package com.dsh.course.service;
import com.dsh.course.entity.TCoursePackagePayment;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.course.entity.TCoursePackagePayment;
import java.util.Date;
import java.util.List;
/**
@@ -15,6 +16,6 @@
 */
public interface TCoursePackagePaymentService extends IService<TCoursePackagePayment> {
    List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId,Integer appUserId);
    List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date  endTime ,Integer stuId, Integer appUserId);
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/CancelledClassesServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.dsh.course.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.CancelledClasses;
import com.dsh.course.mapper.CancelledClassesMapper;
import com.dsh.course.service.CancelledClassesService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 课包消课记录 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@Service
public class CancelledClassesServiceImpl extends ServiceImpl<CancelledClassesMapper, CancelledClasses> implements CancelledClassesService {
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@@ -20,7 +21,7 @@
public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService {
    @Override
    public List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId,Integer appUserId) {
        return this.baseMapper.queryAllCoursePackage(stuId,appUserId);
    public List<TCoursePackagePayment> queryAllCoursePackage(Date startTime, Date  endTime , Integer stuId, Integer appUserId) {
        return this.baseMapper.queryAllCoursePackage(startTime,endTime,stuId,appUserId);
    }
}
cloud-server-course/src/main/java/com/dsh/course/web/CancelledClassesController.java
New file
@@ -0,0 +1,21 @@
package com.dsh.course.web;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 课包消课记录 前端控制器
 * </p>
 *
 * @author jqs
 * @since 2023-06-29
 */
@RestController
@RequestMapping("/cancelled-classes")
public class CancelledClassesController {
}
cloud-server-course/src/main/resources/mapper/CancelledClassesMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsh.course.mapper.CancelledClassesMapper">
</mapper>
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -50,6 +50,9 @@
        <if test="appUserId != null">
            and appUserId = #{appUserId}
        </if>
        <if test="startTime != null and endTime != null">
            and (insertTime between #{startTime} and #{endTime})
        </if>
    </select>
</mapper>