提交 e4c8c94c 作者: zhenjie

多订单支付完成-订单处理

上级 104c5509
......@@ -19,4 +19,6 @@ public interface UavPayWxDao {
void batchAddUavPayWxSub(List<UavPayWxSubDO> payWxSubDOS);
List<UavPayWxSubDO> listUavPayWxSub(Integer uavPayWxId);
void finishUavPayWx(String orderNo, String tradeState);
}
......@@ -22,7 +22,7 @@ public class UavPayWxSubDO implements Serializable {
private Integer id;
private Integer uavPayWxId;
private Integer uavOrderId;
private String orderNo;
private BigDecimal amount;
private Date createTime;
}
......@@ -531,9 +531,18 @@ public class UavOrderServiceImpl implements UavOrderService {
return ResultBody.success();
}
@Transactional
@Override
public void payUavOrder(TopUpOrderVO topUpOrderVO) {
if (topUpOrderVO.getOrderNo().startsWith("m")){
payMultiUavOrder(topUpOrderVO);
}else {
paySingleUavOrder(topUpOrderVO);
}
}
@Transactional
public void paySingleUavOrder(TopUpOrderVO topUpOrderVO) {
// 添加支付凭证、记录支付方式
UavOrderDO uavOrderDO = uavOrderDao.detailByNo(topUpOrderVO.getOrderNo());
if (uavOrderDO == null) {
......@@ -556,6 +565,24 @@ public class UavOrderServiceImpl implements UavOrderService {
}
@Transactional
public void payMultiUavOrder(TopUpOrderVO topUpOrderVO) {
UavPayWxDO uavPayWx = uavPayWxDao.getUavPayWx(topUpOrderVO.getOrderNo());
if (uavPayWx != null) {
List<UavPayWxSubDO> payWxSubDOS = uavPayWxDao.listUavPayWxSub(uavPayWx.getId());
for (UavPayWxSubDO wxSubDO : payWxSubDOS) {
TopUpOrderVO upOrderVO = new TopUpOrderVO();
upOrderVO.setOpenid(topUpOrderVO.getOpenid());
upOrderVO.setOrderNo(wxSubDO.getOrderNo());
upOrderVO.setAmount(wxSubDO.getAmount().multiply(BigDecimal.valueOf(100)).intValue());
upOrderVO.setTradeState(topUpOrderVO.getTradeState());
upOrderVO.setTradeStateDesc(topUpOrderVO.getTradeStateDesc());
this.paySingleUavOrder(upOrderVO);
}
}
uavPayWxDao.finishUavPayWx(topUpOrderVO.getOrderNo(), topUpOrderVO.getTradeState());
}
@Transactional
@Override
public ResultBody confirmOrder(UavOrderVO uavOrderVO, BaseAccountDTO currentAccount) {
// 修改订单状态
......@@ -789,7 +816,7 @@ public class UavOrderServiceImpl implements UavOrderService {
multiUavOrderDTO.setAllOtherAmount(allOtherAmount);
multiUavOrderDTO.setUavOrderDTOS(collect);
// 待订单个数大于1
if (unFinishPay > 1) {
if (unFinishPay > 0) {
String payNo = CodeUtil.multiUavOrderPayCode();
multiUavOrderDTO.setPayNo(payNo);
UavPayWxDO uavPayWx = new UavPayWxDO();
......@@ -803,6 +830,7 @@ public class UavOrderServiceImpl implements UavOrderService {
UavPayWxSubDO uavPayWxSubDO = new UavPayWxSubDO();
uavPayWxSubDO.setUavPayWxId(uavPayWx.getId());
uavPayWxSubDO.setUavOrderId(i.getId());
uavPayWxSubDO.setOrderNo(i.getOrderNo());
uavPayWxSubDO.setAmount(i.getOtherAmount());
payWxSubDOS.add(uavPayWxSubDO);
}
......
......@@ -7,7 +7,7 @@
</sql>
<sql id="UAV_PAY_WX_SUB_COLUMN">
id, uav_pay_wx_id, uav_order_id, amount, create_time
id, uav_pay_wx_id, uav_order_id, order_no, amount, create_time
</sql>
<insert id="addUavPayWx" parameterType="com.mmc.oms.entity.uav.UavPayWxDO" keyProperty="id" useGeneratedKeys="true">
......@@ -16,13 +16,17 @@
</insert>
<insert id="batchAddUavPayWxSub" keyProperty="id" useGeneratedKeys="true">
insert into uav_pay_wx_sub( uav_pay_wx_id, uav_order_id, amount, create_time)
insert into uav_pay_wx_sub( uav_pay_wx_id, uav_order_id, order_no, amount, create_time)
values
<foreach item="item" collection="list" separator=",">
(#{item.uavPayWxId}, #{item.uavOrderId}, #{item.amount}, NOW())
(#{item.uavPayWxId}, #{item.uavOrderId}, #{item.orderNo}, #{item.amount}, NOW())
</foreach>
</insert>
<update id="finishUavPayWx">
update uav_pay_wx set trade_state = #{tradeState} where pay_no = #{payNo}
</update>
<select id="getUavPayWx" resultType="com.mmc.oms.entity.uav.UavPayWxDO">
select <include refid="UAV_PAY_WX_COLUMN"/>
from uav_pay_wx where pay_no = #{payNo}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论