puzhibing
2023-06-24 440af299beb5088bbf87a4bab925cc5b530a7c8e
Merge remote-tracking branch 'origin/master'
18个文件已修改
1个文件已删除
17个文件已添加
869 ■■■■■ 已修改文件
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/enums/WeeksEnum.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseOfStoreVo.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/CourseVenue.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java 90 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/util/LocalDateTimeUtils.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/util/LonlatUtils.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/CourseOfStoreVo.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/ExerciseVideo.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | 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/TCoursePackagePaymentService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/servs/CoursePackagePaymentRepository.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/java/com/dsh/course/util/LocalDateTimeUtils.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/Store.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/entity/StoreConfig.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/StoreConfigMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/mapper/StoreMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/StoreConfigService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/StoreService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/StoreConfigServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/java/com/dsh/other/service/impl/StoreServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/StoreConfigMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-other/src/main/resources/mapper/StoreMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -2,18 +2,20 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq;
import com.dsh.account.util.DateUtil;
import com.dsh.account.entity.TStudent;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
import com.dsh.account.model.vo.classDetails.classInsVo.StuDetailsReq;
import com.dsh.account.model.vo.classDetails.classInsVo.StuListVo;
import com.dsh.account.model.vo.classDetails.classInsVo.StuPhysicalVo;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.service.TStudentService;
import com.dsh.account.util.DateUtil;
import com.dsh.account.util.ResultUtil;
import com.dsh.account.util.TokenUtil;
import com.dsh.account.util.ToolUtil;
import io.swagger.annotations.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,10 +23,8 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -157,7 +157,7 @@
     */
    @ResponseBody
    @PostMapping("/stu/lessonDetails")
    @ApiOperation(value = "该APP用户下的学员列表", tags = {"APP-开始上课-学员列表"}, notes = "")
    @ApiOperation(value = "课时详情", tags = {"APP-开始上课-课时详情"}, notes = "")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
cloud-server-account/src/main/java/com/dsh/account/enums/WeeksEnum.java
New file
@@ -0,0 +1,35 @@
package com.dsh.account.enums;
import java.util.Objects;
public enum WeeksEnum {
    Mon(1,"M"),
    Tues(2,"T"),
    Wed(3,"W"),
    Thurs(4,"T"),
    Fri(5,"F"),
    Sat(6,"S"),
    Sun(7,"S"),
    ;
    Integer ins;
    String msg;
    WeeksEnum(Integer ins, String msg) {
        this.ins = ins;
        this.msg = msg;
    }
    public static String getStr(Integer wks){
        WeeksEnum[] values = WeeksEnum.values();
        for (WeeksEnum value : values) {
            if (Objects.equals(wks, value.ins)){
                return value.msg;
            }
        }
        return null;
    }
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
@@ -1,5 +1,6 @@
package com.dsh.account.feignclient.course;
import com.dsh.account.feignclient.course.model.CourseOfStoreVo;
import com.dsh.account.feignclient.course.model.StuCourseResp;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -12,4 +13,8 @@
    @PostMapping("/coursePack/queryPayment")
    List<StuCourseResp> getStuCoursePayment();
    @PostMapping("/coursePack/storeOfCourse")
    List<CourseOfStoreVo> getStoreOfCourses();
}
cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/CourseOfStoreVo.java
New file
@@ -0,0 +1,59 @@
package com.dsh.account.feignclient.course.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class CourseOfStoreVo {
    @ApiModelProperty(value = "课包id")
    private Integer courseId;
    @ApiModelProperty(value = "课包名称")
    private String courseName;
    @ApiModelProperty(value = "课包开始时间")
    private String classStartTime;
    @ApiModelProperty(value = "课包结束时间")
    private String classEndTime;
    @ApiModelProperty(value = "课包 周列表 分号隔开1;2;3;4;5")
    private String classWeeks;
    @ApiModelProperty(value = "门店id")
    private Integer storeId;
    @ApiModelProperty(value = "门店名称")
    private String storeName;
    @ApiModelProperty(value = "经度")
    private String lat;
    @ApiModelProperty(value = "纬度")
    private String lon;
    public CourseOfStoreVo(Integer courseId, String courseName, Integer storeId, String storeName,String classWeeks) {
        this.courseId = courseId;
        this.courseName = courseName;
        this.storeId = storeId;
        this.storeName = storeName;
        this.classWeeks = classWeeks;
    }
    @ApiModelProperty(value = "周列表")
    private List<Integer> classWeekList;
    public List<Integer> getClassWeekList() {
        String[] split = this.classWeeks.split(";");
        List<Integer> integers = new ArrayList<>();
        for (String s : split) {
            int num = Integer.parseInt(s);
            integers.add(num);
        }
        return integers;
    }
}
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/CourseVenue.java
@@ -8,6 +8,9 @@
@Data
public class CourseVenue {
    @ApiModelProperty(value = "门店Id")
    private Integer storeId;
    @ApiModelProperty(value = "门店名称")
    private String areaName;
@@ -18,7 +21,7 @@
    private List<CouList> courses;
    @Data
    static class CouList{
    public static class CouList{
        @ApiModelProperty(value = "课包ID")
        Integer courseID;
cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/WeekedCourse.java
@@ -8,12 +8,15 @@
@Data
public class WeekedCourse {
    @ApiModelProperty(value = "是否为当天")
    @ApiModelProperty(value = "是否为当天 1 是 2 否")
    private Integer isToday;
    @ApiModelProperty(value = "星期缩写")
    private String weekStr;
    @ApiModelProperty(value = "星期数值")
    private Integer weekNum;
    @ApiModelProperty(value = "日期")
    private String dayStr;
cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -3,21 +3,25 @@
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.enums.WeeksEnum;
import com.dsh.account.feignclient.course.CoursePaymentClient;
import com.dsh.account.feignclient.course.model.CourseOfStoreVo;
import com.dsh.account.feignclient.course.model.StuCourseResp;
import com.dsh.account.mapper.TStudentMapper;
import com.dsh.account.feignclient.other.ImgConfigClient;
import com.dsh.account.feignclient.other.model.TImgConfig;
import com.dsh.account.mapper.TAppUserMapper;
import com.dsh.account.mapper.TStudentMapper;
import com.dsh.account.model.AddAppUserVo;
import com.dsh.account.model.LoginSMSCodeVo;
import com.dsh.account.model.LoginWeChatVo;
import com.dsh.account.model.vo.classDetails.CourseVenue;
import com.dsh.account.model.vo.classDetails.ExerciseVideo;
import com.dsh.account.model.vo.classDetails.RegisteredCourse;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.entity.TStudent;
import com.dsh.account.mapper.TAppUserMapper;
import com.dsh.account.model.vo.classDetails.WeekedCourse;
import com.dsh.account.model.vo.classDetails.classInsVo.ClassInfoVo;
import com.dsh.account.service.TAppUserService;
import com.dsh.account.util.*;
import com.dsh.account.util.akeylogin.Md5Util;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +31,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
@@ -40,7 +45,7 @@
public class TAppUserServiceImpl extends ServiceImpl<TAppUserMapper, TAppUser> implements TAppUserService {
    @Resource
    @Autowired
    private TStudentMapper tsmapper;
    @Resource
@@ -58,21 +63,21 @@
    @Autowired
    private JwtTokenUtil jwtTokenUtil;
    @Resource
    @Autowired
    private CoursePaymentClient paymentClient;
    @Override
    public ClassInfoVo queryUserOfStus(Integer id,String longitude,String latitude) {
    public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) {
        TAppUser tAppUser = this.baseMapper.selectById(id);
        ClassInfoVo classInfoVo = new ClassInfoVo();
        if (ToolUtil.isNotEmpty(tAppUser)){
            List<TStudent> tStudents = tsmapper.selectList(new QueryWrapper<TStudent>()
                    .eq("appUserId",tAppUser.getId())
                    .eq("state",1)
                    .eq("isDefault",1));
            ClassInfoVo classInfoVo = new ClassInfoVo();
            if (tStudents.size() > 0 ){
                TStudent tStudent = tStudents.get(0);
                classInfoVo.setIsThere(1);
@@ -109,8 +114,13 @@
                classInfoVo.setDeductedNums(deduct);
                classInfoVo.setRemainingNums(remain);
                List<CourseOfStoreVo> storeOfCourses = paymentClient.getStoreOfCourses();
                classInfoVo.setWeekCourseList(dealDatas(storeOfCourses,longitude,latitude));
//                classInfoVo.setWeekCourseList();
                List<ExerciseVideo> videos = new ArrayList<>();
                classInfoVo.setExerciseVideoList(videos);
            }else {
                classInfoVo.setIsThere(2);
                List<TImgConfig> tImgConfigs = configClient.getNoneStuImgs();
@@ -119,9 +129,57 @@
                }
            }
        }
        return null;
        return classInfoVo;
    }
    /**
     * 处理数据
     * @param storeOfCourses
     * @param longitude
     * @param latitude
     * @return
     */
    public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses,String longitude ,String latitude){
        List<WeekedCourse> weekedCourses = new ArrayList<>();
        int weekStr = LocalDateTimeUtils.getWeekStr();
        for (int i = 1; i < 8; i++) {
            WeekedCourse weekedCourse = new WeekedCourse();
            weekedCourse.setWeekNum(i);
            weekedCourse.setWeekStr(WeeksEnum.getStr(i));
            String weekOfDays = LocalDateTimeUtils.getWeekOfDays(i);
            weekedCourse.setDayStr(weekOfDays);
            List<CourseVenue> courseVenues = new ArrayList<>();
            if (weekStr == i) {
                weekedCourse.setIsToday(1);
            } else {
                weekedCourse.setIsToday(2);
            }
            Map<Integer, List<CourseOfStoreVo>> map = storeOfCourses.stream().collect(Collectors.groupingBy(CourseOfStoreVo::getStoreId));
            for (Map.Entry<Integer, List<CourseOfStoreVo>> integerListEntry : map.entrySet()) {
                List<CourseOfStoreVo> value = integerListEntry.getValue();
                CourseVenue courseVenue = new CourseVenue();
                courseVenue.setStoreId(value.get(0).getStoreId());
                courseVenue.setAreaName(value.get(0).getStoreName());
                courseVenue.setSiteDistance(LonlatUtils.distance(Double.parseDouble(longitude), Double.parseDouble(latitude),
                        Double.parseDouble(value.get(0).getLon()), Double.parseDouble(value.get(0).getLat())) + "");
                List<CourseVenue.CouList> courses = new ArrayList<>();
                for (CourseOfStoreVo courseOfStoreVo : value) {
                    CourseVenue.CouList couList = new CourseVenue.CouList();
                    couList.setCourseID(courseOfStoreVo.getCourseId());
                    couList.setCourseName(courseOfStoreVo.getCourseName());
                    couList.setTimeStr(courseOfStoreVo.getClassStartTime() + "-" + courseOfStoreVo.getClassEndTime());
                    couList.setDetail("");
                    courses.add(couList);
                }
                courseVenue.setCourses(courses);
                courseVenues.add(courseVenue);
            }
            weekedCourse.setDetails(courseVenues);
            weekedCourses.add(weekedCourse);
        }
        return weekedCourses;
    }
    /**
cloud-server-account/src/main/java/com/dsh/account/util/LocalDateTimeUtils.java
@@ -1,9 +1,11 @@
package com.dsh.account.util;
import java.text.ParseException;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
 * LocalDateTimeUtils
@@ -77,4 +79,31 @@
        Integer day=date.getDayOfMonth();
        return day < dayArr[month - 1] ? constellationArr[month - 1] : constellationArr[month];
    }
    /**
     * 获取当天的星期几
     * @return
     */
    public static int getWeekStr(){
        LocalDate today = LocalDate.now();
        DayOfWeek dayOfWeek = today.getDayOfWeek();
        return dayOfWeek.getValue();
    }
    public static String getWeekOfDays(int desiredDayOfWeek){
        // 获取当前日期
        LocalDate currentDate = LocalDate.now();
        // 获取当前周的第一天(默认以星期一为一周的开始)
        LocalDate firstDayOfWeek = currentDate.with(DayOfWeek.MONDAY);
        LocalDate desiredDate = firstDayOfWeek.plusDays(desiredDayOfWeek - 1);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM.dd");
        return desiredDate.format(formatter);
    }
//
//    public static void main(String[] args) {
//        String weekOfDays = LocalDateTimeUtils.getWeekOfDays(4);
//        System.out.println(weekOfDays);
//    }
}
cloud-server-account/src/main/java/com/dsh/account/util/LonlatUtils.java
New file
@@ -0,0 +1,32 @@
package com.dsh.account.util;
/**
 * 经纬度工具类
 */
public class LonlatUtils {
    public static final double R = 6371; // Earth radius in kilometers
    /**
     * 计算两个经纬度之间的直线距离
     * @param lat1  经度1
     * @param lon1  纬度1
     * @param lat2  经度2
     * @param lon2  纬度2
     * @return 两者距离
     */
    public static double distance(double lat1, double lon1, double lat2, double lon2) {
        double dLat = Math.toRadians(lat2 - lat1);
        double dLon = Math.toRadians(lon2 - lon1);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
                Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
                        Math.sin(dLon / 2) * Math.sin(dLon / 2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        double distance = R * c;
        return distance;
    }
}
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
New file
@@ -0,0 +1,50 @@
package com.dsh.course.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.course.entity.TCourse;
import com.dsh.course.feignclient.model.ExerciseVideo;
import com.dsh.course.service.TCourseService;
import io.swagger.annotations.Api;
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 java.util.ArrayList;
import java.util.List;
@Api
@CrossOrigin
@RestController
@RequestMapping("")
public class CourseController {
    private Logger logger = LoggerFactory.getLogger("business-log");
    @Autowired
    private TCourseService courseService;
    @PostMapping("/course/queryList")
    public List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds){
        List<ExerciseVideo> videos = new ArrayList<>();
        List<TCourse> list = courseService.list(new QueryWrapper<TCourse>()
                .in("id", courseIds)
                .eq("state",1));
        if (list.size() > 0){
            list.forEach( vs ->{
                ExerciseVideo video = new ExerciseVideo();
                video.setVideoUrl(vs.getCourseVideo());
                video.setVideoName(vs.getName());
                video.setVideoCoverImgUrl(vs.getCoverDrawing());
                videos.add(video);
            });
        }
        return videos;
    }
}
cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -3,17 +3,15 @@
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.StuCourseResp;
import com.dsh.course.service.TCoursePackagePaymentService;
import com.dsh.course.service.TCoursePackageService;
import com.dsh.course.servs.CoursePackagePaymentRepository;
import io.swagger.annotations.Api;
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;
@@ -26,19 +24,22 @@
    private Logger logger = LoggerFactory.getLogger("business-log");
    @Autowired
    private CoursePackagePaymentRepository coursePackagePaymentRepository;
    private TCoursePackagePaymentService packagePaymentService;
    @Autowired
    private TCoursePackageService tcpService;
    /**
     * 获取 没有学员信息的图片配置
     * @param stuId 学员id
     * @return  课包列表
     */
    @PostMapping("/coursePack/queryPayment")
    public List<StuCourseResp> getStuCoursePackagePayment(Integer stuId){
    public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId){
        List<StuCourseResp> resps = new ArrayList<>();
        List<TCoursePackagePayment> byUserId = coursePackagePaymentRepository.findByUserId(stuId);
        List<TCoursePackagePayment> byUserId = packagePaymentService.queryAllCoursePackage(stuId);
        if (byUserId.size() > 0 ){
            for (TCoursePackagePayment tCoursePackagePayment : byUserId) {
                TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId());
@@ -48,9 +49,31 @@
                resp.setTotalCourseNums(tCoursePackagePayment.getTotalClassHours());
                resp.setResidueNums(tCoursePackagePayment.getLaveClassHours());
                resp.setDeductionNums(tCoursePackagePayment.getTotalClassHours()-tCoursePackagePayment.getLaveClassHours());
                resps.add(resp);
            }
        }
        return resps;
    }
    /**
     *
     * 获取发布的 课包列表
     */
    @PostMapping("/coursePack/storeOfCourse")
    public List<CourseOfStoreVo> getStuCourseWithStores(){
        List<CourseOfStoreVo> courseOfStoreVos = tcpService.queryStoreOfCourse();
        if (courseOfStoreVos.size() > 0){
            for (CourseOfStoreVo courseOfStoreVo : courseOfStoreVos) {
                String[] split = courseOfStoreVo.getClassWeeks().split(";");
                List<Integer> integers = new ArrayList<>();
                for (String s : split) {
                    int num = Integer.parseInt(s);
                    integers.add(num);
                }
                courseOfStoreVo.setClassWeekList(integers);
            }
        }
        return tcpService.queryStoreOfCourse();
    }
}
cloud-server-course/src/main/java/com/dsh/course/entity/TCoursePackagePayment.java
@@ -1,14 +1,14 @@
package com.dsh.course.entity;
import java.math.BigDecimal;
import java.util.Date;
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.math.BigDecimal;
import java.util.Date;
/**
 * <p>
@@ -23,7 +23,7 @@
@Accessors(chain = true)
@TableName("t_course_package_payment")
public class TCoursePackagePayment {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
cloud-server-course/src/main/java/com/dsh/course/feignclient/CourseListClient.java
New file
@@ -0,0 +1,15 @@
package com.dsh.course.feignclient;
import com.dsh.course.feignclient.model.ExerciseVideo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@FeignClient(value = "mb-cloud-course")
public interface CourseListClient {
    @PostMapping("/course/queryList")
    List<ExerciseVideo> queryStuCourseAfterVideos(List<Integer> courseIds);
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java
@@ -1,7 +1,8 @@
package com.dsh.course.feignclient;
import com.dsh.course.feignclient.model.StuCourseResp;
import com.dsh.course.feignclient.model.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
@@ -13,4 +14,7 @@
    @PostMapping("/coursePack/queryPayment")
    List<StuCourseResp> getStuCoursePayment();
    @PostMapping("/coursePack/storeOfCourse")
    List<CourseOfStoreVo> getStoreOfCourses();
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/CourseOfStoreVo.java
New file
@@ -0,0 +1,41 @@
package com.dsh.course.feignclient.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class CourseOfStoreVo {
    @ApiModelProperty(value = "课包id")
    private Integer courseId;
    @ApiModelProperty(value = "课包名称")
    private String courseName;
    @ApiModelProperty(value = "课包开始时间")
    private String classStartTime;
    @ApiModelProperty(value = "课包结束时间")
    private String classEndTime;
    @ApiModelProperty(value = "课包 周列表 分号隔开")
    private String classWeeks;
    @ApiModelProperty(value = "门店id")
    private Integer storeId;
    @ApiModelProperty(value = "门店名称")
    private String storeName;
    @ApiModelProperty(value = "经度")
    private String lat;
    @ApiModelProperty(value = "纬度")
    private String lon;
    private List<Integer> classWeekList;
}
cloud-server-course/src/main/java/com/dsh/course/feignclient/model/ExerciseVideo.java
New file
@@ -0,0 +1,17 @@
package com.dsh.course.feignclient.model;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ExerciseVideo {
    @ApiModelProperty(value = "课后视频封面图链接")
    private String videoCoverImgUrl;
    @ApiModelProperty(value = "课后视频链接")
    private String videoUrl;
    @ApiModelProperty(value = "课后视频标题")
    private String videoName;
}
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackageMapper.java
@@ -1,7 +1,10 @@
package com.dsh.course.mapper;
import com.dsh.course.entity.TCoursePackage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.feignclient.model.CourseOfStoreVo;
import java.util.List;
/**
 * <p>
@@ -13,4 +16,6 @@
 */
public interface TCoursePackageMapper extends BaseMapper<TCoursePackage> {
    List<CourseOfStoreVo> queryStoreOfCourse();
}
cloud-server-course/src/main/java/com/dsh/course/mapper/TCoursePackagePaymentMapper.java
@@ -2,6 +2,9 @@
import com.dsh.course.entity.TCoursePackagePayment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +16,6 @@
 */
public interface TCoursePackagePaymentMapper extends BaseMapper<TCoursePackagePayment> {
    List<TCoursePackagePayment> queryAllCoursePackage(@Param("stuId") Integer stuId);
}
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackagePaymentService.java
@@ -3,6 +3,8 @@
import com.dsh.course.entity.TCoursePackagePayment;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
 * <p>
 * 用户课程包购买记录 服务类
@@ -13,4 +15,6 @@
 */
public interface TCoursePackagePaymentService extends IService<TCoursePackagePayment> {
    List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId);
}
cloud-server-course/src/main/java/com/dsh/course/service/TCoursePackageService.java
@@ -1,7 +1,10 @@
package com.dsh.course.service;
import com.dsh.course.entity.TCoursePackage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.feignclient.model.CourseOfStoreVo;
import java.util.List;
/**
 * <p>
@@ -13,4 +16,6 @@
 */
public interface TCoursePackageService extends IService<TCoursePackage> {
    List<CourseOfStoreVo> queryStoreOfCourse();
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java
@@ -6,6 +6,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
 * 用户课程包购买记录 服务实现类
@@ -17,4 +19,8 @@
@Service
public class TCoursePackagePaymentServiceImpl extends ServiceImpl<TCoursePackagePaymentMapper, TCoursePackagePayment> implements TCoursePackagePaymentService {
    @Override
    public List<TCoursePackagePayment> queryAllCoursePackage(Integer stuId) {
        return this.baseMapper.queryAllCoursePackage(stuId);
    }
}
cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackageServiceImpl.java
@@ -1,10 +1,13 @@
package com.dsh.course.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.course.entity.TCoursePackage;
import com.dsh.course.mapper.TCoursePackageMapper;
import com.dsh.course.feignclient.model.CourseOfStoreVo;
import com.dsh.course.service.TCoursePackageService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
@@ -17,4 +20,8 @@
@Service
public class TCoursePackageServiceImpl extends ServiceImpl<TCoursePackageMapper, TCoursePackage> implements TCoursePackageService {
    @Override
    public List<CourseOfStoreVo> queryStoreOfCourse() {
        return this.baseMapper.queryStoreOfCourse();
    }
}
cloud-server-course/src/main/java/com/dsh/course/servs/CoursePackagePaymentRepository.java
File was deleted
cloud-server-course/src/main/java/com/dsh/course/util/LocalDateTimeUtils.java
@@ -1,6 +1,7 @@
package com.dsh.course.util;
import java.text.ParseException;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -77,4 +78,16 @@
        Integer day=date.getDayOfMonth();
        return day < dayArr[month - 1] ? constellationArr[month - 1] : constellationArr[month];
    }
    /**
     * 获取当天的星期几
     * @return
     */
    public static int getWeekStr(){
        LocalDate today = LocalDate.now();
        DayOfWeek dayOfWeek = today.getDayOfWeek();
        return dayOfWeek.getValue();
    }
}
cloud-server-course/src/main/resources/mapper/TCoursePackageMapper.xml
@@ -34,5 +34,22 @@
        <result column="state" property="state" />
        <result column="insertTime" property="insertTime" />
    </resultMap>
    <select id="queryStoreOfCourse" resultType="com.dsh.course.feignclient.model.CourseOfStoreVo">
        SELECT tcp.id     as courseId,
               tcp.`name` as courseName,
               tcp.classStartTime,
               tcp.classEndTime,
               tcp.classWeeks,
               ts.id      as storeId,
               ts.`name`  as storeName,
               ts.lat,
               ts.lon
        FROM playpai_course.t_course_package as tcp
                 JOIN playpai_other.t_store as ts ON tcp.storeId = ts.id
        where tcp.`status` = 1
          and tcp.auditStatus = 2
          and tcp.`state` = 1
          and ts.`state` = 1
    </select>
</mapper>
cloud-server-course/src/main/resources/mapper/TCoursePackagePaymentMapper.xml
@@ -25,5 +25,25 @@
        <result column="state" property="state" />
        <result column="insertTime" property="insertTime" />
    </resultMap>
    <select id="queryAllCoursePackage" resultType="com.dsh.course.entity.TCoursePackagePayment">
        SELECT *
        FROM t_course_package_payment
        UNION ALL
        SELECT *
        FROM t_course_package_payment1
        UNION ALL
        SELECT *
        FROM t_course_package_payment2
        UNION ALL
        SELECT *
        FROM t_course_package_payment3
        UNION ALL
        SELECT *
        FROM t_course_package_payment4
        UNION ALL
        SELECT *
        FROM t_course_package_payment5
        WHERE user_id = #{stuId}
    </select>
</mapper>
cloud-server-other/src/main/java/com/dsh/other/entity/Store.java
New file
@@ -0,0 +1,123 @@
package com.dsh.other.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;
/**
 * <p>
 * 门店信息
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_store")
public class Store extends Model<Store> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 门店名称
     */
    private String name;
    /**
     * 门店店长id
     */
    private Integer storeStaffId;
    /**
     * 城市管理员id
     */
    private Integer cityManagerId;
    /**
     * 省
     */
    private String province;
    /**
     * 省编号
     */
    private String provinceCode;
    /**
     * 市
     */
    private String city;
    /**
     * 市编号
     */
    private String cityCode;
    /**
     * 联系电话
     */
    private String phone;
    /**
     * 详细地址
     */
    private String address;
    /**
     * 纬度
     */
    private String lat;
    /**
     * 经度
     */
    private String lon;
    /**
     * 营业开始时间
     */
    private String startTime;
    /**
     * 营业结束时间
     */
    private String endTime;
    /**
     * 封面图
     */
    private String coverDrawing;
    /**
     * 实景图
     */
    private String realPicture;
    /**
     * 门店介绍
     */
    private String introduce;
    /**
     * 福利图片
     */
    private String welfarePicture;
    /**
     * 开始上课图片
     */
    private String classPicture;
    /**
     * 评分
     */
    private BigDecimal score;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer state;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-other/src/main/java/com/dsh/other/entity/StoreConfig.java
New file
@@ -0,0 +1,61 @@
package com.dsh.other.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;
/**
 * <p>
 * 门店基础配置
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_store_config")
public class StoreConfig extends Model<StoreConfig> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 门店id
     */
    private Integer storeId;
    /**
     * 数据类型(1=报名玩湃课程,2=预约场地,3=报名赛事及活动,4=免费福利,5=线上课程积分,6=购买优惠门票,7=看视频得奖励,8=智慧球场)
     */
    private Integer type;
    /**
     * 是否开启(0=否,1=是)
     */
    private Integer isOpen;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 背景图
     */
    private String backgroundImage;
    @Override
    protected Serializable pkVal() {
        return this.id;
    }
}
cloud-server-other/src/main/java/com/dsh/other/mapper/StoreConfigMapper.java
New file
@@ -0,0 +1,17 @@
package com.dsh.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.other.entity.StoreConfig;
/**
 * <p>
 * 门店基础配置 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
public interface StoreConfigMapper extends BaseMapper<StoreConfig> {
}
cloud-server-other/src/main/java/com/dsh/other/mapper/StoreMapper.java
New file
@@ -0,0 +1,17 @@
package com.dsh.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.other.entity.Store;
/**
 * <p>
 * 门店信息 Mapper 接口
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
public interface StoreMapper extends BaseMapper<Store> {
}
cloud-server-other/src/main/java/com/dsh/other/service/StoreConfigService.java
New file
@@ -0,0 +1,17 @@
package com.dsh.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.other.entity.StoreConfig;
/**
 * <p>
 * 门店基础配置 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
public interface StoreConfigService extends IService<StoreConfig> {
}
cloud-server-other/src/main/java/com/dsh/other/service/StoreService.java
New file
@@ -0,0 +1,17 @@
package com.dsh.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.other.entity.Store;
/**
 * <p>
 * 门店信息 服务类
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
public interface StoreService extends IService<Store> {
}
cloud-server-other/src/main/java/com/dsh/other/service/impl/StoreConfigServiceImpl.java
New file
@@ -0,0 +1,21 @@
package com.dsh.other.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.other.entity.StoreConfig;
import com.dsh.other.mapper.StoreConfigMapper;
import com.dsh.other.service.StoreConfigService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 门店基础配置 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
@Service
public class StoreConfigServiceImpl extends ServiceImpl<StoreConfigMapper, StoreConfig> implements StoreConfigService {
}
cloud-server-other/src/main/java/com/dsh/other/service/impl/StoreServiceImpl.java
New file
@@ -0,0 +1,21 @@
package com.dsh.other.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.other.entity.Store;
import com.dsh.other.mapper.StoreMapper;
import com.dsh.other.service.StoreService;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 门店信息 服务实现类
 * </p>
 *
 * @author jqs
 * @since 2023-06-14
 */
@Service
public class StoreServiceImpl extends ServiceImpl<StoreMapper,Store> implements StoreService {
}
cloud-server-other/src/main/resources/mapper/StoreConfigMapper.xml
New file
@@ -0,0 +1,6 @@
<?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.other.mapper.StoreConfigMapper">
</mapper>
cloud-server-other/src/main/resources/mapper/StoreMapper.xml
New file
@@ -0,0 +1,6 @@
<?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.other.mapper.StoreMapper">
</mapper>