From 9486766c806fe1d9e082b2fd02ea1cc558f1b443 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 08 五月 2025 09:21:57 +0800 Subject: [PATCH] bug修改 --- cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java | 811 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 663 insertions(+), 148 deletions(-) diff --git a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java index e656163..4e0c28d 100644 --- a/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java +++ b/cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/system/BallController.java @@ -1,62 +1,72 @@ package com.dsh.guns.modular.system.controller.system; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.common.utils.Md5Utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.course.dto.JsDto; import com.dsh.course.dto.StudentQeryDto; +import com.dsh.course.feignClient.account.AppUserClient; 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.account.model.TAppUser; 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.TCoursePackage; -import com.dsh.course.feignClient.course.model.TCoursePackageType; import com.dsh.course.feignClient.other.BallClient; import com.dsh.course.feignClient.other.SiteClient; import com.dsh.course.feignClient.other.model.Site; import com.dsh.course.service.TGameConfigService; +import com.dsh.course.util.UUIDUtil; 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.controller.util.MD5; 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.HttpRequestUtil; -import com.dsh.guns.modular.system.util.ResultUtil; -import com.google.common.base.Ascii; -import com.google.gson.JsonObject; -import com.netflix.ribbon.proxy.annotation.Http; -import com.sun.org.apache.xerces.internal.impl.io.ASCIIReader; -import io.netty.util.AsciiString; -import io.rong.util.HttpUtil; -import io.swagger.models.auth.In; -import org.apache.commons.lang.StringEscapeUtils; -import org.apache.logging.log4j.util.Base64Util; +import com.dsh.guns.modular.system.util.*; +import com.dsh.course.entity.SiteLock; +import com.google.gson.Gson; +import com.google.zxing.BarcodeFormat; +import com.google.zxing.EncodeHintType; +import com.google.zxing.WriterException; +import com.google.zxing.client.j2se.MatrixToImageWriter; +import com.google.zxing.common.BitMatrix; +import com.google.zxing.qrcode.QRCodeWriter; +import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; +import org.apache.commons.fileupload.FileItem; +import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream; +import org.json.JSONArray; +import org.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpRequest; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.util.Base64Utils; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.OutputStream; +import javax.imageio.ImageIO; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; import java.math.BigDecimal; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.charset.StandardCharsets; + +import java.nio.file.FileSystems; +import java.nio.file.Path; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.stream.Collectors; @Controller @RequestMapping("/ball") @@ -93,10 +103,11 @@ @Resource private CoursePackageClient coursePackageClient; + @Autowired + private AppUserClient appUserClient; @RequestMapping("/tolist") public String tolist(Model model) { - List<TCity> list = cityService.list(new LambdaQueryWrapper<TCity>().eq(TCity::getParentId, 0)); model.addAttribute("list",list); String roleid = UserExt.getUser().getRoleid(); @@ -172,6 +183,27 @@ return new ResultUtil<>(0,0,"到店成功",null,null); } + @RequestMapping("/confirm/{id}") + @ResponseBody + public ResultUtil confirm(@PathVariable("id") Integer id) { + + SiteBooking byId = iSiteBookingService.getById(id); + String money = byId.getMoney(); + String[] split = money.split(","); + Double aDouble = Double.valueOf(split[0]); + System.out.println("============"+id); + SiteBooking siteBooking = new SiteBooking(); + siteBooking.setPayMoney(aDouble); + siteBooking.setId(id); + siteBooking.setStatus(1); + siteBooking.setPayType(4); + siteBooking.setPayUserId(UserExt.getUser().getId()); + iSiteBookingService.updateById(siteBooking); + + return new ResultUtil<>(0,0,"手动支付成功",null,null); + } + + /** * 获取变更列表 */ @@ -181,7 +213,7 @@ @RequestMapping("/list") @ResponseBody public List<Game> changelist(BallQueryDto ballQueryDto) { -System.out.println("=======ballQueryDto=========="+ballQueryDto); + System.out.println("=======ballQueryDto=========="+ballQueryDto); User user = UserExt.getUser(); ballQueryDto.setType(user.getObjectType()); ballQueryDto.setId(user.getObjectId()); @@ -199,7 +231,26 @@ return ResultUtil.success(); } + public static MultipartFile convert(BufferedImage bufferedImage, String fileName) throws IOException { + // 将 BufferedImage 转换为字节数组 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageIO.write(bufferedImage, "png", baos); + byte[] bytes = baos.toByteArray(); + // 创建 ByteArrayResource + ByteArrayResource resource = new ByteArrayResource(bytes); + + // 创建 MockMultipartFile + MockMultipartFile multipartFile = new MockMultipartFile( + "file", + fileName, + "image/png", + resource.getInputStream() + ); + + return multipartFile; + } + @RequestMapping("/save") @ResponseBody public ResultUtil save(Integer id, String operationId, String red, String blue, String province, String city, Integer site, Integer store @@ -213,13 +264,15 @@ , String zs, BigDecimal zsCoin, BigDecimal zsCash, String zsImage, BigDecimal zsInt, Integer zsId,Integer zsIId , String zs2, BigDecimal zs2Coin, BigDecimal zs2Cash, String zs2Image, BigDecimal zs2Int, Integer zs2Id,Integer zs2IId , String ly, BigDecimal lyCoin, BigDecimal lyCash, String lyImage, BigDecimal lyInt, Integer lyId,Integer lyIId + , String v3, BigDecimal v3Coin, BigDecimal v3Cash, String v3Image, BigDecimal v3Int, Integer v3Id,Integer v3IId + ,String sutuName - ) { + ) throws Exception { Game game = new Game(); - game.setRed(red); + game.setRedName(red); game.setState(0); - game.setBlue(blue); + game.setBlueName(blue); Integer objectType = UserExt.getUser().getObjectType(); @@ -243,20 +296,121 @@ game.setId(id); + if (!operationId.equals("平台")){ game.setOperationId(Integer.valueOf(operationId));} else { game.setOperationId(0); } System.out.println("============"+game); + + // 判断是新增还是修改 修改不会重新生成sutuId + if (game.getId()==null) { + HashMap<String, String> map5 = new HashMap<>(); + map5.put("space_id", store + ""); + map5.put("area_id", site + ""); + String s5 = HttpRequestUtil.getRequest("https://port.daowepark.com/v7/user_api/general/get_space_sutu", map5); + System.err.println(s5); + JSONObject jsonObject5 = new JSONObject(s5); + JSONArray data = jsonObject5.getJSONArray("data"); + Integer temp = null; // 临时sutuid + Integer temp1 = null; // 临时sutuid + TSite si = siteService.getById(site); + if (data.length() == 0) { + // 这个场地没有添加过sutu + HashMap<String, String> map3 = new HashMap<>(); + HashMap<String, String> map4 = new HashMap<>(); + // 添加sutu编号 + // 调用两次 创建sutu + map3.put("sign", "0DB011836143EEE2C2E072967C9F4E4B"); + map4.put("sign", "0DB011836143EEE2C2E072967C9F4E4B"); + map3.put("space_id", store + ""); + map3.put("area_id", si.getId() + ""); + map4.put("space_id", store + ""); + map4.put("area_id", si.getId() + ""); + map3.put("name", blue); + map4.put("name", red); + map3.put("city_code", city); + map4.put("city_code", city); + String s3 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addSpaceSutu", map3); + String s4 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addSpaceSutu", map4); + JSONObject jsonObject = new JSONObject(s3); + JSONObject jsonObject1 = new JSONObject(s4); + // 获取 data 字段的值 + JSONObject dataObject = jsonObject.getJSONObject("data"); + JSONObject dataObject1 = jsonObject1.getJSONObject("data"); + // 获取 sutu_id 字段的值 + String sutuIdValue = dataObject.getString("sutu_id"); + String sutuIdValue1 = dataObject1.getString("sutu_id"); + Integer sutuId = Integer.valueOf(sutuIdValue); + Integer sutuId1 = Integer.valueOf(sutuIdValue1); + game.setBlue("" + sutuId); + game.setRed("" + sutuId1); + // 生成红蓝sutu二维码 + HashMap<String, String> blueCode = new HashMap<>(); + blueCode.put("scan_type", "1000"); + blueCode.put("sutu_id", "" + sutuId); + blueCode.put("space_id", si.getId() + ""); + HashMap<String, String> redCode = new HashMap<>(); + redCode.put("scan_type", "1000"); + redCode.put("sutu_id", sutuId1 + ""); + redCode.put("space_id", si.getId() + ""); + String blueS = "{\"scan_type\": 1000, \"space_id\": " + si.getId() + ", \"sutu_id\": " + sutuId + "}"; + String redS = "{\"scan_type\": 1000, \"space_id\": " + si.getId() + ", \"sutu_id\": " + sutuId1 + "}"; + MyQrCodeUtil.createCodeToFile(blueS); + MyQrCodeUtil.createCodeToFile(redS); + BufferedImage blueImage = QRCodeUtil.createImage(blueS); + BufferedImage redImage = QRCodeUtil.createImage(redS); + MultipartFile blueFile = convert(blueImage, new Date().getTime() + UUIDUtil.getRandomCode(3) + ".PNG"); + MultipartFile redFile = convert(redImage, new Date().getTime() + UUIDUtil.getRandomCode(3) + ".PNG"); + String s = OssUploadUtil.ossUpload("img/", blueFile); + String s1 = OssUploadUtil.ossUpload("img/", redFile); + game.setBlueCode(s); + game.setRedCode(s1); + } else { + Integer sutuid = 0; + Integer sutuid1 = 0; + JSONObject element = data.getJSONObject(0); + if (site == 27) { + sutuid = 1036; + sutuid1 = 1037; + game.setBlue(sutuid.toString()); + game.setRed(sutuid1.toString()); + } else { + sutuid = element.getInt("id"); + game.setBlue(sutuid.toString()); + JSONObject element1 = data.getJSONObject(1); + sutuid1 = element1.getInt("id"); + game.setRed(sutuid1.toString()); + } + // 生成红蓝sutu二维码 + HashMap<String, String> blueCode = new HashMap<>(); + blueCode.put("scan_type", "1000"); + blueCode.put("sutu_id", "" + sutuid); + blueCode.put("space_id", si.getId() + ""); + HashMap<String, String> redCode = new HashMap<>(); + redCode.put("scan_type", "1000"); + redCode.put("sutu_id", sutuid1 + ""); + redCode.put("space_id", si.getId() + ""); + String blueS = "{\"scan_type\": 1000, \"space_id\": " + si.getId() + ", \"sutu_id\": " + sutuid + "}"; + String redS = "{\"scan_type\": 1000, \"space_id\": " + si.getId() + ", \"sutu_id\": " + sutuid1 + "}"; + MyQrCodeUtil.createCodeToFile(blueS); + MyQrCodeUtil.createCodeToFile(redS); + BufferedImage blueImage = QRCodeUtil.createImage(blueS); + BufferedImage redImage = QRCodeUtil.createImage(redS); + MultipartFile blueFile = convert(blueImage, new Date().getTime() + UUIDUtil.getRandomCode(3) + ".PNG"); + MultipartFile redFile = convert(redImage, new Date().getTime() + UUIDUtil.getRandomCode(3) + ".PNG"); + String s = OssUploadUtil.ossUpload("img/", blueFile); + String s1 = OssUploadUtil.ossUpload("img/", redFile); + game.setBlueCode(s); + game.setRedCode(s1); + } + + } + Integer gameId = ballClient.save(game); - -List<TGameConfig> gameConfigList = new ArrayList<>(); - - - -//玩湃跨城赛 - + List<TGameConfig> gameConfigList = new ArrayList<>(); + //玩湃跨城赛 TGameConfig gameConfigkuacheng = new TGameConfig(); gameConfigkuacheng.setId(kcId); gameConfigkuacheng.setGameId(kuachengId); @@ -268,10 +422,8 @@ gameConfigkuacheng.setOtherId(gameId); System.out.println("========gameConfig======"+gameConfigkuacheng); gameConfigList.add(gameConfigkuacheng); -System.out.println("======gameConfigList======="+gameConfigList); - + System.out.println("======gameConfigList======="+gameConfigList); //社区冠军赛 - TGameConfig gameConfigshequ = new TGameConfig(); gameConfigshequ.setId(shequIId); gameConfigshequ.setGameId(shequId); @@ -382,14 +534,43 @@ gameConfigly.setIntegral(lyInt); gameConfigly.setOtherId(gameId); gameConfigList.add(gameConfigly); + + //激战3V3 + TGameConfig gameConfigv3 = new TGameConfig(); + gameConfigv3.setGameId(v3Id); + gameConfigv3.setId(v3IId); + gameConfigv3.setCash(v3Cash); + gameConfigv3.setImg(v3Image); + gameConfigv3.setName(v3); + gameConfigv3.setPlayCoin(v3Coin); + gameConfigv3.setIntegral(v3Int); + gameConfigv3.setOtherId(gameId); + gameConfigList.add(gameConfigv3); + HashMap<String, String> map1 = new HashMap<>(); + HashMap<String, String> map2 = new HashMap<>(); + + +// map1.put("sign", "0DB011836143EEE2C2E072967C9F4E4B"); +// map1.put("space_id", si.getId() + ""); +// map1.put("device_id", red); +// map1.put("region_id", st.getId() + ""); +// // 添加门禁 +// String s1 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addDevice", map1); +// map2.put("sign", "0DB011836143EEE2C2E072967C9F4E4B"); +// map2.put("space_id", si.getId() + ""); +// map2.put("device_id", blue); +// map2.put("region_id", st.getId() + ""); +// // 添加门禁 +// String s2 = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/addDevice", map2); -System.out.println("---------------------------"+gameConfigList); ballClient.saveConfig( gameConfigList); return null; } + + @RequestMapping("/pre_add") public String add(Model model) { @@ -429,11 +610,9 @@ private TGameConfigService gameConfigService; @RequestMapping("/pre_edit/{id}") public String pre_edit(@PathVariable("id") Integer id,Model model) { - Game game = ballClient.queryGame(id); - System.out.println("---------game------"+game); + System.out.println("---------game------"+game); model.addAttribute("game",game); - if (game.getOperationId() ==0){ model.addAttribute("opId","平台"); model.addAttribute("is","平台"); @@ -472,6 +651,9 @@ TGameConfig ly = gameConfigService.getOne(new QueryWrapper<TGameConfig>().eq("otherId", id).eq("gameId", 5)); model.addAttribute("ly",ly); + + TGameConfig v3 = gameConfigService.getOne(new QueryWrapper<TGameConfig>().eq("otherId", id).eq("gameId", 0)); + model.addAttribute("v3",v3); Integer objectType = UserExt.getUser().getObjectType(); @@ -541,7 +723,9 @@ TGameConfig ly = gameConfigService.getOne(new QueryWrapper<TGameConfig>().eq("otherId", id).eq("gameId", 5)); model.addAttribute("ly",ly); - + + TGameConfig v3 = gameConfigService.getOne(new QueryWrapper<TGameConfig>().eq("otherId", id).eq("gameId", 0)); + model.addAttribute("v3",v3); return PREFIX+"ball_pre_info.html"; @@ -599,7 +783,12 @@ System.out.println("是否超过当前日期"+isAfterCurrentDate); String currentTime = appointmentStartTime; while (currentTime.compareTo(appointmentEndTime) < 0) { - String nextTime = getNextTime(currentTime); + String nextTime = null; + if("智慧场地".equals(site.getTypeName())){ + nextTime=getNextTimeOne(currentTime); + }else { + nextTime= getNextTime(currentTime); + } String timeRange = currentTime + "-" + nextTime; @@ -644,10 +833,7 @@ Integer objectId = UserExt.getUser().getObjectId(); String cityCode = null; - if(objectType == 2){//城市管理员 - CityManager cityManager = cityManagerClient.queryCityManagerById(objectId); - cityCode = cityManager.getCityCode(); - } + List<Map<String, Object>> list = storeService.queryProvince(cityCode); model.addAttribute("province", list); Object code = list.get(0).get("code"); @@ -655,11 +841,24 @@ model.addAttribute("city", list1); String code1 = list1.get(0).get("code").toString(); List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1)); + if(UserExt.getUser().getObjectType()==3){ + list2=storeService.list(new QueryWrapper<TStore>().eq("id", UserExt.getUser().getObjectId()).eq("state", 1)); + } model.addAttribute("store", list2); TStore store = list2.get(0); List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1)); model.addAttribute("site", list3); - + model.addAttribute("objType", UserExt.getUser().getObjectType()); + // 查询运营商下所有门店 所有场地 + if (objectType == 2){ + List<TStore> stores = storeService.list(new QueryWrapper<TStore>().eq("operatorId", objectId)); + model.addAttribute("store", stores); + // 门店ids + List<Integer> storeIds = stores.stream().map(TStore::getId).collect(Collectors.toList()); + List<TSite> sites = siteService.list(new QueryWrapper<TSite>().in("storeId", storeIds)); + model.addAttribute("site", sites); + } + model.addAttribute("objectType", objectType); return PREFIX+"yuyue_edit.html"; } @@ -669,6 +868,7 @@ @Autowired private IUserService userService; + @RequestMapping("/yueyue_info/{id}") public String yueyue_info(@PathVariable("id") Integer id,Model model) { @@ -693,7 +893,26 @@ String convertedValue = s.substring(11); strings1.add(convertedValue); } - + switch (book.getStatus()){ + case 0: + model.addAttribute("state","待支付"); + break; + case 1: + model.addAttribute("state","待核销"); + break; + case 2: + model.addAttribute("state","已到店"); + break; + case 3: + model.addAttribute("state","已完成"); + break; + case 4: + model.addAttribute("state","已过期"); + break; + case 5: + model.addAttribute("state","已取消"); + break; + } System.out.println("========strings1====="+strings1); //时间段 @@ -715,8 +934,7 @@ List<OrderDto> timeRanges = new ArrayList<>(); - - Site site = siteClient.listById(book.getSiteId()); + TSite site = siteService.getById(book.getSiteId()); System.out.println("================"+site); String appointmentStartTime = site.getAppointmentStartTime(); String appointmentEndTime = site.getAppointmentEndTime(); @@ -763,35 +981,13 @@ } System.out.println("-------------"+timeRanges); model.addAttribute("timeRanges",timeRanges); - System.out.println("======timeRanges========"+timeRanges); - - - - - - Integer objectType = UserExt.getUser().getObjectType(); - Integer objectId = UserExt.getUser().getObjectId(); - - String cityCode = null; - if(objectType == 2){//城市管理员 - CityManager cityManager = cityManagerClient.queryCityManagerById(objectId); - cityCode = cityManager.getCityCode(); - } - List<Map<String, Object>> list = storeService.queryProvince(cityCode); - model.addAttribute("province", list); - Object code = list.get(0).get("code"); - List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode); - model.addAttribute("city", list1); - String code1 = list1.get(0).get("code").toString(); - List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1)); - model.addAttribute("store", list2); - TStore store = list2.get(0); - List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1)); - model.addAttribute("site", list3); - - + model.addAttribute("province", book.getProvince()); + model.addAttribute("city", book.getCity()); + model.addAttribute("store",storeService.getById(book.getStoreId()).getName()); + model.addAttribute("siteName",siteService.getById(book.getSiteId()).getName()); + model.addAttribute("objectType", objectType); return PREFIX+"yuyue_info.html"; } @@ -811,20 +1007,50 @@ @RequestMapping("/getStudentTotal") @ResponseBody public List<Map<String, Object>>getStudentTotal(@RequestBody StudentQeryDto studentQeryDto) { -System.out.println("========ballQueryDto======"+studentQeryDto); if (studentQeryDto.getTimes()!=null&& studentQeryDto.getTimes()!=""){ String[] split = studentQeryDto.getTimes().split(","); studentQeryDto.setStart(split[0]); studentQeryDto.setEnd(split[1]); } + // 如果当前登陆人是运营商 只查询该运营商下的课包的数据 + if(UserExt.getUser().getObjectType() == 2){ + // 先查询这个运营商下的所有门店ids + List<Integer> storeIds = storeService.list(new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId())) + .stream().map(TStore::getId).collect(Collectors.toList()); + // 根据门店ids 查询所有课包ids + List<TCoursePackage> tCoursePackages = new ArrayList<>(); + for (Integer storeId : storeIds) { + List<TCoursePackage> coursePackageByStoreId = coursePackageClient.getCoursePackageByStoreId(storeId); + tCoursePackages.addAll(coursePackageByStoreId); + } + List<Integer> coursePackageByStoreIds = tCoursePackages.stream().distinct().map(TCoursePackage::getId).collect(Collectors.toList()); + if (tCoursePackages.isEmpty()){ + coursePackageByStoreIds.add(-1); + } + studentQeryDto.setCoursePackageIds(coursePackageByStoreIds); + } + // 如果当前登陆人是门店 只查询该门店下的课包的数据 + if(UserExt.getUser().getObjectType() == 3){ + // 先查询这个运营商下的所有门店ids + List<Integer> storeIds = new ArrayList<>(); + storeIds.add(UserExt.getUser().getObjectId()); + // 根据门店ids 查询所有课包ids + List<TCoursePackage> tCoursePackages = new ArrayList<>(); + for (Integer storeId : storeIds) { + List<TCoursePackage> coursePackageByStoreId = coursePackageClient.getCoursePackageByStoreId(storeId); + tCoursePackages.addAll(coursePackageByStoreId); + } + List<Integer> coursePackageByStoreIds = tCoursePackages.stream().distinct().map(TCoursePackage::getId).collect(Collectors.toList()); + if (tCoursePackages.isEmpty()){ + coursePackageByStoreIds.add(-1); + } + studentQeryDto.setCoursePackageIds(coursePackageByStoreIds); + } List<Map<String, Object>> pays = coursePackageClient.getStudentTotal(studentQeryDto); - - System.out.println("=========getStudentTotal======="+pays); - return pays; } @@ -833,20 +1059,37 @@ @RequestMapping("/bypac") @ResponseBody public List<Map<String, Object>>bypac(@RequestBody PacQueryDto pacQueryDto) { - System.out.println("========ballQueryDto======"+pacQueryDto); if (pacQueryDto.getTimes()!=null&& pacQueryDto.getTimes()!=""){ String[] split = pacQueryDto.getTimes().split(","); pacQueryDto.setStart(split[0]); pacQueryDto.setEnd(split[1]); } - - - - + if (UserExt.getUser().getObjectType() == 2){ + QueryWrapper<TStore> queryWrapper = new QueryWrapper<TStore>().eq("operatorId", UserExt.getUser().getObjectId()).eq("state", 1); + if(ToolUtil.isNotEmpty(pacQueryDto.getCityCode())){ + queryWrapper.eq("cityCode", pacQueryDto.getCityCode()); + } + if(ToolUtil.isNotEmpty(pacQueryDto.getName())){ + queryWrapper.like("name", pacQueryDto.getName()); + } + List<Integer> storeIds = storeService.list(queryWrapper) + .stream().map(TStore::getId).collect(Collectors.toList()); + storeIds.add(-1); + pacQueryDto.setStoreIds(storeIds); + }else{ + QueryWrapper<TStore> queryWrapper = new QueryWrapper<TStore>().eq("state", 1); + if(ToolUtil.isNotEmpty(pacQueryDto.getCityCode())){ + queryWrapper.eq("cityCode", pacQueryDto.getCityCode()); + } + if(ToolUtil.isNotEmpty(pacQueryDto.getName())){ + queryWrapper.like("name", pacQueryDto.getName()); + } + List<Integer> storeIds = storeService.list(queryWrapper) + .stream().map(TStore::getId).collect(Collectors.toList()); + storeIds.add(-1); + pacQueryDto.setStoreIds(storeIds); + } List<Map<String, Object>> pays = coursePackageClient.bypac(pacQueryDto); - - System.out.println("=========getStudentTotal======="+pays); - return pays; } @@ -880,9 +1123,54 @@ @RequestMapping("/yuyuelist") @ResponseBody public List<Map<String,Object>> yuyuelist(BookingQuery bookingQuery) { + Integer objectType = UserExt.getUser().getObjectType(); + + if(objectType==2){ + List<Integer> operatorId = storeService.list(new QueryWrapper<TStore>() + .eq("operatorId", UserExt.getUser().getObjectId())) + .stream().map(TStore::getId).collect(Collectors.toList()); + bookingQuery.setStoreIds(operatorId); + } + if(objectType==3){ + bookingQuery.setStoreId(UserExt.getUser().getObjectId()); + } List<Map<String,Object>> orders = ballClient.listorder(bookingQuery); System.out.println("=======ballQueryDto=========="+bookingQuery); + for (Map<String, Object> vo : orders) { + + if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 1){ + vo.put("payType","微信"); + }else if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 2){ + vo.put("payType","支付宝"); + }else if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 3){ + vo.put("payType","玩湃币"); + }else if (vo.get("payType")!=null && Integer.parseInt(vo.get("payType").toString()) == 4){ + if (vo.get("payUserId")!=null){ + User payUserId = userService.getById(Integer.parseInt(vo.get("payUserId").toString())); + if(payUserId!=null){ + vo.put("payType","手动支付"+"-"+payUserId.getName()); + } + } + } + +// if (Integer.parseInt(vo.get("status").toString())==1 ){ +// String dateTimeStr = vo.get("times").toString(); +// String formattedDateTimeStr = dateTimeStr.substring(0, 11) + dateTimeStr.substring(17); +// +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// try { +// Date date = sdf.parse(formattedDateTimeStr); +// if (new Date().after(date)){ +// vo.put("status",4); +// } +// +// System.out.println(date); +// } catch (ParseException e) { +// e.printStackTrace(); +// } +// } + } return orders; } @@ -912,7 +1200,7 @@ System.out.println("=====stie====="+site); System.out.println("=====type====="+type); - if (type == 0 ){ + if (type == 1 ){ doubles.add(site.getCashPrice()); doubles.add(Double.valueOf(site.getPlayPaiCoin())); return doubles; @@ -927,39 +1215,133 @@ private SiteClient siteClient; + + @Autowired + private ISiteLockService siteLockService; + + @RequestMapping("/yuyuetimes/{id}") @ResponseBody - public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date) { - System.out.println("=======date======"+date); + public List<OrderDto> yuyuetimes(@PathVariable("id") Integer id,String date,String siteName,String halfName) throws ParseException { +// System.out.println("=======date======"+date); +// +// List<String> strings = new ArrayList<>(); +// +//// List<SiteBooking> siteBookings = siteClient.listBooks(id); +// List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>() +// .eq("siteId", id).like("times",date)); +//System.out.println("=======siteBookings======"+siteBookings); +// for (SiteBooking siteBooking : siteBookings) { +// String[] split = siteBooking.getTimes().split(";"); +// for (String s : split) { +// +// String convertedValue = s.substring(11); +// strings.add(convertedValue); +// } +// +// } +// System.out.println("======strings======="+strings); +// +// List<OrderDto> timeRanges = new ArrayList<>(); +// +// Site site = siteClient.listById(id); +//System.out.println("================"+site); +// String appointmentStartTime = site.getAppointmentStartTime(); +// String appointmentEndTime = site.getAppointmentEndTime(); +// +// String currentTime = appointmentStartTime; +// while (currentTime.compareTo(appointmentEndTime) < 0){ +// String nextTime = null; +// if("智慧场地".equals(site.getTypeName())){ +// nextTime=getNextTimeOne(currentTime); +// }else { +// nextTime= getNextTime(currentTime); +// } +// +// String timeRange = currentTime + "-" + nextTime; +// OrderDto orderDto = new OrderDto(); +// orderDto.setTime(timeRange); +// +// LocalTime currentTime1 = LocalTime.now(); +// LocalTime targetTime = LocalTime.parse(currentTime); +// +// boolean hasExceeded = currentTime1.isAfter(targetTime); +// if (hasExceeded){ +// orderDto.setState(0); +// } +// if (strings.contains(timeRange)){ +// orderDto.setState(0); +// } +// +// +// timeRanges.add(orderDto); +// currentTime = nextTime; +// } +// System.out.println("-------------"+timeRanges); +// +// return timeRanges; + + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + Date now = new Date(); + + System.out.println("=======date======" + date); List<String> strings = new ArrayList<>(); -// List<SiteBooking> siteBookings = siteClient.listBooks(id); - List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).like("times",date)); -System.out.println("=======siteBookings======"+siteBookings); - for (SiteBooking siteBooking : siteBookings) { - String[] split = siteBooking.getTimes().split(";"); - for (String s : split) { + List<SiteBooking> siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).eq("nextName", siteName).like("times", date)); - String convertedValue = s.substring(11); - strings.add(convertedValue); - } - + if (siteName == null || siteName.equals("")) { + siteBookings = iSiteBookingService.list(new QueryWrapper<SiteBooking>().eq("siteId", id).ne("status", 5).like("times", date)); } - System.out.println("======strings======="+strings); + + + System.out.println("=======siteBookings======" + siteBookings); + for (SiteBooking siteBooking : siteBookings) { + + + String[] split = siteBooking.getTimes().split(";"); + + if (siteBooking.getIsHalf() == 2) { + for (String s : split) { + String convertedValue = s.substring(11); + strings.add(convertedValue); + } + } else { + if (halfName == null) { + for (String s : split) { + String convertedValue = s.substring(11); + strings.add(convertedValue); + } + } + + if (siteBooking.getHalfName().equals(halfName)) { + for (String s : split) { + String convertedValue = s.substring(11); + strings.add(convertedValue); + } + + } + } + } + System.out.println("======strings=======" + strings); List<OrderDto> timeRanges = new ArrayList<>(); - Site site = siteClient.listById(id); -System.out.println("================"+site); + TSite site = siteService.getById(id); + System.out.println("================" + site); String appointmentStartTime = site.getAppointmentStartTime(); String appointmentEndTime = site.getAppointmentEndTime(); String currentTime = appointmentStartTime; while (currentTime.compareTo(appointmentEndTime) < 0) { - String nextTime = getNextTime(currentTime); + String nextTime = null; + if ("智慧场地".equals(site.getTypeName())) { + nextTime = getNextTimeOne(currentTime); + } else { + nextTime = getNextTime(currentTime); + } String timeRange = currentTime + "-" + nextTime; @@ -970,20 +1352,52 @@ LocalTime targetTime = LocalTime.parse(currentTime); boolean hasExceeded = currentTime1.isAfter(targetTime); - if (hasExceeded){ - orderDto.setState(0); - } - if (strings.contains(timeRange)){ - orderDto.setState(0); - } +// if (hasExceeded){ +// orderDto.setSelectable(0); +// } + if (strings.contains(timeRange)) { + + orderDto.setState(0); + } else { + + String stime = date + " " + currentTime; + String etime = date + " " + nextTime; + Date isPass = format.parse(etime); + + + + orderDto.setState(1); + // 查出lock + List<SiteLock> list = siteLockService.list(new LambdaQueryWrapper<SiteLock>().eq(SiteLock::getSiteId, id)); + for (SiteLock siteLock : list) { + boolean stringDateBetween = DateComparisonExample.isStringDateBetween(stime + " - " + etime, siteLock.getStartTime(), siteLock.getEndTime()); + if (stringDateBetween) { + orderDto.setState(0); + } + if (DateComparisonExample.isStringWithinTimeRange(stime, siteLock.getStartTime(), siteLock.getEndTime())) { + orderDto.setState(0); + } + if (DateComparisonExample.isStringWithinTimeRange(etime, siteLock.getStartTime(), siteLock.getEndTime())) { + orderDto.setState(0); + } + + } + if (isPass.before(now)){ + orderDto.setState(0); + } + + } timeRanges.add(orderDto); currentTime = nextTime; } - System.out.println("-------------"+timeRanges); + System.out.println("-------------" + timeRanges); return timeRanges; + + + } @@ -1001,26 +1415,30 @@ return String.format("%02d:%02d", hour, minute); -// String[] parts = currentTime.split(":"); -// int hour = Integer.parseInt(parts[0]); -// int minute = Integer.parseInt(parts[1]); -// -// if (minute == 45) { -// hour++; -// minute = 0; -// } else if (minute == 0){ -// minute = 15; -// }else if (minute == 15){ -// minute = 30; -// }else if (minute == 30){ -// minute = 45; -// } -// -// return String.format("%02d:%02d", hour, minute); - } + + public static String getNextTimeOne(String currentTime) { + + String[] parts = currentTime.split(":"); + int hour = Integer.parseInt(parts[0]); + int minute = Integer.parseInt(parts[1]); + + if (minute == 45) { + hour++; + minute = 0; + } else if (minute == 0){ + minute = 15; + }else if (minute == 15){ + minute = 30; + }else if (minute == 30){ + minute = 45; + } + + return String.format("%02d:%02d", hour, minute); + + } @RequestMapping("/halfName/{id}") @@ -1033,27 +1451,59 @@ return split; } + @RequestMapping("/nextName/{id}") + @ResponseBody + public String[] nextName(@PathVariable("id") Integer id) { + TSite byId = siteService.getById(id); + String[] split = byId.getNextName().split(","); + System.out.println("=-============"+split); + + return split; + } + + @RequestMapping("/yuyue_add") public String yuyueadd(Model model) { Integer objectType = UserExt.getUser().getObjectType(); Integer objectId = UserExt.getUser().getObjectId(); - String cityCode = null; if(objectType == 2){//城市管理员 - CityManager cityManager = cityManagerClient.queryCityManagerById(objectId); - cityCode = cityManager.getCityCode(); + // 获取到这个运营商下面的所有门店 + List<TStore> operatorId = storeService.list(new QueryWrapper<TStore>().eq("operatorId",objectId)); + model.addAttribute("store", operatorId); + List<Coach> coach = coachClient.queryCoachByOperatorId(objectId); + model.addAttribute("coach", coach); + // 如果该运营商下面没有门店 + if (operatorId.size()==0){ + List<TStore> o = new ArrayList<>(); + List<TSite> tSites = new ArrayList<>(); + model.addAttribute("store", o); + model.addAttribute("site", tSites); + }else{ + List<TSite> storeId = siteService.list(new QueryWrapper<TSite>() + .eq("storeId", operatorId.get(0).getId())); + model.addAttribute("site", storeId); + } + }else { + List<Map<String, Object>> list = storeService.queryProvince(cityCode); + model.addAttribute("province", list); + Object code = list.get(0).get("code"); + List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode); + model.addAttribute("city", list1); + String code1 = list1.get(0).get("code").toString(); + List<TStore> list2 =new ArrayList<>(); + if(objectType==3){ + list2 = storeService.list(new QueryWrapper<TStore>().eq("id", objectId).eq("state", 1)); + }else { + list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1)); + } + model.addAttribute("store", list2); + + TStore store = list2.get(0); + List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1)); + model.addAttribute("site", list3); } - List<Map<String, Object>> list = storeService.queryProvince(cityCode); - model.addAttribute("province", list); - Object code = list.get(0).get("code"); - List<Map<String, Object>> list1 = storeService.queryCity(code.toString(), cityCode); - model.addAttribute("city", list1); - String code1 = list1.get(0).get("code").toString(); - List<TStore> list2 = storeService.list(new QueryWrapper<TStore>().eq("cityCode", code1).eq("state", 1)); - model.addAttribute("store", list2); - TStore store = list2.get(0); - List<TSite> list3 = siteService.list(new QueryWrapper<TSite>().eq("storeId", store.getId()).eq("state", 1)); - model.addAttribute("site", list3); + model.addAttribute("objectType",objectType); return PREFIX+"yuyue_add.html"; } @@ -1065,10 +1515,75 @@ siteBooking.setInsertTime(new Date()); siteBooking.setState(1); siteBooking.setStatus(0); + siteBooking.setAddType(1); + + //存开始和结束时间 + String times = siteBooking.getTimes(); + String[] dates = times.split(";"); - siteClient.addSiteBooking(siteBooking); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + try { + String start = dates[0]; + String startDateStr = start.substring(0, start.lastIndexOf("-")); + Date startDate = format.parse(startDateStr); + + String end = dates[dates.length - 1]; + String[] str = end.split(" "); + String endDateStr = str[0] + " " + str[1].substring(str[1].indexOf("-") + 1); + Date endDate = format.parse(endDateStr); + siteBooking.setStartTime(startDate); + siteBooking.setEndTime(endDate); + } catch (Exception e) { + e.printStackTrace(); + } + siteBooking.setPayType(2); + //存多少钱 + String money = siteBooking.getMoney(); + String[] moneys = money.split(","); + siteBooking.setPayMoney(Double.valueOf(moneys[0])); + // 查询当前预约人是否是会员 + String phone = siteBooking.getPhone(); + String booker = siteBooking.getBooker(); + TAppUser appUserByPhone = appUserClient.getAppUserByPhone(phone); + TStore byId1 = storeService.getById(siteBooking.getStoreId()); + if (appUserByPhone== null){ + // 则当前预约人不是会员 添加到会员表里 + TAppUser tAppUser = new TAppUser(); + tAppUser.setName(booker); + tAppUser.setPhone(phone); + tAppUser.setProvince(byId1.getProvince()); + tAppUser.setProvinceCode(byId1.getProvinceCode()); + tAppUser.setCity(byId1.getCity()); + tAppUser.setCityCode(byId1.getCityCode()); + tAppUser.setIsVip(0); + tAppUser.setInsertType(UserExt.getUser().getObjectType()); + tAppUser.setAddUserId(UserExt.getUser().getObjectId()); + tAppUser.setInsertTime(new Date()); + tAppUser.setPassword(MD5.md5("111111")); + appUserClient.addAppUser1(tAppUser); + TAppUser appUserByPhone1 = appUserClient.getAppUserByPhone(phone); + siteBooking.setAppUserId(appUserByPhone1.getId()); + }else{ + siteBooking.setAppUserId(appUserByPhone.getId()); + } + // 如果是运营商添加的话 根据门店的省市来存储 + if (UserExt.getUser().getObjectType() == 2){ + TStore byId = storeService.getById(siteBooking.getStoreId()); + siteBooking.setProvince(byId.getProvince()); + siteBooking.setProvinceCode(byId.getProvinceCode()); + siteBooking.setCity(byId.getCity()); + siteBooking.setCityCode(byId.getCityCode()); + } + if (UserExt.getUser().getObjectType() == 3){ + TStore byId = storeService.getById(UserExt.getUser().getObjectId()); + siteBooking.setProvince(byId.getProvince()); + siteBooking.setProvinceCode(byId.getProvinceCode()); + siteBooking.setCity(byId.getCity()); + siteBooking.setCityCode(byId.getCityCode()); + } + + siteClient.addSiteBooking(siteBooking); System.out.println("================="+siteBooking); - return new ResultUtil<>(null,200,null,null,null); } -- Gitblit v1.7.1