package com.dsh.account.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.account.entity.TAppGift; import com.dsh.account.entity.TStudent; import com.dsh.account.feignclient.competition.model.PurchaseRecordVo; import com.dsh.account.feignclient.course.model.RecordAppoint; import com.dsh.account.model.vo.classDetails.*; import com.dsh.account.model.vo.classDetails.classInsVo.*; import com.dsh.account.model.vo.commentDetail.StuCommentsVo; import com.dsh.account.model.vo.medalDetail.GongVo; import com.dsh.account.model.vo.medalDetail.StuMedalVo; import com.dsh.account.model.vo.sourceDetail.CouponStuAvailableVo; import com.dsh.account.model.vo.sourceDetail.CourseDetailsOfContinuationResp; import com.dsh.account.model.vo.sourceDetail.RecordTimeRequest; import com.dsh.account.service.*; import com.dsh.account.util.*; 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; import org.springframework.transaction.annotation.Transactional; 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; import java.util.List; import java.util.Map; /** * 学员上课情况 接口 */ @RestController @RequestMapping("") public class ClassDetailsController { private Logger logger = LoggerFactory.getLogger("business-log"); @Autowired private TStudentService istuService; @Autowired private TAppUserService tappuService; @Autowired private EvaluateStudentService evalstuService; @Autowired private StudentHonorService honorService; @Autowired private TokenUtil tokenUtil; @Autowired private TAppGiftService appGiftService; @ResponseBody @PostMapping("/api/startCource/queryStudentData") @ApiOperation(value = "上课首页", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil queryCouponRecord(Integer stuId) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return ResultUtil.success(tappuService.queryUserOfStus(stuId, 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 = false, dataType = "string"), @ApiImplicitParam(value = "用户纬度", name = "latitude", required = false, dataType = "string"), }) public ResultUtil> 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(); } } @ResponseBody @PostMapping("/api/startCource/weeksOfCourseDetailsList") @ApiOperation(value = "上课首页-课程列表2.0", 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 = "门店id", name = "storeId", required = true, dataType = "int"), @ApiImplicitParam(value = "用户经度", name = "longitude", required = false, dataType = "string"), @ApiImplicitParam(value = "用户纬度", name = "latitude", required = false, dataType = "string"), }) public ResultUtil> weeksOfCourseDetailsList(String time, Integer stuId, Integer storeId, String longitude, String latitude) { try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if (null == appUserId) { return ResultUtil.tokenErr(); } return ResultUtil.success(tappuService.weeksOfCourseDetailsList(appUserId, stuId, time, storeId, longitude, latitude)); } catch (Exception e) { e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/startCource/weeksOfGetHours") @ApiOperation(value = "上课首页获取未分配课时-课程列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil weeksOfGetHours() { try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if (null == appUserId) { return ResultUtil.tokenErr(); } Integer num = 0; List list = appGiftService.list(new LambdaQueryWrapper().eq(TAppGift::getUserId, appUserId)); for (TAppGift tAppGift : list) { num += tAppGift.getNum(); } return ResultUtil.success(num); } catch (Exception e) { e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/startCource/weeksOfAddHours") @ApiOperation(value = "上课首页分配课时-课程列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "分配给课包id", name = "packetId", required = true, dataType = "Long"), }) public ResultUtil weeksOfAddHours(Long packetId) { try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if (null == appUserId) { return ResultUtil.tokenErr(); } TAppGift one = appGiftService.getOne(new LambdaQueryWrapper().eq(TAppGift::getUserId, appUserId)); Boolean b = false; Integer i = 0; if (one != null && one.getNum() > 0) { i = appGiftService.weeksOfAddHours(packetId, appUserId, one.getNum()); } if (i == 1) { // 送完清0 one.setNum(0); appGiftService.updateById(one); return ResultUtil.success(); } else { return ResultUtil.runErr(); } } catch (Exception e) { e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/startCource/queryPhysical") @ApiOperation(value = "获取学员测试报告", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(value = "学员id", name = "stuID", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getStuPhysicalInfo(Integer stuID) { StuPhysicalVo vo = new StuPhysicalVo(); TStudent tStudent = istuService.getById(stuID); if (ToolUtil.isNotEmpty(tStudent)) { vo.setBmi(tStudent.getBmi()); vo.setBodyStatus(BMIBodyUtil.getBodyStatus(tStudent.getBmi())); if (tStudent.getLateralSurface() != null) { String[] split = tStudent.getLateralSurface().split(";"); vo.setUrls(split); } vo.setHeight(tStudent.getHeight()); vo.setWeight(tStudent.getWeight()); } return ResultUtil.success(vo); } /** * 添加学员信息 */ @ResponseBody @PostMapping("/api/startCource/addData") @ApiOperation(value = "添加学员信息", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) @Transactional public ResultUtil addStu(StuDetailsReq stu) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return istuService.addStuOfAppUser(stu, userIdFormRedis); } catch (Exception e) { return ResultUtil.runErr(ResultUtil.ERROR); } } /** * 该APP用户下的学员列表 */ @ResponseBody @PostMapping("/api/startCource/listOfStu") @ApiOperation(value = "学员列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryStuList() { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } List stuListVos = new ArrayList<>(); List tStudents = istuService.list(new QueryWrapper() .eq("appUserId", userIdFormRedis).eq("state", 1)); if (tStudents.size() > 0) { tStudents.forEach(sts -> { StuListVo vo = new StuListVo(); vo.setStuId(sts.getId()); vo.setStuHeadImg(sts.getHeadImg()); vo.setStuPhone(ToolUtil.isEmpty(sts.getPhone()) ? "" : sts.getPhone()); vo.setIdCard(ToolUtil.isEmpty(sts.getIdCard()) ? "" : sts.getIdCard()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); vo.setBirthday(simpleDateFormat.format(sts.getBirthday())); vo.setStuName(sts.getName()); vo.setStuAge(DateUtil.age(sts.getBirthday())); vo.setStuHeight(sts.getHeight()); vo.setStuWeight(sts.getWeight()); vo.setIsNot(sts.getIsDefault()); vo.setStuPhone(sts.getPhone()); vo.setSex(sts.getSex()); stuListVos.add(vo); }); } return ResultUtil.success(stuListVos); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 切换学员 */ @ResponseBody @PostMapping("/api/startCource/switchStu") @ApiOperation(value = "切换学员", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil> dealSwitchStudents(Integer stuId) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return ResultUtil.success(istuService.switchStudentActions(userIdFormRedis, stuId)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 编辑学员详情 */ @ResponseBody @PostMapping("/api/startCource/editStu") @ApiOperation(value = "编辑学员详情", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil editStudentInfo(Integer stuId) { try { TStudent byId = istuService.getById(stuId); if (ToolUtil.isEmpty(byId)) { ResultUtil.error("未查询到该学员!"); } SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); StuDetailsVo detailsVo = new StuDetailsVo(); detailsVo.setStuId(byId.getId()); detailsVo.setStuHeadImg(byId.getHeadImg()); detailsVo.setStuName(byId.getName()); detailsVo.setBirthday(simpleDateFormat.format(byId.getBirthday())); detailsVo.setStuHeight(byId.getHeight()); detailsVo.setStuWeight(byId.getWeight()); detailsVo.setIdCard(ToolUtil.isEmpty(byId.getIdCard()) ? "" : byId.getIdCard()); detailsVo.setStuPhone(ToolUtil.isEmpty(byId.getPhone()) ? "" : byId.getPhone()); return ResultUtil.success(detailsVo); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 提交编辑学员 */ @ResponseBody @PostMapping("/api/startCource/commitEditStu") @ApiOperation(value = "提交编辑学员", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil commitEditStu(StuDetailsReq stu) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Double height = stu.getHeight(); Double squareHeight = Math.pow(height / 100, 2); Double weight = stu.getWeight(); Double bim = weight / squareHeight; TStudent tStudent = new TStudent(); tStudent.setId(stu.getStuId()); tStudent.setBirthday(format.parse(stu.getBirthday())); tStudent.setHeadImg(stu.getHeadImg()); tStudent.setHeight(stu.getHeight()); tStudent.setWeight(stu.getWeight()); tStudent.setPhone(stu.getPhone()); tStudent.setSex(stu.getSex()); tStudent.setName(stu.getName()); tStudent.setIdCard(stu.getIdCard()); tStudent.setBmi(bim); if (ToolUtil.isNotEmpty(tStudent.getName()) && ToolUtil.isNotEmpty(tStudent.getIdCard())) { Boolean aBoolean = JuHeUtil.idcardAuthentication(tStudent.getIdCard(), tStudent.getName()); if (!aBoolean) { return ResultUtil.error("身份证和姓名不匹配"); } } return ResultUtil.success(istuService.updateById(tStudent)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 学员设为默认 */ @ResponseBody @PostMapping("/api/startCource/editDefault") @ApiOperation(value = "设为默认", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil editDefault(Integer stuId) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } TStudent byId = istuService.getById(stuId); if (ToolUtil.isEmpty(byId)) { ResultUtil.error("未查询到该学员!"); } byId.setIsDefault(1); istuService.updateById(byId); List list = istuService.list(new LambdaQueryWrapper() .eq(TStudent::getAppUserId, userIdFormRedis) .ne(TStudent::getId, byId.getId())); for (TStudent tStudent : list) { tStudent.setIsDefault(2); istuService.updateById(tStudent); } return ResultUtil.success(); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 课时详情 */ @ResponseBody @PostMapping("/api/startCource/lessonDetails") @ApiOperation(value = "课时详情", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "课包id", name = "lessonId", required = true, dataType = "int"), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil coursePackageDetails(Integer lessonId, Integer stuId) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return ResultUtil.success(istuService.querySessionDetailsDt(userIdFormRedis, lessonId, stuId)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 课时详情-记录列表 */ @ResponseBody @PostMapping("/api/startCource/recordDetails") @ApiOperation(value = "课时详情-记录列表", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil> recordList(RecordTimeRequest timeRequest) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return ResultUtil.success(istuService.queryDeduRecordDetails(timeRequest, userIdFormRedis)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 课时详情-续课课包详情 */ @ResponseBody @PostMapping("/api/startCource/renewal") @ApiOperation(value = "课时详情-续课课包详情", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "课包id", name = "lessonId", required = true, dataType = "int"), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil renewalOfCourses(Integer lessonId, Integer stuId) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return ResultUtil.success(istuService.queryStuOfCourseDetails(lessonId, stuId, userIdFormRedis)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 课时详情-选择优惠券 */ @ResponseBody @PostMapping("/api/startCource/conponList") @ApiOperation(value = "课时详情-选择优惠券", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryCouponList() { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return ResultUtil.success(istuService.queryStuOfConponDetails(userIdFormRedis)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 课时详情-支付 */ @ResponseBody @PostMapping("/api/startCource/payment") @ApiOperation(value = "课时详情-支付", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil continuationOperation(ClasspaymentRequest request) { try { Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); if (null == userIdFormRedis) { return ResultUtil.tokenErr(); } return istuService.renewClassPayment(userIdFormRedis, request); } catch (Exception e) { e.printStackTrace(); return ResultUtil.runErr(); } } /** * 学员评语 */ @ResponseBody @PostMapping("/api/startCource/stuComment") @ApiOperation(value = "学员评语", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil> queryStuComment(Integer stuId) { try { return ResultUtil.success(evalstuService.queryStuCommentsList(stuId)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 学员勋章详情 */ @ResponseBody @PostMapping("/api/startCource/stuMedal") @ApiOperation(value = "学员勋章详情", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil> queryStuMedal(Integer stuId) { try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if (null == appUserId) { return ResultUtil.tokenErr(); } return ResultUtil.success(honorService.queryHonorDetails(stuId)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 学员勋章 */ @ResponseBody @PostMapping("/api/startCource/stuGoog") @ApiOperation(value = "学员勋章", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), }) public ResultUtil> queryStuGoog(Integer stuId) { try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if (null == appUserId) { return ResultUtil.tokenErr(); } return ResultUtil.success(honorService.queryStuOfMedalData(stuId)); } catch (Exception e) { return ResultUtil.runErr(); } } /** * 上课预约记录 */ @ResponseBody @PostMapping("/api/startCource/stuAppointList") @ApiOperation(value = "上课预约记录", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), @ApiImplicitParam(value = "预约状态 0=全部 1=待上课 2=已完成 3=已取消", name = "appointStatus", required = false, dataType = "int"), @ApiImplicitParam(value = "时间类型 0=全部 1=近一周 2=近一个月 3=近一年", name = "timeType", required = false, dataType = "int"), @ApiImplicitParam(value = "课程名称", name = "appointStatus", required = false, dataType = "string"), }) public ResultUtil> cgeClassAppointmentRecordList(Integer stuId, Integer appointStatus, Integer timeType, String search, Integer pageNum) { Integer appUserId = tokenUtil.getUserIdFormRedis(); if (null == appUserId) { return ResultUtil.tokenErr(); } return ResultUtil.success(istuService.getAppointmentRecords(stuId, appUserId, appointStatus, timeType, search, pageNum)); } /** * 取消预约 */ @ResponseBody @PostMapping("/api/startCource/cancelCourse") @ApiOperation(value = "上课预约-取消预约", tags = {"APP-开始上课"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "上课记录id", name = "courseStuRecordId", required = true, dataType = "int"), }) public ResultUtil cancelReservation(Integer courseStuRecordId) { try { Integer appUserId = tokenUtil.getUserIdFormRedis(); if (null == appUserId) { return ResultUtil.tokenErr(); } return istuService.cancelReservationOfCourse(courseStuRecordId); } catch (Exception e) { return ResultUtil.runErr(); } } }