|
@@ -3,10 +3,7 @@ package com.ym.mec.collectfee.controller;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.ym.mec.collectfee.common.web.BaseController;
|
|
|
-import com.ym.mec.collectfee.entity.Account;
|
|
|
-import com.ym.mec.collectfee.entity.CourseGroupInfo;
|
|
|
-import com.ym.mec.collectfee.entity.Instrument;
|
|
|
-import com.ym.mec.collectfee.entity.Order;
|
|
|
+import com.ym.mec.collectfee.entity.*;
|
|
|
import com.ym.mec.collectfee.service.*;
|
|
|
import com.ym.mec.collectfee.utils.GenerateNum;
|
|
|
import com.ym.mec.collectfee.utils.yqpay.*;
|
|
@@ -27,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
import springfox.documentation.annotations.ApiIgnore;
|
|
|
|
|
|
import java.io.InputStreamReader;
|
|
|
+import java.io.SyncFailedException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
|
|
@@ -51,7 +49,7 @@ public class YqPayController extends BaseController {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 统一下单
|
|
|
+ * 统一下单(乐团缴费)
|
|
|
*
|
|
|
* @return String
|
|
|
* @throws Exception
|
|
@@ -59,22 +57,65 @@ public class YqPayController extends BaseController {
|
|
|
@ApiOperation(value = "提交支付", notes = "易乾支付统一下单")
|
|
|
@PostMapping("/toPay")
|
|
|
@Transactional
|
|
|
- public Map toPay(@ModelAttribute @Validated Order order) throws Exception {
|
|
|
+ public Object toPay(@ModelAttribute @Validated Order order) throws Exception {
|
|
|
+ BigDecimal amount = new BigDecimal("0");
|
|
|
+ //1、判断已报名人数
|
|
|
+ CourseGroupInfo courseGroupInfo = CourseGroupInfoService.get(order.getCourseId());
|
|
|
+ if (courseGroupInfo.getRegNum() >= courseGroupInfo.getPlanNum()) {
|
|
|
+ return failed("乐团人数暂时已满,请稍后再试");
|
|
|
+ }
|
|
|
|
|
|
- //2、判断已报名人数
|
|
|
- CourseGroupInfo courseGroupInfo = CourseGroupInfoService.get(order.getCourse_id());
|
|
|
+ //课程组价格
|
|
|
+ BigDecimal courseFee = courseGroupInfo.getFeeAmount();
|
|
|
+ amount = amount.add(courseFee);
|
|
|
+
|
|
|
+ ClassPathResource classPathResource = new ClassPathResource("instruments.json");
|
|
|
+
|
|
|
+ BigDecimal instrumentPrice = new BigDecimal("0");//乐器价格
|
|
|
+ String instrumentName = "";//乐器名称
|
|
|
+
|
|
|
+ //获取乐器的价格
|
|
|
+ String instrumentId = order.getInstrument();
|
|
|
+ String jsonString = IOUtils.toString(new InputStreamReader(classPathResource.getInputStream(), "UTF-8"));
|
|
|
+ Instrument instrument = JSONObject.parseObject(jsonString, Instrument.class);
|
|
|
+
|
|
|
+ if (order.getInstrument() != null && !order.getInstrument().isEmpty()) {
|
|
|
+ instrumentPrice = new BigDecimal(instrument.getInstruments().get(instrumentId).get("referencePrice"));
|
|
|
+ instrumentName = (String) instrument.getInstruments().get(instrumentId).get("index") + "-" +
|
|
|
+ (String) instrument.getInstruments().get(instrumentId).get("name");
|
|
|
+ }
|
|
|
+
|
|
|
+ //2 版本为3.0( 26),不收乐器费用,收押金800放乐器费用
|
|
|
+ if (courseGroupInfo.getFeeType().equals("26")) {
|
|
|
+ instrumentPrice = new BigDecimal("800");
|
|
|
+ }
|
|
|
+ amount = amount.add(instrumentPrice);
|
|
|
+
|
|
|
+ //辅件价格
|
|
|
+ String adjunctIds = order.getAdjunct();
|
|
|
+ BigDecimal adjunctPrice = new BigDecimal("0");//辅件价格
|
|
|
+ String adjunctName = "";//辅件名称
|
|
|
+ if (adjunctIds != null && !adjunctIds.isEmpty()) {
|
|
|
+ String[] adjunctIdArr = adjunctIds.split(",");
|
|
|
+ for (String adjunctId : adjunctIdArr) {
|
|
|
+ adjunctPrice = adjunctPrice.add(new BigDecimal(instrument.getAuxiliaries().get(adjunctId).get("referencePrice")));
|
|
|
+ adjunctName += (String) instrument.getAuxiliaries().get(adjunctId).get("name") + "|";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ amount = amount.add(adjunctPrice);
|
|
|
+ order.setAmount(amount);
|
|
|
+ order.setRemark(instrumentName);
|
|
|
+ order.setTuiFee(courseFee);
|
|
|
+ order.setGoodsFee(instrumentPrice);
|
|
|
+ order.setSdName(adjunctName + "教材|琴谱");
|
|
|
+ order.setSdFee(adjunctPrice);
|
|
|
|
|
|
-// ClassPathResource classPathResource = new ClassPathResource("instruments.json");
|
|
|
-//
|
|
|
-// String str = IOUtils.toString(new InputStreamReader(classPathResource.getInputStream(),"UTF-8"));
|
|
|
-// Instrument instrument = JSONObject.parseObject(str, Instrument.class);
|
|
|
-//
|
|
|
-// System.out.println(instrument.getInstruments().get("flute").get("config"));
|
|
|
|
|
|
String notifyUrl = "http://47.99.212.176:9000/yqpay/notify"; //异步通知地址
|
|
|
String returnUrl = "http://dev.dayaedu.com";//支付后返回页面
|
|
|
String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付跳转页
|
|
|
- String payChannels = "{\"fastpayXy\":true,\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"aliPayMobile\":true,\"balancePay\":false}";//支付方式配置
|
|
|
+ String payChannels = "{\"fastpayXy\":true,\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"aliPayMobile\":false,\"balancePay\":false}";//支付方式配置
|
|
|
|
|
|
String orderNo = GenerateNum.getInstance().GenerateOrderNo(); //自己系统订单号
|
|
|
order.setOrderNo(orderNo);
|
|
@@ -101,11 +142,12 @@ public class YqPayController extends BaseController {
|
|
|
List<Map> tempRoutingList = new ArrayList();
|
|
|
tempRoutingList.add(routingList);
|
|
|
|
|
|
+ order.setAccount(routingMerNo);
|
|
|
|
|
|
//1、插入订单
|
|
|
orderService.insert(order);
|
|
|
//2、修改已报名人数
|
|
|
- courseGroupInfo.setRegNum(courseGroupInfo.getRegNum()+1);
|
|
|
+ courseGroupInfo.setRegNum(courseGroupInfo.getRegNum() + 1);
|
|
|
CourseGroupInfoService.upByIdAndVersion(courseGroupInfo);
|
|
|
//3、修改分佣账户已收金额
|
|
|
accountService.upByIdAndVersion(account);
|
|
@@ -130,9 +172,134 @@ public class YqPayController extends BaseController {
|
|
|
resultMap.put("tempRoutingList", JSON.toJSONString(tempRoutingList));//分账设置
|
|
|
Map rqMap = new YqPayUtil(notifyUrl, resultMap).getRequestMap();
|
|
|
rqMap.put("host", payUrl);
|
|
|
- return rqMap;
|
|
|
+
|
|
|
+ return succeed(rqMap);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 续费支付
|
|
|
+ *
|
|
|
+ * @return String
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ @ApiOperation(value = "续费支付", notes = "易乾支付统一下单")
|
|
|
+ @PostMapping("/renewalsPay")
|
|
|
+ @Transactional
|
|
|
+// public Object renewalsPay(@ModelAttribute @Validated Renewals renewals) throws Exception {
|
|
|
+// BigDecimal amount = new BigDecimal("0");
|
|
|
+//
|
|
|
+// //课程组价格
|
|
|
+// BigDecimal courseFee = courseGroupInfo.getFeeAmount();
|
|
|
+// amount = amount.add(courseFee);
|
|
|
+//
|
|
|
+// ClassPathResource classPathResource = new ClassPathResource("instruments.json");
|
|
|
+//
|
|
|
+// BigDecimal instrumentPrice = new BigDecimal("0");//乐器价格
|
|
|
+// String instrumentName = "";//乐器名称
|
|
|
+//
|
|
|
+// //获取乐器的价格
|
|
|
+// String instrumentId = order.getInstrument();
|
|
|
+// String jsonString = IOUtils.toString(new InputStreamReader(classPathResource.getInputStream(), "UTF-8"));
|
|
|
+// Instrument instrument = JSONObject.parseObject(jsonString, Instrument.class);
|
|
|
+//
|
|
|
+// if (order.getInstrument() != null && !order.getInstrument().isEmpty()) {
|
|
|
+// instrumentPrice = new BigDecimal(instrument.getInstruments().get(instrumentId).get("referencePrice"));
|
|
|
+// instrumentName = (String) instrument.getInstruments().get(instrumentId).get("index") + "-" +
|
|
|
+// (String) instrument.getInstruments().get(instrumentId).get("name");
|
|
|
+// }
|
|
|
+//
|
|
|
+// //2 版本为3.0( 26),不收乐器费用,收押金800放乐器费用
|
|
|
+// if (courseGroupInfo.getFeeType().equals("26")) {
|
|
|
+// instrumentPrice = new BigDecimal("800");
|
|
|
+// }
|
|
|
+// amount = amount.add(instrumentPrice);
|
|
|
+//
|
|
|
+// //辅件价格
|
|
|
+// String adjunctIds = order.getAdjunct();
|
|
|
+// BigDecimal adjunctPrice = new BigDecimal("0");//辅件价格
|
|
|
+// String adjunctName = "";//辅件名称
|
|
|
+// if (adjunctIds != null && !adjunctIds.isEmpty()) {
|
|
|
+// String[] adjunctIdArr = adjunctIds.split(",");
|
|
|
+// for (String adjunctId : adjunctIdArr) {
|
|
|
+// adjunctPrice = adjunctPrice.add(new BigDecimal(instrument.getAuxiliaries().get(adjunctId).get("referencePrice")));
|
|
|
+// adjunctName += (String) instrument.getAuxiliaries().get(adjunctId).get("name") + "|";
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// amount = amount.add(adjunctPrice);
|
|
|
+// order.setAmount(amount);
|
|
|
+// order.setRemark(instrumentName);
|
|
|
+// order.setTuiFee(courseFee);
|
|
|
+// order.setGoodsFee(instrumentPrice);
|
|
|
+// order.setSdName(adjunctName + "教材|琴谱");
|
|
|
+// order.setSdFee(adjunctPrice);
|
|
|
+//
|
|
|
+//
|
|
|
+// String notifyUrl = "http://47.99.212.176:9000/yqpay/notify"; //异步通知地址
|
|
|
+// String returnUrl = "http://dev.dayaedu.com";//支付后返回页面
|
|
|
+// String payUrl = "https://qyfapi.95epay.com/api/api/hPay/toPayHtml";//支付跳转页
|
|
|
+// String payChannels = "{\"fastpayXy\":true,\"weChatPay\":true,\"weChatPayMobile\":false,\"aliPay\":true,\"aliPayMobile\":true,\"balancePay\":false}";//支付方式配置
|
|
|
+//
|
|
|
+// String orderNo = GenerateNum.getInstance().GenerateOrderNo(); //自己系统订单号
|
|
|
+// order.setOrderNo(orderNo);
|
|
|
+// order.setCreateTime(new Date()); //订单提交时间
|
|
|
+// order.setStatus(1); //订单状态
|
|
|
+//
|
|
|
+// //获取支付成功跟支付中的订单数
|
|
|
+// int branchId = order.getBranchId();
|
|
|
+// int payOrderNums = orderService.getPayOrderNums();
|
|
|
+// //分佣账户(1、每10笔,前四笔收入私户 2、私户每个商户最多收款400万)
|
|
|
+// if ((payOrderNums + 1) % 10 <= 4) { //私人账户
|
|
|
+// branchId = 0;
|
|
|
+// }
|
|
|
+//
|
|
|
+// //获取分佣账户
|
|
|
+// Account account = accountService.getAccountByBranchId(branchId);
|
|
|
+// String routingMerNo = account.getSellerNo();
|
|
|
+// BigDecimal HasRouting = account.getHasRouting().add(order.getAmount());
|
|
|
+// account.setHasRouting(HasRouting);
|
|
|
+//
|
|
|
+// Map<String, Object> routingList = new LinkedHashMap<String, Object>();
|
|
|
+// routingList.put("routingMerNo", routingMerNo);//分佣账户
|
|
|
+// routingList.put("routingFee", order.getAmount()); //分佣金额
|
|
|
+// List<Map> tempRoutingList = new ArrayList();
|
|
|
+// tempRoutingList.add(routingList);
|
|
|
+//
|
|
|
+// order.setAccount(routingMerNo);
|
|
|
+//
|
|
|
+// //1、插入订单
|
|
|
+// orderService.insert(order);
|
|
|
+// //2、修改已报名人数
|
|
|
+// courseGroupInfo.setRegNum(courseGroupInfo.getRegNum() + 1);
|
|
|
+// CourseGroupInfoService.upByIdAndVersion(courseGroupInfo);
|
|
|
+// //3、修改分佣账户已收金额
|
|
|
+// accountService.upByIdAndVersion(account);
|
|
|
+//
|
|
|
+//
|
|
|
+// /*订单信息*/
|
|
|
+// String orderBody = "大雅乐盟培训课程";
|
|
|
+// /*订单标题*/
|
|
|
+// String orderSubject = "培训订单";
|
|
|
+//
|
|
|
+//
|
|
|
+// Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
|
|
|
+// resultMap.put("sellerNo", "0021677"); //收款商户号
|
|
|
+// resultMap.put("payChannels", payChannels); //支付方式
|
|
|
+// resultMap.put("orderBody", orderBody); //订单信息
|
|
|
+// resultMap.put("payAmount", order.getAmount()); //支付金额
|
|
|
+// resultMap.put("apiPayType", "1"); //*API支付类型1-即时支付,2-担保支付,3-预授权支付*/
|
|
|
+// resultMap.put("tradeType", "0"); //*交易类型1—充值,0—收款*
|
|
|
+// resultMap.put("merMerOrderNo", orderNo); //商户订单号
|
|
|
+// resultMap.put("orderSubject", orderSubject); //订单标题
|
|
|
+// resultMap.put("returnUrl", returnUrl); //前台页面地址
|
|
|
+// resultMap.put("tempRoutingList", JSON.toJSONString(tempRoutingList));//分账设置
|
|
|
+// Map rqMap = new YqPayUtil(notifyUrl, resultMap).getRequestMap();
|
|
|
+// rqMap.put("host", payUrl);
|
|
|
+//
|
|
|
+// return succeed(rqMap);
|
|
|
+// }
|
|
|
+
|
|
|
/**
|
|
|
* 交易查询
|
|
|
*
|