提交 e4c8c94c 作者: zhenjie

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

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