package com.dsh.guns.modular.system.controller.system; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.dto.*; import com.dsh.course.entity.CoursePackageOrderStudent; import com.dsh.course.entity.EvaluateStudent; import com.dsh.course.feignClient.account.AppUserClient; import com.dsh.course.feignClient.account.StudentClient; import com.dsh.course.feignClient.account.model.TAppUser; import com.dsh.course.feignClient.competition.CompetitionClient; import com.dsh.course.feignClient.competition.model.ListQuery; import com.dsh.course.feignClient.course.CoursePackageClient; import com.dsh.course.feignClient.course.CoursePackagePaymentClient; import com.dsh.course.feignClient.course.CourseStuddentClient; import com.dsh.course.feignClient.course.model.TCoursePackage; import com.dsh.course.feignClient.course.model.TCoursePackagePayment; import com.dsh.course.feignClient.other.BallClient; import com.dsh.course.feignClient.other.HistoryClient; import com.dsh.course.model.MoneyBack; import com.dsh.course.model.dto.InsertBackDto; import com.dsh.course.model.dto.StudentClassInfo; import com.dsh.course.util.ChineseMoneyUtils; import com.dsh.course.util.HtmlToPdfUtils; import com.dsh.guns.config.UserExt; import com.dsh.guns.core.base.controller.BaseController; import com.dsh.guns.modular.system.model.*; import com.dsh.guns.modular.system.model.dto.*; import com.dsh.guns.modular.system.service.*; import com.dsh.guns.modular.system.util.BigDecimalToChineseAmountUtil; import com.dsh.guns.modular.system.util.ResultUtil; import io.swagger.models.auth.In; import org.apache.ibatis.annotations.Param; import org.bouncycastle.math.raw.Mod; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.management.relation.RelationService; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * 控制器 * * @author fengshuonan * @Date 2023-09-12 14:51:26 */ @Controller @RequestMapping("/tStudent") public class TStudentController extends BaseController { private String PREFIX = "/system/tStudent/"; @Autowired private ITStudentService itStudentService; @Resource private CourseStuddentClient courseStuddentClient; @Resource private HistoryClient historyClient; @Autowired private IStoreService storeService; @Autowired private CompetitionClient competitionClient; @Autowired private ICityService cityService; @Autowired private CoursePackagePaymentClient coursePackagePaymentClient; @RequestMapping("download") public void down(HttpServletRequest request, HttpServletResponse response) throws IOException { // Get the InputStream from a file or any other source InputStream inputStream = request.getInputStream(); // Obtain the InputStream // Set the content type of the response response.setContentType("application/octet-stream"); // Set the headers for file download response.setHeader("Content-Disposition", "attachment; filename=\"filename.extension\""); // Get the OutputStream from the response OutputStream outputStream = response.getOutputStream(); // Copy the data from InputStream to OutputStream byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } HtmlToPdfUtils.convertToPdf(inputStream,null,outputStream); // Close the streams inputStream.close(); outputStream.close(); } /** * 获取变更列表 */ /** * 获取有效期 */ @RequestMapping("/changelist/{payId}") @ResponseBody public ResultUtil changelist(@PathVariable("payId") Long payId, ConsumeQuery consumeQuery) { consumeQuery.setPayId(payId); System.out.println("=======changelist==========="+consumeQuery); List courseCounsums = courseStuddentClient.queryCounsum(consumeQuery); Map> map = new HashMap<>(); map.put("items",courseCounsums); return new ResultUtil<>(0,0,null,map,null); } /** * 跳转到首页 */ @RequestMapping("") public String index(Model model) { Integer objectType = UserExt.getUser().getObjectType(); model.addAttribute("objectType",objectType); List list = cityService.list(new LambdaQueryWrapper().eq(TCity::getParentId, 0)); model.addAttribute("list",list); return PREFIX + "tStudent.html"; } @RequestMapping("TTT") public String index1() { return PREFIX + "tStudentEditTTT.html"; } @RequestMapping("openAddCoursePackage") public String index3() { return PREFIX + "classelct.html"; } @RequestMapping("trans") public String index2() { return PREFIX + "trans.html"; } /** * 跳转到添加 */ @RequestMapping("/tStudent_add") public String tStudentAdd() { return PREFIX + "tStudent_add.html"; } @Resource private CoursePackageClient coursePackageClient; /** * 获取有效期 */ @RequestMapping("/getBackList/{tStudentId}") @ResponseBody public ResultUtil getBackList(@PathVariable("tStudentId") Integer tStudentId) { List moneyBacks = courseStuddentClient.getMoneyBack(tStudentId); Map> map = new HashMap<>(); map.put("items",moneyBacks); return new ResultUtil<>(0,0,null,map,null); } /** * 跳转到退款 */ @RequestMapping("/backmoney") public String backmoney(Integer id,String ids,Model model) { TStudentDto tStudentDto = appUserClient.queryOneWebUser(id); model.addAttribute("id", id); model.addAttribute("ids", ids); TAppUser tAppUser = appUserClient.queryById(tStudentDto.getAppUserId()); model.addAttribute("userName",tAppUser.getName()); model.addAttribute("tStudentDto",tStudentDto); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = dateFormat.format(new Date()); model.addAttribute("reDate", formattedDate); List coursePackagePayments = courseStuddentClient.queryByIds(ids); BigDecimal countAll = new BigDecimal(0); for (CoursePackageOrderStudent payment : coursePackagePayments){ //课包名称 TCoursePackage tCoursePackage = coursePackageClient.queryById(payment.getCoursePackageId()); List ordes = courseStuddentClient.getOrder(payment.getId()); payment.setName(tCoursePackage.getName()); payment.setId(Long.valueOf(tCoursePackage.getId())); BigDecimal cashPayment = BigDecimal.ZERO; for (CoursePackageOrder order : ordes) { BigDecimal cashPayment1 = order.getCashPayment(); if (cashPayment1 != null) { cashPayment = cashPayment.add(cashPayment1); } } payment.setCashPayment(cashPayment); // BigDecimal cashPayment = payment.getCashPayment(); if (cashPayment==null){ cashPayment = BigDecimal.ZERO; } Integer totalClassHours = payment.getTotalClassHours(); BigDecimal result = new BigDecimal(0); if (totalClassHours!=0) { result = cashPayment.divide(BigDecimal.valueOf(totalClassHours), 2, RoundingMode.HALF_UP); } //单价 payment.setOnePrice(result); int has = payment.getTotalClassHours() - payment.getLaveClassHours(); //剩余课时 payment.setHasHours(has); BigDecimal onePrice = payment.getOnePrice(); Integer laveClassHours = payment.getLaveClassHours(); BigDecimal result1 = onePrice.multiply(BigDecimal.valueOf(laveClassHours)); //总价 payment.setRestPrice(result1); System.out.println("======="+result1); countAll = countAll.add(result1); } //中文总价 // String allprice = BigDecimalToChineseAmountUtil.convertToChineseAmount(countAll); String allprice = ChineseMoneyUtils.toChineseMoney(countAll); model.addAttribute("countAll", countAll); model.addAttribute("allprice", allprice); model.addAttribute("coursePackagePayments", coursePackagePayments); model.addAttribute("index",1); System.out.println("=====ids========"+ids); return PREFIX + "banckmoney.html"; } /** * 跳转到修改 */ @RequestMapping("/tStudent_update/{tStudentId}") public String tStudentUpdate(@PathVariable("tStudentId") Integer tStudentId, Model model) { System.out.println("======>t"+tStudentId); //查询学员信息 TStudentDto tStudentDto = itStudentService.listOne(tStudentId); model.addAttribute("item", tStudentDto); if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.getLateralSurface().equals("")) { String[] pics = tStudentDto.getLateralSurface().split(";"); if (pics.length>0) { model.addAttribute("pic1", pics[0]); System.out.println("=====pic1==" + pics[0]); if (pics.length > 1) { model.addAttribute("pic2", pics[1]); System.out.println("=====pic2==" + pics[1]); } if (pics.length > 2) { model.addAttribute("pic3", pics[2]); System.out.println("=====pic3==" + pics[2]); } } } //查询课时信息 StudentClassInfo studentClassInfo = courseStuddentClient.getInfo(tStudentId); model.addAttribute("studentClassInfo", studentClassInfo); //查询课程列表 List classListDtos = courseStuddentClient.listClass(tStudentId); model.addAttribute("classListDtos", classListDtos); return PREFIX + "tStudentEdit_first.html"; } @Autowired private IMenuService menuService; @Autowired private IRelationService relationService; @RequestMapping("/tStudent_info/{tStudentId}") public String tStudentInfo(@PathVariable("tStudentId") Integer tStudentId, Model model) { System.out.println("======>t"+tStudentId); //查询学员信息 TStudentDto tStudentDto = itStudentService.listOne(tStudentId); // 查询该学员第一次购买课包的时间 String time = coursePackagePaymentClient.getTime(tStudentId); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { if (time!=null){ Date parse = format.parse(time); tStudentDto.setTime(parse); } } catch (ParseException e) { e.printStackTrace(); } model.addAttribute("item", tStudentDto); if (tStudentDto.getLateralSurface()!=null&&!tStudentDto.equals("")) { // String[] pics = tStudentDto.getLateralSurface().split(";"); // model.addAttribute("pic1", pics[0]); // System.out.println("=====pic1==" + pics[0]); // if (pics.length > 1) { // model.addAttribute("pic2", pics[1]); // System.out.println("=====pic2==" + pics[1]); // } // if (pics.length > 2) { // model.addAttribute("pic3", pics[2]); // System.out.println("=====pic3==" + pics[2]); // } model.addAttribute("images",tStudentDto.getLateralSurface()); } //查询课时信息 StudentClassInfo studentClassInfo = courseStuddentClient.getInfo(tStudentId); model.addAttribute("studentClassInfo", studentClassInfo); System.out.println("=======controller====studentClassInfo==="+studentClassInfo); User user = UserExt.getUser(); List list = relationService.list(new QueryWrapper().eq("menuid", 391).eq("roleid", user.getRoleid())); if (!list.isEmpty()){ model.addAttribute("back",false); }else { model.addAttribute("back",true); } return PREFIX + "tStudentEdit.html"; } @Autowired private EvaluateStudentService evalstuService; @RequestMapping("/tStudent_commite/{tStudentId}") public String tStudent_commite(@PathVariable("tStudentId") Integer tStudentId, Model model) { model.addAttribute("id",tStudentId); return PREFIX + "tStudent_commite.html"; } // /** * 获取有效期 */ @RequestMapping("/getUseTime/{tStudentId}") @ResponseBody public ResultUtil getMax(@PathVariable("tStudentId") Integer tStudentId) { Date vali = studentClient.getById(tStudentId); // Date useTime = courseStuddentClient.getUseTime(tStudentId); Map map = new HashMap<>(); map.put("useTime",vali); return new ResultUtil<>(0,0,null,map,null); } @Autowired private ISiteBookingService siteBookingService; @Autowired private BallClient ballClient; /** * 获取列表 */ @RequestMapping("/list") @ResponseBody public List list(StudentSearch search) { List ids = new ArrayList<>(); if(UserExt.getUser().getObjectType()==3){ ids = appUserClient.getUserStore(UserExt.getUser().getObjectId()); if(ids.size()==0){ ids.add(-1); } search.setIds(ids); } if(UserExt.getUser().getObjectType()==2){ // 获取运营商下的所有门店id集合 List storeIds = storeService.list(new QueryWrapper() .eq("operatorId", UserExt.getUser().getObjectId())) .stream().map(TStore::getId).collect(Collectors.toList()); // 根据门店id集合查询 属于该运营商下的门店举办的赛事 ListQuery listQuery = new ListQuery(); listQuery.setIds(storeIds); // 通过门店ids 获取赛事的支付记录 获取到用户的ids List list = competitionClient.getUserIds(listQuery); // 获取场地预约记录 拿到用户ids List siteUsers = siteBookingService.list(new QueryWrapper().in("storeId", storeIds)) .stream().map(SiteBooking::getAppUserId).collect(Collectors.toList()); // 获取课程购买记录 拿到用户ids List cpUsers = coursePackageClient.getCoursePackageByStoreIds(storeIds); // 获取游戏记录 拿到用户ids List gameUsers = ballClient.getGameByStoreIds(storeIds); // 用户ids List users = new ArrayList<>(); users.addAll(list); users.addAll(siteUsers); users.addAll(cpUsers); users.addAll(gameUsers); // 去重后的用户id List collect = users.stream().distinct().collect(Collectors.toList()); ids = appUserClient.getUserYYs(UserExt.getUser().getObjectId()); ids.addAll(collect); List collect1 = ids.stream().distinct().collect(Collectors.toList()); if(ids.size()==0){ ids.add(-1); } search.setIds(collect1); } System.out.println("============学员查询接口========="); return itStudentService.listAll(search); } @Autowired private EvaluateStudentService evaluateStudentService; @Resource private StudentClient studentClient; /** * 获取列表 */ @RequestMapping("/listcom/{id}") @ResponseBody public List> listcom(@PathVariable("id") Integer id) { List> maps = studentClient.listCom(id); return maps; } @RequestMapping("/addcom/{id}") @ResponseBody public ResultUtil addcom(@PathVariable("id") Integer id,String content,String image) { EvaluateStudent evaluateStudent = new EvaluateStudent(); evaluateStudent.setStudentId(id); evaluateStudent.setContent(content); evaluateStudent.setImgs(image); // evaluateStudent.setInsertTime(new Date()); User user = UserExt.getUser(); evaluateStudent.setCoachId(user.getId()); appUserClient.save(evaluateStudent); // evaluateStudentService.save(evaluateStudent); return new ResultUtil<>(0,0,"保存成功",null,null); } @RequestMapping("/updatecom") @ResponseBody public ResultUtil updatecom(@RequestBody StudentPingYuDTO dto) { EvaluateStudent evaluateStudent = new EvaluateStudent(); evaluateStudent.setId(dto.getId()); evaluateStudent.setContent(dto.getContent()); evaluateStudent.setImgs(dto.getImages()); appUserClient.save(evaluateStudent); // evaluateStudentService.updateById(evaluateStudent); return new ResultUtil<>(0,0,"修改成功",null,null); } @RequestMapping("/comdel/{id}") @ResponseBody public ResultUtil comdel(@PathVariable("id") Integer id) { appUserClient.comdel(id); // evaluateStudentService.removeById(id); return new ResultUtil<>(0,0,"删除成功",null,null); } @RequestMapping("/frozen") @ResponseBody public ResultUtil forzen(Integer id,Integer state){ TStudent student = new TStudent(); student.setId(id); student.setState(state); studentClient.frozen(student); return ResultUtil.success(); } /** * 获取列表 */ @RequestMapping("/classList/{tStudentId}") @ResponseBody public ResultUtil listClass(@PathVariable("tStudentId") Integer tStudentId) { // 需要过滤体验课 List classListDtos = courseStuddentClient.listClass(tStudentId); for (ClassListDto classListDto : classListDtos) { if (classListDto.getClassType()==2){ classListDto.setTotalClassHours(null); classListDto.setHasClassHours(null); classListDto.setLaveClassHours(null); continue; } classListDto.setHasClassHours(classListDto.getTotalClassHours()-classListDto.getLaveClassHours()); } Map> map = new HashMap<>(); map.put("items",classListDtos); return new ResultUtil<>(0,0,null,map,null); } //保存退款记录 @RequestMapping("/ttt") @ResponseBody public ResultUtil list1(Integer id, String ids) { InsertBackDto insertBackDto= new InsertBackDto(); insertBackDto.setId(id); insertBackDto.setIds(ids); System.out.println("=====insertBackDto========"+insertBackDto); Integer i = courseStuddentClient.insertBack(insertBackDto); if (i == 1){ return ResultUtil.error("当前课程已在退费申请中"); } //取消排课 // courseStuddentClient.cancel(ids); // System.out.println("============学员查询接口========="); return ResultUtil.success(); } //同意退款 @RequestMapping("/changeStatus/{id}") @ResponseBody public ResultUtil changeStatus(@PathVariable Integer id) { // InsertBackDto insertBackDto= new InsertBackDto(); // insertBackDto.setId(id); //// insertBackDto.setIds(ids); // System.out.println("=====insertBackDto========"+insertBackDto); courseStuddentClient.changeStatus(id); courseStuddentClient.zeroClass(id); System.out.println("============学员查询接口========="); return new ResultUtil<>(0,0,"已同意",null,null); } @RequestMapping("/noStatus/{id}") @ResponseBody public ResultUtil noStatus(@PathVariable Integer id) { // InsertBackDto insertBackDto= new InsertBackDto(); // insertBackDto.setId(id); //// insertBackDto.setIds(ids); // System.out.println("=====insertBackDto========"+insertBackDto); courseStuddentClient.noStatus(id); courseStuddentClient.backStausClass(id); // courseStuddentClient.zeroClass(id); System.out.println("============学员查询接口========="); return new ResultUtil<>(0,0,"已拒绝",null,null); } /** * 学员修改 */ @RequestMapping(value = "/update") @ResponseBody public ResultUtil update(@RequestBody TStudent tStudent) { List strings = new ArrayList<>(); if (!tStudent.getImage1().isEmpty()){ strings.add(tStudent.getImage1()); } if (!tStudent.getImage2().isEmpty()){ strings.add(tStudent.getImage2()); } if (!tStudent.getImage3().isEmpty()){ strings.add(tStudent.getImage3()); } String result = String.join(";", strings); // // String lateralSurface = tStudent.getImage1()+";"+tStudent.getImage2()+";"+tStudent.getImage3(); // // System.out.println("=======lateralSurface======>?"+lateralSurface); tStudent.setLateralSurface(result); System.out.println("学员体测表的值"+result); itStudentService.update(tStudent); // appUserClient.updateStudent(tStudent); return new ResultUtil(0,0,"编辑成功"); } @Resource private AppUserClient appUserClient; /** * 学员详情修改有效期 */ @RequestMapping("/updateClassTime") @ResponseBody public ResultUtil updateClassTime(@RequestParam("date") String date, @RequestParam("id")Integer id, String passPic, String pleasePic ){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date1; try { date1 = dateFormat.parse(date); } catch (ParseException e) { // 处理日期转换异常 e.printStackTrace(); return ResultUtil.error("日期格式错误"); } updateTimeDto updateTimeDto =new updateTimeDto(date1,id); System.out.println("======updateTimeDto=====>"+updateTimeDto); // courseStuddentClient.updateUseDate(updateTimeDto); studentClient.update(updateTimeDto); CreateHistoryDto historyDto = new CreateHistoryDto(); historyDto.setPleasePic(pleasePic); historyDto.setPassPic(passPic); User user = UserExt.getUser(); historyDto.setCreateBy(user.getId()); historyDto.setStudentId(id); // appUserClient.createHistory(historyDto); historyClient.createHistory(historyDto); return new ResultUtil<>(0,0,"更改成功",null,null); } /** * 查询有效期记录 */ @RequestMapping(value = "/getHisory/{id}") @ResponseBody public ResultUtil getHisory(@PathVariable("id") Integer studentId) { List getHistoryDtos = historyClient.getHisory(studentId); Map> map = new HashMap<>(); map.put("items",getHistoryDtos); return new ResultUtil(0,0,"编辑成功",map,""); } /** * 查询有效期记录 */ @RequestMapping(value = "/getUserSlect/{id}") @ResponseBody public ResultUtil getUserSlect(@PathVariable("id") Long payId) { List selectDtos = courseStuddentClient.getSelect(payId); Map> map = new HashMap<>(); map.put("options",selectDtos); return new ResultUtil(0,0,"编辑成功",map,""); } /** * 学员转移课程 */ @RequestMapping(value = "/toClass") @ResponseBody public ResultUtil toClass( Long id,Integer toStudentId) { ToClassDto toClassDto = new ToClassDto(); toClassDto.setToStudentId(toStudentId); toClassDto.setId(id); courseStuddentClient.toClass(toClassDto); return new ResultUtil(0,0,"编辑成功",1,""); } /** * 赠送课时下拉框 */ @RequestMapping(value = "/giftSelect") @ResponseBody public ResultUtil giftSelect(GiftSearchDto giftSearchDto) { List selectDtos = appUserClient.giftSelect(giftSearchDto); // 只查询当前用户下 同时也报名了该课程的学员 // for (SelectDto selectDto : selectDtos) { // // 获取课包id // TCoursePackagePayment tCoursePackagePayment = coursePackagePaymentClient.queryCoursePackagePaymentById(giftSearchDto.getId()); // // Integer coursePackageId = tCoursePackagePayment.getCoursePackageId(); // // 学员id 拿到学员id 判断当前学员是否报名了这门课程 // Long id = selectDto.getId(); // // // } Map> map = new HashMap<>(); map.put("options",selectDtos); // Map> map = new HashMap<>(); // map.put("options",selectDtos); return new ResultUtil(0,0,"编辑成功",map,""); } //获取可报名假期课程下拉框 @RequestMapping(value = "/getholi/{id}") @ResponseBody public ResultUtil giftSelect(@PathVariable("id") Integer id) { List selectDtos = courseStuddentClient.getGiftSelect(id); Map> map = new HashMap<>(); map.put("options",selectDtos); return new ResultUtil(0,0,"编辑成功",map,""); } //获取可转换常规课程下拉框 @RequestMapping(value = "/gettrans/{id}") @ResponseBody public ResultUtil gettrans(@PathVariable("id") Integer id) { List selectDtos = courseStuddentClient.getTransSelect(id); Map> map = new HashMap<>(); map.put("options",selectDtos); return new ResultUtil(0,0,"编辑成功",map,""); } //消耗时长可报名假期课程 @RequestMapping(value = "/Toholi") @ResponseBody public ResultUtil Toholi(Integer id,String ids,Integer holiId,Integer classNum) { String[] stringArray = ids.split(","); ToHoliDto toHoliDto = new ToHoliDto(); toHoliDto.setId(id); toHoliDto.setIds(stringArray); toHoliDto.setClassNum(classNum); toHoliDto.setClassId(holiId); String resultUtil = courseStuddentClient.toHoli(toHoliDto); System.out.println("========ToHoliDto========="+resultUtil); if (resultUtil.equals("报名成功")){ return new ResultUtil<>(0,0,resultUtil); }else{ return new ResultUtil<>(0,1,resultUtil);} } @RequestMapping(value = "/ToTrans") @ResponseBody public ResultUtil Totans(Integer id,String ids,Integer holiId,Integer classNum) { String[] stringArray = ids.split(","); ToHoliDto toHoliDto = new ToHoliDto(); toHoliDto.setId(id); toHoliDto.setIds(stringArray); toHoliDto.setClassNum(classNum); toHoliDto.setClassId(holiId); String resultUtil = courseStuddentClient.toTrans(toHoliDto); System.out.println("========ToHoliDto========="+resultUtil); if (resultUtil.equals("换课成功")) { // return ResultUtil.success(resultUtil); return new ResultUtil<>(0,0,resultUtil); }else { return new ResultUtil<>(0,1,resultUtil);} } // if (resultUtil==""){ // }else{ //赠课 @RequestMapping(value = "/giftTo") @ResponseBody public ResultUtil toClagiftToss( Long id,Integer toStudentId) { ToClassDto toClassDto = new ToClassDto(); toClassDto.setToStudentId(toStudentId); toClassDto.setId(id); courseStuddentClient.toClass(toClassDto); // Map> map = new HashMap<>(); // map.put("options",selectDtos); return new ResultUtil(0,0,"编辑成功",1,""); } }