StudentOrderController.java 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881
  1. package com.ym.mec.student.controller;
  2. import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
  3. import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
  4. import io.swagger.annotations.Api;
  5. import io.swagger.annotations.ApiImplicitParam;
  6. import io.swagger.annotations.ApiImplicitParams;
  7. import io.swagger.annotations.ApiOperation;
  8. import java.io.IOException;
  9. import java.math.BigDecimal;
  10. import java.net.URLEncoder;
  11. import java.text.SimpleDateFormat;
  12. import java.util.ArrayList;
  13. import java.util.Arrays;
  14. import java.util.Calendar;
  15. import java.util.Comparator;
  16. import java.util.Date;
  17. import java.util.HashMap;
  18. import java.util.Iterator;
  19. import java.util.LinkedHashMap;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.Objects;
  23. import java.util.stream.Collectors;
  24. import javax.servlet.http.HttpServletResponse;
  25. import org.apache.commons.lang3.StringUtils;
  26. import org.slf4j.Logger;
  27. import org.slf4j.LoggerFactory;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.beans.factory.annotation.Value;
  30. import org.springframework.http.HttpStatus;
  31. import org.springframework.scheduling.annotation.EnableScheduling;
  32. import org.springframework.util.CollectionUtils;
  33. import org.springframework.util.DigestUtils;
  34. import org.springframework.web.bind.annotation.GetMapping;
  35. import org.springframework.web.bind.annotation.ModelAttribute;
  36. import org.springframework.web.bind.annotation.PostMapping;
  37. import org.springframework.web.bind.annotation.RequestMapping;
  38. import org.springframework.web.bind.annotation.RequestParam;
  39. import org.springframework.web.bind.annotation.RestController;
  40. import com.alibaba.fastjson.JSON;
  41. import com.alibaba.fastjson.JSONObject;
  42. import com.ym.mec.auth.api.client.SysUserFeignService;
  43. import com.ym.mec.auth.api.entity.SysUser;
  44. import com.ym.mec.biz.dal.dao.*;
  45. import com.ym.mec.biz.dal.dto.*;
  46. import com.ym.mec.biz.dal.entity.*;
  47. import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
  48. import com.ym.mec.biz.dal.enums.DealStatusEnum;
  49. import com.ym.mec.biz.dal.enums.GroupType;
  50. import com.ym.mec.biz.dal.enums.OrderTypeEnum;
  51. import com.ym.mec.biz.service.*;
  52. import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
  53. import com.ym.mec.common.controller.BaseController;
  54. import com.ym.mec.common.entity.HttpResponseResult;
  55. import com.ym.mec.common.page.PageInfo;
  56. import com.ym.mec.thirdparty.adapay.ConfigInit;
  57. import com.ym.mec.thirdparty.adapay.Payment;
  58. import com.ym.mec.thirdparty.yqpay.Msg;
  59. import com.ym.mec.util.date.DateUtil;
  60. import com.ym.mec.util.http.HttpUtil;
  61. import io.swagger.annotations.Api;
  62. import io.swagger.annotations.ApiImplicitParam;
  63. import io.swagger.annotations.ApiImplicitParams;
  64. import io.swagger.annotations.ApiOperation;
  65. import org.apache.commons.lang3.StringUtils;
  66. import org.slf4j.Logger;
  67. import org.slf4j.LoggerFactory;
  68. import org.springframework.beans.factory.annotation.Autowired;
  69. import org.springframework.beans.factory.annotation.Value;
  70. import org.springframework.http.HttpStatus;
  71. import org.springframework.scheduling.annotation.EnableScheduling;
  72. import org.springframework.util.CollectionUtils;
  73. import org.springframework.util.DigestUtils;
  74. import org.springframework.web.bind.annotation.*;
  75. import javax.servlet.http.HttpServletResponse;
  76. import java.io.IOException;
  77. import java.math.BigDecimal;
  78. import java.net.URLEncoder;
  79. import java.text.SimpleDateFormat;
  80. import java.util.*;
  81. import java.util.stream.Collectors;
  82. @RequestMapping("studentOrder")
  83. @Api(tags = "订单回调")
  84. @RestController
  85. @EnableScheduling
  86. public class StudentOrderController extends BaseController {
  87. private static final Logger logger = LoggerFactory.getLogger(StudentOrderController.class);
  88. @Autowired
  89. private StudentPaymentOrderService studentPaymentOrderService;
  90. @Autowired
  91. private VipGroupService vipGroupService;
  92. @Autowired
  93. private MusicGroupService musicGroupService;
  94. @Autowired
  95. private StudentPaymentOrderDetailService studentPaymentOrderDetailService;
  96. @Autowired
  97. private StudentPaymentOrderDao studentPaymentOrderDao;
  98. @Autowired
  99. private SysConfigDao sysConfigDao;
  100. @Autowired
  101. private SporadicChargeInfoService sporadicChargeInfoService;
  102. @Autowired
  103. private OrganizationDao organizationDao;
  104. @Autowired
  105. private CourseScheduleEvaluateDao courseScheduleEvaluateDao;
  106. @Autowired
  107. private TenantPaymentOrderService tenantPaymentOrderService;
  108. @Autowired
  109. private StudentGoodsSellDao studentGoodsSellDao;
  110. @Autowired
  111. private LuckDrawCountService luckDrawCountService;
  112. @Autowired
  113. private DegreeRegistrationDao degreeRegistrationDao;
  114. @Autowired
  115. private SysUserFeignService sysUserFeignService;
  116. @Autowired
  117. private MusicGroupPaymentCalenderDao musicGroupPaymentCalenderDao;
  118. @Autowired
  119. private MusicGroupPaymentCalenderCourseSettingsDao musicGroupPaymentCalenderCourseSettingsDao;
  120. @Autowired
  121. private ReplacementInstrumentActivityDao replacementInstrumentActivityDao;
  122. @Autowired
  123. private ChildrenDayDegreeDetailDao childrenDayDegreeDetailDao;
  124. @Autowired
  125. private CloudTeacherOrderService cloudTeacherOrderService;
  126. @Autowired
  127. private StudentRegistrationDao studentRegistrationDao;
  128. @Autowired
  129. private MemberRankPrivilegesService memberRankPrivilegesService;
  130. @Value("${spring.profiles.active:dev}")
  131. private String profiles;
  132. @ApiOperation(value = "查询订单列表")
  133. @GetMapping("/queryPage")
  134. public Object findGroupUsers(StudentPaymentOrderQueryInfo queryInfo) {
  135. SysUser user = sysUserFeignService.queryUserInfo();
  136. if (user == null) {
  137. return failed(HttpStatus.FORBIDDEN, "请登录");
  138. }
  139. queryInfo.setStudentId(user.getId());
  140. PageInfo<StudentPaymentOrderDto> studentPaymentOrderPageInfo = studentPaymentOrderService.OrderQueryPage(queryInfo);
  141. return succeed(studentPaymentOrderPageInfo);
  142. }
  143. @PostMapping("/notify")
  144. public Msg notify(@ModelAttribute Msg msg) throws Exception {
  145. logger.info(msg.toString());
  146. Map<String, Object> rqMap = new LinkedHashMap<String, Object>();
  147. rqMap.put("code", msg.getCode());
  148. rqMap.put("msg", msg.getMsg());
  149. rqMap.put("responseType", msg.getResponseType());
  150. rqMap.put("responseParameters", msg.getResponseParameters());
  151. rqMap.put("sign", msg.getSign());
  152. //boolean rs = YqPayUtil.verify(rqMap);
  153. msg.setMsg("fail");
  154. Map<String, String> notifyMap = new HashMap<>();
  155. //if (rs) {
  156. notifyMap = JSON.parseObject(msg.getResponseParameters(), Map.class);
  157. //}
  158. //支付中订单存在,更新状态
  159. if (msg.getResponseType().equals("1") && notifyMap.size() > 0) {
  160. String tradeState = msg.getCode().equals("88") ? "1" : "0";
  161. String channelType = notifyMap.get("channelType").equals("1") ? "WXPay" : (notifyMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
  162. notifyMap.put("tradeState", tradeState);
  163. notifyMap.put("totalMoney", notifyMap.get("payAmount"));
  164. notifyMap.put("merOrderNo", notifyMap.get("merMerOrderNo"));
  165. notifyMap.put("channelType", channelType);
  166. studentPaymentOrderService.updateOrder(notifyMap);
  167. msg.setCode("000000");
  168. msg.setMsg("success");
  169. }
  170. return msg;
  171. }
  172. @ApiOperation(value = "查询订单状态")
  173. @PostMapping("/checkOrderStatus")
  174. public Object checkOrderStatus(String orderNo) {
  175. if (StringUtils.isBlank(orderNo)) {
  176. return failed("请指定订单");
  177. }
  178. StudentPaymentOrder orderByOrderNo = studentPaymentOrderService.findOrderByOrderNo(orderNo);
  179. if (Objects.isNull(orderByOrderNo)) {
  180. return failed("未找到指定订单");
  181. }
  182. HashMap<String, Object> orderDetail = new HashMap<>();
  183. orderDetail.put("order", orderByOrderNo);
  184. orderDetail.put("groupType", orderByOrderNo.getGroupType());
  185. if(OrderTypeEnum.APPLY.equals(orderByOrderNo.getType())){
  186. StudentRegistration studentRegistration = studentRegistrationDao.getStudentRegister(orderByOrderNo.getMusicGroupId(),orderByOrderNo.getUserId());
  187. if(studentRegistration.getPayingStatus().equals(2)) {
  188. orderDetail.put("payingStatus",studentRegistration.getPayingStatus());
  189. }
  190. }
  191. if (orderByOrderNo.getGroupType().equals(GroupType.MUSIC)) {
  192. MusicGroup musicGroup = musicGroupService.get(orderByOrderNo.getMusicGroupId());
  193. List<Goods> goodsList = studentPaymentOrderDetailService.findApplyOrderGoods(orderByOrderNo.getId());
  194. List<String> orderDetailType = studentPaymentOrderDetailService.getOrderDetailType(orderByOrderNo.getId());
  195. List<StudentPaymentOrderDetail> orderDetail1 = studentPaymentOrderDetailService.getOrderDetail(orderByOrderNo.getId());
  196. String kitGroupPurchaseType = orderDetail1.stream().filter(e -> e.getGoodsList() != null).filter(e -> e.getKitGroupPurchaseType() != null).map(e -> e.getKitGroupPurchaseType().getCode()).collect(Collectors.joining(","));
  197. orderDetail.put("goods", goodsList);
  198. orderDetail.put("kitGroupPurchaseType", kitGroupPurchaseType);
  199. orderDetail.put("course", musicGroup.getCourseForm());
  200. orderDetail.put("ownershipType", musicGroup.getOwnershipType());
  201. orderDetail.put("detailType", orderDetailType);
  202. orderDetail.put("chargeTypeId", musicGroup.getChargeTypeId());
  203. orderDetail.put("courseViewType", musicGroup.getCourseViewType());
  204. //新的课程形态10.27
  205. MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(musicGroup.getId());
  206. if (musicGroupRegCalender != null) {
  207. List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.getMusicGroupRegCalenderCourseSettings(musicGroup.getId());
  208. musicGroupRegCalender.setMusicGroupPaymentCalenderCourseSettingsList(courseSettings);
  209. }
  210. orderDetail.put("calender", musicGroupRegCalender);
  211. //判断是否是系统收费
  212. if(musicGroup.getCourseViewType() == CourseViewTypeEnum.MEMBER_FEE){
  213. orderDetail.put("member", cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId()));
  214. }
  215. } else if (orderByOrderNo.getGroupType().equals(GroupType.VIP)) {
  216. VipBuyResultDto vipBuyResultInfo = vipGroupService.findVipBuyResultInfo(Integer.valueOf(orderByOrderNo.getMusicGroupId()));
  217. orderDetail.put("detail", vipBuyResultInfo);
  218. } else if (orderByOrderNo.getGroupType().equals(GroupType.SPORADIC)) {
  219. if (Objects.nonNull(orderByOrderNo.getMusicGroupId())) {
  220. SporadicChargeInfo info = sporadicChargeInfoService.get(Integer.valueOf(orderByOrderNo.getMusicGroupId()));
  221. orderDetail.put("detail", info);
  222. }
  223. if (orderByOrderNo.getType().equals(OrderTypeEnum.DOUBLE_ELEVEN2020)) {
  224. LuckDrawCount luckDrawCount = luckDrawCountService.get(orderByOrderNo.getUserId().longValue());
  225. orderDetail.put("drawTimes", luckDrawCount == null ? 0 : luckDrawCount.getAvailableCount());
  226. } else if (OrderTypeEnum.DEGREE_REGISTRATION.equals(orderByOrderNo.getType())) {
  227. DegreeRegistration degreeRegistration = degreeRegistrationDao.get(orderByOrderNo.getClassGroupId());
  228. orderDetail.put("degree", degreeRegistration);
  229. List<StudentPaymentOrderDetail> studentPaymentOrderDetails = studentPaymentOrderDetailService.getOrderDetail(orderByOrderNo.getId());
  230. if (!CollectionUtils.isEmpty(studentPaymentOrderDetails)) {
  231. orderDetail.put("additionCourseInfo", studentPaymentOrderDetails.get(0).getGoodsIdList());
  232. }
  233. }
  234. } else if (orderByOrderNo.getGroupType().equals(GroupType.GOODS_SELL)) {
  235. orderDetail.put("detail", studentGoodsSellDao.getStudentGoodsSellDto(orderNo));
  236. } else if (orderByOrderNo.getGroupType().equals(GroupType.REPLACEMENT)) {
  237. orderDetail.put("detail", replacementInstrumentActivityDao.getInfo(Integer.parseInt(orderByOrderNo.getMusicGroupId())));
  238. } else if (orderByOrderNo.getGroupType().equals(GroupType.DEGREE)) {
  239. orderDetail.put("detail", childrenDayDegreeDetailDao.getByOrderId(orderByOrderNo.getId()));
  240. }else if (orderByOrderNo.getGroupType().equals(GroupType.MEMBER)) {
  241. orderDetail.put("detail", cloudTeacherOrderService.queryOrderInfoByOrderId(orderByOrderNo.getId()));
  242. }
  243. return succeed(orderDetail);
  244. }
  245. @ApiOperation(value = "台牌支付")
  246. @PostMapping("/executePayment")
  247. @ApiImplicitParams({
  248. @ApiImplicitParam(name = "amount", value = "支付金额", required = true, dataType = "BigDecimal"),
  249. @ApiImplicitParam(name = "orderNo", value = "订单号", required = true, dataType = "String"),
  250. @ApiImplicitParam(name = "payChannel", value = "支付方式(alipay-支付宝app支付)", required = true, dataType = "String"),
  251. })
  252. public Object executePayment(BigDecimal amount, String orderNo, String payChannel, String notifyUrl, String returnUrl, String orderSubject, String orderBody, String sign, String code, String platform) throws Exception {
  253. Map<String, Object> signParams = new LinkedHashMap<>();
  254. signParams.put("appId", ConfigInit.appId);
  255. signParams.put("amount", amount.setScale(2, BigDecimal.ROUND_HALF_UP));
  256. signParams.put("orderNo", orderNo);
  257. // signParams.put("notifyUrl", notifyUrl);
  258. // signParams.put("returnUrl", returnUrl);
  259. signParams.put("orderSubject", orderSubject);
  260. signParams.put("orderBody", orderBody);
  261. signParams.put("wxAppId", ConfigInit.wxAppId);
  262. String originalStr = JSONObject.toJSONString(signParams);
  263. String mewSign = DigestUtils.md5DigestAsHex(originalStr.getBytes());
  264. if (!mewSign.equals(sign)) {
  265. return failed("请勿非法请求");
  266. }
  267. String openId = "";
  268. if (payChannel.equals("wx_pub")) {
  269. if (code == null || code.isEmpty()) {
  270. return failed("微信支付请先授权");
  271. }
  272. String wxMpOAuth2AccessTokenUrl = String.format(ConfigInit.wxMpOAuth2AccessTokenUrl, ConfigInit.wxAppId, ConfigInit.wxAppSecret, code);
  273. Map<String, String> weChatRes = JSON.parseObject(HttpUtil.get(wxMpOAuth2AccessTokenUrl, new HashMap<>()), Map.class);
  274. if (!weChatRes.containsKey("openid")) {
  275. return failed("授权失败,请重新授权");
  276. }
  277. openId = weChatRes.get("openid");
  278. }
  279. Date createTime = null;
  280. TenantPaymentOrder tenantPaymentOrder = null;
  281. StudentPaymentOrder studentPaymentOrder = null;
  282. if (platform != null && platform.equals("teacher")) {
  283. tenantPaymentOrder = tenantPaymentOrderService.queryByOrderNo(orderNo);
  284. } else {
  285. studentPaymentOrder = studentPaymentOrderService.findOrderByOrderNo(orderNo);
  286. }
  287. if (studentPaymentOrder == null && tenantPaymentOrder == null) {
  288. return failed("订单不存在");
  289. }
  290. if (studentPaymentOrder != null && !studentPaymentOrder.getStatus().equals(DealStatusEnum.ING)) {
  291. String msg = studentPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS) ? "订单已支付,请勿重复支付" : "订单已关闭,不能支付";
  292. return failed(msg);
  293. }
  294. if (tenantPaymentOrder != null && !tenantPaymentOrder.getStatus().equals(DealStatusEnum.ING)) {
  295. String msg = tenantPaymentOrder.getStatus().equals(DealStatusEnum.SUCCESS) ? "订单已支付,请勿重复支付" : "订单已关闭,不能支付";
  296. return failed(msg);
  297. }
  298. if (studentPaymentOrder != null) {
  299. createTime = studentPaymentOrder.getCreateTime();
  300. } else {
  301. createTime = tenantPaymentOrder.getCreateTime();
  302. }
  303. Calendar beforeTime = Calendar.getInstance();
  304. beforeTime.add(Calendar.MINUTE, -28);// 28 分钟之前的时间
  305. Date beforeDate = beforeTime.getTime();
  306. if (createTime.before(beforeDate)) {
  307. return failed("订单已超时,请重新下单");
  308. }
  309. Date expireDate = DateUtil.addMinutes(createTime, 30);
  310. String timeExpire = new SimpleDateFormat("yyyyMMddHHmmss").format(expireDate);
  311. Map<String, Object> paymentParams = new HashMap<>();
  312. paymentParams.put("app_id", ConfigInit.appId);
  313. paymentParams.put("order_no", orderNo);
  314. paymentParams.put("pay_channel", payChannel);
  315. paymentParams.put("pay_amt", amount.setScale(2, BigDecimal.ROUND_HALF_UP));
  316. paymentParams.put("goods_title", orderSubject);
  317. paymentParams.put("goods_desc", orderBody);
  318. paymentParams.put("time_expire", timeExpire);
  319. paymentParams.put("pay_mode", "delay");
  320. //延时分账时不需要
  321. // List<StudentPaymentRouteOrder> routeOrders = studentPaymentRouteOrderDao.getRouteOrders(orderNo);
  322. // List<Map<String, Object>> divMembers = new ArrayList<>();
  323. // for (StudentPaymentRouteOrder routeOrder : routeOrders) {
  324. // Map<String, Object> divMember = new HashMap<>();
  325. // divMember.put("member_id", routeOrder.getMerNo());//分佣账户
  326. // divMember.put("amount", routeOrder.getRouteAmount().setScale(2, BigDecimal.ROUND_HALF_UP));//分佣金额
  327. // divMember.put("fee_flag", routeOrder.getFeeFlag());
  328. // if (routeOrder.getMerNo().equals(ConfigInit.merNo)) {
  329. // divMember.put("member_id", 0);
  330. // }
  331. // divMembers.add(divMember);
  332. // }
  333. // if (divMembers.size() > 0) {
  334. // paymentParams.put("div_members", JSON.toJSONString(divMembers));
  335. // }
  336. Map<String, Object> expendParams = new HashMap<>(5);
  337. expendParams.put("open_id", openId);
  338. expendParams.put("is_raw", "1");
  339. expendParams.put("callback_url", returnUrl);
  340. expendParams.put("limit_pay", "1");
  341. paymentParams.put("expend", expendParams);
  342. Map<String, Object> payment = Payment.executePayment(paymentParams);
  343. if (studentPaymentOrder != null) {
  344. studentPaymentOrder.setTransNo((String) payment.get("id"));
  345. studentPaymentOrderService.update(studentPaymentOrder);
  346. } else {
  347. tenantPaymentOrder.setTransNo((String) payment.get("id"));
  348. tenantPaymentOrderService.update(tenantPaymentOrder);
  349. }
  350. return succeed(payment);
  351. }
  352. @GetMapping("/authorize")
  353. public String authorize(@RequestParam("returnUrl") String returnUrl) {
  354. String appId = "wxcf8e8b33a9477845";
  355. String url = URLEncoder.encode("http://wxwechat.utools.club/studentOrder/userInfo");
  356. String redirectURL = String.format("https://open.weixin.qq.com/connect/oauth2/authorize?appid=%s&redirect_uri=%s&response_type=code&scope=snsapi_base&state=1&connect_redirect=1#wechat_redirect",
  357. appId, url);
  358. return "redirect:" + redirectURL;
  359. }
  360. @GetMapping("/userInfo")
  361. public Object userInfo(@RequestParam("code") String code,
  362. @RequestParam("state") String returnUrl) throws Exception {
  363. String appId = "wxcf8e8b33a9477845";
  364. String appSecret = "1286452b9c68b13325dece7cdf892645";
  365. String wxMpOAuth2AccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code";
  366. wxMpOAuth2AccessTokenUrl = String.format(wxMpOAuth2AccessTokenUrl, appId, appSecret, code);
  367. Map<String, String> map = JSON.parseObject(HttpUtil.get(wxMpOAuth2AccessTokenUrl, new HashMap<>()), Map.class);
  368. if (!map.containsKey("openid")) {
  369. return failed("授权失败,请重新授权");
  370. }
  371. return map.get("openid");
  372. }
  373. // @Scheduled(cron = "0/30 * * * * ?")
  374. @GetMapping("/setSuccessStatus")
  375. public HttpResponseResult setSuccessStatus(String orderNo) throws Exception {
  376. if (!profiles.equals("dev") && !profiles.equals("test")) {
  377. return failed("非法操作");
  378. }
  379. List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "ADAPAY");
  380. String[] statusArr = {"0", "1", "7"};
  381. for (StudentPaymentOrder payingOrder : payingOrders) {
  382. if (StringUtils.isNotBlank(orderNo) && !orderNo.equals(payingOrder.getOrderNo())) {
  383. continue;
  384. }
  385. Map<String, String> rpMap = new HashMap<>();
  386. rpMap.put("tradeState", "1");
  387. rpMap.put("remarks", "模拟支付成功");
  388. rpMap.put("merOrderNo", payingOrder.getOrderNo());
  389. rpMap.put("orderNo", payingOrder.getOrderNo());
  390. rpMap.put("channelType", "1");
  391. rpMap.put("simulation", "1");
  392. String channelType = rpMap.get("channelType").equals("1") ? "WXPay" : (rpMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
  393. rpMap.put("channelType", channelType);
  394. if (Arrays.asList(statusArr).contains(rpMap.get("tradeState"))) {
  395. try {
  396. studentPaymentOrderService.updateOrder(rpMap); //更新订单
  397. } catch (Exception e) {
  398. e.printStackTrace();
  399. continue;
  400. }
  401. }
  402. }
  403. return succeed();
  404. }
  405. @GetMapping("/getOrderStatus")
  406. private HttpResponseResult getOrderStatus(String transNo) throws Exception {
  407. // if (orderId == null) {
  408. // return failed("订单号必须填");
  409. // }
  410. // StudentPaymentOrder order = studentPaymentOrderService.get(orderId);
  411. // if(order == null){
  412. // return failed("订单不存在");
  413. // }
  414. Map<String, Object> payment = Payment.queryPayment(transNo);
  415. return succeed(payment);
  416. }
  417. @RequestMapping("paymentResult")
  418. public void paymentResult(HttpServletResponse response, String orderNo, String type) {
  419. try {
  420. String baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.BASE_API_URL);
  421. if (type != null && type.equals("edu")) {
  422. baseApiUrl = sysConfigDao.findConfigValue(SysConfigService.EDU_TEACHER_BASE_URL);
  423. }
  424. response.sendRedirect(baseApiUrl + "/#/paymentresult?orderNo=" + orderNo);
  425. } catch (IOException e) {
  426. e.printStackTrace();
  427. }
  428. }
  429. @GetMapping("/getLuckStatis")
  430. public HttpResponseResult getLuckStatis() {
  431. List<Organization> organs = organizationDao.findAllOrgans();
  432. List<OrderStatisDto> orders = studentPaymentOrderDao.getLuckStatis();
  433. for (Organization organ : organs) {
  434. boolean flag = false;
  435. for (OrderStatisDto order : orders) {
  436. if (organ.getName().equals(order.getOrganName())) {
  437. flag = true;
  438. break;
  439. }
  440. }
  441. if (!flag) {
  442. OrderStatisDto orderStatisDto = new OrderStatisDto();
  443. orderStatisDto.setOrganName(organ.getName());
  444. orderStatisDto.setMoney(BigDecimal.ZERO);
  445. orderStatisDto.setNums(0);
  446. orders.add(orderStatisDto);
  447. }
  448. }
  449. BigDecimal totalMoney = BigDecimal.ZERO;
  450. Integer totalNum = 0;
  451. Iterator<OrderStatisDto> iterator = orders.iterator();
  452. while (iterator.hasNext()) {
  453. OrderStatisDto order = iterator.next();
  454. if (order.getOrganName().equals("总部国际") || order.getOrganName().equals("阳光总部国际") || order.getOrganName().equals("武汉小学")) {
  455. iterator.remove();
  456. continue;
  457. }
  458. totalMoney = totalMoney.add(order.getMoney());
  459. totalNum += order.getNums();
  460. }
  461. orders = orders.stream().sorted(Comparator.comparing(OrderStatisDto::getNums).reversed()).collect(Collectors.toList());
  462. LuckStatisDto luckStatisDto = new LuckStatisDto();
  463. luckStatisDto.setOrderStatisDtoList(orders);
  464. luckStatisDto.setTotalNum(totalNum);
  465. luckStatisDto.setTotalMoney(totalMoney);
  466. return succeed(luckStatisDto);
  467. }
  468. @GetMapping("/getPracticeGroupStatis")
  469. public HttpResponseResult getPracticeGroupStatis() {
  470. List<Organization> organs = organizationDao.findAllOrgans();
  471. List<PracticeGroupsDto> hasReportNums = courseScheduleEvaluateDao.getHasReportNums();
  472. List<PracticeGroupsDto> organMoneys = courseScheduleEvaluateDao.getOrganMoney();
  473. List<PracticeGroupsDto> organPracticeGroups = courseScheduleEvaluateDao.getOrganPracticeGroups();
  474. List<PracticeGroupsDto> practiceGroupsFrees = courseScheduleEvaluateDao.getPracticeGroupsFree();
  475. List<PracticeGroupsDto> practiceGroupsBuys = courseScheduleEvaluateDao.getPracticeGroupsBuy();
  476. List<PracticeGroupsDto> practiceGroupsRenews = courseScheduleEvaluateDao.getPracticeGroupsRenew();
  477. Date startTime = DateUtil.getFirstDayOfMonth(new Date());
  478. List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY, startTime);
  479. List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW, startTime);
  480. //List<PracticeGroupsDto> monthOrganBuyMoneys = courseScheduleEvaluateDao.getOrganNewPracticeGroupsOfMonth(OrderTypeEnum.PRACTICE_GROUP_BUY,startTime);
  481. //List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getOrganNewPracticeGroupsOfMonth(OrderTypeEnum.PRACTICE_GROUP_RENEW,startTime);
  482. List<PracticeGroupsDto> practiceGroups = new ArrayList<>();
  483. for (Organization organ : organs) {
  484. PracticeGroupsDto practiceGroupsDto = new PracticeGroupsDto();
  485. practiceGroupsDto.setOrganName(organ.getName());
  486. practiceGroupsDto.setOrganId(organ.getId());
  487. //体验人数
  488. for (PracticeGroupsDto practiceGroupsFree : practiceGroupsFrees) {
  489. if (organ.getId().equals(practiceGroupsFree.getOrganId())) {
  490. practiceGroupsDto.setTotalNums(practiceGroupsFree.getTotalNums());
  491. break;
  492. }
  493. }
  494. //购买人数
  495. for (PracticeGroupsDto practiceGroupsBuy : practiceGroupsBuys) {
  496. if (organ.getId().equals(practiceGroupsBuy.getOrganId())) {
  497. practiceGroupsDto.setBuyNums(practiceGroupsBuy.getBuyNums());
  498. break;
  499. }
  500. }
  501. //续费人数
  502. for (PracticeGroupsDto practiceGroupsRenew : practiceGroupsRenews) {
  503. if (organ.getId().equals(practiceGroupsRenew.getOrganId())) {
  504. practiceGroupsDto.setRenewNums(practiceGroupsRenew.getRenewNums());
  505. break;
  506. }
  507. }
  508. //已完成人数
  509. for (PracticeGroupsDto organPracticeGroup : organPracticeGroups) {
  510. if (organ.getId().equals(organPracticeGroup.getOrganId()) && organPracticeGroup.getBuyNums() >= organPracticeGroup.getTotalNums()) {
  511. practiceGroupsDto.setOverNums(practiceGroupsDto.getOverNums() + 1);
  512. }
  513. }
  514. //已提交报告人数
  515. for (PracticeGroupsDto hasReportNum : hasReportNums) {
  516. if (organ.getId().equals(hasReportNum.getOrganId())) {
  517. practiceGroupsDto.setReportNums(hasReportNum.getReportNums());
  518. break;
  519. }
  520. }
  521. //成交金额
  522. for (PracticeGroupsDto organMoney : organMoneys) {
  523. if (organ.getId().equals(organMoney.getOrganId())) {
  524. practiceGroupsDto.setTotalMoney(organMoney.getTotalMoney());
  525. break;
  526. }
  527. }
  528. //当月新增金额和人数
  529. for (PracticeGroupsDto monthOrganBuyMoney : monthOrganBuyMoneys) {
  530. if (organ.getId().equals(monthOrganBuyMoney.getOrganId())) {
  531. practiceGroupsDto.setMonthBuyMoney(monthOrganBuyMoney.getTotalMoney());
  532. practiceGroupsDto.setMonthBuyNums(monthOrganBuyMoney.getBuyNums());
  533. break;
  534. }
  535. }
  536. //当月续费金额和人数
  537. for (PracticeGroupsDto monthOrganRenewMoney : monthOrganRenewMoneys) {
  538. if (organ.getId().equals(monthOrganRenewMoney.getOrganId())) {
  539. practiceGroupsDto.setMonthRenewNums(monthOrganRenewMoney.getBuyNums());
  540. practiceGroupsDto.setMonthRenewMoney(monthOrganRenewMoney.getTotalMoney());
  541. break;
  542. }
  543. }
  544. if (practiceGroupsDto.getTotalNums() > 0) {
  545. double scale = new BigDecimal(practiceGroupsDto.getBuyNums()).multiply(new BigDecimal(100)).divide(new BigDecimal(practiceGroupsDto.getTotalNums()), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
  546. practiceGroupsDto.setBuyScale(scale);
  547. }
  548. practiceGroups.add(practiceGroupsDto);
  549. }
  550. BigDecimal totalMoney = BigDecimal.ZERO;
  551. Integer totalNum = 0;
  552. Integer buyNum = 0;
  553. Integer renewNum = 0;
  554. Integer overNum = 0;
  555. Integer reportNum = 0;
  556. Integer monthBuyNums = 0;
  557. Integer monthRenewNums = 0;
  558. BigDecimal monthBuyMoney = BigDecimal.ZERO;
  559. BigDecimal monthRenewMoney = BigDecimal.ZERO;
  560. Iterator<PracticeGroupsDto> iterator = practiceGroups.iterator();
  561. while (iterator.hasNext()) {
  562. PracticeGroupsDto next = iterator.next();
  563. if (next.getOrganName().equals("总部国际") || next.getOrganName().equals("阳光总部国际") || next.getOrganName().equals("武汉小学")) {
  564. iterator.remove();
  565. continue;
  566. }
  567. totalMoney = totalMoney.add(next.getTotalMoney());
  568. totalNum += next.getTotalNums();
  569. overNum += next.getOverNums();
  570. buyNum += next.getBuyNums();
  571. reportNum += next.getReportNums();
  572. renewNum += next.getRenewNums();
  573. monthBuyNums += next.getMonthBuyNums();
  574. monthRenewNums += next.getMonthRenewNums();
  575. monthBuyMoney = monthBuyMoney.add(next.getMonthBuyMoney());
  576. monthRenewMoney = monthRenewMoney.add(next.getMonthRenewMoney());
  577. }
  578. practiceGroups = practiceGroups.stream().sorted(Comparator.comparingDouble(PracticeGroupsDto::getBuyScale).reversed()).collect(Collectors.toList());
  579. PracticeGroupStatisDto practiceGroupStatisDto = new PracticeGroupStatisDto();
  580. practiceGroupStatisDto.setPracticeGroupsDtoList(practiceGroups);
  581. practiceGroupStatisDto.setTotalMoney(totalMoney);
  582. practiceGroupStatisDto.setTotalNum(totalNum);
  583. practiceGroupStatisDto.setBuyNum(buyNum);
  584. practiceGroupStatisDto.setRenewNum(renewNum);
  585. practiceGroupStatisDto.setOverNum(overNum);
  586. practiceGroupStatisDto.setReportNum(reportNum);
  587. practiceGroupStatisDto.setMonthBuyNums(monthBuyNums);
  588. practiceGroupStatisDto.setMonthBuyMoney(monthBuyMoney);
  589. practiceGroupStatisDto.setMonthRenewNums(monthRenewNums);
  590. practiceGroupStatisDto.setMonthRenewMoney(monthRenewMoney);
  591. if (totalNum > 0) {
  592. BigDecimal scale = new BigDecimal(buyNum).multiply(new BigDecimal(100)).divide(new BigDecimal(totalNum), 2, BigDecimal.ROUND_HALF_UP);
  593. practiceGroupStatisDto.setBuyScale(scale);
  594. }
  595. return succeed(practiceGroupStatisDto);
  596. }
  597. @GetMapping("/getPracticeStatis")
  598. public HttpResponseResult getPracticeStatis() {
  599. Date nowDate = new Date();
  600. List<Organization> organs = organizationDao.findAllOrgans();
  601. //除去禁止的体验人数
  602. // List<Practice4OrganDto> organTryNums = courseScheduleEvaluateDao.getTryNums();
  603. // List<Practice4OrganDto> organPracticeTryNums = courseScheduleEvaluateDao.getPracticeTryNums();
  604. // List<Practice4OrganDto> organVipTryNums = courseScheduleEvaluateDao.getVipTryNums();
  605. // List<Practice4OrganDto> organPracticeAndVipTryNums = courseScheduleEvaluateDao.getPracticeAndVipTryNums();
  606. List<Practice4OrganDto> allTryNums = courseScheduleEvaluateDao.getAllTryNums();
  607. List<Practice4OrganDto> practiceBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(nowDate, null);
  608. List<Practice4OrganDto> vipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(nowDate, null);
  609. List<Practice4OrganDto> practiceAndVipBuyNums = courseScheduleEvaluateDao.getPracticeAndVipNums(nowDate, null);
  610. Date startTime = DateUtil.getFirstDayOfMonth(nowDate);
  611. Date endTime = DateUtil.addMonths(startTime, 1);
  612. //当月新增网管课人数
  613. List<PracticeGroupsDto> monthOrganPracticeBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_BUY, startTime);
  614. //当月新增VIP人数
  615. List<PracticeGroupsDto> monthOrganVipBuyMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.SMALL_CLASS_TO_BUY, startTime);
  616. //当月续费人数
  617. List<PracticeGroupsDto> monthOrganRenewMoneys = courseScheduleEvaluateDao.getMonthOrganMoney(OrderTypeEnum.PRACTICE_GROUP_RENEW, startTime);
  618. //本月总人数
  619. List<Practice4OrganDto> nowMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(startTime, endTime);
  620. List<Practice4OrganDto> nowMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(startTime, endTime);
  621. List<Practice4OrganDto> nowMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeAndVipNums(startTime, endTime);
  622. //上月总人数
  623. Date lastMonthStartTime = DateUtil.addMonths(startTime, -1);
  624. List<Practice4OrganDto> lastMonthPracticeBuyNums = courseScheduleEvaluateDao.getPracticeBuyNums(lastMonthStartTime, startTime);
  625. List<Practice4OrganDto> lastMonthVipBuyNums = courseScheduleEvaluateDao.getVipBuyNums(lastMonthStartTime, startTime);
  626. List<Practice4OrganDto> lastMonthPracticeAndVipBuyNums = courseScheduleEvaluateDao.getPracticeAndVipNums(lastMonthStartTime, startTime);
  627. List<Practice4OrganDto> practice4Organs = new ArrayList<>();
  628. for (Organization organ : organs) {
  629. Practice4OrganDto practice4OrganDto = new Practice4OrganDto();
  630. practice4OrganDto.setOrganName(organ.getName());
  631. practice4OrganDto.setOrganId(organ.getId());
  632. //体验人数(除去禁止)
  633. // for (Practice4OrganDto organTryNum : organTryNums) {
  634. // if (organ.getId().equals(organTryNum.getOrganId())) {
  635. // practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() + organTryNum.getTryNum());
  636. // break;
  637. // }
  638. // }
  639. // //网管课体验人数(禁止)
  640. // for (Practice4OrganDto organPracticeTryNum : organPracticeTryNums) {
  641. // if (organ.getId().equals(organPracticeTryNum.getOrganId())) {
  642. // practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() + organPracticeTryNum.getTryNum());
  643. // break;
  644. // }
  645. // }
  646. // //vip课体验人数(禁止)
  647. // for (Practice4OrganDto organVipTryNum : organVipTryNums) {
  648. // if (organ.getId().equals(organVipTryNum.getOrganId())) {
  649. // practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() + organVipTryNum.getTryNum());
  650. // break;
  651. // }
  652. // }
  653. // //减去vip中在网管课的人数
  654. // for (Practice4OrganDto organPracticeAndVipTryNum : organPracticeAndVipTryNums) {
  655. // if (organ.getId().equals(organPracticeAndVipTryNum.getOrganId())) {
  656. // practice4OrganDto.setTryNum(practice4OrganDto.getTryNum() - organPracticeAndVipTryNum.getTryNum());
  657. // break;
  658. // }
  659. // }
  660. for (Practice4OrganDto allTryNum : allTryNums) {
  661. if (organ.getId().equals(allTryNum.getOrganId())) {
  662. practice4OrganDto.setTryNum(allTryNum.getTryNum());
  663. }
  664. }
  665. //网管课转化人数
  666. for (Practice4OrganDto practiceBuyNum : practiceBuyNums) {
  667. if (organ.getId().equals(practiceBuyNum.getOrganId())) {
  668. practice4OrganDto.setPracticeNum(practiceBuyNum.getPracticeNum());
  669. break;
  670. }
  671. }
  672. //VIP课转化人数
  673. for (Practice4OrganDto vipBuyNum : vipBuyNums) {
  674. if (organ.getId().equals(vipBuyNum.getOrganId())) {
  675. practice4OrganDto.setVipNum(vipBuyNum.getVipNum());
  676. break;
  677. }
  678. }
  679. for (Practice4OrganDto practiceAndVipBuyNum : practiceAndVipBuyNums) {
  680. if (organ.getId().equals(practiceAndVipBuyNum.getOrganId())) {
  681. practice4OrganDto.setVipNum(practice4OrganDto.getVipNum() - practiceAndVipBuyNum.getPracticeNum());
  682. break;
  683. }
  684. }
  685. practice4OrganDto.setTotalNum(practice4OrganDto.getPracticeNum() + practice4OrganDto.getVipNum());
  686. //当月新增网管课人数
  687. for (PracticeGroupsDto monthOrganPracticeBuyMoney : monthOrganPracticeBuyMoneys) {
  688. if (organ.getId().equals(monthOrganPracticeBuyMoney.getOrganId())) {
  689. practice4OrganDto.setPractice4MonthNum(monthOrganPracticeBuyMoney.getBuyNums());
  690. practice4OrganDto.setTotalMoney(practice4OrganDto.getTotalMoney().add(monthOrganPracticeBuyMoney.getTotalMoney()));
  691. break;
  692. }
  693. }
  694. //当月新增VIP课人数
  695. for (PracticeGroupsDto monthOrganVipBuyMoney : monthOrganVipBuyMoneys) {
  696. if (organ.getId().equals(monthOrganVipBuyMoney.getOrganId())) {
  697. practice4OrganDto.setVip4MonthNum(monthOrganVipBuyMoney.getBuyNums());
  698. practice4OrganDto.setTotalMoney(practice4OrganDto.getTotalMoney().add(monthOrganVipBuyMoney.getTotalMoney()));
  699. break;
  700. }
  701. }
  702. //当月续费人数
  703. for (PracticeGroupsDto monthOrganRenewMoney : monthOrganRenewMoneys) {
  704. if (organ.getId().equals(monthOrganRenewMoney.getOrganId())) {
  705. practice4OrganDto.setRenew4MonthNum(monthOrganRenewMoney.getBuyNums());
  706. practice4OrganDto.setTotalMoney(practice4OrganDto.getTotalMoney().add(monthOrganRenewMoney.getTotalMoney()));
  707. break;
  708. }
  709. }
  710. //同比上月增减人数
  711. for (Practice4OrganDto nowMonthPracticeBuyNum : nowMonthPracticeBuyNums) {
  712. if (organ.getId().equals(nowMonthPracticeBuyNum.getOrganId())) {
  713. practice4OrganDto.setChange4MonthNum(nowMonthPracticeBuyNum.getPracticeNum());
  714. break;
  715. }
  716. }
  717. for (Practice4OrganDto nowMonthVipBuyNum : nowMonthVipBuyNums) {
  718. if (organ.getId().equals(nowMonthVipBuyNum.getOrganId())) {
  719. practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() + nowMonthVipBuyNum.getVipNum());
  720. break;
  721. }
  722. }
  723. for (Practice4OrganDto nowMonthPracticeAndVipBuyNum : nowMonthPracticeAndVipBuyNums) {
  724. if (organ.getId().equals(nowMonthPracticeAndVipBuyNum.getOrganId())) {
  725. practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() - nowMonthPracticeAndVipBuyNum.getPracticeNum());
  726. break;
  727. }
  728. }
  729. //上月人数
  730. for (Practice4OrganDto lastMonthPracticeBuyNum : lastMonthPracticeBuyNums) {
  731. if (organ.getId().equals(lastMonthPracticeBuyNum.getOrganId())) {
  732. practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() - lastMonthPracticeBuyNum.getPracticeNum());
  733. break;
  734. }
  735. }
  736. for (Practice4OrganDto lastMonthVipBuyNum : lastMonthVipBuyNums) {
  737. if (organ.getId().equals(lastMonthVipBuyNum.getOrganId())) {
  738. practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() - lastMonthVipBuyNum.getVipNum());
  739. break;
  740. }
  741. }
  742. for (Practice4OrganDto lastMonthPracticeAndVipBuyNum : lastMonthPracticeAndVipBuyNums) {
  743. if (organ.getId().equals(lastMonthPracticeAndVipBuyNum.getOrganId())) {
  744. practice4OrganDto.setChange4MonthNum(practice4OrganDto.getChange4MonthNum() + lastMonthPracticeAndVipBuyNum.getPracticeNum());
  745. break;
  746. }
  747. }
  748. if (practice4OrganDto.getTryNum() > 0) {
  749. double scale = new BigDecimal(practice4OrganDto.getTotalNum()).multiply(new BigDecimal(100)).divide(new BigDecimal(practice4OrganDto.getTryNum()), 2, BigDecimal.ROUND_HALF_UP).doubleValue();
  750. practice4OrganDto.setScale(scale);
  751. }
  752. practice4Organs.add(practice4OrganDto);
  753. }
  754. practice4Organs = practice4Organs.stream().sorted(Comparator.comparingDouble(Practice4OrganDto::getScale).reversed()).collect(Collectors.toList());
  755. return succeed(practice4Organs);
  756. }
  757. @GetMapping("/getUserApplyOrders")
  758. public HttpResponseResult<List<StudentPaymentOrderExportDto>> getUserApplyOrders(String musicGroupId) {
  759. SysUser sysUser = sysUserFeignService.queryUserInfo();
  760. if (sysUser == null) {
  761. return failed(HttpStatus.FORBIDDEN, "请登录");
  762. }
  763. return succeed(studentPaymentOrderService.getUserApplyOrders(sysUser.getId(), musicGroupId));
  764. }
  765. @GetMapping("/reConfirmOrder")
  766. public HttpResponseResult<List<StudentPaymentOrder>> reConfirmOrder(Date startTime, Date endTime) {
  767. if (!profiles.equals("prod")) {
  768. return failed("测试环境不支持");
  769. }
  770. return succeed(studentPaymentOrderService.reConfirmOrder(startTime, endTime));
  771. }
  772. @GetMapping("/getMusicGroupApplyCalender")
  773. public HttpResponseResult<MusicGroupPaymentCalender> getMusicGroupApplyCalender(String musicGroupId) {
  774. MusicGroupPaymentCalender musicGroupRegCalender = musicGroupPaymentCalenderDao.getMusicGroupRegCalender(musicGroupId);
  775. if (musicGroupRegCalender != null) {
  776. MusicGroup musicGroup = musicGroupService.get(musicGroupId);
  777. musicGroupRegCalender.setChargeTypeId(musicGroup.getChargeTypeId());
  778. List<MusicGroupPaymentCalenderCourseSettings> courseSettings = musicGroupPaymentCalenderCourseSettingsDao.getMusicGroupRegCalenderCourseSettings(musicGroupId);
  779. musicGroupRegCalender.setMusicGroupPaymentCalenderCourseSettingsList(courseSettings);
  780. musicGroupRegCalender.setCourseViewType(musicGroup.getCourseViewType());
  781. }
  782. return succeed(musicGroupRegCalender);
  783. }
  784. @GetMapping("confirmTeacherOrder")
  785. public Object confirmOrder(String orderNo){
  786. TenantPaymentOrder tenantPaymentOrder = tenantPaymentOrderService.queryByOrderNo(orderNo);
  787. tenantPaymentOrderService.confirmOrder(tenantPaymentOrder);
  788. return succeed();
  789. }
  790. }