package com.dsh.communityWorldCup.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.communityWorldCup.entity.*; import com.dsh.communityWorldCup.feignclient.account.AppUserClient; import com.dsh.communityWorldCup.feignclient.account.StudentClient; import com.dsh.communityWorldCup.feignclient.account.model.AppUser; import com.dsh.communityWorldCup.feignclient.account.model.TStudent; import com.dsh.communityWorldCup.feignclient.competition.ParticipantClient; import com.dsh.communityWorldCup.feignclient.competition.model.Participant; import com.dsh.communityWorldCup.feignclient.other.GameClient; import com.dsh.communityWorldCup.feignclient.other.SiteClient; import com.dsh.communityWorldCup.feignclient.other.StoreClient; import com.dsh.communityWorldCup.feignclient.other.model.Site; import com.dsh.communityWorldCup.feignclient.other.model.Store; import com.dsh.communityWorldCup.feignclient.other.model.TGame; import com.dsh.communityWorldCup.model.*; import com.dsh.communityWorldCup.service.*; import com.dsh.communityWorldCup.util.GDMapGeocodingUtil; import com.dsh.communityWorldCup.util.PayMoneyUtil; import com.dsh.communityWorldCup.util.ResultUtil; import com.dsh.communityWorldCup.util.TokenUtil; import groovy.util.logging.Log4j; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; /** * 社区世界杯 * @author zhibing.pu * @Date 2024/2/18 17:13 */ @RestController @RequestMapping("") public class WorldCupController { Logger log = LoggerFactory.getLogger(WorldCupController.class); @Autowired private TokenUtil tokenUtil; @Autowired private IWorldCupService worldCupService; @Autowired private IWorldCupStoreService worldCupListCoach; @Autowired private IWorldCupPaymentParticipantService worldCupPaymentParticipantService; @Resource private StudentClient studentClient; @Resource private ParticipantClient participantClient; @Resource private AppUserClient appUserClient; @Resource private SiteClient siteClient; @Resource private StoreClient storeClient; @Autowired private PayMoneyUtil payMoneyUtil; @Autowired private IWorldCupStoreService worldCupStoreService; @Autowired private IWorldCupCompetitorService worldCupCompetitorService; @Autowired private GDMapGeocodingUtil gdMapGeocodingUtil; @Autowired private IWorldCupPaymentService worldCupPaymentService; @Resource private GameClient gameClient; /** * 查询社区世界杯收入--管理后台 * @param storeId * @return */ @ResponseBody @PostMapping("/worldCup/getWorldCupIncome") public List getWorldCupIncome(@RequestBody WorldCupQuery query){ String STime = null; String ETime = null; if (StringUtils.hasLength(query.getTime())) { STime = query.getTime().split(" - ")[0] + " 00:00:00"; ETime = query.getTime().split(" - ")[1] + " 23:59:59"; } QueryWrapper in = new QueryWrapper() .eq("payStatus", 2) ; if (STime != null){ in.between("payTime", STime, ETime); } if (query.getUserIds() != null){ if (!query.getUserIds().isEmpty()){ in.in("appUserId", query.getUserIds()); } } if (query.getAmount() != null){ in.le("amount", query.getAmount().toString()); } List list = worldCupPaymentService.list(in); List res = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for (WorldCupPayment worldCupPayment : list) { if (worldCupPayment.getPayType() == 0){ // 不计算免费的 continue; } WorldCupIncomeVO worldCupIncomeVO = new WorldCupIncomeVO(); WorldCup byId = worldCupService.getById(worldCupPayment.getWorldCupId()); if (byId!=null){ worldCupIncomeVO.setProvince(byId.getProvince()); worldCupIncomeVO.setCity(byId.getCity()); List worldCupId = worldCupStoreService.list(new QueryWrapper() .eq("worldCupId", byId.getId())); StringBuilder temp = new StringBuilder(); for (WorldCupStore worldCupStore : worldCupId) { Store store = storeClient.queryStoreById(worldCupStore.getStoreId()); if (store!=null){ temp.append(store.getName()).append(","); } } if (temp.length() > 0){ worldCupIncomeVO.setStoreName(temp.substring(0, temp.length() - 1)); } } AppUser appUser = appUserClient.getAppUser(worldCupPayment.getAppUserId()); worldCupIncomeVO.setId(worldCupPayment.getId().toString()); if (appUser!=null){ worldCupIncomeVO.setUserName(appUser.getName()); worldCupIncomeVO.setPhone(appUser.getPhone()); } if (worldCupPayment.getPayTime()!=null){ String format = simpleDateFormat.format(worldCupPayment.getPayTime()); worldCupIncomeVO.setPayTime(format); } worldCupIncomeVO.setAmount(worldCupPayment.getAmount().toString()); res.add(worldCupIncomeVO); } return res; } /** * 根据门店id获取门店关系数据 * @param storeId * @return */ @ResponseBody @PostMapping("/worldCup/getWorldCupStoreListByStoreId") public List getWorldCupStoreListByStoreId(@RequestBody Integer storeId){ List res = new ArrayList<>(); List storeId1 = worldCupStoreService.list( new QueryWrapper() .eq("storeId", storeId)); for (WorldCupStore worldCupStore : storeId1) { WorldCupStoreVO worldCupStoreVO = new WorldCupStoreVO(); BeanUtils.copyProperties(worldCupStore,worldCupStoreVO); // 查询世界杯活动名称 WorldCup byId = worldCupService.getById(worldCupStore.getWorldCupId()); if (byId==null){ continue; } if (byId.getStatus()==3 || byId.getStatus()==4){ continue; } worldCupStoreVO.setName(byId.getName()); res.add(worldCupStoreVO); } return res; } /** * 根据门店id修改门店关系数据 * @param worldCupStores * @return */ @ResponseBody @PostMapping("/worldCup/updateWorldCupStoreListById") public Boolean updateWorldCupStoreListById(@RequestBody List worldCupStores){ return worldCupStoreService.updateBatchById(worldCupStores); } @ResponseBody @PostMapping("/api/worldCup/getWorldCupStore") @ApiOperation(value = "裁判获取社区世界杯赛点列表【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil>> getWorldCupStore(){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } List> worldCupStore = worldCupListCoach.getWorldCupStore(); return ResultUtil.success(worldCupStore); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getWorldCupListCoach") @ApiOperation(value = "裁判获取社区世界杯列表【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getWorldCupListCoach(WorldCupListCoach worldCupListCoach){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } List worldCupListCoach1 = worldCupService.getWorldCupListCoach(worldCupListCoach); return ResultUtil.success(worldCupListCoach1); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getWorldCupPeople") @ApiOperation(value = "裁判扫码获取参赛人信息【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getWorldCupPeople(WorldCupPeople worldCupPeople){ JSONObject jsonObject = JSON.parseObject(worldCupPeople.getCode()); Long id = jsonObject.getLong("id"); Integer isStudent = jsonObject.getInteger("isStudent"); if(0 == isStudent){ isStudent = 2; } WorldCupPaymentParticipant worldCupPaymentParticipant = worldCupPaymentParticipantService.getOne(new QueryWrapper() .eq("worldCupId", worldCupPeople.getWorldCupId()).eq("participantId", id).eq("participantType", isStudent) .orderByDesc("createTime").last(" limit 0, 1")); if(null == worldCupPaymentParticipant){ return ResultUtil.error("报名失败,当前用户未报名当前比赛"); } WorldCupPeopleVo worldCupPeopleVo = new WorldCupPeopleVo(); worldCupPeopleVo.setId(worldCupPaymentParticipant.getParticipantId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); if(worldCupPaymentParticipant.getParticipantType() == 1){ //学员 TStudent tStudent = studentClient.queryById(worldCupPaymentParticipant.getParticipantId().intValue()); worldCupPeopleVo.setName(tStudent.getName()); worldCupPeopleVo.setAge(null == tStudent.getBirthday() ? 0 : Integer.valueOf(sdf.format(new Date())) -Integer.valueOf(sdf.format(tStudent.getBirthday()))); worldCupPeopleVo.setAvatar(tStudent.getHeadImg()); worldCupPeopleVo.setParticipantType(1); }else{ AppUser appUser = appUserClient.getAppUser(worldCupPaymentParticipant.getAppUserId()); //参赛人员 Participant participant = participantClient.getParticipant(worldCupPaymentParticipant.getParticipantId()); worldCupPeopleVo.setName(participant.getName()); worldCupPeopleVo.setAge(null == participant.getBirthday() ? 0 : Integer.valueOf(sdf.format(new Date())) -Integer.valueOf(sdf.format(participant.getBirthday()))); worldCupPeopleVo.setAvatar(participant.getHeadImg()); worldCupPeopleVo.setParticipantType(2); } return ResultUtil.success(worldCupPeopleVo); } @ResponseBody @PostMapping("/api/worldCup/getDeviceInformation") @ApiOperation(value = "裁判扫码获取设备信息【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "code", value = "扫码结果", required = true, dataType = "String"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getDeviceInformation(String code){ /** * { * "scan_type": 0, // 扫码类型:1000:游戏,1001:课程,1002:场地 * "space_id": 0, //场地ID * "sutu_id": 0, // 设备ID * "id": 0 //课程/场地/游戏ID * } */ JSONObject jsonObject = JSON.parseObject(code); Integer scan_type = jsonObject.getInteger("scan_type"); if(scan_type != 1000){ return ResultUtil.error("二维码不正确"); } Integer space_id = jsonObject.getInteger("space_id"); Site site = siteClient.getSite(space_id); if(null == site){ return ResultUtil.error("无法获取场地信息"); } Store store = storeClient.queryStoreById(site.getStoreId()); String sutu_id = jsonObject.getString("sutu_id"); TGame tGame = gameClient.getTGameBySutuId(sutu_id); if(null == tGame){ return ResultUtil.error("无效的游戏二维码"); } Map map = new HashMap<>(); map.put("name", store.getName()); map.put("address", site.getName()); return ResultUtil.success(map); } @ResponseBody @PostMapping("/api/worldCup/startWorldCup") @ApiOperation(value = "裁判开启游戏开始比赛【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil startWorldCup(StartWorldCup startWorldCup){ return worldCupService.startWorldCup(startWorldCup); } @ResponseBody @PostMapping("/api/worldCup/getCompletedWorldCupTips") @ApiOperation(value = "首页获取完成比赛的提示【2.0】", tags = {"APP-首页"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getCompletedWorldCupTips(){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } Integer tips = worldCupService.getCompletedWorldCupTips(uid); return ResultUtil.success(tips); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getWorldCupList") @ApiOperation(value = "获取世界杯列表【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getWorldCupList(WorldCupList worldCupList){ List worldCupList1 = worldCupService.getWorldCupList(worldCupList); return ResultUtil.success(worldCupList1); } @ResponseBody @PostMapping("/api/worldCup/getWorldCupInfo") @ApiOperation(value = "获取世界杯详情【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "世界杯id", required = true, dataType = "int"), @ApiImplicitParam(name = "lon", value = "经度", required = true, dataType = "string"), @ApiImplicitParam(name = "lat", value = "纬度", required = true, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getWorldCupInfo(Integer id,String lon, String lat){ WorldCupInfo worldCupInfo = worldCupService.getWorldCupInfo(id, lon, lat); return ResultUtil.success(worldCupInfo); } @ResponseBody @PostMapping("/api/worldCup/checkPaymentMethod") @ApiOperation(value = "世界杯报名前校验支付方式【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil checkPaymentMethod(CheckPaymentMethod checkPaymentMethod){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.success(); } checkPaymentMethod.setUid(uid); CheckPaymentMethodVo checkPaymentMethodVo = worldCupService.checkPaymentMethod(checkPaymentMethod); return ResultUtil.success(checkPaymentMethodVo); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/paymentWorldCup") @ApiOperation(value = "世界杯报名【2.0】", tags = {"APP-社区世界杯"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil paymentWorldCup(PaymentWorldCup paymentWorldCup){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.success(); } paymentWorldCup.setUid(uid); return worldCupService.paymentWorldCup(paymentWorldCup); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 微信支付回调 */ @ResponseBody @PostMapping("/base/worldCup/wxPayWorldCupCallback") public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.weixinpayCallback(request); if(null != map){ String code = map.get("out_trade_no"); String transaction_id = map.get("transaction_id"); String result = map.get("result"); ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.println(result); out.flush(); out.close(); }else{ log.error("社区世界杯报名微信支付回业务处理异常:" + resultUtil.getMsg()); } }else{ log.error("社区世界杯报名微信支付回调解析异常"); } }catch (Exception e){ e.printStackTrace(); } } /** * 支付宝支付回调 */ @ResponseBody @PostMapping("/base/worldCup/aliPayWorldCupCallback") public void aliPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ try { Map map = payMoneyUtil.alipayCallback(request); if(null != map){ String code = map.get("out_trade_no"); String transaction_id = map.get("trade_no"); ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); out.println("success"); out.flush(); out.close(); }else{ log.error("社区世界杯报名支付宝支付回业务处理异常:" + resultUtil.getMsg()); } }else{ log.error("社区世界杯报名付宝支支付回调解析异常"); } }catch (Exception e){ e.printStackTrace(); } } /** * 根据店铺id获取有效的世界杯 * @param storeId * @return */ @PostMapping("/worldCup/getWorldCupStoreList") public List getWorldCupStoreList(@RequestBody Integer storeId){ List worldCupList = worldCupService.list(new QueryWrapper().in("status", Arrays.asList(1, 2))); List collect = worldCupList.stream().map(WorldCup::getId).collect(Collectors.toList()); if(collect.size() == 0){ return new ArrayList<>(); } return worldCupStoreService.list(new QueryWrapper().eq("storeId", storeId).in("worldCupId", collect) .eq("isOpen", 1)); } @ResponseBody @PostMapping("/api/worldCup/getEntrantRank") @ApiOperation(value = "获取世界杯排名【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getEntrantRank(EntrantRank entrantRank){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.success(); } entrantRank.setAppUserId(uid); EntrantRankVo entrantRank1 = worldCupCompetitorService.getEntrantRank(entrantRank); return ResultUtil.success(entrantRank1); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getMyWorldCupList") @ApiOperation(value = "获取报名的世界杯列表【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getMyWorldCupList(MyWorldCupList myWorldCupList){ List myWorldCupList1 = worldCupPaymentParticipantService.getMyWorldCupList(myWorldCupList); return ResultUtil.success(myWorldCupList1); } @ResponseBody @PostMapping("/api/worldCup/getParticipant") @ApiOperation(value = "获取已报名的参赛人员【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getParticipant(){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } List participant = worldCupPaymentParticipantService.getParticipant(uid); return ResultUtil.success(participant); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } @ResponseBody @PostMapping("/api/worldCup/getMyWorldCupInfo") @ApiOperation(value = "获取已报名世界杯详情【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "列表中的id", required = true, dataType = "Long"), @ApiImplicitParam(name = "lon", value = "经度", required = true, dataType = "string"), @ApiImplicitParam(name = "lat", value = "纬度", required = true, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getMyWorldCupInfo(Long id, String lon, String lat){ MyWorldCupInfo myWorldCupInfo = worldCupPaymentParticipantService.getMyWorldCupInfo(id, lon, lat); return ResultUtil.success(myWorldCupInfo); } @ResponseBody @PostMapping("/api/worldCup/cancelMyWorldCup") @ApiOperation(value = "取消已报名的世界杯【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "列表中的id", required = true, dataType = "Long"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil cancelMyWorldCup(Long id){ return worldCupPaymentService.cancelMyWorldCup(id); } @ResponseBody @PostMapping("/api/worldCup/getWorldCupMatchRecord") @ApiOperation(value = "获取比赛记录【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil getWorldCupMatchRecord(MatchRecord matchRecord){ MatchRecordVo matchRecord1 = worldCupCompetitorService.getMatchRecord(matchRecord); return ResultUtil.success(matchRecord1); } @ResponseBody @PostMapping("/api/worldCup/getWorldCupRank") @ApiOperation(value = "获取比赛排名【2.0】", tags = {"APP-个人中心"}) @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> getWorldCupRank(WorldCupRank worldCupRank){ try { Integer uid = tokenUtil.getUserIdFormRedis(); if(null == uid){ return ResultUtil.tokenErr(); } worldCupRank.setAppUserId(uid); List worldCupRank1 = worldCupCompetitorService.getWorldCupRank(worldCupRank); return ResultUtil.success(worldCupRank1); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取学员参与数量 * @param studentId * @return */ @ResponseBody @PostMapping("/worldCup/count") public Integer count(@RequestBody Integer studentId){ return worldCupCompetitorService.count(new QueryWrapper() .eq("participantId", studentId).eq("participantType", 1)); } /** * 获取学员世界杯胜利次数 * @param studentId * @return */ @ResponseBody @PostMapping("/worldCup/winCount") public Integer winCount(@RequestBody Integer studentId){ return worldCupCompetitorService.count(new QueryWrapper() .eq("participantId", studentId).eq("participantType", 1).eq("matchResult", 1)); } /** * 获取比赛管理列表数据 * @param worldCupListAll * @return */ @ResponseBody @PostMapping("/worldCup/getWorldCupListAll") public Map getWorldCupListAll(@RequestBody WorldCupListAll worldCupListAll){ return worldCupService.getWorldCupListAll(worldCupListAll); } /** * 根据门店ids 获取归属学员 * @param storeIds * @return */ @ResponseBody @PostMapping("/worldCup/getStudentIds") public List getStudentIds(@RequestBody StoreIds storeIds){ List res = new ArrayList<>(); // 获取门店ids 所举办的世界杯ids 查询学员参赛 List collect = worldCupStoreService.list(new QueryWrapper() .in("storeId", storeIds.getStoreIds())).stream() .map(WorldCupStore::getWorldCupId).collect(Collectors.toList()); List list = worldCupPaymentService.list(new QueryWrapper() .in("worldCupId", collect) .eq("payStatus", 2)); for (WorldCupPayment worldCupPayment : list) { JSONArray jsonArray = JSON.parseArray(worldCupPayment.getEntrant()); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Integer isStudent = jsonObject.getInteger("isStudent"); if (isStudent!=1){ continue; } Long id = jsonObject.getLong("id"); String string = id.toString(); res.add(Integer.parseInt(string)); } } List collect1 = worldCupCompetitorService.list(new QueryWrapper() .in("worldCupId", collect) .eq("participantType", 1)).stream() .map(WorldCupCompetitor::getParticipantId).collect(Collectors.toList()); // 将collect1中的数据全部转化为Integer类型 List temp = new ArrayList<>(); temp = collect1.stream().map(Long::intValue).collect(Collectors.toList()); res.addAll(temp); return res; } /** * 根据门店ids 获取归属用户 * @param storeIds * @return */ @ResponseBody @PostMapping("/worldCup/getUserIds") public List getUserIds(@RequestBody StoreIds storeIds){ List res = new ArrayList<>(); // 获取门店ids 所举办的世界杯ids 查询用户 List collect = worldCupStoreService.list(new QueryWrapper() .in("storeId", storeIds.getStoreIds())).stream() .map(WorldCupStore::getWorldCupId).collect(Collectors.toList()); List list = worldCupPaymentService.list(new QueryWrapper() .in("worldCupId", collect) .eq("payStatus", 2)); for (WorldCupPayment worldCupPayment : list) { res.add(worldCupPayment.getAppUserId()); } return res; } /** * 添加社区世界杯 * @param worldCup * @return */ @ResponseBody @PostMapping("/worldCup/addWorldCup") public Integer addWorldCup(@RequestBody WorldCup worldCup){ String lon = worldCup.getLon(); String lat = worldCup.getLat(); Map geocode = null; try { geocode = gdMapGeocodingUtil.geocode(lon, lat); } catch (Exception e) { throw new RuntimeException(e); } String province = geocode.get("province"); String provinceCode = geocode.get("provinceCode"); String city = geocode.get("city"); String cityCode = geocode.get("cityCode"); worldCup.setProvince(province.replace("省", "")); worldCup.setProvinceCode(provinceCode); worldCup.setCity(city.replace("市", "")); worldCup.setCityCode(cityCode); String[] split = worldCup.getPayType().split(","); List strings = Arrays.asList(split); if(strings.contains("0")){ worldCup.setCash(null); worldCup.setClassHour(null); worldCup.setPaiCoin(null); } if(!strings.contains("1")){ worldCup.setCash(null); } if(!strings.contains("2")){ worldCup.setPaiCoin(null); } if(!strings.contains("3")){ worldCup.setClassHour(null); } worldCupService.save(worldCup); return worldCup.getId(); } /** * 添加社区世界杯和门店关系数据 * @param worldCupStore */ @ResponseBody @PostMapping("/worldCup/addWorldCupStore") public void addWorldCupStore(@RequestBody WorldCupStore worldCupStore){ worldCupStoreService.save(worldCupStore); } /** * 编辑社区世界杯 * @param worldCup * @return */ @ResponseBody @PostMapping("/worldCup/editWorldCup") public Integer editWorldCup(@RequestBody String worldCup){ WorldCup worldCup2 = JSON.parseObject(worldCup, WorldCup.class); String lon = worldCup2.getLon(); String lat = worldCup2.getLat(); Map geocode = null; try { geocode = gdMapGeocodingUtil.geocode(lon, lat); } catch (Exception e) { throw new RuntimeException(e); } String province = geocode.get("province"); String provinceCode = geocode.get("provinceCode"); String city = geocode.get("city"); String cityCode = geocode.get("cityCode"); worldCup2.setProvince(province.replace("省", "")); worldCup2.setProvinceCode(provinceCode); worldCup2.setCity(city.replace("市", "")); worldCup2.setCityCode(cityCode); WorldCup worldCup1 = worldCupService.getById(worldCup2.getId()); worldCup2.setCreateTime(worldCup1.getCreateTime()); worldCup2.setMatchNumber(worldCup1.getMatchNumber()); String[] split = worldCup2.getPayType().split(","); List strings = Arrays.asList(split); if(strings.contains("0")){ worldCup2.setCash(null); worldCup2.setClassHour(null); worldCup2.setPaiCoin(null); } if(!strings.contains("1")){ worldCup2.setCash(null); } if(!strings.contains("2")){ worldCup2.setPaiCoin(null); } if(!strings.contains("3")){ worldCup2.setClassHour(null); } worldCupService.updateWorldCupAll(worldCup2); return worldCup2.getId(); } /** * 删除世界杯门店关系数据 * @param worldCupId */ @ResponseBody @PostMapping("/worldCup/delWorldCupStore") public void delWorldCupStore(@RequestBody Integer worldCupId){ worldCupStoreService.remove(new QueryWrapper().eq("worldCupId", worldCupId)); } /** * 根据id获取世界杯赛事数据 * @param id * @return */ @ResponseBody @PostMapping("/worldCup/getWorldCupById") public WorldCup getWorldCupById(@RequestBody Integer id){ return worldCupService.getById(id); } /** * 根据世界杯id获取门店关系数据 * @param worldCupId * @return */ @ResponseBody @PostMapping("/worldCup/getWorldCupStoreAllList") public List getWorldCupStoreAllList(@RequestBody Integer worldCupId){ return worldCupStoreService.list(new QueryWrapper().eq("worldCupId", worldCupId)); } /** * 取消赛事退款操作 * @param id */ @ResponseBody @PostMapping("/worldCup/cancelWorldCupRefund") public void cancelWorldCupRefund(@RequestBody Integer id){ worldCupService.cancelWorldCupRefund(id); } /** * 游戏结束后的通知回调 */ @ResponseBody @PostMapping("/base/worldCup/endWorldCupCallback") public void endWorldCupCallback(String custom, Integer red_score, Integer blue_score){ log.warn("世界杯游戏成绩回调:custom->" + custom + ",red_score->" + red_score + ",blue_score->" + blue_score); worldCupCompetitorService.endWorldCupCallback(custom, red_score, blue_score); } /** * 取消赛事后微信退款回调 * @param request * @param response */ @ResponseBody @PostMapping("/base/worldCup/wxRefundWorldCupCallback") public void wxRefundWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ Map map = payMoneyUtil.wxRefundCallback(request); if(null != map){ String refund_id = map.get("refund_id"); String out_refund_no = map.get("out_refund_no"); String result = map.get("result"); WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper().eq("code", out_refund_no)); worldCupPayment.setRefundOrderNo(refund_id); worldCupPayment.setRefundTime(new Date()); worldCupPayment.setPayStatus(3); worldCupPayment.setWorldCupId(null); worldCupPaymentService.updateById(worldCupPayment); PrintWriter out = null; try { out = response.getWriter(); } catch (IOException e) { throw new RuntimeException(e); } out.println(result); out.flush(); out.close(); } } /** * 获取已报名人员列表 * @param registeredPersonnel * @return */ @ResponseBody @PostMapping("/worldCup/getRegisteredPersonnel") public Map getRegisteredPersonnel(@RequestBody RegisteredPersonnel registeredPersonnel){ return worldCupPaymentParticipantService.getRegisteredPersonnel(registeredPersonnel); } /** * 获取比赛排行榜列表数据 * @param worldCupRecords * @return */ @ResponseBody @PostMapping("/worldCup/worldCupRecordsList") public Map worldCupRecordsList(@RequestBody WorldCupRecords worldCupRecords){ return worldCupCompetitorService.worldCupRecordsList(worldCupRecords); } /** * 获取比赛统计 * @param worldCupGameStatistics * @return */ @ResponseBody @PostMapping("/worldCup/worldCupGameStatistics") public Map worldCupGameStatistics(@RequestBody WorldCupGameStatistics worldCupGameStatistics){ return worldCupService.worldCupGameStatistics(worldCupGameStatistics); } /** * 获取比赛统计详情列表 * @param worldCupGameStatisticsInfoList * @return */ @ResponseBody @PostMapping("/worldCup/worldCupGameStatisticsInfoList") public Map worldCupGameStatisticsInfoList(@RequestBody WorldCupGameStatisticsInfoList worldCupGameStatisticsInfoList){ return worldCupCompetitorService.worldCupGameStatisticsInfoList(worldCupGameStatisticsInfoList); } /** * 获取单场参赛详情列表 * @return */ @ResponseBody @PostMapping("/worldCup/worldCupGameStatisticsListInfo") public Map worldCupGameStatisticsListInfo(@RequestBody WorldCupGameStatisticsListInfo worldCupGameStatisticsListInfo){ return worldCupCompetitorService.worldCupGameStatisticsListInfo(worldCupGameStatisticsListInfo); } /** * 修改比分 * @param changeScore */ @ResponseBody @PostMapping("/worldCup/changeScore") public void changeScore(@RequestBody ChangeScore changeScore){ worldCupCompetitorService.changeScore(changeScore); } @ResponseBody @PostMapping("/worldCup/getUserGameRecordList") public Map getUserGameRecordList(@RequestBody WorldCupGameStatisticsInfoList worldCupGameStatisticsInfoList){ return worldCupPaymentParticipantService.getUserGameRecordList(worldCupGameStatisticsInfoList); } /** * 获取用户比赛记录明细 * @param userGameRecordList * @return */ @ResponseBody @PostMapping("/worldCup/userGameRecordList") public Map userGameRecordList(@RequestBody UserGameRecordList userGameRecordList){ return worldCupCompetitorService.userGameRecordList(userGameRecordList); } /** * 获取已报名人数 * @param worldCupId * @return */ @ResponseBody @PostMapping("/worldCup/getRegisteredNumber") public int getRegisteredNumber(@RequestBody Integer worldCupId){ List list = worldCupPaymentService.list(new QueryWrapper().eq("worldCupId", worldCupId) .eq("payStatus", 2).eq("state", 1)); List collect = list.stream().map(WorldCupPayment::getId).collect(Collectors.toList()); if(collect.size() == 0){ return 0; } return worldCupPaymentParticipantService.getCount(worldCupId, collect); } /** * 获取支付记录 * @param getWorldCupPayment * @return */ @ResponseBody @PostMapping("/worldCup/getWorldCupPayment") public List getWorldCupPayment(@RequestBody GetWorldCupPayment getWorldCupPayment){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String payType = getWorldCupPayment.getPayType(); List list = worldCupPaymentService.list(new QueryWrapper().eq("appUserId", getWorldCupPayment.getAppUserId()) .in("payType", Arrays.asList(payType.split(","))).ne("payStatus", 1).eq("state", 1) .last(" and createTime between '" + sdf.format(getWorldCupPayment.getStartTime()) + "' and '" + sdf.format(getWorldCupPayment.getEndTime()) + "' order by createTime desc")); return list; } }