提交 2095d152 authored 作者: hzh's avatar hzh

代码优化

上级 33ed5fd3
package org.dromara.order.api; package org.dromara.order.api;
import org.dromara.order.api.domain.OrderPay;
import org.dromara.order.api.domain.RemoteOrder; import org.dromara.order.api.domain.RemoteOrder;
import org.dromara.order.api.domain.RemoteSaveOrder; import org.dromara.order.api.domain.RemoteSaveOrder;
...@@ -18,7 +19,7 @@ public interface RemoteOrderService { ...@@ -18,7 +19,7 @@ public interface RemoteOrderService {
* @param order 订单信息 * @param order 订单信息
* @return 订单支付信息 * @return 订单支付信息
*/ */
String createOrder(RemoteSaveOrder order) throws Exception; OrderPay createOrder(RemoteSaveOrder order) throws Exception;
/** /**
* 查询订单列表 * 查询订单列表
......
package org.dromara.order.api.domain; package org.dromara.order.api.domain;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/** /**
* @author hzh * @author hzh
* @date 2024-12-05 * @date 2024-12-05
**/ **/
@Data @Data
public class OrderPay { @Accessors(chain = true)
public class OrderPay implements Serializable {
/**
* 订单号
*/
private String orderNo;
/**
* 支付订单号
*/
private String orderPayNo;
/**
* 支付信息
*/
private String payInfo;
} }
...@@ -3,13 +3,15 @@ package org.dromara.order.api.domain; ...@@ -3,13 +3,15 @@ package org.dromara.order.api.domain;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.io.Serializable;
/** /**
* @author hzh * @author hzh
* @date 2024-12-09 * @date 2024-12-09
**/ **/
@Data @Data
@Accessors(chain = true) @Accessors(chain = true)
public class RemoteOrder { public class RemoteOrder implements Serializable {
/** /**
* 订单类型 * 订单类型
......
...@@ -10,7 +10,7 @@ import lombok.Getter; ...@@ -10,7 +10,7 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
public enum Source { public enum Source {
YSH("ys", "云上"); YSH("YS", "云上");
private final String source; private final String source;
private final String desc; private final String desc;
......
package org.dromara.order.controller; package org.dromara.order.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.http.ContentType; import cn.hutool.http.ContentType;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.ijpay.core.kit.HttpKit; import com.ijpay.core.kit.HttpKit;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.pay.domain.JsapiNotifyModel; import org.dromara.common.pay.domain.JsapiNotifyModel;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.order.domain.bo.OrderBo;
import org.dromara.order.domain.vo.OrderVo;
import org.dromara.order.service.IOrderPayService; import org.dromara.order.service.IOrderPayService;
import org.dromara.order.service.IOrderService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -49,78 +37,10 @@ import java.util.Map; ...@@ -49,78 +37,10 @@ import java.util.Map;
@RequestMapping("/order") @RequestMapping("/order")
public class OrderController extends BaseController { public class OrderController extends BaseController {
private final IOrderService orderService;
private final IOrderPayService orderPayService; private final IOrderPayService orderPayService;
/** /**
* 查询订单费用列表 * 回调函数
*/
@SaCheckPermission("order:order:list")
@GetMapping("/list")
public TableDataInfo<OrderVo> list(OrderBo bo, PageQuery pageQuery) {
return orderService.queryPageList(bo, pageQuery);
}
/**
* 导出订单费用列表
*/
@SaCheckPermission("order:order:export")
@Log(title = "订单费用", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(OrderBo bo, HttpServletResponse response) {
List<OrderVo> list = orderService.queryList(bo);
ExcelUtil.exportExcel(list, "订单费用", OrderVo.class, response);
}
/**
* 获取订单费用详细信息
*
* @param id 主键
*/
@SaCheckPermission("order:order:query")
@GetMapping("/{id}")
public R<OrderVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(orderService.queryById(id));
}
/**
* 新增订单费用
*/
@SaCheckPermission("order:order:add")
@Log(title = "订单费用", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody OrderBo bo) {
return toAjax(orderService.insertByBo(bo));
}
/**
* 修改订单费用
*/
@SaCheckPermission("order:order:edit")
@Log(title = "订单费用", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody OrderBo bo) {
return toAjax(orderService.updateByBo(bo));
}
/**
* 删除订单费用
*
* @param ids 主键串
*/
@SaCheckPermission("order:order:remove")
@Log(title = "订单费用", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(orderService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 回调原函数
* *
* @param request request * @param request request
* @param response response * @param response response
......
...@@ -9,11 +9,13 @@ import io.seata.spring.annotation.GlobalTransactional; ...@@ -9,11 +9,13 @@ import io.seata.spring.annotation.GlobalTransactional;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboService; import org.apache.dubbo.config.annotation.DubboService;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.ValidatorUtils; import org.dromara.common.core.utils.ValidatorUtils;
import org.dromara.common.pay.service.IWxPayService; import org.dromara.common.pay.service.IWxPayService;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.order.api.RemoteOrderService; import org.dromara.order.api.RemoteOrderService;
import org.dromara.order.api.domain.OrderPay;
import org.dromara.order.api.domain.RemoteOrder; import org.dromara.order.api.domain.RemoteOrder;
import org.dromara.order.api.domain.RemoteSaveOrder; import org.dromara.order.api.domain.RemoteSaveOrder;
import org.dromara.order.api.enums.OrderStatus; import org.dromara.order.api.enums.OrderStatus;
...@@ -32,7 +34,6 @@ import java.math.BigDecimal; ...@@ -32,7 +34,6 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -54,7 +55,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -54,7 +55,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
@GlobalTransactional(rollbackFor = Exception.class) @GlobalTransactional(rollbackFor = Exception.class)
@Override @Override
public String createOrder(RemoteSaveOrder remoteOrder) throws Exception { public OrderPay createOrder(RemoteSaveOrder remoteOrder) throws Exception {
ValidatorUtils.validate(remoteOrder); ValidatorUtils.validate(remoteOrder);
//查询订单信息 //查询订单信息
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
...@@ -67,7 +68,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -67,7 +68,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
).stream().findFirst().orElseGet(() -> { ).stream().findFirst().orElseGet(() -> {
//创建订单 //创建订单
OrderBo bo = new OrderBo() OrderBo bo = new OrderBo()
.setUserId(LoginHelper.getUserId()) .setUserId(userId)
.setOrderNo(System.currentTimeMillis() + "") .setOrderNo(System.currentTimeMillis() + "")
.setSource(remoteOrder.getSource().getSource()) .setSource(remoteOrder.getSource().getSource())
.setOrderType(remoteOrder.getOrderType().getType()) .setOrderType(remoteOrder.getOrderType().getType())
...@@ -81,10 +82,13 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -81,10 +82,13 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
if (StringUtils.equals(order.getStatus(), OrderStatus.PAYED.getCode())) { if (StringUtils.equals(order.getStatus(), OrderStatus.PAYED.getCode())) {
throw new ServiceException("订单已支付"); throw new ServiceException("订单已支付");
} }
//获取订单支付信息
List<OrderFeeVo> feeList = Optional.ofNullable(orderFeeService.queryList(new OrderFeeBo() //删除历史订单费用信息
.setOrderNo(order.getOrderNo()))) List<OrderFeeVo> orderFeeVos = orderFeeService.queryList(new OrderFeeBo()
.orElseGet(() -> { .setOrderNo(order.getOrderNo()));
if (CollectionUtils.isNotEmpty(orderFeeVos)) {
orderFeeService.deleteWithValidByIds(StreamUtils.toList(orderFeeVos, OrderFeeVo::getId), false);
}
//创建订单费用信息 //创建订单费用信息
List<RemoteSaveOrder.Fee> list = remoteOrder.getFeeList(); List<RemoteSaveOrder.Fee> list = remoteOrder.getFeeList();
...@@ -93,8 +97,10 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -93,8 +97,10 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
RemoteSaveOrder.Fee serviceFee = IOrderServiceFeeStrategy.calcServiceFee(remoteOrder.getSource(), remoteOrder.getOrderType(), list); RemoteSaveOrder.Fee serviceFee = IOrderServiceFeeStrategy.calcServiceFee(remoteOrder.getSource(), remoteOrder.getOrderType(), list);
list.add(serviceFee); list.add(serviceFee);
List<OrderFeeBo> ofList = list.stream().map(fee -> { List<OrderFeeBo> ofList = list.stream().map(fee -> {
return new OrderFeeBo() return new OrderFeeBo()
.setUserId(order.getUserId())
.setOrderNo(order.getOrderNo()) .setOrderNo(order.getOrderNo())
.setFeeDesc(fee.getFeeDesc()) .setFeeDesc(fee.getFeeDesc())
.setFeeAmount(fee.getFeeAmount()) .setFeeAmount(fee.getFeeAmount())
...@@ -103,8 +109,8 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -103,8 +109,8 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
.setRemark(fee.getRemark()); .setRemark(fee.getRemark());
}).collect(Collectors.toList()); }).collect(Collectors.toList());
orderFeeService.batchInsertByList(ofList); orderFeeService.batchInsertByList(ofList);
return BeanUtil.copyToList(ofList, OrderFeeVo.class); List<OrderFeeVo> feeList = BeanUtil.copyToList(ofList, OrderFeeVo.class);
});
//获取总金额 //获取总金额
assert feeList != null; assert feeList != null;
BigDecimal amount = feeList.stream().map(OrderFeeVo::getFeeAmount).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal amount = feeList.stream().map(OrderFeeVo::getFeeAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
...@@ -120,6 +126,9 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -120,6 +126,9 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
} }
Date expireTime = DateUtil.offsetMinute(new Date(), expireMinute); Date expireTime = DateUtil.offsetMinute(new Date(), expireMinute);
// String openId = LoginHelper.getOpenId();
String openId = "oEeGe7Z4-OynAi63oqFkmarPCkLY";
//创建支付订单 //创建支付订单
OrderTradeBo ot = new OrderTradeBo() OrderTradeBo ot = new OrderTradeBo()
.setUserId(order.getUserId()) .setUserId(order.getUserId())
...@@ -133,7 +142,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -133,7 +142,7 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
.setTradeType(remoteOrder.getTradeType().name()) .setTradeType(remoteOrder.getTradeType().name())
.setExpireTime(expireTime) .setExpireTime(expireTime)
.setTradeState(WechatTradeState.USERPAYING.getState()) .setTradeState(WechatTradeState.USERPAYING.getState())
.setPayOpenId(LoginHelper.getOpenId()); .setPayOpenId(openId);
orderTradeService.insertByBo(ot); orderTradeService.insertByBo(ot);
//跟新支付信息 //跟新支付信息
...@@ -144,7 +153,11 @@ public class RemoteOrderServiceImpl implements RemoteOrderService { ...@@ -144,7 +153,11 @@ public class RemoteOrderServiceImpl implements RemoteOrderService {
orderService.updateByBo(BeanUtil.copyProperties(order, OrderBo.class)); orderService.updateByBo(BeanUtil.copyProperties(order, OrderBo.class));
//获取支付订单 //获取支付订单
return IPayStrategy.pay(JSON.toJSONString(ot), feeList, remoteOrder.getTradeType().name());
return new OrderPay()
.setOrderNo(order.getOriginOrderNo())
.setOrderPayNo(ot.getOrderPayNo())
.setPayInfo(IPayStrategy.pay(JSON.toJSONString(ot), feeList, remoteOrder.getTradeType().name()));
} }
@Override @Override
......
...@@ -12,6 +12,7 @@ import org.apache.dubbo.config.annotation.DubboReference; ...@@ -12,6 +12,7 @@ import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.pay.domain.JsapiNotifyModel; import org.dromara.common.pay.domain.JsapiNotifyModel;
import org.dromara.common.pay.service.IWxPayService; import org.dromara.common.pay.service.IWxPayService;
import org.dromara.order.api.enums.OrderStatus; import org.dromara.order.api.enums.OrderStatus;
import org.dromara.order.constant.WechatTradeState;
import org.dromara.order.domain.bo.OrderBo; import org.dromara.order.domain.bo.OrderBo;
import org.dromara.order.domain.bo.OrderTradeBo; import org.dromara.order.domain.bo.OrderTradeBo;
import org.dromara.order.domain.vo.OrderTradeVo; import org.dromara.order.domain.vo.OrderTradeVo;
...@@ -25,7 +26,9 @@ import org.springframework.stereotype.Service; ...@@ -25,7 +26,9 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
/** /**
* @author hzh * @author hzh
...@@ -80,10 +83,16 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService { ...@@ -80,10 +83,16 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService {
String orderPayNo = model.getOut_trade_no(); String orderPayNo = model.getOut_trade_no();
String tradeState = model.getTrade_state(); String tradeState = model.getTrade_state();
List<String> notUpdateStateList = List.of(WechatTradeState.NOTPAY.getState(), WechatTradeState.USERPAYING.getState());
if (notUpdateStateList.contains(tradeState)) {
return;
}
OrderTradeVo orderTrade = orderTradeService.getOne(new OrderTradeBo().setOrderPayNo(orderPayNo)); OrderTradeVo orderTrade = orderTradeService.getOne(new OrderTradeBo().setOrderPayNo(orderPayNo));
if (Objects.isNull(orderTrade)) { if (Objects.isNull(orderTrade)) {
throw new RuntimeException("交易订单不存在"); throw new RuntimeException("交易订单不存在");
} }
if (!StringUtils.equals(tradeState, orderTrade.getTradeState())) { if (!StringUtils.equals(tradeState, orderTrade.getTradeState())) {
//更新订单信息 //更新订单信息
String successTimeStr = model.getSuccess_time(); String successTimeStr = model.getSuccess_time();
...@@ -93,17 +102,20 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService { ...@@ -93,17 +102,20 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService {
String transactionId = model.getTransaction_id(); String transactionId = model.getTransaction_id();
JsapiNotifyModel.Amount amount = model.getAmount(); JsapiNotifyModel.Amount amount = model.getAmount();
//支付金额 //支付金额
int actualPayAmount = amount.getPayer_total(); Integer actualPayAmount = amount.getPayer_total();
//获取openId //获取openId
String payOpenId = model.getPayer().getOpenid(); String payOpenId = Optional.ofNullable(model.getPayer()).map(JsapiNotifyModel.Payer::getOpenid).orElse(null);
orderTrade.setPayOpenId(payOpenId); orderTrade.setPayOpenId(payOpenId);
orderTrade.setPayTime(payTime); orderTrade.setPayTime(payTime);
orderTrade.setTransactionId(transactionId); orderTrade.setTransactionId(transactionId);
if (Objects.nonNull(actualPayAmount)) {
orderTrade.setActualPayAmount(new BigDecimal(actualPayAmount).divide(new BigDecimal(100), 2, RoundingMode.CEILING)); orderTrade.setActualPayAmount(new BigDecimal(actualPayAmount).divide(new BigDecimal(100), 2, RoundingMode.CEILING));
}
orderTrade.setTradeState(tradeState); orderTrade.setTradeState(tradeState);
orderTrade.setTradeInfo(JSON.toJSONString(model)); orderTrade.setTradeInfo(JSON.toJSONString(model));
orderTradeService.updateByBo(BeanUtil.copyProperties(orderTrade, OrderTradeBo.class)); orderTradeService.updateByBo(BeanUtil.copyProperties(orderTrade, OrderTradeBo.class));
if (StringUtils.equals(tradeState, WechatTradeState.SUCCESS.getState())) {
//跟新主表信息 //跟新主表信息
OrderVo order = orderService.getOne(new OrderBo().setOrderNo(orderTrade.getOrderNo())); OrderVo order = orderService.getOne(new OrderBo().setOrderNo(orderTrade.getOrderNo()));
order.setOrderPayNo(orderPayNo); order.setOrderPayNo(orderPayNo);
...@@ -115,6 +127,8 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService { ...@@ -115,6 +127,8 @@ public class WeChatOrderPayServiceImpl implements IOrderPayService {
//跟新云上相关信息 //跟新云上相关信息
ysOrderService.payed(order.getOrderType(), order.getOrderNo()); ysOrderService.payed(order.getOrderType(), order.getOrderNo());
} }
}
} }
} }
...@@ -2,6 +2,7 @@ package org.dromara.server.controller; ...@@ -2,6 +2,7 @@ package org.dromara.server.controller;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.order.api.domain.OrderPay;
import org.dromara.order.api.domain.RemoteOrder; import org.dromara.order.api.domain.RemoteOrder;
import org.dromara.order.api.enums.OrderType; import org.dromara.order.api.enums.OrderType;
import org.dromara.server.domain.vo.OrderPayVo; import org.dromara.server.domain.vo.OrderPayVo;
...@@ -32,7 +33,7 @@ public class OrderController { ...@@ -32,7 +33,7 @@ public class OrderController {
* 下单支付接口 * 下单支付接口
*/ */
@PostMapping("/pay") @PostMapping("/pay")
public R<Object> pay(@Validated @RequestBody OrderPayVo vo) throws Exception { public R<OrderPay> pay(@Validated @RequestBody OrderPayVo vo) throws Exception {
OrderType ot = OrderType.getEnum(vo.getOrderType()); OrderType ot = OrderType.getEnum(vo.getOrderType());
return R.ok(service.createOrder(vo.getOrderNo(), ot)); return R.ok(service.createOrder(vo.getOrderNo(), ot));
} }
......
package org.dromara.server.service; package org.dromara.server.service;
import org.dromara.order.api.domain.OrderPay;
import org.dromara.order.api.domain.RemoteOrder; import org.dromara.order.api.domain.RemoteOrder;
import org.dromara.order.api.enums.OrderType; import org.dromara.order.api.enums.OrderType;
...@@ -18,7 +19,7 @@ public interface IPayOrderService { ...@@ -18,7 +19,7 @@ public interface IPayOrderService {
* @param orderType 订单类型 * @param orderType 订单类型
* @return 订单号 * @return 订单号
*/ */
String createOrder(String orderNo, OrderType orderType) throws Exception; OrderPay createOrder(String orderNo, OrderType orderType) throws Exception;
/** /**
* 查询订单列表 * 查询订单列表
......
...@@ -3,6 +3,7 @@ package org.dromara.server.service.impl; ...@@ -3,6 +3,7 @@ package org.dromara.server.service.impl;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.order.api.RemoteOrderService; import org.dromara.order.api.RemoteOrderService;
import org.dromara.order.api.domain.OrderPay;
import org.dromara.order.api.domain.RemoteOrder; import org.dromara.order.api.domain.RemoteOrder;
import org.dromara.order.api.domain.RemoteSaveOrder; import org.dromara.order.api.domain.RemoteSaveOrder;
import org.dromara.order.api.enums.OrderType; import org.dromara.order.api.enums.OrderType;
...@@ -12,6 +13,7 @@ import org.dromara.server.service.IOrderStrategy; ...@@ -12,6 +13,7 @@ import org.dromara.server.service.IOrderStrategy;
import org.dromara.server.service.IPayOrderService; import org.dromara.server.service.IPayOrderService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**
...@@ -26,12 +28,16 @@ public class PayOrderServiceImpl implements IPayOrderService { ...@@ -26,12 +28,16 @@ public class PayOrderServiceImpl implements IPayOrderService {
private RemoteOrderService remoteOrderService; private RemoteOrderService remoteOrderService;
@Override @Override
public String createOrder(String orderNo, OrderType orderType) throws Exception { public OrderPay createOrder(String orderNo, OrderType orderType) throws Exception {
RemoteSaveOrder order = IOrderStrategy.createOrder(orderNo, orderType); RemoteSaveOrder order = IOrderStrategy.createOrder(orderNo, orderType);
order.setSource(Source.YSH); order.setSource(Source.YSH);
order.setOriginOrderNo(orderNo); order.setOriginOrderNo(orderNo);
order.setTradeType(TradeType.JSAPI); order.setTradeType(TradeType.JSAPI);
order.setOrderType(orderType); order.setOrderType(orderType);
BigDecimal amount = order.getFeeList().stream().map(RemoteSaveOrder.Fee::getFeeAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
if (amount.compareTo(BigDecimal.ZERO) <= 0) {
throw new IllegalArgumentException("订单金额不能小于等于0");
}
return remoteOrderService.createOrder(order); return remoteOrderService.createOrder(order);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论