|
@@ -27,6 +27,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.*;
|
|
|
|
|
@@ -59,17 +60,60 @@ 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("乐团人数暂时已满,请稍后再试");
|
|
|
+ }
|
|
|
+
|
|
|
+ //课程组价格
|
|
|
+ BigDecimal courseFee = courseGroupInfo.getFeeAmount();
|
|
|
+ amount = amount.add(courseFee);
|
|
|
+
|
|
|
+ ClassPathResource classPathResource = new ClassPathResource("instruments.json");
|
|
|
+
|
|
|
+ BigDecimal instrumentPrice = new BigDecimal("0");//乐器价格
|
|
|
+ String instrumentName = "";//乐器名称
|
|
|
|
|
|
- //2、判断已报名人数
|
|
|
- CourseGroupInfo courseGroupInfo = CourseGroupInfoService.get(order.getCourse_id());
|
|
|
+ //获取乐器的价格
|
|
|
+ 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";//支付后返回页面
|
|
@@ -101,11 +145,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,7 +175,8 @@ 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);
|
|
|
}
|
|
|
|
|
|
/**
|