cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -6,9 +6,9 @@ import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; import com.dsh.account.model.vo.classDetails.AppointmentRecordVo; import com.dsh.account.model.vo.classDetails.ClasspaymentRequest; import com.dsh.account.model.vo.classDetails.CourseVenue; import com.dsh.account.model.vo.classDetails.classInsVo.*; import com.dsh.account.model.vo.commentDetail.StuCommentsVo; import com.dsh.account.model.vo.exploreDetail.LonLatRequest; import com.dsh.account.model.vo.medalDetail.GongVo; import com.dsh.account.model.vo.medalDetail.StuMedalVo; import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; @@ -18,10 +18,7 @@ import com.dsh.account.service.StudentHonorService; 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 com.dsh.account.util.*; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -29,7 +26,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -68,17 +68,42 @@ @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil<ClassInfoVo> queryCouponRecord(LonLatRequest lonLatRequest){ public ResultUtil<ClassInfoVo> queryCouponRecord(){ try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if(null == userIdFormRedis){ return ResultUtil.tokenErr(); } return ResultUtil.success(tappuService.queryUserOfStus(userIdFormRedis,lonLatRequest.getLongitude(),lonLatRequest.getLatitude())); return ResultUtil.success(tappuService.queryUserOfStus(userIdFormRedis)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/startCource/weeksOfCourseDetails") @ApiOperation(value = "上课首页-课程列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "查询时间yyyy-MM-dd", name = "time", required = true, dataType = "string"), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), @ApiImplicitParam(value = "用户经度", name = "longitude", required = true, dataType = "string"), @ApiImplicitParam(value = "用户纬度", name = "latitude", required = true, dataType = "string"), }) public ResultUtil<List<CourseVenue>> queryWeeksOfClassInfo(String time,Integer stuId, String longitude, String latitude){ try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if(null == appUserId){ return ResultUtil.tokenErr(); } return ResultUtil.success(tappuService.queryWeekOfCourseDetails(appUserId,stuId,time,longitude,latitude)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @@ -94,6 +119,7 @@ TStudent tStudent = istuService.getById(stuID); if (ToolUtil.isNotEmpty(tStudent)){ vo.setBmi(tStudent.getBmi()); vo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi())); vo.setUrl(tStudent.getLateralSurface()); vo.setHeight(tStudent.getHeight()); vo.setWeight(tStudent.getWeight()); cloud-server-account/src/main/java/com/dsh/account/feignclient/course/CoursePaymentClient.java
@@ -17,7 +17,7 @@ @PostMapping("/base/coursePack/storeOfCourse") List<CourseOfStoreVo> getStoreOfCourses(); List<CourseOfStoreVo> getStoreOfCourses(@RequestBody WeeksOfCourseRest courseRest); @PostMapping("/base/coursePack/stuOfCourses") StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody GetStuOfCoursesDetails getStuOfCoursesDetails); cloud-server-account/src/main/java/com/dsh/account/feignclient/course/model/WeeksOfCourseRest.java
New file @@ -0,0 +1,18 @@ package com.dsh.account.feignclient.course.model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class WeeksOfCourseRest { @ApiModelProperty(value = "学员id") private Integer stuId; @ApiModelProperty(value = "用户id") private Integer appUserId; @ApiModelProperty(value = "时间 ") private String time; } cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/ClassInfoVo.java
@@ -3,7 +3,6 @@ import com.dsh.account.model.vo.classDetails.ExerciseVideo; import com.dsh.account.model.vo.classDetails.RegisteredCourse; import com.dsh.account.model.vo.classDetails.WeekedCourse; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -42,6 +41,9 @@ @ApiModelProperty(value = "bmi指数") private Double bmi; @ApiModelProperty(value = "身体状态") private String bodyStatus; @ApiModelProperty(value = "课包-已报名课程列表") private List<RegisteredCourse> courseList; @@ -54,8 +56,6 @@ @ApiModelProperty(value = "剩余学时数") private Integer remainingNums; @ApiModelProperty(value = "课包-本周可预约课包列表") private List<WeekedCourse> weekCourseList; @ApiModelProperty(value = "课程-课后练习视频2个列表") private List<ExerciseVideo> exerciseVideoList; cloud-server-account/src/main/java/com/dsh/account/model/vo/classDetails/classInsVo/StuPhysicalVo.java
@@ -12,6 +12,8 @@ private Double weight; @ApiModelProperty(value = "BMI参数") private Double bmi; @ApiModelProperty(value = "身体状态") private String bodyStatus; @ApiModelProperty(value = "图片链接") private String url; } cloud-server-account/src/main/java/com/dsh/account/service/TAppUserService.java
@@ -6,6 +6,7 @@ import com.dsh.account.model.JoinPlayPaiVo; 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.classInsVo.ClassInfoVo; import com.dsh.account.model.vo.userBenefitDetail.*; import com.dsh.account.util.ResultUtil; @@ -24,7 +25,7 @@ */ public interface TAppUserService extends IService<TAppUser> { ClassInfoVo queryUserOfStus(Integer id,String longitude,String latitude); ClassInfoVo queryUserOfStus(Integer id); /** @@ -133,4 +134,6 @@ ResultUtil exchangeAddPaymentCallback(String code, String orderNumber,Integer payType); List<StoreResponse> queryStoresOfExchange(Integer goodsType,Integer pointsMerId); List<CourseVenue> queryWeekOfCourseDetails(Integer appUserId ,Integer stuId, String time, String longitude, String latitude); } cloud-server-account/src/main/java/com/dsh/account/service/impl/TAppUserServiceImpl.java
@@ -41,7 +41,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -129,7 +128,7 @@ private SiteClient stClient; @Override public ClassInfoVo queryUserOfStus(Integer id,String latitude,String longitude) { public ClassInfoVo queryUserOfStus(Integer id) { TAppUser tAppUser = this.baseMapper.selectById(id); ClassInfoVo classInfoVo = new ClassInfoVo(); if (ToolUtil.isNotEmpty(tAppUser)){ @@ -148,6 +147,7 @@ classInfoVo.setHeight(tStudent.getHeight()); classInfoVo.setWeight(tStudent.getWeight()); classInfoVo.setBmi(tStudent.getBmi()); classInfoVo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi())); List<RegisteredCourse> courseList = new ArrayList<>(); // 总学时数 @@ -174,9 +174,6 @@ classInfoVo.setDeductedNums(deduct); classInfoVo.setRemainingNums(remain); List<CourseOfStoreVo> storeOfCourses = paymentClient.getStoreOfCourses(); classInfoVo.setWeekCourseList(dealDatas(storeOfCourses,longitude,latitude)); List<ExerciseVideo> videos = new ArrayList<>(); classInfoVo.setExerciseVideoList(videos); @@ -198,7 +195,7 @@ * @param latitude * @return */ public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses,String longitude ,@RequestBody String latitude){ public List<WeekedCourse> dealDatas(List<CourseOfStoreVo> storeOfCourses, String longitude , String latitude){ List<WeekedCourse> weekedCourses = new ArrayList<>(); for (int i = 1; i < 8; i++) { WeekedCourse weekedCourse = new WeekedCourse(); @@ -1150,4 +1147,16 @@ } @Override public List<CourseVenue> queryWeekOfCourseDetails(Integer appUserId ,Integer stuId, String time,String longitude,String latitude) { WeeksOfCourseRest weeksOfCourseRest = new WeeksOfCourseRest(); weeksOfCourseRest.setTime(time); weeksOfCourseRest.setStuId(stuId); weeksOfCourseRest.setAppUserId(appUserId); paymentClient.getStoreOfCourses(weeksOfCourseRest); // TODO: 2023/7/20 查询课包周课包列表 return null; } } cloud-server-account/src/main/java/com/dsh/account/util/BMIBodyUtil.java
New file @@ -0,0 +1,21 @@ package com.dsh.account.util; public class BMIBodyUtil { public static String getBodyStatus(double bmi) { if (bmi < 18.5) { return "偏瘦"; } else if (bmi >= 18.5 && bmi < 24) { return "正常"; } else if (bmi >= 24 && bmi < 28) { return "偏胖"; } else if (bmi >= 28 && bmi < 32) { return "肥胖"; } else { return "非常肥胖"; } } } cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java
@@ -33,11 +33,9 @@ import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; @Api @@ -118,20 +116,43 @@ * 获取发布的 课包列表 */ @PostMapping("/base/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); public List<CourseOfStoreVo> getStuCourseWithStores(@RequestBody WeeksOfCourseRest courseRest){ List<CourseOfStoreVo> course = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date parse = simpleDateFormat.parse(courseRest.getTime()); List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() .eq("appUserId",courseRest.getAppUserId() ) .eq("studentId",courseRest.getStuId()) .eq("payStatus",2) .eq("status",1) .eq("state",1) .groupBy("coursePackageId")); if (list.size() > 0){ for (TCoursePackagePayment tCoursePackagePayment : list) { TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); // 获取课程有效结束时间,判断 查询的日期parse 是否在有效期范围内 Date expirationDate = DateTimeHelper.getExpirationDate(tCoursePackagePayment.getInsertTime(),tCoursePackage.getValidDays()); String classWeeks = tCoursePackage.getClassWeeks(); if (expirationDate.after(parse) && StrUtils.dealStrToList(classWeeks).contains(DateTimeHelper.getDayOfWeek(parse))){ CourseOfStoreVo storeVo = new CourseOfStoreVo(); storeVo.setCourseId(tCoursePackage.getId()); // TODO: 2023/7/20 查询课包对应门店信息 // storeVo.setCourseName(); // storeVo.setClassStartTime(); // storeVo.setClassEndTime(); // storeVo.setStoreId(); // storeVo.setStoreName(); // storeVo.setLat(); // storeVo.setLon(); course.add(storeVo); } } courseOfStoreVo.setClassWeekList(integers); } return course; } catch (ParseException e) { return null; } return tcpService.queryStoreOfCourse(); } cloud-server-course/src/main/java/com/dsh/course/feignclient/CoursePaymentClient.java
@@ -19,7 +19,7 @@ List<StuCourseResp> getStuCoursePayment(); @PostMapping("/base/coursePack/storeOfCourse") List<CourseOfStoreVo> getStoreOfCourses(); List<CourseOfStoreVo> getStoreOfCourses(@RequestBody WeeksOfCourseRest courseRest); @PostMapping("/base/coursePack/stuOfCourses") StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody GetStuOfCoursesDetails getStuOfCoursesDetails); cloud-server-course/src/main/java/com/dsh/course/feignclient/model/CourseOfStoreVo.java
@@ -3,8 +3,6 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data public class CourseOfStoreVo { @@ -21,21 +19,16 @@ @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 storeAddress; @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/WeeksOfCourseRest.java
New file @@ -0,0 +1,18 @@ package com.dsh.course.feignclient.model; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class WeeksOfCourseRest { @ApiModelProperty(value = "学员id") private Integer stuId; @ApiModelProperty(value = "用户id") private Integer appUserId; @ApiModelProperty(value = "时间 yyyy-MM-dd") private String time; } cloud-server-course/src/main/java/com/dsh/course/util/DateTimeHelper.java
@@ -1789,5 +1789,18 @@ return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()); } /** * 获取有效期数的结束时间 * @param startTime 开始时间 * @param validPeriod 有效期数 * @return 结束时间 */ public static Date getExpirationDate(Date startTime, int validPeriod){ Calendar calendar = Calendar.getInstance(); calendar.setTime(startTime); calendar.add(Calendar.DAY_OF_MONTH, validPeriod); return calendar.getTime(); } }