nickchange
2023-11-17 a9564eae9f0169ca39329b2f14a8f13d13358a0a
cloud-server-account/src/main/java/com/dsh/account/controller/ClassDetailsController.java
@@ -1,18 +1,22 @@
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.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.Api;
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;
@@ -20,21 +24,22 @@
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 javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * 学员上课情况 接口
 */
@Api
@CrossOrigin
@RestController
@RequestMapping("/base/startCource")
@RequestMapping("")
public class ClassDetailsController {
    private Logger logger = LoggerFactory.getLogger("business-log");
@@ -46,45 +51,160 @@
    private TAppUserService tappuService;
    @Autowired
    private EvaluateStudentService evalstuService;
    @Autowired
    private StudentHonorService honorService;
    @Autowired
    private TokenUtil tokenUtil;
    @Autowired
    private TAppGiftService appGiftService;
    @ResponseBody
    @PostMapping("/stu/queryStudentData")
    @ApiOperation(value = "根据登录用户ID查询学员信息", tags = {"APP-开始上课-用户学员信息"}, notes = "")
    @PostMapping("/api/startCource/queryStudentData")
    @ApiOperation(value = "上课首页", tags = {"APP-开始上课"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "经度值", name = "longitude", required = true, dataType = "String"),
            @ApiImplicitParam(value = "纬度值", name = "latitude", required = true, dataType = "String"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    public ResultUtil queryCouponRecord(String longitude,String latitude,HttpServletRequest request){
    public ResultUtil<ClassInfoVo> queryCouponRecord(Integer stuId){
        try {
            Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request);
            Integer userIdFormRedis = tokenUtil.getUserIdFormRedis();
            if(null == userIdFormRedis){
                return ResultUtil.tokenErr();
            }
            return ResultUtil.success(tappuService.queryUserOfStus(userIdFormRedis,longitude,latitude));
            return ResultUtil.success(tappuService.queryUserOfStus(stuId,userIdFormRedis));
        }catch (Exception e){
            e.printStackTrace();
            return ResultUtil.runErr(ResultUtil.ERROR);
            return ResultUtil.runErr();
        }
    }
    @ResponseBody
    @PostMapping("/stu/queryPhysical")
    @ApiOperation(value = "获取学员测试报告", tags = {"APP-开始上课-获取学员测试报告"}, notes = "")
    @PostMapping("/api/startCource/weeksOfCourseDetails")
    @ApiOperation(value = "上课首页-课程列表", tags = {"APP-开始上课"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "学员id", name = "id", required = true, dataType = "int"),
            @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<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();
        }
    }
    @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<Map<String,Object>> 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<Integer> weeksOfGetHours(){
        try {
            Integer appUserId = tokenUtil.getUserIdFormRedis();
            if(null == appUserId){
                return ResultUtil.tokenErr();
            }
            TAppGift one = appGiftService.getOne(new LambdaQueryWrapper<TAppGift>().eq(TAppGift::getUserId, appUserId));
            return ResultUtil.success(one==null?0:one.getNum());
        }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<Integer> weeksOfAddHours(Long packetId){
        try {
            Integer appUserId = tokenUtil.getUserIdFormRedis();
            if(null == appUserId){
                return ResultUtil.tokenErr();
            }
            TAppGift one = appGiftService.getOne(new LambdaQueryWrapper<TAppGift>().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<StuPhysicalVo> getStuPhysicalInfo(@RequestBody Integer stuID){
    public ResultUtil<StuPhysicalVo> getStuPhysicalInfo(Integer stuID){
        StuPhysicalVo vo = new StuPhysicalVo();
        TStudent tStudent = istuService.getById(stuID);
        if (ToolUtil.isNotEmpty(tStudent)){
            vo.setBmi(tStudent.getBmi());
            vo.setUrl(tStudent.getLateralSurface());
            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());
        }
@@ -95,21 +215,19 @@
     * 添加学员信息
     */
    @ResponseBody
    @PostMapping("/stu/addData")
    @ApiOperation(value = "添加学员信息", tags = {"APP-开始上课-添加学员信息"}, notes = "")
    @PostMapping("/api/startCource/addData")
    @ApiOperation(value = "添加学员信息", tags = {"APP-开始上课"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "学员信息", name = "stu", required = true, dataType = "int"),
            @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
    })
    @Transactional
    public ResultUtil addStu(@RequestBody StuDetailsReq stu,HttpServletRequest request){
    public ResultUtil addStu(StuDetailsReq stu){
        try {
            Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request);
            Integer userIdFormRedis = tokenUtil.getUserIdFormRedis();
            if(null == userIdFormRedis){
                return ResultUtil.tokenErr();
            }
            istuService.addStuOfAppUser(stu,userIdFormRedis);
            return ResultUtil.success();
            return istuService.addStuOfAppUser(stu,userIdFormRedis);
        }catch (Exception e){
            return ResultUtil.runErr(ResultUtil.ERROR);
        }
@@ -119,24 +237,27 @@
     * 该APP用户下的学员列表
     */
    @ResponseBody
    @PostMapping("/stu/listOfStu")
    @ApiOperation(value = "该APP用户下的学员列表", tags = {"APP-开始上课-学员列表"}, notes = "")
    @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(HttpServletRequest request){
    public ResultUtil<List<StuListVo>> queryStuList(){
        try {
            Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(request);
            Integer userIdFormRedis = tokenUtil.getUserIdFormRedis();
            if(null == userIdFormRedis){
                return ResultUtil.tokenErr();
            }
            List<StuListVo> stuListVos = new ArrayList<>();
            List<TStudent> tStudents = istuService.list(new QueryWrapper<TStudent>()
                    .eq("appUserId",userIdFormRedis));
                    .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());
@@ -144,27 +265,395 @@
                    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(ResultUtil.ERROR);
            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<List<StuListVo>> 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<StuDetailsVo> 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);
          return  ResultUtil.success(istuService.updateById(tStudent));
//            return ResultUtil.success(istuService.commitEditStudentInfo(stu,userIdFormRedis));
        }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<TStudent> list = istuService.list(new LambdaQueryWrapper<TStudent>()
                    .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("/stu/lessonDetails")
    @ApiOperation(value = "课时详情", tags = {"APP-开始上课-课时详情"}, notes = "")
    @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(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 void coursePackageDetails(@RequestBody Integer lessonId){
    public ResultUtil<ClassDetailsInsVo> 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<List<PurchaseRecordVo>> 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<CourseDetailsOfContinuationResp> 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<List<CouponStuAvailableVo>> 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<List<StuCommentsVo>> 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<List<StuMedalVo>> 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<List<GongVo>> 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<List<RecordAppoint>> cgeClassAppointmentRecordList(Integer stuId, Integer appointStatus, Integer timeType, String search,Integer pageNum){
//        try {
            Integer appUserId = tokenUtil.getUserIdFormRedis();
            if(null == appUserId){
                return ResultUtil.tokenErr();
            }
            return ResultUtil.success(istuService.getAppointmentRecords(stuId,appUserId,appointStatus,timeType,search,pageNum));
//        }catch (Exception e){
//            return ResultUtil.runErr();
//        }
    }
    /**
     * 取消预约
     */
    @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();
        }
    }
}