package com.dsh.guns.modular.system.controller.code; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.dsh.course.feignClient.account.CityManagerClient; import com.dsh.course.feignClient.account.CoachClient; import com.dsh.course.feignClient.account.model.CityManager; import com.dsh.course.feignClient.account.model.Coach; import com.dsh.course.feignClient.course.CoursePackageClient; import com.dsh.course.feignClient.course.CoursePackageDiscountClient; import com.dsh.course.feignClient.course.CoursePackagePaymentConfigClient; import com.dsh.course.feignClient.course.CoursePackageTypeClient; import com.dsh.course.feignClient.course.model.*; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.core.util.ToolUtil; import com.dsh.guns.modular.system.model.TSite; import com.dsh.guns.modular.system.model.TStore; import com.dsh.guns.modular.system.service.ICoursePackageService; import com.dsh.guns.modular.system.service.IStoreService; import com.dsh.guns.modular.system.service.ITSiteService; import com.dsh.guns.modular.system.util.ResultUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.*; /** * @author zhibing.pu * @Date 2023/8/1 11:50 */ @Controller @RequestMapping("/coursePackage") public class TCoursePackageController extends BaseController { private String PREFIX = "/system/coursePackage/"; @Autowired private ICoursePackageService coursePackageService; @Resource private CoursePackageTypeClient coursePackageTypeClient; @Autowired private IStoreService storeService; @Resource private CityManagerClient cityManagerClient; @Autowired private ITSiteService siteService; @Resource private CoachClient coachClient; @Resource private CoursePackagePaymentConfigClient coursePackagePaymentConfigClient; @Resource private CoursePackageDiscountClient coursePackageDiscountClient; @Resource private CoursePackageClient coursePackageClient; /** * 跳转到列表页 * @param model * @return */ @GetMapping("/openCoursePackageListPage") public String openCoursePackageListPage(Model model){ Integer objectType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); List tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType(); model.addAttribute("coursePackageType", tCoursePackageTypes); String cityCode = null; if(objectType == 2){//城市管理员 CityManager cityManager = cityManagerClient.queryCityManagerById(objectId); cityCode = cityManager.getCityCode(); } List> list = storeService.queryProvince(cityCode); model.addAttribute("province", list); model.addAttribute("objectType", objectType); return PREFIX + "coursePackage.html"; } /** * 跳转到添加页 * @param model * @return */ @GetMapping("/openAddCoursePackage") public String openAddCoursePackage(Model model){ Integer objectType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); List tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType(); model.addAttribute("coursePackageType", tCoursePackageTypes); String cityCode = null; if(objectType == 2){//城市管理员 CityManager cityManager = cityManagerClient.queryCityManagerById(objectId); cityCode = cityManager.getCityCode(); } List> list = storeService.queryProvince(cityCode); model.addAttribute("province", list); Object code = list.get(0).get("code"); List> list1 = storeService.queryCity(code.toString(), cityCode); model.addAttribute("city", list1); String code1 = list1.get(0).get("code").toString(); List list2 = storeService.list(new QueryWrapper().eq("cityCode", code1).eq("state", 1)); model.addAttribute("store", list2); TStore store = list2.get(0); List list3 = siteService.list(new QueryWrapper().eq("storeId", store.getId()).eq("state", 1)); model.addAttribute("site", list3); List coaches = coachClient.queryCoachByCity(code1); model.addAttribute("coach", coaches); return PREFIX + "coursePackage_add.html"; } /** * 跳转到编辑页 * @param model * @param id * @return */ @GetMapping("/openEditCoursePackage") public String openEditCoursePackage(Model model, Integer id){ TCoursePackage tCoursePackage = coursePackageService.queryById(id); model.addAttribute("item", tCoursePackage); model.addAttribute("classTime", tCoursePackage.getClassStartTime() + ":00 - " + tCoursePackage.getClassEndTime() + ":00"); String[] split = tCoursePackage.getClassWeeks().split(";"); List list5 = Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日"); List> classWeeks = new ArrayList<>(); for (String s : list5) { Map map = new HashMap<>(); map.put("value", s); map.put("checked", false); for (String s1 : split) { if(s.equals(s1)){ map.put("checked", true); } } classWeeks.add(map); } model.addAttribute("classWeeks", classWeeks); List tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType(); model.addAttribute("coursePackageType", tCoursePackageTypes); String cityCode = tCoursePackage.getCityCode(); String provinceCode = tCoursePackage.getProvinceCode(); List> list = storeService.queryProvince(cityCode); model.addAttribute("province", list); List> list1 = storeService.queryCity(provinceCode, cityCode); model.addAttribute("city", list1); List list2 = storeService.list(new QueryWrapper().eq("cityCode", cityCode).eq("state", 1)); model.addAttribute("store", list2); List list3 = siteService.list(new QueryWrapper().eq("storeId", tCoursePackage.getStoreId()).eq("state", 1)); model.addAttribute("site", list3); List coaches = coachClient.queryCoachByCity(cityCode); model.addAttribute("coach", coaches); List list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id); model.addAttribute("coursePackagePaymentConfig", list4.remove(0)); model.addAttribute("coursePackagePaymentConfigs", list4); CoursePackagePaymentConfig coursePackagePaymentConfig = list4.get(0); model.addAttribute("cashPayment", coursePackagePaymentConfig.getCashPayment() == 0 ? false : true); model.addAttribute("playPaiCoin", coursePackagePaymentConfig.getPlayPaiCoin() == 0 ? false : true); return PREFIX + "coursePackage_edit.html"; } /** * 跳转详情页 * @param model * @param id * @return */ @GetMapping("/showCoursePackageDetails") public String showCoursePackageDetails(Model model, Integer id){ TCoursePackage tCoursePackage = coursePackageService.queryById(id); model.addAttribute("item", tCoursePackage); model.addAttribute("classTime", tCoursePackage.getClassStartTime() + ":00 - " + tCoursePackage.getClassEndTime() + ":00"); String[] split = tCoursePackage.getClassWeeks().split(";"); List list5 = Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日"); List> classWeeks = new ArrayList<>(); for (String s : list5) { Map map = new HashMap<>(); map.put("value", s); map.put("checked", false); for (String s1 : split) { if(s.equals(s1)){ map.put("checked", true); } } classWeeks.add(map); } model.addAttribute("classWeeks", classWeeks); List tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType(); model.addAttribute("coursePackageType", tCoursePackageTypes); String cityCode = tCoursePackage.getCityCode(); String provinceCode = tCoursePackage.getProvinceCode(); List> list = storeService.queryProvince(cityCode); model.addAttribute("province", list); List> list1 = storeService.queryCity(provinceCode, cityCode); model.addAttribute("city", list1); List list2 = storeService.list(new QueryWrapper().eq("cityCode", cityCode).eq("state", 1)); model.addAttribute("store", list2); List list3 = siteService.list(new QueryWrapper().eq("storeId", tCoursePackage.getStoreId()).eq("state", 1)); model.addAttribute("site", list3); List coaches = coachClient.queryCoachByCity(cityCode); model.addAttribute("coach", coaches); List list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id); model.addAttribute("coursePackagePaymentConfig", list4.remove(0)); model.addAttribute("coursePackagePaymentConfigs", list4); CoursePackagePaymentConfig coursePackagePaymentConfig = list4.get(0); model.addAttribute("cashPayment", coursePackagePaymentConfig.getCashPayment() == 0 ? false : true); model.addAttribute("playPaiCoin", coursePackagePaymentConfig.getPlayPaiCoin() == 0 ? false : true); return PREFIX + "coursePackage_info.html"; } /** * 跳转到折扣页 * @param model * @param id * @return */ @GetMapping("/showCoursePackageDiscount") public String showCoursePackageDiscount(Model model, Integer id){ TCoursePackage tCoursePackage = coursePackageService.queryById(id); model.addAttribute("item", tCoursePackage); List list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id); List> list = new ArrayList<>(); for (CoursePackagePaymentConfig coursePackagePaymentConfig : list4) { if(coursePackagePaymentConfig.getCashPayment() == 0){ continue; } Map map = new HashMap<>(); map.put("coursePackagePaymentConfigId", coursePackagePaymentConfig.getId()); map.put("classHours", coursePackagePaymentConfig.getClassHours()); String payment = ""; if(coursePackagePaymentConfig.getCashPayment() > 0){ payment += "现金支付"; } if(coursePackagePaymentConfig.getPlayPaiCoin() > 0){ payment += (ToolUtil.isNotEmpty(payment) ? "、" : "") + "玩湃币支付"; } map.put("payment", payment); map.put("cashPayment", coursePackagePaymentConfig.getCashPayment()); List tCoursePackageDiscounts = coursePackageDiscountClient.queryCoursePackageDiscount(coursePackagePaymentConfig.getId()); map.put("coursePackageDiscount", tCoursePackageDiscounts); list.add(map); } model.addAttribute("coursePackagePaymentConfig", JSON.toJSONString(list)); return PREFIX + "coursePackageDiscount.html"; } /** * 跳转到报名列表页 * @param model * @param id * @return */ @GetMapping("/registrationRecord") public String registrationRecord(Model model, Integer id){ TCoursePackage tCoursePackage = coursePackageService.queryById(id); model.addAttribute("item", tCoursePackage); return PREFIX + "registrationRecord.html"; } /** * 跳转到上课记录列表页 * @param model * @param id * @return */ @GetMapping("/openClassRecord") public String openClassRecord(Model model, Integer id){ TCoursePackage tCoursePackage = coursePackageClient.queryById(id); TStore store = storeService.getById(tCoursePackage.getStoreId()); Coach coach = coachClient.queryCoachById(tCoursePackage.getCoachId()); model.addAttribute("item", tCoursePackage); model.addAttribute("store", store); model.addAttribute("coach", coach); return PREFIX + "classRecord.html"; } /** * 跳转到查看学员列表 * @param model * @param id * @return */ @GetMapping("/openCoursePackageStudent") public String openCoursePackageStudent(Model model, Long id){ model.addAttribute("id", id); return PREFIX + "coursePackageStudent.html"; } /** * 跳转到手动预约列表 * @param model * @param id * @return */ @GetMapping("/openManualReservation") public String openManualReservation(Model model, Long id){ model.addAttribute("id", id); return PREFIX + "manualReservation.html"; } /** * 跳转到课包审核列表页 * @return */ @GetMapping("/examineCoursePackage") public String examineCoursePackage(Model model){ List tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType(); model.addAttribute("coursePackageType", tCoursePackageTypes); List> list = storeService.queryProvince(null); model.addAttribute("province", list); return PREFIX + "examineCoursePackage.html"; } /** * 跳转到审核详情页 * @param model * @param id * @return */ @GetMapping("/showExamineCoursePackageDetails") public String showExamineCoursePackageDetails(Model model, Integer id){ TCoursePackage tCoursePackage = coursePackageService.queryById(id); model.addAttribute("item", tCoursePackage); model.addAttribute("classTime", tCoursePackage.getClassStartTime() + ":00 - " + tCoursePackage.getClassEndTime() + ":00"); String[] split = tCoursePackage.getClassWeeks().split(";"); List list5 = Arrays.asList("周一", "周二", "周三", "周四", "周五", "周六", "周日"); List> classWeeks = new ArrayList<>(); for (String s : list5) { Map map = new HashMap<>(); map.put("value", s); map.put("checked", false); for (String s1 : split) { if(s.equals(s1)){ map.put("checked", true); } } classWeeks.add(map); } model.addAttribute("classWeeks", classWeeks); List tCoursePackageTypes = coursePackageTypeClient.queryAllCoursePackageType(); model.addAttribute("coursePackageType", tCoursePackageTypes); String cityCode = tCoursePackage.getCityCode(); String provinceCode = tCoursePackage.getProvinceCode(); List> list = storeService.queryProvince(cityCode); model.addAttribute("province", list); List> list1 = storeService.queryCity(provinceCode, cityCode); model.addAttribute("city", list1); List list2 = storeService.list(new QueryWrapper().eq("cityCode", cityCode).eq("state", 1)); model.addAttribute("store", list2); List list3 = siteService.list(new QueryWrapper().eq("storeId", tCoursePackage.getStoreId()).eq("state", 1)); model.addAttribute("site", list3); List coaches = coachClient.queryCoachByCity(cityCode); model.addAttribute("coach", coaches); List list4 = coursePackagePaymentConfigClient.queryCoursePackagePaymentConfigList(id); model.addAttribute("coursePackagePaymentConfig", list4.remove(0)); model.addAttribute("coursePackagePaymentConfigs", list4); CoursePackagePaymentConfig coursePackagePaymentConfig = list4.get(0); model.addAttribute("cashPayment", coursePackagePaymentConfig.getCashPayment() == 0 ? false : true); model.addAttribute("playPaiCoin", coursePackagePaymentConfig.getPlayPaiCoin() == 0 ? false : true); return PREFIX + "examineCoursePackage_info.html"; } /** * 获取城市列表 * @param code * @return */ @ResponseBody @PostMapping("/queryCity") public List> queryCity(String code){ Integer objectType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); String cityCode = null; if(objectType == 2){//城市管理员 CityManager cityManager = cityManagerClient.queryCityManagerById(objectId); cityCode = cityManager.getCityCode(); } return storeService.queryCity(code, cityCode); } /** * 根据城市code获取门店 * @param cityCode * @return */ @ResponseBody @PostMapping("/queryStore") public List queryStore(String cityCode){ List list = storeService.list(new QueryWrapper().eq("cityCode", cityCode).eq("state", 1)); return list; } /** * 根据门店id获取场地 * @param storeId * @return */ @ResponseBody @PostMapping("/querySite") public List querySite(Integer storeId){ List list = siteService.list(new QueryWrapper().eq("storeId", storeId).eq("state", 1)); return list; } /** * 获取城市教练 * @param cityCode * @return */ @ResponseBody @PostMapping("/queryCoach") public List queryCoach(String cityCode){ List coaches = coachClient.queryCoachByCity(cityCode); return coaches; } /** * 获取列表数据 * @param provinceCode * @param cityCode * @param coursePackageTypeId * @param name * @param status * @param state * @return */ @ResponseBody @PostMapping("/queryCoursePackageLists") public Object queryCoursePackageLists(String provinceCode, String cityCode, Integer coursePackageTypeId, String name, Integer status, Integer state){ Integer objectType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); Integer storeId = null; if(objectType == 2){//城市管理员 CityManager cityManager = cityManagerClient.queryCityManagerById(objectId); provinceCode = cityManager.getProvinceCode(); cityCode = cityManager.getCityCode(); } if(objectType == 3) {//城市管理员 storeId = objectId; } Page> mapPage = coursePackageService.queryCoursePackageLists(provinceCode, cityCode, coursePackageTypeId, storeId, name, status, state); return super.packForBT(mapPage); } /** * 添加课包数据 * @param coursePackage * @param coursePackagePaymentConfig * @return */ @ResponseBody @PostMapping("/addCoursePackage") public ResultUtil addCoursePackage(TCoursePackage coursePackage, String coursePackagePaymentConfig){ String classStartTime = coursePackage.getClassStartTime(); String classEndTime = coursePackage.getClassEndTime(); classStartTime = classStartTime.substring(0, classStartTime.lastIndexOf(":")); classEndTime = classEndTime.substring(0, classEndTime.lastIndexOf(":")); coursePackage.setClassStartTime(classStartTime); coursePackage.setClassEndTime(classEndTime); coursePackage.setAuditStatus(1); coursePackage.setStatus(1); coursePackage.setState(1); coursePackage.setInsertTime(new Date()); coursePackageService.addCoursePackage(coursePackage, coursePackagePaymentConfig); return ResultUtil.success(); } /** * 修改数据 * @param coursePackage * @param coursePackagePaymentConfig * @return */ @ResponseBody @PostMapping("/updateCoursePackage") public ResultUtil updateCoursePackage(TCoursePackage coursePackage, String coursePackagePaymentConfig){ String classStartTime = coursePackage.getClassStartTime(); String classEndTime = coursePackage.getClassEndTime(); classStartTime = classStartTime.substring(0, classStartTime.lastIndexOf(":")); classEndTime = classEndTime.substring(0, classEndTime.lastIndexOf(":")); coursePackage.setClassStartTime(classStartTime); coursePackage.setClassEndTime(classEndTime); coursePackageService.updateCoursePackage(coursePackage, coursePackagePaymentConfig); return ResultUtil.success(); } /** * 修改数据状态 * @param id * @param state * @return */ @ResponseBody @PostMapping("/editCoursePackageState") public ResultUtil editCoursePackageState(Integer id, Integer state){ TCoursePackage coursePackage = new TCoursePackage(); coursePackage.setId(id); coursePackage.setState(state); coursePackageService.editCoursePackageState(coursePackage); return ResultUtil.success(); } /** * 编辑课包折扣 * @param json * @return */ @ResponseBody @PostMapping("/setCoursePackageDiscount") public ResultUtil setCoursePackageDiscount(Integer id, String json){ return coursePackageService.setCoursePackageDiscount(id, json); } /** * 获取课包报名信息列表 * @param id * @param userName * @param studentName * @return */ @ResponseBody @PostMapping("/queryRegistrationRecord") public Object queryRegistrationRecord(Integer id, String userName, String studentName){ Page> mapPage = coursePackageService.queryRegistrationRecord(id, userName, studentName); return super.packForBT(mapPage); } /** * 获取课包排课数据 * @param id * @return */ @ResponseBody @PostMapping("/queryClassRecord") public Object queryClassRecord(Integer id){ Page> page = coursePackageService.queryCoursePackageSchedulingList(id); return super.packForBT(page); } /** * 根据排课id获取学员预约数据列表 * @param id * @param userName * @param studentName * @return */ @ResponseBody @PostMapping("/queryCoursePackageStudentList") public Object queryCoursePackageStudentList(Long id, String userName, String studentName){ Page> page = coursePackageService.queryCoursePackageStudentList(id, userName, studentName); return super.packForBT(page); } /** * 取消预约 * @param id * @return */ @ResponseBody @PostMapping("/cancelReservation") public ResultUtil cancelReservation(Long id){ return coursePackageService.cancelReservation(id); } /** * 修改缺席状态 * @param id * @return */ @ResponseBody @PostMapping("/setAbsenceStatus") public ResultUtil setAbsenceStatus(Long id){ return coursePackageService.setAbsenceStatus(id); } /** * 取消排课记录 * @param id * @return */ @ResponseBody @PostMapping("/cancelClassSchedule") public ResultUtil cancelClassSchedule(Long id){ return coursePackageService.cancelClassSchedule(id); } /** * 发布课后练习 * @param id * @param courseId * @param integral * @return */ @ResponseBody @PostMapping("/afterClassExercises") public ResultUtil afterClassExercises(Long id, Integer courseId, Integer integral){ return coursePackageService.afterClassExercises(id, courseId, integral); } /** * 添加消课凭证 * @param id * @param cancelClasses * @param deductClassHour * @return */ @ResponseBody @PostMapping("/cancellationRecord") public ResultUtil cancellationRecord(Long id, String cancelClasses, Integer deductClassHour){ return coursePackageService.cancellationRecord(id, cancelClasses, deductClassHour); } /** * 获取未预约排课学员列表 * @param coursePackageSchedulingId * @param userName * @param studentName * @return */ @ResponseBody @PostMapping("/queryWalkInStudentList") public Object queryWalkInStudentList(Long coursePackageSchedulingId, String userName, String studentName){ Page> page = coursePackageService.queryWalkInStudentList(coursePackageSchedulingId, userName, studentName); return super.packForBT(page); } /** * 手动预约课程 * @param coursePackagePaymentId * @param coursePackageSchedulingId * @return */ @ResponseBody @PostMapping("/courseReservation") public ResultUtil courseReservation(Long coursePackagePaymentId, Long coursePackageSchedulingId){ return coursePackageService.courseReservation(coursePackagePaymentId, coursePackageSchedulingId); } /** * 退课操作 * @param coursePackagePaymentId * @param certificate * @return */ @ResponseBody @PostMapping("/dropTheClass") public ResultUtil dropTheClass(Long coursePackagePaymentId, String certificate){ return coursePackageService.dropTheClass(coursePackagePaymentId, certificate); } /** * 补课操作 * @param coursePackagePaymentId * @return */ @ResponseBody @PostMapping("/makeUpMissedLessons") public ResultUtil makeUpMissedLessons(Long coursePackagePaymentId){ return coursePackageService.makeUpMissedLessons(coursePackagePaymentId); } /** * 获取课包审核列表 * @param provinceCode * @param cityCode * @param coursePackageTypeId * @param name * @param auditStatus * @return */ @ResponseBody @PostMapping("/queryExamineCoursePackageLists") public Object queryExamineCoursePackageLists(String provinceCode, String cityCode, Integer coursePackageTypeId, String name, Integer auditStatus){ Page> mapPage = coursePackageService.queryExamineCoursePackageLists(provinceCode, cityCode, coursePackageTypeId, name, auditStatus); return super.packForBT(mapPage); } /** * 审核课包 * @param id * @param auditStatus * @param authRemark * @return */ @ResponseBody @PostMapping("/setCoursePackageAuditStatus") public ResultUtil setCoursePackageAuditStatus(Integer id, Integer auditStatus, String authRemark){ return coursePackageService.setCoursePackageAuditStatus(id, auditStatus, authRemark); } }