|
@@ -18,7 +18,7 @@ import com.yonge.cooleshow.biz.dal.sdk.PaymentSdk;
|
|
|
import com.yonge.cooleshow.biz.dal.sdk.req.DeviceInfo;
|
|
|
import com.yonge.cooleshow.biz.dal.sdk.req.PaymentReq;
|
|
|
import com.yonge.cooleshow.biz.dal.service.*;
|
|
|
-import com.yonge.cooleshow.biz.dal.vo.res.OrderCheckRes;
|
|
|
+import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
|
|
|
import com.yonge.cooleshow.biz.dal.vo.res.OrderPayRes;
|
|
|
import com.yonge.cooleshow.common.entity.HttpResponseResult;
|
|
@@ -45,7 +45,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
private final static Logger log = LoggerFactory.getLogger(UserOrderServiceImpl.class);
|
|
|
|
|
|
@Autowired
|
|
|
- private VipCardRecordService vipCardRecordService;
|
|
|
+ private VipCardService vipCardService;
|
|
|
@Autowired
|
|
|
private SysConfigService sysConfigService;
|
|
|
@Autowired
|
|
@@ -58,18 +58,17 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
private IdGeneratorService idGeneratorService;
|
|
|
|
|
|
//验证订单是否可以下单
|
|
|
- private static final Map<OrderTypeEnum, Function<OrderReq, HttpResponseResult<OrderCheckRes>>> checkOrder = new HashMap<>();
|
|
|
+ private static final Map<OrderTypeEnum, Function<OrderReq, HttpResponseResult<OrderCreateRes>>> orderCreate = new HashMap<>();
|
|
|
//插入订单后执行
|
|
|
private static final Map<OrderTypeEnum, Consumer<UserOrderVo>> orderAfter = new HashMap<>();
|
|
|
|
|
|
@PostConstruct
|
|
|
private void init() {
|
|
|
//vip开通缴费
|
|
|
- checkOrder.put(OrderTypeEnum.VIP, vipCardRecordService::checkOrder);
|
|
|
-
|
|
|
+ orderCreate.put(OrderTypeEnum.VIP, vipCardService::orderCreate);
|
|
|
|
|
|
//vip开通缴费
|
|
|
- orderAfter.put(OrderTypeEnum.VIP, vipCardRecordService::orderAfter);
|
|
|
+ orderAfter.put(OrderTypeEnum.VIP, vipCardService::orderAfter);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -91,26 +90,23 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public HttpResponseResult<UserOrder> executeOrder(OrderReq orderReq) {
|
|
|
log.info("订单[创建订单] Req:{}", JSONObject.toJSONString(orderReq));
|
|
|
- //todo 假定一个用户最多有三个待支付,支付中订单
|
|
|
- /*Integer num = baseMapper.selectCount(Wrappers.<Order>query().lambda()
|
|
|
- .eq(Order::getUserId, orderReq.getUserId())
|
|
|
- .in(Order::getStatus, OrderStatusEnum.PAYING.getCode(), OrderStatusEnum.WAIT_PAY.getCode())
|
|
|
- );
|
|
|
- Integer payingNum = 3;
|
|
|
- if (num >= payingNum) {
|
|
|
- return HttpResponseResult.failed("未完成订单数过多");
|
|
|
- }*/
|
|
|
- //todo 订单验证参数,金额不小于0等
|
|
|
-
|
|
|
//验证参数,必须验证参数
|
|
|
- Function<OrderReq, HttpResponseResult<OrderCheckRes>> checkFunction = checkOrder.get(orderReq.getOrderType());
|
|
|
+ Function<OrderReq, HttpResponseResult<OrderCreateRes>> checkFunction = orderCreate.get(orderReq.getOrderType());
|
|
|
if (Objects.isNull(checkFunction)) {
|
|
|
- return HttpResponseResult.failed("参数校验失败");
|
|
|
+ return HttpResponseResult.failed("订单商品信息获取失败");
|
|
|
}
|
|
|
- HttpResponseResult<OrderCheckRes> checkResult = checkFunction.apply(orderReq);
|
|
|
- if (!checkResult.getStatus() || null == checkResult.getData() || !checkResult.getData().getRes()) {
|
|
|
+ HttpResponseResult<OrderCreateRes> checkResult = checkFunction.apply(orderReq);
|
|
|
+ OrderCreateRes createRes = checkResult.getData();
|
|
|
+ if (!checkResult.getStatus() || null == createRes || !createRes.getRes()) {
|
|
|
log.info("订单[创建订单] Res:{}", JSONObject.toJSONString(checkResult));
|
|
|
- return HttpResponseResult.failed("参数校验失败");
|
|
|
+ return HttpResponseResult.failed("订单商品信息获取失败");
|
|
|
+ }
|
|
|
+ if (!checkPositiveOrZero(createRes.getOriginalPrice())
|
|
|
+ || !checkPositiveOrZero(createRes.getExpectPrice())
|
|
|
+ || !checkPositiveOrZero(createRes.getActualPrice())
|
|
|
+ || !checkPositiveOrZero(createRes.getCouponAmount())
|
|
|
+ ) {
|
|
|
+ return HttpResponseResult.failed("金额校验失败");
|
|
|
}
|
|
|
//验证成功后,订单入库
|
|
|
UserOrderVo orderVo = insertOrder(orderReq, checkResult.getData());
|
|
@@ -178,7 +174,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
|
|
|
OrderPayRes orderPayRes = new OrderPayRes();
|
|
|
orderPayRes.setPay_amt(detail.getActualPrice().setScale(2).toString());
|
|
|
- String pay_info = ((JSONObject)res.get("expend")).getString("pay_info");
|
|
|
+ String pay_info = ((JSONObject) res.get("expend")).getString("pay_info");
|
|
|
orderPayRes.setPay_info(pay_info);
|
|
|
//入订单付款表,同时修改订单状态
|
|
|
UserOrderPayment orderPayment = insertOrderPayment(res, payReq);
|
|
@@ -194,7 +190,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
orderPayment.setPayAmt(
|
|
|
new BigDecimal(res.get("pay_amt").toString()).setScale(2)
|
|
|
);
|
|
|
- String pay_info = ((JSONObject)res.get("expend")).getString("pay_info");
|
|
|
+ String pay_info = ((JSONObject) res.get("expend")).getString("pay_info");
|
|
|
orderPayment.setPayInfo(pay_info);
|
|
|
orderPayment.setStatus(PayStatusEnum.pending);
|
|
|
|
|
@@ -221,7 +217,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
* @updateTime 2022/3/31 16:15
|
|
|
* @return: com.yonge.cooleshow.biz.dal.entity.Order
|
|
|
*/
|
|
|
- private UserOrderVo insertOrder(OrderReq orderReq, OrderCheckRes data) {
|
|
|
+ private UserOrderVo insertOrder(OrderReq orderReq, OrderCreateRes data) {
|
|
|
UserOrder userOrder = new UserOrder();
|
|
|
//订单号生成
|
|
|
Long orderNo = idGeneratorService.generatorId("userOrder");
|
|
@@ -231,13 +227,13 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
userOrder.setOrderName(orderReq.getOrderName());
|
|
|
userOrder.setOrderDesc(orderReq.getOrderDesc());
|
|
|
userOrder.setStatus(OrderStatusEnum.WAIT_PAY);
|
|
|
- userOrder.setOriginalPrice(orderReq.getOriginalPrice());
|
|
|
- userOrder.setExpectPrice(orderReq.getExpectPrice());
|
|
|
- userOrder.setActualPrice(orderReq.getActualPrice());
|
|
|
- userOrder.setCouponAmount(orderReq.getCouponAmount());
|
|
|
+ userOrder.setOriginalPrice(data.getOriginalPrice());
|
|
|
+ userOrder.setExpectPrice(data.getExpectPrice());
|
|
|
+ userOrder.setActualPrice(data.getActualPrice());
|
|
|
+ userOrder.setCouponAmount(data.getCouponAmount());
|
|
|
//平台服务费
|
|
|
BigDecimal serviceFeeRate = getServiceFeeRate(orderReq.getOrderType());
|
|
|
- userOrder.setPlantformFee(orderReq.getActualPrice().multiply(serviceFeeRate));
|
|
|
+ userOrder.setPlantformFee(data.getActualPrice().multiply(serviceFeeRate));
|
|
|
userOrder.setPlantformFeeRate(serviceFeeRate);
|
|
|
userOrder.setUserNote(orderReq.getUserNote());
|
|
|
userOrder.setOrderType(orderReq.getOrderType());
|
|
@@ -249,8 +245,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
}
|
|
|
UserOrderDetail orderDetail = new UserOrderDetail();
|
|
|
orderDetail.setOrderNo(userOrder.getOrderNo());
|
|
|
- orderDetail.setBizId(orderReq.getBizId());
|
|
|
- orderDetail.setBizContent(orderReq.getBizContent());
|
|
|
+ orderDetail.setBizId(data.getBizId());
|
|
|
+ orderDetail.setBizContent(data.getBizContent());
|
|
|
orderDetail.setCreateTime(new Date());
|
|
|
orderDetailService.save(orderDetail);
|
|
|
|
|
@@ -285,4 +281,14 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
|
|
|
}
|
|
|
return new BigDecimal(configValue).divide(new BigDecimal(100));
|
|
|
}
|
|
|
+
|
|
|
+ private Boolean checkPositiveOrZero(BigDecimal amount) {
|
|
|
+ if (null == amount) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (amount.doubleValue() < 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|