44323
2023-11-28 fade481769731552d9a16c79c9a5323e6f015b36
后台bug修改
17个文件已修改
1个文件已添加
547 ■■■■ 已修改文件
cloud-server-course/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 340 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/pom.xml
@@ -15,6 +15,12 @@
    <description>课程</description>
    <dependencies>
        <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.1</version>
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentConfigController.java
@@ -55,6 +55,19 @@
    public List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList(@RequestBody Integer coursePackageId) {
        return coursePackagePaymentConfigService.list(new QueryWrapper<CoursePackagePaymentConfig>().eq("coursePackageId", coursePackageId));
    }
    /**
     * 根据课时规格id获取价格配置
     *
     * @param
     * @return
     */
    @ResponseBody
    @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList1")
    public List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList1(@RequestBody Integer coursePackagePaymentConfigId) {
        return coursePackagePaymentConfigService.
                list(new QueryWrapper<CoursePackagePaymentConfig>()
                        .eq("id", coursePackagePaymentConfigId));
    }
    /**
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -16,6 +16,7 @@
import com.dsh.course.feignclient.other.StoreClient;
import com.dsh.course.feignclient.other.model.Store;
import com.dsh.course.mapper.CoursePackageSchedulingMapper;
import com.dsh.course.mapper.CoursePackageStudentMapper;
import com.dsh.course.mapper.TCoursePackageMapper;
import com.dsh.course.model.*;
import com.dsh.course.model.dto.DiscountJsonDto;
@@ -31,6 +32,7 @@
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
@@ -60,6 +62,8 @@
    @Autowired
    private TCoursePackagePaymentService packagePaymentService;
    @Resource
    private CoursePackageStudentMapper cpsMapper;
    @Autowired
    private ICoursePackageOrderService coursePackageOrderService;
@@ -161,17 +165,15 @@
     */
    @RequestMapping("/base/coursePackagePayment/add")
    public Object addCoursePackagePayment(@RequestBody TCoursePackagePayment packagePayment) {
        //校验是否已经报满
        Integer cpId = Integer.valueOf((int) packagePayment.getCoursePackageId());
        Integer integer = coursePackagePaymentService.queryCountNumber(cpId);
        TCoursePackage course = coursePackageService.getById(packagePayment.getId());
        TCoursePackage course = coursePackageService.getById(packagePayment.getCoursePackageId());
        if (course.getType() != 3) {
            if (integer + 1 > course.getMaxSubscribeNumber()) {
                return 5001;
            }
        }
        // 如果重复购买 累加课时
        CoursePackageOrder coursePackageOrder = new CoursePackageOrder();
        coursePackageOrder.setAppUserId(packagePayment.getAppUserId());
        coursePackageOrder.setStudentIds(String.valueOf(packagePayment.getStudentId()));
@@ -185,29 +187,9 @@
        coursePackageOrder.setInsertTime(new Date());
        coursePackageOrder.setSalesName(packagePayment.getSalesName());
        coursePackageOrderService.save(coursePackageOrder);
        TCoursePackage byId = coursePackageService.getById(packagePayment.getCoursePackageId());
        if (byId.getType()==1){
            CoursePackageOrderStudent coursePackageOrderStudent = new CoursePackageOrderStudent();
            coursePackageOrderStudent.setAppUserId(packagePayment.getAppUserId());
            coursePackageOrderStudent.setStudentId(packagePayment.getStudentId());
            coursePackageOrderStudent.setCoursePackageId(packagePayment.getCoursePackageId());
            coursePackageOrderStudent.setTotalClassHours(packagePayment.getClassHours());
            coursePackageOrderStudent.setLaveClassHours(packagePayment.getClassHours());
            coursePackageOrderStudent.setAbsencesNumber(0);
            coursePackageOrderStudent.setDropoutsNumber(0);
            coursePackageOrderStudent.setStatus(1);
            coursePackageOrderStudent.setState(1);
            coursePackageOrderStudent.setInsertTime(new Date());
            coursePackageOrderStudent.setGiftClassHours(packagePayment.getGiftClassHours());
            // 获取常规课的有效期 计算是哪一天
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DAY_OF_MONTH, byId.getValidDays());
            Date time = calendar.getTime();
            coursePackageOrderStudent.setUseTime(time);
            return coursePackageOrderStudentService.save(coursePackageOrderStudent);
        }
        // 生成排课数据
        return null;
        return 200;
    }
@@ -218,13 +200,95 @@
     */
    @RequestMapping("/base/coursePackagePayment/changeState")
    public Object changeState(@RequestBody CoursePackagePayDTO dto) {
        String ids = dto.getIds();
        Long aLong = Long.valueOf(ids);
        CoursePackageOrder byId1 = coursePackageOrderService.getById(aLong);
        TCoursePackage byId = coursePackageService.getById(byId1.getCoursePackageId());
        if (byId.getType()==1){
            // 如果重复购买 累加课时
            CoursePackageOrderStudent coursePackageOrderStudent = coursePackageOrderStudentService
                    .getOne(new QueryWrapper<CoursePackageOrderStudent>().eq("studentId", Integer.valueOf(byId1.getStudentIds()))
                            .eq("coursePackageId", byId1.getCoursePackageId()).eq("status", 1).eq("state", 1));
            if (null == coursePackageOrderStudent) {
                coursePackageOrderStudent = new CoursePackageOrderStudent();
                coursePackageOrderStudent.setAppUserId(byId1.getAppUserId());
                coursePackageOrderStudent.setStudentId(Integer.valueOf(byId1.getStudentIds()));
                coursePackageOrderStudent.setCoursePackageId(byId1.getCoursePackageId());
                coursePackageOrderStudent.setTotalClassHours(byId1.getClassHours());
                coursePackageOrderStudent.setLaveClassHours(byId1.getClassHours());
                coursePackageOrderStudent.setAbsencesNumber(0);
                coursePackageOrderStudent.setStatus(1);
                coursePackageOrderStudent.setState(1);
                coursePackageOrderStudent.setInsertTime(new Date());
                // 判断这个订单购买的是哪一个课时规格
                CoursePackagePaymentConfig one1 = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
                        .eq("coursePackageId", byId.getId())
                        .eq("classHours", byId1.getClassHours()));
                // 判断当前购买的课包有没有赠送课时
                TCoursePackageDiscount one = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", byId.getId())
                        .eq("type", 4).eq("auditStatus", 2).eq("status", 1)
                        .eq("coursePackagePaymentConfigId",one1.getId()));
                if (one!=null){
                    Integer giftClassHours = getGiftClassHours(one);
                    coursePackageOrderStudent.setGiftClassHours(giftClassHours);
                    coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours()+giftClassHours);
                    coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours()+giftClassHours);
                }else{
                    coursePackageOrderStudent.setGiftClassHours(0);
                }
                Integer validDays = byId.getValidDays();
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(new Date());
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                coursePackageOrderStudent.setUseTime(calendar.getTime());
                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
                Integer studentId = Integer.valueOf(byId1.getStudentIds());
                //开始排课
                addPackageStudent1(byId, byId1.getAppUserId(), studentId, coursePackageOrderStudent);
            } else {
                Date useTime = coursePackageOrderStudent.getUseTime();
                coursePackageOrderStudent.setTotalClassHours(coursePackageOrderStudent.getTotalClassHours() + byId1.getClassHours());
                coursePackageOrderStudent.setLaveClassHours(coursePackageOrderStudent.getLaveClassHours() + byId1.getClassHours());
                Integer validDays = byId.getValidDays();
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(useTime.compareTo(new Date()) < 0 ? new Date() : useTime);
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + validDays);
                coursePackageOrderStudent.setUseTime(calendar.getTime());
                // 判断这个订单购买的是哪一个课时规格
                CoursePackagePaymentConfig one1 = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>()
                        .eq("coursePackageId", byId.getId())
                        .eq("classHours", byId1.getClassHours()));
                // 判断当前购买的课包有没有赠送课时
                TCoursePackageDiscount one = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>().eq("coursePackageId", byId.getId())
                        .eq("type", 4).eq("auditStatus", 2).eq("status", 1)
                        .eq("coursePackagePaymentConfigId",one1.getId()));
                if (one!=null){
                    Integer giftClassHours = getGiftClassHours(one);
                    coursePackageOrderStudent.setGiftClassHours(giftClassHours);
                }else{
                    coursePackageOrderStudent.setGiftClassHours(0);
                }
                // 获取常规课的有效期 计算是哪一天
                Calendar calendar9 = Calendar.getInstance();
                calendar9.add(Calendar.DAY_OF_MONTH, byId.getValidDays());
                Date time = calendar9.getTime();
                coursePackageOrderStudent.setUseTime(time);
                coursePackageOrderStudentService.saveOrUpdate(coursePackageOrderStudent);
                Integer studentId = Integer.valueOf(byId1.getStudentIds());
                //中间断课,没有连续续费的情况需要重新排课
                if (useTime.compareTo(new Date()) < 0) {
                    addPackageStudent1(byId, byId1.getAppUserId(), studentId, coursePackageOrderStudent);
                }
            }
        }
        return packagePaymentService.changeState(dto);
    }
    @GetMapping("/coursePackagePayment/courseStore/{appUserId}/{coursePackageId}")
    public List<TCoursePackagePayment> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId) {
        List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>()
    public List<CoursePackageOrderStudent> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId) {
        List<CoursePackageOrderStudent> list = coursePackageOrderStudentService.list(new QueryWrapper<CoursePackageOrderStudent>()
                .eq("appUserId", appUserId)
                .eq("coursePackageId", coursePackageId));
        return list;
@@ -245,11 +309,21 @@
                    re.setCashPayment(new BigDecimal(value));
                }
            }
            Store store = storeClient.queryStoreById(re.getStoreId());
            TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId());
            Student student = studentClient.queryStudentById(re.getStudentId());
            re.setPayStudent(student.getName());
            String studentId = re.getStudentId();
            String[] split = studentId.split(",");
            StringBuilder stringBuilder = new StringBuilder("");
            for (String s : split) {
                Student student = studentClient.queryStudentById(Integer.valueOf(s));
                stringBuilder.append(student.getName()+",");
            }
            String string = stringBuilder.toString();
            if (string.length() > 0) {
                String stringWithoutLastCharacter = string.substring(0, string.length() - 1);
                re.setPayStudent(stringWithoutLastCharacter);
            }
            re.setPayUser(appUser.getName());
            re.setPhone(appUser.getPhone());
            re.setStoreName(store.getName());
@@ -262,7 +336,7 @@
                        } else {
                            List<Student> students = studentClient.queryStudentListByName(query.getPayStudent());
                            for (Student student1 : students) {
                                if (student.getName().equals(student1.getName())) {
                                if (string.contains(student1.getName())) {
                                    result.add(re);
                                }
                            }
@@ -270,7 +344,6 @@
                    }
                }
            }
            if (re.getPayType() != null) {
                if (re.getPayType() == 1) {
                    re.setBuyTypeName("微信支付");
@@ -1717,9 +1790,208 @@
        return dateList.toArray(new Date[0]);
    }
    public Integer getGiftClassHours(TCoursePackageDiscount one){
        // 判断购买时间 是否满足折扣规则
        char c = one.getContent().charAt(0);
        String value1 = String.valueOf(c);
        JSONObject jsonObject ;
        if (value1.equals("[")){
            jsonObject = JSONObject.fromObject(one.getContent()
                    .substring(1,one.getContent().length() - 1));
        }else{
            jsonObject = JSONObject.fromObject(one.getContent());
        }
        // 赠送课时 判断当前课包有没有赠送课时
        String weeks = jsonObject.getString("weeks");
        // 判断当前周几 是否满足折扣规则
        // 获取当前日期
        LocalDate currentDate = LocalDate.now();
        // 获取当前日期是星期几的数字表示
        int dayOfWeekAsNumber = currentDate.getDayOfWeek().getValue();
        if (weeks.contains(String.valueOf(dayOfWeekAsNumber))){
            // 限时折扣判断是否在有效期
            try {
                // 判断当日时间是否能享受到折扣
                String startTime = jsonObject.getString("startTime");
                String endTime = jsonObject.getString("endTime");
                // 获取当前时间
                Date currentTime = new Date();
                // 定义时间格式
                SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
                // 解析开始时间和结束时间为Date对象
                Date startTime1 = sdf.parse(startTime);
                Date endTime1 = sdf.parse(endTime);
                Date date1 = new Date();
                date1.setHours(startTime1.getHours());
                date1.setMinutes(startTime1.getMinutes());
                date1.setSeconds(startTime1.getSeconds());
                Date date2 = new Date();
                date2.setHours(endTime1.getHours());
                date2.setMinutes(endTime1.getMinutes());
                date2.setSeconds(endTime1.getSeconds());
                // 检查当前时间是否在开始时间和结束时间之间
                if (currentTime.after(date1) && currentTime.before(date2)) {
                    System.out.println("当前时间在开始时间和结束时间之间。");
                    String hour = jsonObject.getString("hour");
                    return Integer.valueOf(hour);
                } else {
                    System.out.println("当前时间不在开始时间和结束时间之间。");
                    return 0;
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
            return 0;
    }
    @Autowired
    private TCoursePackageService coursePackageService;
    private void addPackageStudent1(TCoursePackage tCoursePackage, Integer userId, Integer sId, CoursePackageOrderStudent coursePackageOrderStudent) {
        try {
            //1常规 2假期 3体验
            if (tCoursePackage.getType() == 1) {
                //上课星期
                String classWeeks = tCoursePackage.getClassWeeks();
                List<Integer> week = week(classWeeks);
                //上课时段
                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");
                //剩余课时
                Integer laveClassHours = coursePackageOrderStudent.getLaveClassHours();
                //扣除课时数
                Integer codeTime = tCoursePackage.getCodeTime();
                //排课 本周+下周,课时不够扣则直接剩余不排课
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(new Date());
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
                int day_week = calendar.get(Calendar.DAY_OF_WEEK);
                day_week = day_week - 1 == 0 ? 7 : day_week - 1;
                int num = 8 - day_week + 7;
                Date useTime = coursePackageOrderStudent.getUseTime();
                for (int i = 0; i < num; i++) {
                    Date time = calendar.getTime();
                    //判断当天是否在排课星期内
                    int day = calendar.get(Calendar.DAY_OF_WEEK);
                    day = day - 1 == 0 ? 7 : day - 1;
                    if (!week.contains(day)) {
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                        continue;
                    }
                    //大于有效期不进行排课
                    if (calendar.getTimeInMillis() >= useTime.getTime()) {
                        break;
                    }
                    for (int j = 0; j < split.length; j++) {
                        //剩余数量不足以排课
                        if (laveClassHours.compareTo(codeTime) < 0) {
                            break;
                        }
                        laveClassHours -= codeTime;
                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                        coursePackageScheduling.setType(tCoursePackage.getType());
                        coursePackageScheduling.setAppUserId(userId);
                        coursePackageScheduling.setStudentId(sId);
                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
                        Date parse = format1.parse(format.format(time) + " " + split[j]);
                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                        coursePackageScheduling.setClassDate(parse);
                        coursePackageScheduling.setEndDate(parse1);
                        coursePackageScheduling.setStatus(1);
                        coursePackageSchedulingService.save(coursePackageScheduling);
                        CoursePackageStudent student1 = new CoursePackageStudent();
                        student1.setAppUserId(userId);
                        student1.setStudentId(sId);
                        student1.setCoursePackageId(tCoursePackage.getId());
                        student1.setCoursePackagePaymentId(coursePackageOrderStudent.getId());
                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                        student1.setSignInOrNot(1);
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        cpsMapper.insert(student1);
                    }
                    //增加日期,用于判断
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                }
            }
            if (tCoursePackage.getType() == 2) {
                //上课星期
                String classWeeks = tCoursePackage.getClassWeeks();
                List<Integer> week = week(classWeeks);
                //上课时段
                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 startTime = tCoursePackage.getStartTime();
                Date endTime = tCoursePackage.getEndTime();
                //排课 本周+下周,课时不够扣则直接剩余不排课
                Calendar calendar = Calendar.getInstance();
                //假期开始使用当前时间为起始时间进行排课
                calendar.setTime(startTime.getTime() > System.currentTimeMillis() ? startTime : new Date());
                calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                while (true) {
                    Date time = calendar.getTime();
                    //判断当天是否在排课星期内
                    int day = calendar.get(Calendar.DAY_OF_WEEK);
                    day = day - 1 == 0 ? 7 : day - 1;
                    if (!week.contains(day)) {
                        calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                        continue;
                    }
                    //大于有效期不进行排课
                    if (calendar.getTimeInMillis() > endTime.getTime()) {
                        break;
                    }
                    for (int j = 0; j < split.length; j++) {
                        CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling();
                        coursePackageScheduling.setType(tCoursePackage.getType());
                        coursePackageScheduling.setAppUserId(userId);
                        coursePackageScheduling.setStudentId(sId);
                        coursePackageScheduling.setCoursePackageId(tCoursePackage.getId());
                        Date parse = format1.parse(format.format(time) + " " + split[j]);
                        Date parse1 = format1.parse(format.format(time) + " " + split1[j]);
                        coursePackageScheduling.setClassDate(parse);
                        coursePackageScheduling.setEndDate(parse1);
                        coursePackageScheduling.setStatus(1);
                        coursePackageSchedulingService.save(coursePackageScheduling);
                        CoursePackageStudent student1 = new CoursePackageStudent();
                        student1.setAppUserId(userId);
                        student1.setStudentId(sId);
                        student1.setCoursePackageId(tCoursePackage.getId());
                        student1.setCoursePackagePaymentId(null);
                        student1.setCoursePackageSchedulingId(coursePackageScheduling.getId());
                        student1.setSignInOrNot(1);
                        student1.setReservationStatus(1);
                        student1.setInsertTime(new Date());
                        cpsMapper.insert(student1);
                    }
                    //增加日期,用于判断
                    calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void addPackageStudent(Integer courseId, Integer userId, Integer sId, Long paymentId) throws ParseException {
        // 课包
        TCoursePackage tCoursePackage = coursePackageService.getById(courseId);
@@ -1855,8 +2127,6 @@
                }
            }
        }
        // 2.0
        TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord();
        tCourseInfoRecord.setUserId(userId);
@@ -1866,8 +2136,6 @@
        tCourseInfoRecord.setTime(new Date());
        tCourseInfoRecord.setType(2);
        appUserClient.addCourseInfoRecord(tCourseInfoRecord);
    }
    @ResponseBody
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -194,4 +194,6 @@
    private Integer orderId;
    @TableField("giftClassHours")
    private Integer giftClassHours;
    // 所选课时规格id
    private Integer coursePackageConfigId;
}
cloud-server-course/src/main/java/com/dsh/course/mapper/CoursePackagePaymentConfigMapper.java
@@ -15,7 +15,7 @@
public interface CoursePackagePaymentConfigMapper extends BaseMapper<CoursePackagePaymentConfig> {
    List<CoursePackagePaymentVO> listAll(@Param("query") CoursePackagePaymentQuery query);
    int changeState(@Param("ids") List<Long> ids, @Param("payUserName") String payUserName, @Param("payUserId") Integer payUserId);
    int changeState(@Param("ids") Long ids, @Param("payUserName") String payUserName, @Param("payUserId") Integer payUserId);
    List<RegisterOrderVO> listAllRegister(@Param("query") RegisterOrderQuery query, @Param("sTime") String sTime, @Param("eTime") String eTime, @Param("amount") BigDecimal amount);
cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePayDTO.java
@@ -9,7 +9,7 @@
 */
@Data
public class CoursePackagePayDTO {
    private List<String> ids;
    private String ids;
    private String payUserName;
    // 操作人id
    private Integer userId;
cloud-server-course/src/main/java/com/dsh/course/model/CoursePackagePaymentVO.java
@@ -43,7 +43,7 @@
    private String payUser;
    private String phone;
    // 学员id
    private Integer studentId;
    private String studentId;
    private String payStudent;
    private Integer payType;
    private BigDecimal originalPrice;
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -130,13 +130,8 @@
    @Override
    public int changeState(CoursePackagePayDTO dto) {
        List<String> ids = dto.getIds();
        List<Long> list = new ArrayList<>();
        for (String id : ids) {
            long value = Long.parseLong(id);
            list.add(value);
        }
        return cpConfigMapper.changeState(list, dto.getPayUserName(), dto.getUserId());
        return cpConfigMapper.changeState(Long.valueOf(dto.getIds()), dto.getPayUserName(), dto.getUserId());
    }
    @Override
cloud-server-course/src/main/resources/mapper/CoursePackagePaymentConfigMapper.xml
@@ -12,25 +12,23 @@
        <result column="playPaiCoin" property="playPaiCoin"/>
    </resultMap>
    <update id="changeState">
        update t_course_package_payment set
        payStatus = 2,payUserName = #{payUserName},payType = 7,payUserId=#{payUserId}
        update t_course_package_order set
        payStatus = 2,payUserName = #{payUserName},payType = 7,payUserId=#{payUserId},
        payUserType = 2
        <where>
            <if test="ids != null and ids.size()>0">
                AND t_course_package_payment.id IN
                <foreach collection="ids" separator="," item="id" open="(" close=")">
                    #{id}
                </foreach>
            <if test="ids!=null and ids!= ''">
                and t_course_package_order.id = #{ids}
            </if>
        </where>
    </update>
    <select id="listAll" resultType="com.dsh.course.model.CoursePackagePaymentVO">
        select
        t1.id,t1.studentId,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.giftClassHours,t1.studentId,t1.appUserId,t1.cashPayment,t1.playPaiCoin,
        t1.id,t1.payUserType,t1.payStatus,t1.payType,t1.originalPrice,t1.userCouponId,t1.payUserId,t1.studentIds as studentId,t1.appUserId,t1.cashPayment,t1.playPaiCoin,
        t1.payUserName as buyTypeName,
        CONCAT(t2.province,t2.city) as provinceAndCity,t2.coursePackageTypeId,t2.storeId,t2.name as coursePackage,
        t3.name as coursePackageType
        from t_course_package_payment t1
        from t_course_package_order t1
        left join t_course_package t2 on t1.coursePackageId = t2.id
        left join t_course_package_type t3 on t2.coursePackageTypeId = t3.id
        <where>
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentClient.java
@@ -1,12 +1,10 @@
package com.dsh.course.feignClient.course;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsh.course.feignClient.course.model.QueryRegistrationRecord;
import com.dsh.course.feignClient.course.model.QueryWalkInStudentList;
import com.dsh.course.feignClient.course.model.TCoursePackage;
import com.dsh.course.feignClient.course.model.*;
import com.dsh.course.feignClient.course.model.TCoursePackagePayment;
import com.dsh.guns.modular.system.model.*;
import com.dsh.guns.modular.system.model.dto.CoursePackage;
import com.dsh.guns.modular.system.util.ResultUtil;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@@ -112,5 +110,6 @@
    HashMap<String, Object> courseStore(@RequestBody List<Integer> userPt);
    @GetMapping("/coursePackagePayment/courseStore/{appUserId}/{coursePackageId}")
    List<TCoursePackagePayment> getByUserIdAndCoursePackageId(@PathVariable("appUserId") Integer appUserId,@PathVariable("coursePackageId") Integer coursePackageId);
    List<CoursePackageOrderStudent> getByUserIdAndCoursePackageId
            (@PathVariable("appUserId") Integer appUserId, @PathVariable("coursePackageId") Integer coursePackageId);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/CoursePackagePaymentConfigClient.java
@@ -37,6 +37,13 @@
     */
    @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList")
    List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList(Integer coursePackageId);
    /**
     * 根据课包id获取价格配置
     * @param
     * @return
     */
    @PostMapping("/coursePackagePaymentConfig/queryCoursePackagePaymentConfigList1")
    List<CoursePackagePaymentConfig> queryCoursePackagePaymentConfigList1(Integer coursePackagePaymentConfigId);
    /**
cloud-server-management/src/main/java/com/dsh/course/feignClient/course/model/CoursePackageOrderStudent.java
New file
@@ -0,0 +1,96 @@
package com.dsh.course.feignClient.course.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * @author zhibing.pu
 * @Date 2023/11/25 11:59
 */
@Data
@TableName("t_course_package_order_student")
public class CoursePackageOrderStudent {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 用户id
     */
    @TableField("appUserId")
    private Integer appUserId;
    /**
     * 学员id
     */
    @TableField("studentId")
    private Integer studentId;
    /**
     * 课包id
     */
    @TableField("coursePackageId")
    private Integer coursePackageId;
    /**
     * 总课时
     */
    @TableField("totalClassHours")
    private Integer totalClassHours;
    /**
     * 剩余课时
     */
    @TableField("laveClassHours")
    private Integer laveClassHours;
    /**
     * 缺课次数
     */
    @TableField("absencesNumber")
    private Integer absencesNumber;
    /**
     * 退课课时
     */
    @TableField(exist = false)
    private Integer dropoutsNumber;
    /**
     * 课程状态(1=正常,2=已退课)
     */
    @TableField("status")
    private Integer status;
    /**
     * 退课时间
     */
    @TableField("withdrawalTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date withdrawalTime;
    /**
     * 退课凭证
     */
    @TableField("certificate")
    private String certificate;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    @TableField("state")
    private Integer state;
    /**
     * 添加时间
     */
    @TableField("insertTime")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date insertTime;
    /**
     * 赠送课时
     */
    @TableField("giftClassHours")
    private Integer giftClassHours;
    /**
     * 课程有效期
     */
    @TableField("useTime")
    private Date useTime;
}
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/CoursePackagePaymentController.java
@@ -135,6 +135,7 @@
        for (TCoursePackageDiscount tCoursePackageDiscount : tCoursePackageDiscounts) {
            char c = tCoursePackageDiscount.getContent().charAt(0);
            String value1 = String.valueOf(c);
            JSONObject jsonObject ;
            if (value1.equals("[")){
                jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent()
@@ -142,10 +143,10 @@
            }else{
                jsonObject = JSONObject.fromObject(tCoursePackageDiscount.getContent());
            }
            // 获取当前课包价格配置
            Integer coursePackageId1 = tCoursePackagePayment.getCoursePackageId();
            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(coursePackageId1);
            // 获取所选课时的课包价格配置
            List<CoursePackagePaymentConfig> coursePackagePaymentConfigs =
                    coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList1
                            (tCoursePackagePayment.getCoursePackageConfigId());
            if (coursePackagePaymentConfigs.size()!=0){
                CoursePackagePaymentConfig coursePackagePaymentConfig = coursePackagePaymentConfigs.get(0);
                tCoursePackagePayment.setOriginalPrice(coursePackagePaymentConfig.getCashPayment());
@@ -174,7 +175,9 @@
                    break;
                case 2:
                    // 判断当前用户是否已经购买过当前课包
                    List<com.dsh.course.feignClient.course.model.TCoursePackagePayment> result= coursePackagePaymentClient.getByUserIdAndCoursePackageId(tCoursePackagePayment.getAppUserId(),tCoursePackagePayment.getCoursePackageId());
                    List<CoursePackageOrderStudent> result=
                            coursePackagePaymentClient.getByUserIdAndCoursePackageId(tCoursePackagePayment.getAppUserId(),
                                    tCoursePackagePayment.getCoursePackageId());
                    // 已经购买了
                    if (result.size()!=0){
                        // 会员续课折扣
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePayDTO.java
@@ -9,7 +9,7 @@
 */
@Data
public class CoursePackagePayDTO {
    private List<String> ids;
    private String ids;
    private String payUserName;
    // 操作人id
    private Integer userId;
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/CoursePackagePaymentVO.java
@@ -45,7 +45,7 @@
    private String payUser;
    private String phone;
    // 学员id
    private Integer studentId;
    private String studentId;
    private String payStudent;
    private Integer payType;
cloud-server-management/src/main/java/com/dsh/guns/modular/system/model/TCoursePackagePayment.java
@@ -174,4 +174,6 @@
    private Integer hasHours;
    private BigDecimal laveCashPayment;
    private BigDecimal cashPayment1;
    // 所选课时规格id
    private Integer coursePackageConfigId;
}
cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment.js
@@ -14,7 +14,7 @@
 */
TQuestion.initColumn = function () {
    return [
        {field: 'selectItem', checkbox: true},
        {field: 'selectItem', radio: true},
        {title: '序号', field: 'id', visible: true, align: 'center', valign: 'middle'},
        {title: '所在省市', field: 'provinceAndCity', visible: role==1?true:false, align: 'center', valign: 'middle'},
        {title:  '门店名称', field: 'storeName', visible: true, align: 'center', valign: 'middle'},
@@ -538,23 +538,16 @@
TQuestion.unfreeze = function () {
    if (this.check()) {
        var selected = $('#' + this.id).bootstrapTable('getSelections');
        console.log("看看选择")
        console.log(selected)
        const data1 = {
            ids:[],
            ids:TQuestion.seItem.id,
            payUserName:""
        };
        selected.forEach(function(obj) {
            if (obj.payStatus == 2){
                Feng.error("订单已支付!不能再手动支付了")
                return;
            }
            var id = "";
             id = obj.id;
            console.log(obj.id);
            data1.ids.push(id);
        });
        if (TQuestion.seItem.payStatus == 2){
            Feng.error("订单已支付!不能再手动支付了")
            return;
        }
        console.log(data1)
        $.ajax({
            url: Feng.ctxPath + "/cpPayment/pay",
cloud-server-management/src/main/webapp/static/modular/system/cpPayment/cpPayment_info.js
@@ -260,8 +260,12 @@
        giftClassHours:null,
        useTime:"",
        payUserName:"",
        coursePackageConfigId:null
    };
    data.appUserId            = appUserId;
    console.log("我看看规格id")
    console.log($("#courseTime").val())
    data.coursePackageConfigId            = $("#courseTime").val();
    data.studentId                = $("#student").val()
    data.coursePackageId       = $("#coursePackageName").val()
    data.cashPayment             = $("#cashPayment").val()
@@ -312,6 +316,7 @@
    var courseTimeId= $("#courseTime").val()
    console.log("看看课时")
    console.log(courseTimeId)
    data.coursePackageConfigId            = courseTimeId;
    if(typeof courseTimeId === 'undefined'){
        console.log("进入")
        courseTimeId=0;