From b27efc697f2f81e0d0f247a2708e58af52a5df9b Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期四, 23 十月 2025 15:14:33 +0800
Subject: [PATCH] bug修改,后台新增修改用户积分
---
cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java | 825 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 786 insertions(+), 39 deletions(-)
diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java
index d92e7f9..bf8431e 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java
@@ -1,40 +1,55 @@
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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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.StudentHonorClient;
+import com.dsh.communityWorldCup.feignclient.account.UserIntegralChangesClient;
import com.dsh.communityWorldCup.feignclient.account.model.AppUser;
+import com.dsh.communityWorldCup.feignclient.account.model.SaveUserIntegralChangesVo;
+import com.dsh.communityWorldCup.feignclient.account.model.StudentHonor;
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 com.dsh.communityWorldCup.util.*;
+import com.dsh.communityWorldCup.util.wx.WxV3PayConfig;
+import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
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.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@@ -91,8 +106,125 @@
@Autowired
private IWorldCupPaymentService worldCupPaymentService;
+ @Resource
+ private GameClient gameClient;
+
+ @Autowired
+ private UserIntegralChangesClient userIntegralChangesClient;
+
+ @Autowired
+ private StudentHonorClient studentHonorClient;
+ /**
+ * 查询社区世界杯收入--管理后台
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/getWorldCupIncome")
+ public List<WorldCupIncomeVO> 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<WorldCupPayment> in = new QueryWrapper<WorldCupPayment>()
+ .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<WorldCupPayment> list = worldCupPaymentService.list(in);
+ List<WorldCupIncomeVO> 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<WorldCupStore> worldCupId = worldCupStoreService.list(new QueryWrapper<WorldCupStore>()
+ .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<WorldCupStoreVO> getWorldCupStoreListByStoreId(@RequestBody Integer storeId){
+ List<WorldCupStoreVO> res = new ArrayList<>();
+ List<WorldCupStore> storeId1 = worldCupStoreService.list(
+ new QueryWrapper<WorldCupStore>()
+ .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<WorldCupStore> worldCupStores){
+ return worldCupStoreService.updateBatchById(worldCupStores);
+ }
@ResponseBody
@PostMapping("/api/worldCup/getWorldCupStore")
@@ -149,19 +281,34 @@
@ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
public ResultUtil<WorldCupPeopleVo> getWorldCupPeople(WorldCupPeople worldCupPeople){
- WorldCupPaymentParticipant worldCupPaymentParticipant = worldCupPaymentParticipantService.getById(worldCupPeople.getCode());
- if(null == worldCupPaymentParticipant){
- return ResultUtil.error("无效二维码");
+ JSONObject jsonObject = JSON.parseObject(worldCupPeople.getCode());
+ Long id = jsonObject.getLong("id");
+ Integer isStudent = jsonObject.getInteger("isStudent");
+ if(0 == isStudent){
+ isStudent = 2;
}
- if(worldCupPaymentParticipant.getWorldCupId().compareTo(worldCupPeople.getWorldCupId()) != 0){
+ WorldCup worldCup = worldCupService.getById(worldCupPeople.getWorldCupId());
+ if(null == worldCup){
+ return ResultUtil.error("当前比赛不存在");
+ }
+ if(worldCup.getStartTime().getTime()>System.currentTimeMillis() || worldCup.getEndTime().getTime()<System.currentTimeMillis()){
+ return ResultUtil.error("二维码仅支持在赛事有效期使用");
+ }
+
+
+
+ WorldCupPaymentParticipant worldCupPaymentParticipant = worldCupPaymentParticipantService.getOne(new QueryWrapper<WorldCupPaymentParticipant>()
+ .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.getId());
+ worldCupPeopleVo.setId(worldCupPaymentParticipant.getParticipantId());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
if(worldCupPaymentParticipant.getParticipantType() == 1){
//学员
- TStudent tStudent = studentClient.queryById(worldCupPaymentParticipant.getParticipantId());
+ 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());
@@ -172,7 +319,7 @@
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(appUser.getHeadImg());
+ worldCupPeopleVo.setAvatar(participant.getHeadImg());
worldCupPeopleVo.setParticipantType(2);
}
return ResultUtil.success(worldCupPeopleVo);
@@ -206,6 +353,11 @@
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<String, String> map = new HashMap<>();
map.put("name", store.getName());
map.put("address", site.getName());
@@ -222,6 +374,18 @@
})
public ResultUtil startWorldCup(StartWorldCup startWorldCup){
return worldCupService.startWorldCup(startWorldCup);
+ }
+ @ResponseBody
+ @PostMapping("/api/worldCup/endWorldCup")
+ @ApiOperation(value = "裁判结束比赛【3.1】", tags = {"APP-个人中心"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
+ @ApiImplicitParam(name = "redScore", value = "红队得分", required = true, dataType = "Integer"),
+ @ApiImplicitParam(name = "blueScore", value = "蓝队得分", required = true, dataType = "Integer"),
+ @ApiImplicitParam(name = "custom", value = "自定义参数 列表中是数组 ,拼接传过来", required = true, dataType = "String")
+ })
+ public ResultUtil endWorldCup(String custom, Integer redScore, Integer blueScore){
+ return worldCupService.endWorldCup(custom,redScore,blueScore);
}
@@ -321,23 +485,66 @@
}
}
-
+ @ResponseBody
+ @PostMapping("/base/worldCup/wxPayWorldCupCallback")
+ public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){
+ System.err.println("微信回调");
+ try {
+ Map<String, String> 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/wxPayWorldCupCallback")
- public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){
+ @PostMapping("/base/worldCup/wxPayWorldCupCallback1")
+ public void wxPayWorldCupCallback1(HttpServletRequest request, HttpServletResponse response){
try {
- Map<String, String> 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");
+ System.err.println("微信回调");
+ System.err.println("请求" + request);
+ BufferedReader reader = request.getReader();
+ String string1 = reader.toString();
+ System.err.println("请求reader" + string1);
+ StringBuilder requestBody = new StringBuilder();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ requestBody.append(line);
+ }
+ System.err.println("全部请求体" + requestBody);
+ JSONObject jsonObject = JSONObject.parseObject(requestBody.toString());
+ JSONObject resource = jsonObject.getJSONObject("resource");
+
+ AesUtil aesUtil = new AesUtil(WxV3PayConfig.apiV3Key.getBytes(StandardCharsets.UTF_8));
+ String decryptedData = aesUtil.decryptToString(resource.getString("associated_data").getBytes(StandardCharsets.UTF_8), resource.getString("nonce").getBytes(StandardCharsets.UTF_8),
+ resource.getString("ciphertext"));
+ System.err.println("微信解密的字符串信息" + decryptedData);
+ JSONObject jsonInfo = (JSONObject) JSONObject.parse(decryptedData);
+ String code = jsonInfo.getString("out_trade_no");
+ String transaction_id = jsonInfo.getString("transaction_id");
+ String trade_state = jsonInfo.getString("trade_state");
+ if (trade_state.equals("SUCCESS")) {
ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id);
if(resultUtil.getCode() == 200){
PrintWriter out = response.getWriter();
- out.println(result);
+ out.println("SUCCESS");
out.flush();
out.close();
}else{
@@ -363,11 +570,10 @@
if(null != map){
String code = map.get("out_trade_no");
String transaction_id = map.get("trade_no");
- String result = map.get("result");
ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id);
if(resultUtil.getCode() == 200){
PrintWriter out = response.getWriter();
- out.println(result);
+ out.println("success");
out.flush();
out.close();
}else{
@@ -391,7 +597,11 @@
public List<WorldCupStore> getWorldCupStoreList(@RequestBody Integer storeId){
List<WorldCup> worldCupList = worldCupService.list(new QueryWrapper<WorldCup>().in("status", Arrays.asList(1, 2)));
List<Integer> collect = worldCupList.stream().map(WorldCup::getId).collect(Collectors.toList());
- return worldCupStoreService.list(new QueryWrapper<WorldCupStore>().eq("storeId", storeId).in("worldCupId", collect));
+ if(collect.size() == 0){
+ return new ArrayList<>();
+ }
+ return worldCupStoreService.list(new QueryWrapper<WorldCupStore>().eq("storeId", storeId).in("worldCupId", collect)
+ .eq("isOpen", 1));
}
@@ -409,6 +619,8 @@
if(null == uid){
return ResultUtil.success();
}
+ System.err.println("11111"+entrantRank);
+
entrantRank.setAppUserId(uid);
EntrantRankVo entrantRank1 = worldCupCompetitorService.getEntrantRank(entrantRank);
return ResultUtil.success(entrantRank1);
@@ -460,14 +672,25 @@
@PostMapping("/api/worldCup/getMyWorldCupInfo")
@ApiOperation(value = "获取已报名世界杯详情【2.0】", tags = {"APP-个人中心"})
@ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "列表中的id", required = true, dataType = "String"),
+ @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<MyWorldCupInfo> getMyWorldCupInfo(String id, String lon, String lat){
+ public ResultUtil<MyWorldCupInfo> 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) throws Exception {
+ return worldCupPaymentService.cancelMyWorldCup(id);
}
@@ -493,8 +716,61 @@
@ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
})
public ResultUtil<List<WorldCupRankVo>> getWorldCupRank(WorldCupRank worldCupRank){
- List<WorldCupRankVo> worldCupRank1 = worldCupCompetitorService.getWorldCupRank(worldCupRank);
- return ResultUtil.success(worldCupRank1);
+ try {
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ System.err.println("22222"+worldCupRank);
+
+ worldCupRank.setAppUserId(uid);
+ List<WorldCupRankVo> worldCupRank1 = worldCupCompetitorService.getWorldCupRank(worldCupRank);
+ System.err.println("排名数据"+worldCupRank1);
+ return ResultUtil.success(worldCupRank1);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+
+ @ResponseBody
+ @PostMapping("/api/worldCup/getWorldCupListFromRank")
+ @ApiOperation(value = "获取报名的赛事 排名使用【3.1】", tags = {"APP-个人中心"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResultUtil<List<WorldCupListVo>> getWorldCupListFromRank(MyWorldCupList myWorldCupList){
+ try {
+ System.err.println("33333"+myWorldCupList);
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ List<WorldCupListVo> worldCupRank1 = worldCupCompetitorService.getWorldCupListFromRank(myWorldCupList);
+ return ResultUtil.success(worldCupRank1);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+ @ResponseBody
+ @PostMapping("/api/worldCup/getWorldCupCodeListId")
+ @ApiOperation(value = "获取赛事的赛点 非智慧比赛用 【3.1】", tags = {"APP-个人中心"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResultUtil<List<WorldCupCodeListVo>> getWorldCupCodeListId(Integer worldCupId){
+ try {
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ List<WorldCupCodeListVo> worldCupRank1 = worldCupCompetitorService.getWorldCupCodeListId(worldCupId);
+ return ResultUtil.success(worldCupRank1);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
}
@@ -533,6 +809,67 @@
public Map<String, Object> getWorldCupListAll(@RequestBody WorldCupListAll worldCupListAll){
return worldCupService.getWorldCupListAll(worldCupListAll);
}
+ /**
+ * 根据门店ids 获取归属学员
+ * @param storeIds
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/getStudentIds")
+ public List<Integer> getStudentIds(@RequestBody StoreIds storeIds){
+ List<Integer> res = new ArrayList<>();
+
+ // 获取门店ids 所举办的世界杯ids 查询学员参赛
+ List<Integer> collect = worldCupStoreService.list(new QueryWrapper<WorldCupStore>()
+ .in("storeId", storeIds.getStoreIds())).stream()
+ .map(WorldCupStore::getWorldCupId).collect(Collectors.toList());
+ List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>()
+ .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<Long> collect1 = worldCupCompetitorService.list(new QueryWrapper<WorldCupCompetitor>()
+ .in("worldCupId", collect)
+ .eq("participantType", 1)).stream()
+ .map(WorldCupCompetitor::getParticipantId).collect(Collectors.toList());
+ // 将collect1中的数据全部转化为Integer类型
+ List<Integer> 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<Integer> getUserIds(@RequestBody StoreIds storeIds){
+ List<Integer> res = new ArrayList<>();
+ // 获取门店ids 所举办的世界杯ids 查询用户
+ List<Integer> collect = worldCupStoreService.list(new QueryWrapper<WorldCupStore>()
+ .in("storeId", storeIds.getStoreIds())).stream()
+ .map(WorldCupStore::getWorldCupId).collect(Collectors.toList());
+ List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>()
+ .in("worldCupId", collect)
+ .eq("payStatus", 2));
+ for (WorldCupPayment worldCupPayment : list) {
+ res.add(worldCupPayment.getAppUserId());
+ }
+ return res;
+ }
@@ -560,6 +897,22 @@
worldCup.setProvinceCode(provinceCode);
worldCup.setCity(city.replace("市", ""));
worldCup.setCityCode(cityCode);
+ String[] split = worldCup.getPayType().split(",");
+ List<String> 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();
}
@@ -584,9 +937,10 @@
*/
@ResponseBody
@PostMapping("/worldCup/editWorldCup")
- public Integer editWorldCup(@RequestBody WorldCup worldCup){
- String lon = worldCup.getLon();
- String lat = worldCup.getLat();
+ public Integer editWorldCup(@RequestBody String worldCup){
+ WorldCup worldCup2 = JSON.parseObject(worldCup, WorldCup.class);
+ String lon = worldCup2.getLon();
+ String lat = worldCup2.getLat();
Map<String, String> geocode = null;
try {
geocode = gdMapGeocodingUtil.geocode(lon, lat);
@@ -597,12 +951,31 @@
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);
- worldCupService.updateById(worldCup);
- return worldCup.getId();
+ 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<String> 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();
}
@@ -647,7 +1020,7 @@
*/
@ResponseBody
@PostMapping("/worldCup/cancelWorldCupRefund")
- public void cancelWorldCupRefund(@RequestBody Integer id){
+ public void cancelWorldCupRefund(@RequestBody Integer id) throws Exception {
worldCupService.cancelWorldCupRefund(id);
}
@@ -657,8 +1030,9 @@
*/
@ResponseBody
@PostMapping("/base/worldCup/endWorldCupCallback")
- public void 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);
}
@@ -679,6 +1053,7 @@
worldCupPayment.setRefundOrderNo(refund_id);
worldCupPayment.setRefundTime(new Date());
worldCupPayment.setPayStatus(3);
+ worldCupPayment.setWorldCupId(null);
worldCupPaymentService.updateById(worldCupPayment);
PrintWriter out = null;
try {
@@ -691,4 +1066,376 @@
out.close();
}
}
+ /**
+ * 取消赛事后微信退款回调微信V3回调
+ * @param request
+ * @param response
+ */
+ @ResponseBody
+ @PostMapping("/base/worldCup/wxRefundWorldCupCallback1")
+ public void wxRefundWorldCupCallback1(HttpServletRequest request, HttpServletResponse response){
+ try {
+ System.err.println("微信回调");
+ System.err.println("请求" + request);
+ BufferedReader reader = request.getReader();
+ String string1 = reader.toString();
+ System.err.println("请求reader" + string1);
+ StringBuilder requestBody = new StringBuilder();
+ String line;
+ while ((line = reader.readLine()) != null) {
+ requestBody.append(line);
+ }
+ System.err.println("全部请求体" + requestBody);
+ JSONObject jsonObject = JSONObject.parseObject(requestBody.toString());
+ JSONObject resource = jsonObject.getJSONObject("resource");
+
+ AesUtil aesUtil = new AesUtil(WxV3PayConfig.apiV3Key.getBytes(StandardCharsets.UTF_8));
+ String decryptedData = aesUtil.decryptToString(resource.getString("associated_data").getBytes(StandardCharsets.UTF_8), resource.getString("nonce").getBytes(StandardCharsets.UTF_8),
+ resource.getString("ciphertext"));
+ System.err.println("微信解密的字符串信息" + decryptedData);
+ JSONObject jsonInfo = (JSONObject) JSONObject.parse(decryptedData);
+ String code = jsonInfo.getString("out_trade_no");
+ String transaction_id = jsonInfo.getString("transaction_id");
+ String refund_status = jsonInfo.getString("refund_status");
+ String out_refund_no = jsonInfo.getString("out_refund_no");
+ if (refund_status.equals("SUCCESS")) {
+ WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper<WorldCupPayment>().eq("code", out_refund_no));
+ worldCupPayment.setRefundOrderNo(code);
+ worldCupPayment.setRefundTime(new Date());
+ worldCupPayment.setPayStatus(3);
+ worldCupPayment.setWorldCupId(null);
+ worldCupPaymentService.updateById(worldCupPayment);
+ PrintWriter out = response.getWriter();
+ out.write("SUCCESS");
+ out.flush();
+ out.close();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ /**
+ * 获取已报名人员列表
+ * @param registeredPersonnel
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/getRegisteredPersonnel")
+ public Map<String, Object> getRegisteredPersonnel(@RequestBody RegisteredPersonnel registeredPersonnel){
+ return worldCupPaymentParticipantService.getRegisteredPersonnel(registeredPersonnel);
+ }
+
+
+ /**
+ * 获取比赛排行榜列表数据
+ * @param worldCupRecords
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/worldCupRecordsList")
+ public Map<String, Object> worldCupRecordsList(@RequestBody WorldCupRecords worldCupRecords){
+ return worldCupCompetitorService.worldCupRecordsList(worldCupRecords);
+ }
+
+
+ /**
+ * 获取比赛统计
+ * @param worldCupGameStatistics
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/worldCupGameStatistics")
+ public Map<String, Object> worldCupGameStatistics(@RequestBody WorldCupGameStatistics worldCupGameStatistics){
+ return worldCupService.worldCupGameStatistics(worldCupGameStatistics);
+ }
+
+
+ /**
+ * 获取比赛统计详情列表
+ * @param worldCupGameStatisticsInfoList
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/worldCupGameStatisticsInfoList")
+ public Map<String, Object> worldCupGameStatisticsInfoList(@RequestBody WorldCupGameStatisticsInfoList worldCupGameStatisticsInfoList){
+ return worldCupCompetitorService.worldCupGameStatisticsInfoList(worldCupGameStatisticsInfoList);
+ }
+
+
+ /**
+ * 获取单场参赛详情列表
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/worldCupGameStatisticsListInfo")
+ public Map<String, Object> 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<String, Object> getUserGameRecordList(@RequestBody WorldCupGameStatisticsInfoList worldCupGameStatisticsInfoList){
+ return worldCupPaymentParticipantService.getUserGameRecordList(worldCupGameStatisticsInfoList);
+ }
+
+
+
+ /**
+ * 获取用户比赛记录明细
+ * @param userGameRecordList
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/userGameRecordList")
+ public Map<String, Object> userGameRecordList(@RequestBody UserGameRecordList userGameRecordList){
+ return worldCupCompetitorService.userGameRecordList(userGameRecordList);
+ }
+
+
+ /**
+ * 获取已报名人数
+ * @param worldCupId
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/worldCup/getRegisteredNumber")
+ public int getRegisteredNumber(@RequestBody Integer worldCupId){
+ List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", worldCupId)
+ .eq("payStatus", 2).eq("state", 1));
+ List<Long> 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<WorldCupPayment> getWorldCupPayment(@RequestBody GetWorldCupPayment getWorldCupPayment){
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String payType = getWorldCupPayment.getPayType();
+ List<WorldCupPayment> list = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().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;
+ }
+
+
+ @PostMapping("/worldCup/userDetailsOfSearch")
+ @ResponseBody
+ public List<WorldCupUserListVo> userDetailsOfSearch(@RequestBody UserDetailsOfSearch search){
+ // 已报名的用户
+ List<WorldCupPaymentParticipant> list = worldCupPaymentParticipantService.list(new LambdaQueryWrapper<WorldCupPaymentParticipant>().eq(WorldCupPaymentParticipant::getWorldCupId, search.getId())
+ );
+ ArrayList<WorldCupUserListVo> worldCupUserListVos = new ArrayList<>();
+ if(list.size()>0){
+ List<Long> collect = list.stream().map(WorldCupPaymentParticipant::getParticipantId).collect(Collectors.toList());
+ search.setUseIds(collect);
+ List<TStudent> appUsers = appUserClient.queryAppUserByIds(search);
+
+ for (TStudent appUser : appUsers) {
+ WorldCupUserListVo worldCupUserListVo = new WorldCupUserListVo();
+ WorldCupPaymentParticipant worldCupPaymentParticipant = list.stream().filter(e -> e.getParticipantId().toString().equals(appUser.getId().toString())).findFirst().orElse(null);
+ if(worldCupPaymentParticipant!=null){
+ worldCupUserListVo.setId(worldCupPaymentParticipant.getId().toString());
+ worldCupUserListVo.setName(appUser.getName());
+ worldCupUserListVo.setSex(appUser.getSex() !=null && appUser.getSex()==2?"女":"男");
+ worldCupUserListVo.setPhone(appUser.getPhone());
+ worldCupUserListVo.setIdCard(appUser.getIdCard());
+ // 当前日期和生日计算年龄
+ Date birthday = appUser.getBirthday();
+ LocalDate now = LocalDate.now();
+ if(birthday!=null){
+ int age = now.getYear() - (birthday.getYear()+1900);
+ worldCupUserListVo.setAge(age);
+ }
+ worldCupUserListVos.add(worldCupUserListVo);
+ }
+ }
+
+ }
+ return worldCupUserListVos;
+ }
+
+
+
+
+ @PostMapping("/worldCup/savaData1")
+ public void savaData1(@RequestBody SaveData saveData) throws ParseException {
+
+ WorldCup worldCup = worldCupService.getById(saveData.getId());
+
+ String redStr = saveData.getRedStr();
+ String blueStr = saveData.getBlueStr();
+ String[] red = redStr.split(",");
+ String[] blue = blueStr.split(",");
+ ArrayList<String> list = new ArrayList<>(red.length+blue.length);
+ list.addAll(Arrays.asList(red));
+ list.addAll(Arrays.asList(blue));
+ String time = saveData.getTime();
+ String[] split = time.split(" - ");
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date startTime = simpleDateFormat.parse(split[0]);
+ Date endTime = simpleDateFormat.parse(split[1]);
+ Integer blueScore = saveData.getBlueScore();
+ Integer redScore = saveData.getRedScore();
+ List<WorldCupPaymentParticipant> list1 = worldCupPaymentParticipantService.list(new LambdaQueryWrapper<WorldCupPaymentParticipant>().in(WorldCupPaymentParticipant::getId, list));
+ String code = UUIDUtil.getTimeStr() + UUIDUtil.getNumberRandom(3);
+ ArrayList<WorldCupCompetitor> worldCupCompetitors = new ArrayList<>(red.length + blue.length);
+ for (String s : blue) {
+ WorldCupPaymentParticipant worldCupPaymentParticipant = list1.stream().filter(e -> e.getId().toString().equals(s)).findFirst().orElse(null);
+ if(worldCupPaymentParticipant!=null){
+ WorldCupCompetitor worldCupCompetitor =new WorldCupCompetitor();
+ worldCupCompetitor.setCode(code);
+ worldCupCompetitor.setWorldCupId(saveData.getId().intValue());
+ worldCupCompetitor.setParticipantType(worldCupPaymentParticipant.getParticipantType());
+ worldCupCompetitor.setAppUserId(worldCupPaymentParticipant.getAppUserId());
+ worldCupCompetitor.setParticipantId(worldCupPaymentParticipant.getParticipantId());
+ worldCupCompetitor.setParticipant(1);
+ worldCupCompetitor.setStartTime(startTime);
+ worldCupCompetitor.setEndTime(endTime);
+ worldCupCompetitor.setOurScore(blueScore);
+ if(blueScore>redScore){
+ worldCupCompetitor.setMatchResult(1);
+ worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getWinIntegral());
+ vo.setType(7);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+ }
+ if(blueScore.equals(redScore)){
+ worldCupCompetitor.setMatchResult(0);
+ worldCupCompetitor.setDrawIntegral(worldCup.getDrawIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getDrawIntegral());
+ vo.setType(9);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+ }
+ if(blueScore<redScore){
+ worldCupCompetitor.setMatchResult(-1);
+ worldCupCompetitor.setLoseIntegral(worldCup.getLoseIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getLoseIntegral());
+ vo.setType(10);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+ }
+ worldCupCompetitor.setOpponentScore(redScore);
+ worldCupCompetitor.setParticipationIntegral(worldCup.getParticipationIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getParticipationIntegral());
+ vo.setType(6);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+
+ worldCupCompetitorService.save(worldCupCompetitor);
+ worldCupCompetitors.add(worldCupCompetitor);
+ }
+ }
+
+ for (String s : red) {
+ WorldCupPaymentParticipant worldCupPaymentParticipant = list1.stream().filter(e -> e.getId().toString().equals(s)).findFirst().orElse(null);
+ if(worldCupPaymentParticipant!=null){
+ WorldCupCompetitor worldCupCompetitor =new WorldCupCompetitor();
+ worldCupCompetitor.setCode(code);
+ worldCupCompetitor.setWorldCupId(saveData.getId().intValue());
+ worldCupCompetitor.setParticipantType(worldCupPaymentParticipant.getParticipantType());
+ worldCupCompetitor.setAppUserId(worldCupPaymentParticipant.getAppUserId());
+ worldCupCompetitor.setParticipantId(worldCupPaymentParticipant.getParticipantId());
+ worldCupCompetitor.setParticipant(2);
+ worldCupCompetitor.setStartTime(startTime);
+ worldCupCompetitor.setEndTime(endTime);
+ worldCupCompetitor.setOurScore(redScore);
+ if(redScore>blueScore){
+ worldCupCompetitor.setMatchResult(1);
+ worldCupCompetitor.setWinIntegral(worldCup.getWinIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getWinIntegral());
+ vo.setType(7);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+ }
+ if(blueScore.equals(redScore)){
+ worldCupCompetitor.setMatchResult(0);
+ worldCupCompetitor.setDrawIntegral(worldCup.getDrawIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getDrawIntegral());
+ vo.setType(9);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+ }
+ if(redScore<blueScore){
+ worldCupCompetitor.setMatchResult(-1);
+ worldCupCompetitor.setLoseIntegral(worldCup.getLoseIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getLoseIntegral());
+ vo.setType(10);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+ }
+ worldCupCompetitor.setOpponentScore(blueScore);
+ worldCupCompetitor.setParticipationIntegral(worldCup.getParticipationIntegral());
+ //增加积分明细
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(worldCupCompetitor.getAppUserId());
+ vo.setIntegral(worldCup.getParticipationIntegral());
+ vo.setType(6);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+
+ worldCupCompetitorService.save(worldCupCompetitor);
+ worldCupCompetitors.add(worldCupCompetitor);
+ }
+ }
+
+ //添加勋章
+ for (WorldCupCompetitor worldCupCompetitor : worldCupCompetitors) {
+ Integer appUserId = worldCupCompetitor.getAppUserId();
+ //常胜将军
+ if(1 == worldCupCompetitor.getMatchResult()){
+ int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>().eq("appUserId", appUserId).eq("matchResult", 1));
+ StudentHonor studentHonor = new StudentHonor();
+ studentHonor.setAppUserId(appUserId);
+ studentHonor.setHonorType(5);
+ studentHonor.setNumber(count);
+ studentHonorClient.saveStudentHonor(studentHonor);
+ }
+ //越战越勇
+ int count = worldCupCompetitorService.count(new QueryWrapper<WorldCupCompetitor>().eq("appUserId", appUserId));
+ StudentHonor studentHonor = new StudentHonor();
+ studentHonor.setAppUserId(appUserId);
+ studentHonor.setHonorType(6);
+ studentHonor.setNumber(count);
+ studentHonorClient.saveStudentHonor(studentHonor);
+ }
+
+ }
}
--
Gitblit v1.7.1