From 9999e298dcf23b79e8efdb972d77d268121ee970 Mon Sep 17 00:00:00 2001 From: liujie <liujie> Date: 星期三, 27 九月 2023 11:25:43 +0800 Subject: [PATCH] 后台修改门票 --- cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java | 1528 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,509 insertions(+), 19 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java index b240beb..e26f7d6 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java +++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CoursePackagePaymentController.java @@ -1,23 +1,61 @@ package com.dsh.course.controller; -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.TCoursePackageService; -import com.dsh.course.servs.CoursePackagePaymentRepository; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.dsh.course.entity.*; +import com.dsh.course.entity.TAppUser; +import com.dsh.course.feignclient.account.AppUserClient; +import com.dsh.course.feignclient.account.StudentClient; +import com.dsh.course.feignclient.account.model.AppUser; +import com.dsh.course.feignclient.account.model.Student; +import com.dsh.course.feignclient.account.model.TCourseInfoRecord; +import com.dsh.course.feignclient.account.model.TStudent; +import com.dsh.course.feignclient.activity.CouponClient; +import com.dsh.course.feignclient.activity.model.Coupon; +import com.dsh.course.feignclient.model.*; +import com.dsh.course.feignclient.other.StoreClient; +import com.dsh.course.feignclient.other.model.Store; +import com.dsh.course.mapper.CoursePackageSchedulingMapper; +import com.dsh.course.model.*; +import com.dsh.course.model.dto.DiscountJsonDto; +import com.dsh.course.model.vo.CourseDetailRequest; +import com.dsh.course.model.vo.RegisterCourseVo; +import com.dsh.course.model.vo.request.*; +import com.dsh.course.model.vo.response.*; +import com.dsh.course.service.*; +import com.dsh.course.util.*; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import net.bytebuddy.asm.Advice; +import org.aspectj.weaver.ast.Var; +import io.swagger.models.auth.In; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; 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.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; -import java.util.ArrayList; -import java.util.List; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; @Api @CrossOrigin @@ -27,30 +65,357 @@ private Logger logger = LoggerFactory.getLogger("business-log"); + @Autowired - private CoursePackagePaymentRepository coursePackagePaymentRepository; + private TCoursePackagePaymentService packagePaymentService; @Autowired private TCoursePackageService tcpService; + + @Autowired + private TCoursePackageDiscountService tcpdService; + + + @Autowired + private ICoursePackagePaymentConfigService icppcService; + + @Autowired + private UserVideoDetailsService uvdsService; + + @Autowired + private TCourseService tcService; + + @Resource + private StudentClient studentClient; + + @Autowired + private TCoursePackageTypeService coursePackageTypeService; + + @Autowired + private TokenUtil tokenUtil; + + @Autowired + private CancelledClassesService cancelledClassesService; + + @Resource + private CoursePackageStudentService cspsService; + + + @Autowired + private PayMoneyUtil payMoneyUtil; + @Resource + private AppUserClient auClitn; + + @Resource + private StoreClient sreClient; + + @Autowired + private AppUserClient appUserClient; + + @Autowired + private RestTemplate internalRestTemplate; + @Autowired + private CouponClient couponClient; + @Autowired + private StoreClient storeClient; + @Autowired + private TCoursePackageDiscountService discountService; + + @Resource + private CoursePackageSchedulingMapper coursePackageSchedulingMapper; + @Autowired + private ICoursePackageSchedulingService coursePackageSchedulingService; + @Autowired + private CoursePackageStudentService coursePackageStudentService; + + private final SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); + /** + * 添加购课记录-后台 + * @return + */ + @RequestMapping("/base/coursePackagePayment/add") + public Object addCoursePackagePayment(@RequestBody TCoursePackagePayment packagePayment){ + packagePayment.setInsertTime(new Date()); + packagePayment.setInsertTime(new Date()); + Integer studentId = packagePayment.getStudentId(); + // 添加学员上课记录 + CoursePackageStudent coursePackageStudent = new CoursePackageStudent(); + TCoursePackagePayment one = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>().eq("studentId", packagePayment) + .orderByDesc("insertTime") + .last("LIMIT 1")); + + if (one!=null){ + Integer totalClassHours = one.getTotalClassHours(); + Integer absencesNumber = one.getAbsencesNumber(); + // 没有过期 + if (one.getUseTime().after(new Date())){ + packagePayment.setTotalClassHours(packagePayment.getClassHours()+one.getTotalClassHours()); + packagePayment.setLaveClassHours(one.getLaveClassHours()-packagePayment.getClassHours()); + packagePayment.setAbsencesNumber(one.getAbsencesNumber()); + } + packagePayment.setTotalClassHours(packagePayment.getClassHours()); + packagePayment.setLaveClassHours(packagePayment.getClassHours()); + packagePayment.setAbsencesNumber(one.getAbsencesNumber()); + }else{ + packagePayment.setTotalClassHours(packagePayment.getClassHours()); + packagePayment.setLaveClassHours(packagePayment.getClassHours()); + packagePayment.setAbsencesNumber(0); + } + // 生成排课数据 + TCoursePackage coursePackage = tcpService.getById(packagePayment.getCoursePackageId()); + //生成排课数据 + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf1.parse(sdf.format(new Date()) + " 00:00:00"); + List<String> list = Arrays.asList(coursePackage.getClassWeeks().split(";")); + String value = coursePackage.getClassStartTime(); + String value1 = coursePackage.getClassEndTime(); + + String[] star = value.split(","); + String[] end = value1.split(","); + for (int i = 0; i < star.length; i++) { + // int index = star[i].indexOf(","); + // + // + // String result = value.substring(0, index).trim(); + String classStartTime = star[i]; + String[] split = classStartTime.split(":"); + // String value1 = en; + int index1 = value1.indexOf(","); + // String result1 = value.substring(0, index1).trim(); + String classEndTime = end[i]; + String[] split1 = classEndTime.split(":"); + Calendar s = Calendar.getInstance(); + s.setTime(date); + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1); + s.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + s.set(Calendar.MINUTE, Integer.valueOf(split[1])); + s.set(Calendar.SECOND, 0); + + Calendar e = Calendar.getInstance(); + e.setTime(date); + e.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 13); + long timeInMillis = e.getTimeInMillis(); + + while (true){ + int w = s.get(Calendar.DAY_OF_WEEK); + WeekEnum weekEnum = WeekEnum.getWeekEnum(w); + if(list.contains(weekEnum.getChineseName())){ + Calendar classDate = Calendar.getInstance(); + classDate.setTime(s.getTime()); + classDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split[0])); + classDate.set(Calendar.MINUTE, Integer.valueOf(split[1])); + classDate.set(Calendar.SECOND, 0); + + Calendar endDate = Calendar.getInstance(); + endDate.setTime(s.getTime()); + endDate.set(Calendar.HOUR_OF_DAY, Integer.valueOf(split1[0])); + endDate.set(Calendar.MINUTE, Integer.valueOf(split1[1])); + endDate.set(Calendar.SECOND, 0); + + CoursePackageScheduling coursePackageScheduling = new CoursePackageScheduling(); + coursePackageScheduling.setCoursePackageId(coursePackage.getId()); + coursePackageScheduling.setClassDate(classDate.getTime()); + coursePackageScheduling.setEndDate(endDate.getTime()); + coursePackageScheduling.setStatus(1); + coursePackageSchedulingService.save(coursePackageScheduling); + coursePackageStudent.setCoursePackageSchedulingId(coursePackageScheduling.getId()); + + List<CoursePackageScheduling> list1 = coursePackageSchedulingService.list(new QueryWrapper<CoursePackageScheduling>() + .eq("coursePackageId", coursePackage.getId()) + .eq("classDate", classDate.getTime()) + .eq("endDate", endDate.getTime())); + if (list.size()+1>coursePackage.getMaxSubscribeNumber()){ + // 当前课包预约人数已满 + return 5001; + } + } + s.set(Calendar.DAY_OF_YEAR, s.get(Calendar.DAY_OF_YEAR) + 1); + if(s.getTimeInMillis() > timeInMillis){ + break; + } + } + } + } catch (ParseException e) { + e.printStackTrace(); + } + + coursePackageStudent.setStudentId(packagePayment.getStudentId()); + coursePackageStudent.setCoursePackageId(packagePayment.getCoursePackageId()); + + + coursePackageStudent.setSignInOrNot(0); + coursePackageStudent.setReservationStatus(1); + coursePackageStudent.setInsertTime(new Date()); + coursePackageStudent.setAppUserId(packagePayment.getAppUserId()); + packagePaymentService.save(packagePayment); + coursePackageStudent.setCoursePackagePaymentId(packagePayment.getId()); + return coursePackageStudentService.save(coursePackageStudent); + } + /** + * 手动支付 + * @return + */ + @RequestMapping("/base/coursePackagePayment/changeState") + public Object changeState(@RequestBody CoursePackagePayDTO dto){ + + return packagePaymentService.changeState(dto); + } + /** + * 获取购课记录 + */ + @ResponseBody + @RequestMapping("/coursePackagePayment/listAll") + public List<CoursePackagePaymentVO> listAll(@RequestBody CoursePackagePaymentQuery query){ + List<CoursePackagePaymentVO> res = packagePaymentService.listAll(query); + List<CoursePackagePaymentVO> result = new ArrayList<>(); + for (CoursePackagePaymentVO re : res) { + if (re.getCashPayment()==null){ + if (re.getPlayPaiCoin()!=null){ + String value = String.valueOf(re.getPlayPaiCoin()); + re.setCashPayment(new BigDecimal(value)); + } + } + + Store store = storeClient.queryStoreById(re.getStoreId()); + TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId()); + Student student = studentClient.queryStudentById(re.getStudentId()); + re.setPayStudent(student.getName()); + re.setPayUser(appUser.getName()); + re.setPhone(appUser.getPhone()); + re.setStoreName(store.getName()); + if (query.getPayUser()== null || query.getPayUser().equals("") ){ + }else{ + List<AppUser> appUsers = appUserClient.queryAppUserListByName(query.getPayUser()); + for (AppUser user : appUsers) { + if (appUser.getName().equals(user.getName())){ + if (query.getPayStudent()== null || query.getPayStudent().equals("")){ + }else{ + List<Student> students = studentClient.queryStudentListByName(query.getPayStudent()); + for (Student student1 : students) { + if (student.getName().equals(student1.getName())){ + result.add(re); + } + } + } + } + } + } + + if (re.getPayType()!=null){ + if (re.getPayType()==1){ + re.setBuyTypeName("微信支付"); + }else if(re.getPayType()==2){ + re.setBuyTypeName("支付宝支付"); + }else if(re.getPayType()==3){ + re.setBuyTypeName("玩湃币支付"); + }else if(re.getPayType()==4){ + re.setBuyTypeName("积分支付"); + }else if(re.getPayType()==5){ + re.setBuyTypeName("积分+微信支付"); + }else if(re.getPayType()==6){ + re.setBuyTypeName("积分+支付宝支付"); + }else if(re.getPayType()==7){ + re.setBuyTypeName("手动支付"+"-"+re.getBuyTypeName()); + } + } + + // 如果支付用户类型为管理员 则购买方式则为1线下购买 + if (re.getPayUserType()!=null){ + if (re.getPayUserType()== 2){ + re.setBuyType(1); + }else{ + // 如果当前课包有折扣 则为3折扣购买 + if (discountService.list(new QueryWrapper<TCoursePackageDiscount>() + .eq("coursePackageId",re.getCoursePackageId()).eq("auditStatus",2)).size()>0){ + re.setBuyType(3); + re.setDiscountAmount(re.getOriginalPrice().subtract(re.getPayMoney())); + }else{ + re.setBuyType(2); + } + } + } + } + if (query.getPayStudent()== null || query.getPayStudent().equals("")){ + if (query.getPayUser()== null || query.getPayUser().equals("")){ + return res; + }else{ + return result; + } + }else{ + return result; + } + } + + /** + * 获取报名订单记录列表 + */ + @ResponseBody + @RequestMapping("/registerOrder/listAllRegister") + public List<RegisterOrderVO> listAllRegister(@RequestBody RegisterOrderQuery query){ + if (query.getStudentName()!=null){ + if (!query.getStudentName().equals("")){ + List<TStudent> students1 = studentClient.queryTStudentListByName(query.getStudentName()); + List<Integer> studentIds = students1.stream().map(TStudent::getId).collect(Collectors.toList()); + query.setStudentIds(studentIds); + if (students1.size()==0){ + return new ArrayList<>(); + } + } + } + + List<RegisterOrderVO> res = packagePaymentService.listAllRegister(query); + List<RegisterOrderVO> result = new ArrayList<>(); + for (RegisterOrderVO re : res) { + if(re.getSalesName()==null){ + re.setSalesName("无"); + } + if(re.getPayType()!=null){ + if (re.getPayType() == 3){ + re.setPayMoneyAndType(re.getPlayPaiCoin()+"玩湃币"); + }else{ + re.setPayMoneyAndType("¥"+re.getMoney()); + } + } + Store store = storeClient.queryStoreById(re.getStoreId()); + TAppUser appUser = appUserClient.queryAppUser1(re.getAppUserId()); + Student student = studentClient.queryStudentById(re.getStudentId()); + re.setPayStudent(student.getName()); + re.setPayUser(appUser.getName()); + re.setPhone(appUser.getPhone()); + re.setStoreName(store.getName()); + } + return res; + } /** * 获取 没有学员信息的图片配置 * @param stuId 学员id * @return 课包列表 */ - @PostMapping("/coursePack/queryPayment") - public List<StuCourseResp> getStuCoursePackagePayment(Integer stuId){ + @ResponseBody + @PostMapping("/base/coursePack/queryPayment") + public List<StuCourseResp> getStuCoursePackagePayment(@RequestBody Integer stuId){ List<StuCourseResp> resps = new ArrayList<>(); - List<TCoursePackagePayment> byUserId = coursePackagePaymentRepository.findByUserId(stuId); + Student student = studentClient.queryStudentById(stuId); + List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",student.getAppUserId()) + .eq("studentId",stuId)); + if (byUserId.size() > 0 ){ for (TCoursePackagePayment tCoursePackagePayment : byUserId) { TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); StuCourseResp resp = new StuCourseResp(); resp.setCourseId(tCoursePackage.getId()); + resp.setId(tCoursePackagePayment.getId()); resp.setCourseName(tCoursePackage.getName()); resp.setTotalCourseNums(tCoursePackagePayment.getTotalClassHours()); resp.setResidueNums(tCoursePackagePayment.getLaveClassHours()); resp.setDeductionNums(tCoursePackagePayment.getTotalClassHours()-tCoursePackagePayment.getLaveClassHours()); + String afterDayDate = DateUtil.getAfterDayDate2(tCoursePackage.getInsertTime(),tCoursePackage.getValidDays() + ""); + resp.setPeriodOfValidity(afterDayDate); + resps.add(resp); } } return resps; @@ -60,9 +425,1134 @@ * * 获取发布的 课包列表 */ - @PostMapping("/coursePack/storeOfCourse") - public List<CourseOfStoreVo> getStuCourseWithStores(){ - return tcpService.queryStoreOfCourse(); + @ResponseBody + @PostMapping("/base/coursePack/storeOfCourse") + 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) { + List<CoursePackageStudent> packageStudent = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>() + .eq(CoursePackageStudent::getAppUserId, courseRest.getAppUserId()) + .eq(CoursePackageStudent::getStudentId,courseRest.getStuId()) + .eq(CoursePackageStudent::getCoursePackagePaymentId,tCoursePackagePayment.getId()) + .eq(CoursePackageStudent::getCoursePackageId,tCoursePackagePayment.getCoursePackageId())); + if (ToolUtil.isEmpty(packageStudent) || (ToolUtil.isNotEmpty(packageStudent) && packageStudent.get(0).getReservationStatus() == 1)){ +// 没有预约过的/已经取消了的 + TCoursePackage tCoursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); + CoursePackagePaymentConfig paymentConfig = icppcService.getOne(new QueryWrapper<CoursePackagePaymentConfig>() + .eq("coursePackageId",tCoursePackage.getId() ) + .eq("classHours",tCoursePackagePayment.getClassHours())); +// 获取课程有效结束时间,判断 查询的日期parse 是否在有效期范围内 + Date expirationDate = DateTimeHelper.getExpirationDate(tCoursePackagePayment.getInsertTime(),tCoursePackage.getValidDays()); + System.out.println(expirationDate.after(parse)); + String classWeeks = tCoursePackage.getClassWeeks(); + System.out.println(StrUtils.dealStrToList(classWeeks).contains(DateTimeHelper.getDayOfWeek(parse))); + if (expirationDate.after(parse) && StrUtils.dealStrToList(classWeeks).contains(DateTimeHelper.getDayOfWeek(parse))){ + CourseOfStoreVo storeVo = new CourseOfStoreVo(); + storeVo.setCourseId(tCoursePackagePayment.getId()); + storeVo.setCourseName(tCoursePackage.getName()); + storeVo.setClassStartTime(tCoursePackage.getClassStartTime()); + storeVo.setClassEndTime(tCoursePackage.getClassEndTime()); + storeVo.setStoreId(tCoursePackage.getStoreId()); + Store store = sreClient.queryStoreById(tCoursePackage.getStoreId()); + storeVo.setStoreAddress(store.getAddress()); + storeVo.setLat(store.getLat()); + storeVo.setLon(store.getLon()); + storeVo.setCoursePrice(ToolUtil.isEmpty(paymentConfig.getCashPayment()) ? (double) paymentConfig.getPlayPaiCoin():paymentConfig.getCashPayment()); + storeVo.setStatus(1); + // 2.0 + storeVo.setAllNum(tCoursePackagePayment.getTotalClassHours()); + storeVo.setLastNum(tCoursePackagePayment.getLaveClassHours()); + storeVo.setUseNum(tCoursePackagePayment.getTotalClassHours()-tCoursePackagePayment.getLaveClassHours()); + + course.add(storeVo); + } + } + } + } + System.out.println(course); + return course; + } catch (ParseException e) { + return null; + } + } + + + /** + * + * 课程名称列表 + */ + @PostMapping("/base/coursePack/sessionNames") + public List<StuSessionDetailsVo> getStuSessionList(@RequestBody CourseDetailRequest request){ + List<StuSessionDetailsVo> detailsVos = new ArrayList<>(); + List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .between("insertTime", request.getStartTime(),request.getEndTime()) + .eq("appUserId",request.getAppUserId()) + .eq("studentId",request.getStuId())); + if (byUserId.size() > 0){ + List<Integer> collect = byUserId.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList()); + List<TCoursePackage> list = tcpService.list(new QueryWrapper<TCoursePackage>() + .in("id", collect)); + list.forEach(vo -> { + StuSessionDetailsVo detVo = new StuSessionDetailsVo(); + detVo.setSessionid(vo.getId()); + detVo.setSessionName(vo.getName()); + String afterDayDate = DateUtil.getAfterDayDate2(vo.getInsertTime(),vo.getValidDays() + ""); + detVo.setPeriodOfValidity(afterDayDate); + detailsVos.add(detVo); + }); + } + return detailsVos; + } + + @PostMapping("/base/coursePack/paymentCourse") + public List<PurchaseRecordVo> queryCourseDetails(@RequestBody GetStuSessionList sessionList) { + List<PurchaseRecordVo> purchaseRecordVos = new ArrayList<>(); + + List<TCoursePackagePayment> coursePackage = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .between("insertTime", sessionList.getStartTime(),sessionList.getEndTime()) + .eq("appUserId",sessionList.getAppUserId()) + .eq("studentId",sessionList.getStuId())); + if (coursePackage.size() > 0 ){ + coursePackage.forEach( cspackage -> { + PurchaseRecordVo recordVo = new PurchaseRecordVo(); + recordVo.setPurchaseAmount("+"+cspackage.getClassHours()); + recordVo.setPurchaseTime(format.format(cspackage.getInsertTime())); + recordVo.setPurchaseType("购买课包"); + purchaseRecordVos.add(recordVo); + }); + } + return purchaseRecordVos; + } + + + + @PostMapping("/base/coursePack/stuOfCourses") + public StuWithCoursesListVo getStuOfCoursesDetails(@RequestBody GetStuOfCoursesDetails getStuOfCoursesDetails){ + StuWithCoursesListVo lisco = new StuWithCoursesListVo(); + Integer totalNu = 0; + Integer dedutNu = 0; + Integer remainNu = 0; + List<TCoursePackagePayment> byUserId = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",getStuOfCoursesDetails.getAppUserId()) + .eq("studentId",getStuOfCoursesDetails.getStuId())); + if (byUserId.size() > 0 ){ + for (TCoursePackagePayment tCoursePackagePayment : byUserId) { + totalNu = totalNu + tCoursePackagePayment.getTotalClassHours(); + dedutNu = dedutNu + tCoursePackagePayment.getLaveClassHours(); + remainNu = remainNu + (tCoursePackagePayment.getTotalClassHours()-tCoursePackagePayment.getLaveClassHours()); + } + lisco.setTotalNums(totalNu); + lisco.setDeductedNums(remainNu); + lisco.setRemainingNums(dedutNu); + } + return lisco; + } + + + + @PostMapping("/base/coursePack/continuingCourse") + public StudentOfCourseVo getStudentCourse(@RequestBody GetStudentCourse getStudentCourse){ + StudentOfCourseVo courseVo = new StudentOfCourseVo(); + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId", getStudentCourse.getAppUserId()) + .eq("coursePackageId", getStudentCourse.getCourseId()) + .eq("studentId", getStudentCourse.getStuId())); + if (tCoursePackagePayments.size() > 0 ){ + + List<CourseHoursType> typeList = new ArrayList<>(); + tCoursePackagePayments.forEach(cou -> { + CourseHoursType hoursType = new CourseHoursType(); + hoursType.setCourseConfigId(cou.getId()); + hoursType.setCourseHourNums(cou.getClassHours()); + typeList.add(hoursType); + }); + TCoursePackagePayment tCoursePackagePayment = tCoursePackagePayments.get(0); + courseVo.setCoursePackageId(tCoursePackagePayment.getCoursePackageId()); + courseVo.setTypeList(typeList); + + TCoursePackage coursePackage = tcpService.getById(tCoursePackagePayment.getCoursePackageId()); + courseVo.setPackageImg(coursePackage.getCoverDrawing()); + courseVo.setCourseName(coursePackage.getName()); + courseVo.setCoachId(coursePackage.getCoachId()); + String classWeeks = coursePackage.getClassWeeks(); + List<Integer> integers = StrUtils.dealStrToList(classWeeks); + if (integers.size() > 0){ + StringBuilder courWeeks = new StringBuilder("每"); + for (Integer integer : integers) { + courWeeks.append(integer).append("、"); + } + if (courWeeks.length() > 0 && courWeeks.charAt(courWeeks.length() - 1) == '、'){ + courWeeks.deleteCharAt(courWeeks.length() - 1); + } + courseVo.setCourseWeek(courWeeks.toString()); + } + + courseVo.setCourseTime(coursePackage.getClassStartTime()+"-"+coursePackage.getClassEndTime()); + Integer payType = tCoursePackagePayment.getPayType(); + BigDecimal cashPayment = tCoursePackagePayment.getCashPayment(); + double cashPaymentValue = cashPayment.doubleValue(); + Integer playPaiCoin = tCoursePackagePayment.getPlayPaiCoin(); + TCoursePackageDiscount coursePackageDiscount = tcpdService.getOne(new QueryWrapper<TCoursePackageDiscount>() + .eq("coursePackageId",coursePackage.getId() ) + .eq("type",1) + .eq("auditStatus",2)); + ObjectMapper objectMapper = new ObjectMapper(); + String content = coursePackageDiscount.getContent(); + double discountMember = 0.0; + DiscountJsonDto discountJsonDto = null; + try { + discountJsonDto = objectMapper.readValue(content, DiscountJsonDto.class); + discountMember = discountJsonDto.getDiscountMember(); + } catch (JsonProcessingException e) { + throw new RuntimeException(e); + } + switch (payType) { + case 1: + case 2: + courseVo.setAmount(cashPaymentValue); + courseVo.setVipAmount(discountMember); + break; + case 3: + courseVo.setWpGold(playPaiCoin); + break; + } + courseVo.setStoreId(coursePackage.getStoreId()); + } + + return courseVo; + } + + + @PostMapping("/base/coursePack/afterCourseTwos") + public List<AfterVideoVo> getAfterCourseTwos(@RequestParam("appUserId") Integer appUserId){ + List<AfterVideoVo> videoVos = new ArrayList<>(); + List<UserVideoDetails> list = uvdsService.list(new QueryWrapper<UserVideoDetails>() + .eq("appUserId",appUserId) + .eq("state",1)); + if (list.size() > 0 ){ + List<Integer> courseIds = list.stream().map(UserVideoDetails::getCourseId).collect(Collectors.toList()); + List<TCourse> courseList = tcService.list(new QueryWrapper<TCourse>() + .in("id",courseIds) + .eq("type",1) + .eq("state",1) + .last("ORDER BY insertTime desc LIMIT 2")); + for (TCourse tCourse : courseList) { + AfterVideoVo videoVo = new AfterVideoVo(); + videoVo.setCourseId(tCourse.getId()); + videoVo.setCourseUrl(tCourse.getCourseVideo()); + videoVos.add(videoVo); + } + } + return videoVos; + } + + @PostMapping("/base/coursePack/allPaymentCourseList") + @ResponseBody + public List<CouponPaymentVo> getAppuserCourseList(@RequestBody Integer appUserId){ + List<CouponPaymentVo> paymentVos = new ArrayList<>(); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd HH:mm"); + List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId", appUserId) + .eq("payType", 3) + .eq("payStatus", 2) + .eq("state", 1)); + if (list.size() > 0 ){ + for (TCoursePackagePayment tCoursePackagePayment : list) { + CouponPaymentVo couponPaymentVo = new CouponPaymentVo(); + couponPaymentVo.setTime(simpleDateFormat.format(tCoursePackagePayment.getInsertTime())); + couponPaymentVo.setAmount( tCoursePackagePayment.getPlayPaiCoin()); + paymentVos.add(couponPaymentVo); + } + } + return paymentVos; + } + + + @ResponseBody + @PostMapping("/base/coursePack/allAmountPayRecordOfUser") + public BillingRequestVo getAmountPayRecord(@RequestBody BillingDataRequestVo billingDataRequestVo){ + BillingRequestVo requestVo = new BillingRequestVo(); + List<BillingRequest> billingRequests = packagePaymentService.queryAmountDatas(billingDataRequestVo.getAppUserId(), billingDataRequestVo.getMonthStart(), billingDataRequestVo.getMonthEnd()); + if (billingRequests.size() >0){ + requestVo.setRequests(billingRequests); + } + return requestVo; + } + + + @ResponseBody + @PostMapping("/api/course/queryArrangeCourseList") + @ApiOperation(value = "课后练习-获取布置课程列表", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + }) + public ResultUtil<List<BaseVo>> queryArrangePackageType(){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("appUserId",appUserId)); + List<BaseVo> list = new ArrayList<>(); + tCoursePackagePayments.forEach(c -> { + BaseVo baseVo = new BaseVo(); + baseVo.setId(c.getCoursePackageId()); + TCoursePackage coursePackage = tcpService.getById(c.getCoursePackageId()); + baseVo.setName(coursePackage.getName()); + list.add(baseVo); + }); + return ResultUtil.success(list); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + /** + * 课后视频课表 + */ + @ResponseBody + @PostMapping("/api/startCource/afterSourceList") + @ApiOperation(value = "课后练习-课后视频列表", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<List<AppUserVideoResponse>> queryAfterSourceList( CourseOfAfterRequest search){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + List<Integer> courseIds = new ArrayList<>(); + QueryWrapper<TCoursePackagePayment> queryWrapper = new QueryWrapper<TCoursePackagePayment>().eq("appUserId", appUserId) + .groupBy("coursePackageId"); + if (ToolUtil.isNotEmpty(search.getCourseTypeId())){ + queryWrapper.eq("coursePackageId",search.getCourseTypeId()); + } + List<TCoursePackagePayment> tCoursePackagePayments = packagePaymentService.list(queryWrapper); + if (tCoursePackagePayments.size() > 0 ){ + courseIds = tCoursePackagePayments.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList()); + } + return ResultUtil.success(packagePaymentService.queryAfterVideo(search,courseIds)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + /** + * 课后视频详情 + */ + @ResponseBody + @PostMapping("/api/startCource/afterSourceDetail") + @ApiOperation(value = "课后练习-课后视频详情", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<CourseOfVideoResponse> queryAfterSourceDetails( CourseWithDetailsRequest detailsRequest){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(packagePaymentService.queryVideoDetails(detailsRequest,appUserId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + @ResponseBody + @PostMapping("/api/startCource/payCourseInfo") + @ApiOperation(value = "课后练习-购课详情(用于购课)", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<PayCourseInfoReq> payCourseInfo(Integer courseId){ + try { + return ResultUtil.success(packagePaymentService.payCourseInfo(courseId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + @ResponseBody + @PostMapping("/api/startCource/getMyCourseList") + @ApiOperation(value = "课后练习-可支付课程列表(用于购课)", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<List<PayCourseRes>> getMyCourseList(Integer storeId){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(packagePaymentService.getMyCourseList(storeId,appUserId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + // 2.0 + @ResponseBody + @PostMapping("/api/startCource/payCourse") + @ApiOperation(value = "课后练习-确认购课", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<?> payCourse(PayCourseReq req){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return packagePaymentService.payCourse(req,appUserId); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + /** + * 更新课后视频学习状态 + */ + @ResponseBody + @PostMapping("/api/startCource/updateVideoStatus") + @ApiOperation(value = "更新课后视频学习状态", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil updateVideoStatus( UpdateCourseVideoStatusRequest detailsRequest){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(packagePaymentService.updateVideoStatus(detailsRequest,appUserId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + @ResponseBody + @PostMapping("/api/course/getCourseAppUserDetails") + @ApiOperation(value = "已报名课程-获取课程类型列表", tags = {"APP-课程列表"}) + @ApiImplicitParams({ + }) + public ResultUtil<List<BaseVo>> queryCoursePackageType(){ + try { + List<TCoursePackageType> coursePackageTypes = coursePackageTypeService.list(new QueryWrapper<TCoursePackageType>().eq("state", 1)); + List<BaseVo> list = new ArrayList<>(); + coursePackageTypes.forEach(c -> { + BaseVo baseVo = new BaseVo(); + BeanUtils.copyProperties(c, baseVo); + list.add(baseVo); + }); + return ResultUtil.success(list); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + /** + * 已报名课程列表 + */ + @ResponseBody + @PostMapping("/api/startCource/registeredCourses") + @ApiOperation(value = "已报名课程-课程列表", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + }) + public ResultUtil<List<RegisterCourseVo>> queryRegisteredCoursesDetails( CourseOfAfterRequest courseTypeId){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(packagePaymentService.queryRegisteredCourseList(courseTypeId,appUserId)); + }catch (Exception e){ + return ResultUtil.runErr(); + } + } + + + /** + * 已报名课程详情 + */ + @ResponseBody + @PostMapping("/api/startCource/RegisteredData") + @ApiOperation(value = "已报名课程详情", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(name = "coursePayId" ,value = "课包记录id",dataType = "long"), + }) + public ResultUtil<CourseDetailsResponse> getRegisteredData(Long coursePayId){ + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + return ResultUtil.success(packagePaymentService.queryRegisteredCourseDetails(coursePayId,appUserId)); + }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(); + } + Integer couponId = request.getConponId(); + if(couponId==null || couponId==0){ + request.setConponId(null); + } + return packagePaymentService.ContinuationOrpaymentCourse(userIdFormRedis,request); + }catch (Exception e){ + return ResultUtil.runErr(); + } + + } + + + + /** + * 课包续课支付宝支付回调接口 + */ + @PostMapping("/base/coursePackage/alipayRegisteredCoursesCallback") + public void alipayCallback(HttpServletRequest request, HttpServletResponse response){ + try { + Map<String, String> map = payMoneyUtil.alipayCallback(request); + if(null != map){ + String out_trade_no = map.get("out_trade_no"); + String transaction_id = map.get("transaction_id"); + ResultUtil resultUtil = packagePaymentService.insertVipPaymentCallback(out_trade_no, transaction_id); + if(resultUtil.getCode() == 200){ + PrintWriter out = response.getWriter(); + out.write("success"); + out.flush(); + out.close(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 课包续课微信支付回调接口 + */ + @PostMapping("/base/coursePackage/wechatRegisteredCoursesCallback") + public void weChatCallback(HttpServletRequest request, HttpServletResponse response){ + try { + Map<String, String> map = payMoneyUtil.weixinpayCallback(request); + if(null != map){ + String out_trade_no = map.get("out_trade_no"); + String transaction_id = map.get("transaction_id"); + String result = map.get("result"); + ResultUtil resultUtil = packagePaymentService.insertVipPaymentCallback(out_trade_no, transaction_id); + if(resultUtil.getCode() == 200){ + PrintWriter out = response.getWriter(); + out.write(result); + out.flush(); + out.close(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + + + /** + * 获取学员剩余课时 + * @param id + * @return + */ + @ResponseBody + @PostMapping("/coursePackagePayment/queryResidueClassHour") + public Integer queryResidueClassHour(@RequestBody Integer id){ + try { + List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("studentId", id).eq("payStatus", 2) + .eq("status", 1).eq("state", 1).gt("laveClassHours", 0)); + Integer total = 0; + for (TCoursePackagePayment coursePackagePayment : list) { + total += coursePackagePayment.getLaveClassHours(); + } + return total; + }catch (Exception e){ + e.printStackTrace(); + return 0; + } + } + /** + * 获取学员剩余课时 + * @param id + * @return + */ + @ResponseBody + @PostMapping("/coursePackagePayment/queryResidueClassHourById") + public Integer queryResidueClassHourById(@RequestBody Long id){ + try { + TCoursePackagePayment list = packagePaymentService.getById(id); + return list.getLaveClassHours(); + }catch (Exception e){ + e.printStackTrace(); + return 0; + } + } + + + /** + * 课程用于支付进行扣减 + * @param paymentDeductionClassHour + */ + @ResponseBody + @PostMapping("/coursePackagePayment/paymentDeductionClassHour") + public void paymentDeductionClassHour(@RequestBody PaymentDeductionClassHour paymentDeductionClassHour){ + try { + // 2.0 用id进行查询 + List<TCoursePackagePayment> list = packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>().eq("id", paymentDeductionClassHour.getCourseId()).eq("payStatus", 2) + .eq("status", 1).eq("state", 1).gt("laveClassHours", 0)); + Integer classHour = paymentDeductionClassHour.getClassHour(); + for (TCoursePackagePayment coursePackagePayment : list) { + if(coursePackagePayment.getLaveClassHours().compareTo(classHour) >= 0){ + coursePackagePayment.setLaveClassHours(coursePackagePayment.getLaveClassHours() - classHour); + packagePaymentService.updateById(coursePackagePayment); + + // 2.0 少于3课时 推送 + if(coursePackagePayment.getLaveClassHours()<=3){ + Integer appUserId = coursePackagePayment.getAppUserId(); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + String s1 = appUserId + "_" + "Three"; + //定时修改排课状态 + String s = internalRestTemplate.getForObject("http://mb-cloud-gateway/netty/sendMsgToClient?id="+s1, String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if(jsonObject1.getIntValue("code") != 200){ + System.err.println(jsonObject1.getString("msg")); + } + } + + CancelledClasses cancelledClasses = new CancelledClasses(); + cancelledClasses.setType(2); + cancelledClasses.setVoucher(paymentDeductionClassHour.getCode()); + cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId()); + cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId()); + cancelledClasses.setCancelledClassesNumber(classHour); + cancelledClasses.setInsertTime(new Date()); + cancelledClassesService.save(cancelledClasses); + break; + }else{ + CancelledClasses cancelledClasses = new CancelledClasses(); + cancelledClasses.setType(2); + cancelledClasses.setVoucher(paymentDeductionClassHour.getCode()); + cancelledClasses.setCoursePackageId(coursePackagePayment.getCoursePackageId()); + cancelledClasses.setCoursePackagePaymentId(coursePackagePayment.getId()); + cancelledClasses.setCancelledClassesNumber(coursePackagePayment.getLaveClassHours()); + cancelledClasses.setInsertTime(new Date()); + cancelledClassesService.save(cancelledClasses); + + coursePackagePayment.setLaveClassHours(0); + packagePaymentService.updateById(coursePackagePayment); + + classHour -= cancelledClasses.getCancelledClassesNumber(); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 取消赛事回退支付课时 + * @param paymentDeductionClassHour + */ + @ResponseBody + @PostMapping("/coursePackagePayment/rollbackPaymentDeductionClassHour") + public void rollbackPaymentDeductionClassHour(@RequestBody PaymentDeductionClassHour paymentDeductionClassHour){ + try { + List<CancelledClasses> voucher = cancelledClassesService.list(new QueryWrapper<CancelledClasses>().eq("voucher", paymentDeductionClassHour.getCode())); + for (CancelledClasses cancelledClasses : voucher) { + TCoursePackagePayment coursePackagePayment = packagePaymentService.getById(cancelledClasses.getCoursePackagePaymentId()); + coursePackagePayment.setLaveClassHours(coursePackagePayment.getLaveClassHours() + cancelledClasses.getCancelledClassesNumber()); + packagePaymentService.updateById(coursePackagePayment); + + cancelledClassesService.removeById(cancelledClasses.getId()); + } + }catch (Exception e){ + e.printStackTrace(); + } + } + + + /** + * 找出符合门店的课包 + * @param s + * @return + */ + @ResponseBody + @PostMapping("/coursePackagePayment/paymentCompetitionCourseList") + public List<PayCourseRes> paymentCompetitionCourseList(@RequestBody String s){ + ArrayList<PayCourseRes> objects = new ArrayList<>(); + + String[] split = s.split("_"); + // 用户id + Integer integer = Integer.valueOf(split[0]); + String s1 = split[1]; + // 门店id + String[] split1 = s1.split(","); + ArrayList<Integer> storeIds = new ArrayList<>(); + for (String s2 : split1) { + storeIds.add(Integer.valueOf(s2)); + } + List<TCoursePackagePayment> list = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>().eq(TCoursePackagePayment::getAppUserId, integer).ge(TCoursePackagePayment::getLaveClassHours, 0).eq(TCoursePackagePayment::getStatus, 1).eq(TCoursePackagePayment::getState, 1)); + for (TCoursePackagePayment tCoursePackagePayment : list) { + Integer coursePackageId = tCoursePackagePayment.getCoursePackageId(); + TCoursePackage byId = tcpService.getById(coursePackageId); + if(storeIds.contains(byId.getStoreId())){ + PayCourseRes payCourseRes = new PayCourseRes(); + payCourseRes.setCourseNum(tCoursePackagePayment.getLaveClassHours()); + payCourseRes.setId(tCoursePackagePayment.getId()); + payCourseRes.setName(byId.getName()); + objects.add(payCourseRes); + } + } + return objects; + } + + + /** + * 课包续费玩湃币支付 + * @param + */ + @PostMapping("/coursePackagePayment/courseRenewPlayPaiPay") + public int paymentWanpaiRenewCourse(@RequestBody PlayPaiGoldCoursePackage coursePackage){ + try { + Integer userIdFormRedis = tokenUtil.getUserIdFormRedis(); + if (null == userIdFormRedis){ + return 2; + } + CoursePackagePaymentConfig paymentConfig = icppcService.getById(coursePackage.getCoursePayConfigId()); + AppUser appUser = auClitn.queryAppUser(userIdFormRedis); + if (appUser.getPlayPaiCoins() < paymentConfig.getPlayPaiCoin()){ + return 3; + } + TCoursePackagePayment packagePayment = packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>() + .eq("code",coursePackage.getCode() )); + packagePayment.setPayStatus(2); + packagePayment.setPayUserId(userIdFormRedis); + packagePayment.setClassHours(paymentConfig.getClassHours()); + packagePayment.setPlayPaiCoin(paymentConfig.getPlayPaiCoin()); + packagePayment.setTotalClassHours(paymentConfig.getClassHours()); + packagePayment.setLaveClassHours(paymentConfig.getClassHours()); + packagePaymentService.updateById(packagePayment); + + appUser.setPlayPaiCoins(appUser.getPlayPaiCoins()-paymentConfig.getPlayPaiCoin()); + auClitn.updateAppUser(appUser); + + // 2.0 + TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord(); + tCourseInfoRecord.setUserId(userIdFormRedis); + tCourseInfoRecord.setCourseId(coursePackage.getCoursePackageId()); + tCourseInfoRecord.setName("续课"); + tCourseInfoRecord.setTime(new Date()); + tCourseInfoRecord.setType(1); + tCourseInfoRecord.setNum(paymentConfig.getClassHours()); + auClitn.addCourseInfoRecord(tCourseInfoRecord); + } catch (Exception e) { + return 4; + } + return 1; + } + + @PostMapping("/base/coursePack/getPaymentCoursePackage") + public TCoursePackagePayment getCoursePackagePaymentByCode(@RequestBody String code){ + return packagePaymentService.getOne(new QueryWrapper<TCoursePackagePayment>() + .eq("code",code)); + } + + + @PostMapping("/base/coursePack/getCoursePackagePaymentById") + public TCoursePackagePayment getCoursePackagePaymentById(@RequestBody Long id){ + TCoursePackagePayment byId = packagePaymentService.getById(id); + System.out.println("======byId=========="+byId); + return byId; + } + + + @PostMapping("/base/coursePack/delPaymentCoursePackage") + public boolean delPaymentCoursePackage(@RequestBody Integer payId){ + return packagePaymentService.removeById(payId); + } + @PostMapping("/base/coursePack/updatePaymentCoursePackage") + public boolean updatePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment){ + boolean id = packagePaymentService.update(packagePayment, new QueryWrapper<TCoursePackagePayment>() + .eq("id", packagePayment.getId())); + if(id){ + // 2.0 + TCourseInfoRecord tCourseInfoRecord = new TCourseInfoRecord(); + tCourseInfoRecord.setNum(packagePayment.getTotalClassHours()); + tCourseInfoRecord.setName("续课"); + tCourseInfoRecord.setCourseId(packagePayment.getCoursePackageId()); + tCourseInfoRecord.setUserId(packagePayment.getAppUserId()); + tCourseInfoRecord.setType(1); + tCourseInfoRecord.setTime(new Date()); + id = appUserClient.addCourseInfoRecord(tCourseInfoRecord); + } + return id; + } + + @PostMapping("/base/coursePack/savePaymentCoursePackage") + public boolean savePaymentCoursePackage(@RequestBody TCoursePackagePayment packagePayment){ + + return packagePaymentService.save(packagePayment); + } + + + @PostMapping("/base/coursePack/obtainStudentClassDetails") + public List<RecordAppoint> obtainStudentClassDetailsData(@RequestBody WeeksOfCourseRest stuId){ + try { + return packagePaymentService.obtainStuClassDetails(stuId.getStuId(),stuId.getAppUserId()); + }catch (Exception e){ + e.printStackTrace(); + throw new RuntimeException(); + } + } + + + @PostMapping("/base/coursePack/getCoursePackageConfig") + public List<CoursePackagePaymentConfig> getCourseConfigList(@RequestBody Integer coursePackageId){ + return icppcService.list(new QueryWrapper<CoursePackagePaymentConfig>() + .eq("coursePackageId",coursePackageId)); + } + + + + @PostMapping("/base/coursePack/getCoursePackagePaymentOfCode") + public List<TCoursePackagePayment> getCoursePackagePaymentOfCode(@RequestBody String code){ + return packagePaymentService.list(new QueryWrapper<TCoursePackagePayment>() + .eq("code",code)); + } + + + // 2.0 送课时 + @PostMapping("/base/coursePack/sendHours") + public Integer sendHours(@RequestBody String s){ + String[] split = s.split("_"); + TCoursePackagePayment byId = packagePaymentService.getById(Long.valueOf(split[0])); + byId.setTotalClassHours(byId.getTotalClassHours()+Integer.valueOf(split[2])); + boolean b = packagePaymentService.updateHoursById(byId,Integer.valueOf(split[2])); + if(b){ + return 1; + }else { + + return 0; + } + } + + + /** + * 查询课时 + * @param courseConfigId + * @return + */ + @PostMapping("/base/coursePack/getClassHour") + public Integer getClassHour(@RequestBody Integer courseConfigId){ + CoursePackagePaymentConfig byId = icppcService.getById(courseConfigId); + return byId.getClassHours(); + } + + /** + * 获取课包报名信息列表 + * @param queryRegistrationRecord + * @return + */ + @ResponseBody + @PostMapping("/coursePackagePayment/queryRegistrationRecord") + public Page<Map<String, Object>> queryRegistrationRecord(@RequestBody QueryRegistrationRecord queryRegistrationRecord){ + Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(queryRegistrationRecord.getLimit(), queryRegistrationRecord.getOffset(), queryRegistrationRecord.getSort(), queryRegistrationRecord.getOrder()); + Page<Map<String, Object>> mapPage = page.setRecords(packagePaymentService.queryRegistrationRecord(page, queryRegistrationRecord)); + return mapPage; + } + + + /** + * 获取未预约排课学员列表 + * @param queryWalkInStudentList + * @return + */ + @ResponseBody + @PostMapping("/coursePackagePayment/queryWalkInStudentList") + public Page<Map<String, Object>> queryWalkInStudentList(@RequestBody QueryWalkInStudentList queryWalkInStudentList){ + Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(queryWalkInStudentList.getLimit(), queryWalkInStudentList.getOffset(), queryWalkInStudentList.getSort(), queryWalkInStudentList.getOrder()); + Page<Map<String, Object>> mapPage = page.setRecords(packagePaymentService.queryWalkInStudentList(page, queryWalkInStudentList)); + return mapPage; + } + + + /** + * 根据id获取数据 + * @param id + * @return + */ + @ResponseBody + @PostMapping("/coursePackagePayment/queryCoursePackagePaymentById") + public TCoursePackagePayment queryCoursePackagePaymentById(@RequestParam("id")Long id){ + return packagePaymentService.getById(id); + } + + + @ResponseBody + @PostMapping("/coursePackagePayment/CountqueryByClassId") + public Integer CountqueryByClassId(@RequestBody Integer id){ + int coursePackageId = packagePaymentService.count(new QueryWrapper<TCoursePackagePayment>().eq("coursePackageId", id)); + + + return coursePackageId; + } + + + /** + * 修改数据 + * @param coursePackagePayment + */ + @ResponseBody + @PostMapping("/coursePackagePayment/editCoursePackagePayment") + public void editCoursePackagePayment(TCoursePackagePayment coursePackagePayment){ + coursePackagePayment.setAppUserId(null); + packagePaymentService.updateById(coursePackagePayment); + } + + + + /** + * 修改数据 + * @param coursePackagePayment + */ + @ResponseBody + @PostMapping("/coursePackagePayment/editCoursePackagePayment1") + public void editCoursePackagePayment1(@RequestBody TCoursePackagePayment coursePackagePayment){ + System.out.println("editCoursePackagePayment1====coursePackagePayment"+coursePackagePayment); +// coursePackagePayment.setCoursePackageId(null); + packagePaymentService.updateBytime(coursePackagePayment); + } + + + /** + * 上课主页-预约操作 + */ + @ResponseBody + @PostMapping("/api/startCource/reverse") + @ApiOperation(value = "上课主页-预约操作--2.0改请假操作", tags = {"APP-开始上课"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), + @ApiImplicitParam(value = "课包id", name = "courseID", required = true, dataType = "String"), + @ApiImplicitParam(value = "时间 yyyy-MM-dd", name = "time", required = true, dataType = "String"), + @ApiImplicitParam(value = "学员id", name = "stuId", required = true, dataType = "int"), + }) + public ResultUtil reverse(String courseID,String time,Integer stuId){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + try { + Integer appUserId = tokenUtil.getUserIdFormRedis(); + if(null == appUserId){ + return ResultUtil.tokenErr(); + } + List<TCoursePackagePayment> packagePayment = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>() + .eq(TCoursePackagePayment::getCoursePackageId,courseID ) + .eq(TCoursePackagePayment::getAppUserId,appUserId) + .eq(TCoursePackagePayment::getStudentId,stuId) + ); + + if (ToolUtil.isEmpty(packagePayment) || packagePayment.size()==0){ + return ResultUtil.error("该用户未购买该课包"); + } + List<CoursePackageScheduling> coursePackageSchedulings = coursePackageSchedulingMapper.selectList(new LambdaQueryWrapper<CoursePackageScheduling>() + .eq(CoursePackageScheduling::getCoursePackageId, Integer.valueOf(courseID)) + .like(CoursePackageScheduling::getClassDate, time) + ); + + List<CoursePackageStudent> coursePackageStudent = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>() + .in(CoursePackageStudent::getCoursePackagePaymentId,packagePayment.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList())) + .in(CoursePackageStudent::getCoursePackageSchedulingId,coursePackageSchedulings.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList())) + .eq(CoursePackageStudent::getCoursePackageId,courseID) + .eq(CoursePackageStudent::getStudentId,stuId) + .eq(CoursePackageStudent::getAppUserId,appUserId) + ); + + if (ToolUtil.isNotEmpty(coursePackageStudent)){ + for (CoursePackageStudent packageStudent : coursePackageStudent) { + if(packageStudent.getReservationStatus()==1){ + packageStudent.setSignInOrNot(2); + cspsService.updateSignInOrNotById(packageStudent.getId()); + } + } + + }else { + } + return ResultUtil.success(); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + @ResponseBody + @PostMapping("/base/coursePack/weeksOfCourseDetailsList") + HashMap<String, Object> weeksOfCourseDetailsList(@RequestBody CourseDetailReq courseDetailReq){ + HashMap<String, Object> map = new HashMap<>(); + ArrayList<DetailsListVo> objects = new ArrayList<>(); + try { + String time = courseDetailReq.getTime(); + Date parse = new SimpleDateFormat("yyyy-MM-dd").parse(time); + int i = cn.hutool.core.date.DateUtil.dayOfWeek(parse)-1; + String week = week(i); + Store store = sreClient.queryStoreById(courseDetailReq.getStoreId()); + String lat = store.getLat(); + String lon = store.getLon(); + + Map<String, Double> distance = GeodesyUtil.getDistance(courseDetailReq.getLon() + "," + courseDetailReq.getLat(), lon + "," + lat); + double wgs84 = distance.get("WGS84") / 1000; + map.put("distance",wgs84); + map.put("name",store.getName()); + map.put("lon",lon); + map.put("lat",lat); + + String time1 = courseDetailReq.getTime(); + + // 找出门店的所有课程 排出体验 + List<TCoursePackage> list = tcpService.list(new LambdaQueryWrapper<TCoursePackage>().eq(TCoursePackage::getStoreId, courseDetailReq.getStoreId()).ne(TCoursePackage::getType, 3).like(TCoursePackage::getClassWeeks,week)); + List<Integer> collect = list.stream().map(TCoursePackage::getId).collect(Collectors.toList()); + if(collect.size()==0){ + collect.add(-1); + } + // 找出购买的课包 + List<TCoursePackagePayment> list1 = packagePaymentService.list(new LambdaQueryWrapper<TCoursePackagePayment>().eq(TCoursePackagePayment::getAppUserId, courseDetailReq.getAppUserId()).eq(TCoursePackagePayment::getStudentId, courseDetailReq.getStuId()).in(TCoursePackagePayment::getCoursePackageId, collect)); + List<Integer> collect1 = list1.stream().map(TCoursePackagePayment::getCoursePackageId).collect(Collectors.toList()); + List<Long> ids = list1.stream().map(TCoursePackagePayment::getId).collect(Collectors.toList()); + for (TCoursePackage tCoursePackage : list) { + DetailsListVo detailsListVo = new DetailsListVo(); + detailsListVo.setId(tCoursePackage.getId()); + detailsListVo.setName(tCoursePackage.getName()); + String classStartTime = tCoursePackage.getClassStartTime(); + String[] split = classStartTime.split(","); + String classEndTime = tCoursePackage.getClassEndTime(); + String[] split1 = classEndTime.split(","); + ArrayList<String> strings = new ArrayList<>(); + if(ToolUtil.isNotEmpty(classStartTime)){ + for (int i1 = 0; i1 < split.length; i1++) { + String s = split[i1].substring(0,5) + "-" + split1[i1].substring(0,5); + strings.add(s); + } + } + + detailsListVo.setTime(strings); + List<CoursePackagePaymentConfig> list2 = icppcService.list(new LambdaQueryWrapper<CoursePackagePaymentConfig>().eq(CoursePackagePaymentConfig::getCoursePackageId, tCoursePackage.getId()).orderByAsc(CoursePackagePaymentConfig::getCashPayment)); + if (list2.size() > 0) { + Double cashPayment = list2.get(0).getCashPayment(); + detailsListVo.setMoney(cashPayment); + } + detailsListVo.setNum(tCoursePackage.getNeedNum()); + if (collect1.contains(tCoursePackage.getId())) { + // 找出排课记录 + List<CoursePackageScheduling> list3 = coursePackageSchedulingMapper.selectList(new LambdaQueryWrapper<CoursePackageScheduling>() + .eq(CoursePackageScheduling::getCoursePackageId, tCoursePackage.getId()) + .like(CoursePackageScheduling::getClassDate, courseDetailReq.getTime()) + ); + if(list3.size()==0){ + break; + } + List<Long> collect2 = list3.stream().map(CoursePackageScheduling::getId).collect(Collectors.toList()); + if(collect2.size()==0){ + collect2.add(-1l); + } + List<CoursePackageStudent> list4 = cspsService.list(new LambdaQueryWrapper<CoursePackageStudent>() + .eq(CoursePackageStudent::getAppUserId, courseDetailReq.getAppUserId()) + .eq(CoursePackageStudent::getCoursePackageId, tCoursePackage.getId()) + .in(CoursePackageStudent::getCoursePackageSchedulingId, collect2). + in(CoursePackageStudent::getCoursePackagePaymentId, ids) + ); + + detailsListVo.setType(1); + if(list4.size()>0){ + Integer signInOrNot = list4.get(0).getSignInOrNot(); + if(signInOrNot==2){ + detailsListVo.setType(3); + } + detailsListVo.setIsType(list4.get(0).getType()); + } + + } else { + detailsListVo.setType(2); + } + objects.add(detailsListVo); + } + map.put("data",objects); + + return map; + } catch (ParseException e) { + e.printStackTrace(); + } + return map; + } + + private String week(int i){ + String a = ""; + switch (i){ + case 1: + a="周一"; + break; + case 2: + a="周二"; + break; + case 3: + a="周三"; + break; + case 4: + a="周四"; + break; + case 5: + a="周五"; + break; + case 6: + a="周六"; + break; + case 7: + a="周日"; + break; + } + return a; } } -- Gitblit v1.7.1