加价分账
This commit is contained in:
parent
b11b8b9c2b
commit
63e7deccfe
|
|
@ -646,6 +646,9 @@ public class OrderDetailController extends BaseController {
|
||||||
// 判断工单状态是否为服务中以及是否已支付
|
// 判断工单状态是否为服务中以及是否已支付
|
||||||
OrderDetail orderDetail = orderDetailService.selectById(request.getOrderDetailId());
|
OrderDetail orderDetail = orderDetailService.selectById(request.getOrderDetailId());
|
||||||
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
|
OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId());
|
||||||
|
if(orderDetail.getOrderStatus() != OrderStatus.FINISH_CHECK.code()){
|
||||||
|
return AjaxResult.success("发起成功");
|
||||||
|
}
|
||||||
if (orderDetail.getOrderStatus() != OrderStatus.SERVER.code()
|
if (orderDetail.getOrderStatus() != OrderStatus.SERVER.code()
|
||||||
|| !orderMaster.getPayStatus().equals(PayStatus.PAID.getCode())) {
|
|| !orderMaster.getPayStatus().equals(PayStatus.PAID.getCode())) {
|
||||||
return AjaxResult.error("未支付订单或非服务中订单,发起完单失败");
|
return AjaxResult.error("未支付订单或非服务中订单,发起完单失败");
|
||||||
|
|
|
||||||
|
|
@ -317,6 +317,39 @@ public class OrderDetailServiceImpl implements OrderDetailService {
|
||||||
}
|
}
|
||||||
// 更新订单状态
|
// 更新订单状态
|
||||||
orderDetailMapper.updateStatus(orderDetailId, OrderStatus.FINISH.code());
|
orderDetailMapper.updateStatus(orderDetailId, OrderStatus.FINISH.code());
|
||||||
|
// 找到所有的加价记录
|
||||||
|
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByDetailIds(String.valueOf(orderDetailId));
|
||||||
|
if(!CollectionUtils.isEmpty(financialChangeRecords)){
|
||||||
|
ArrayList<DivMember> divMembers = new ArrayList<>();
|
||||||
|
financialChangeRecords.forEach(financialChangeRecord -> {
|
||||||
|
// 递增解决分账
|
||||||
|
financialDetail.forEach(detail->{
|
||||||
|
BigDecimal money;
|
||||||
|
// 剩余金额足够本次分账
|
||||||
|
if(financialChangeRecord.getLeftMoney().compareTo(detail.getPayMoney()) > 0){
|
||||||
|
money = detail.getPayMoney();
|
||||||
|
detail.setPayMoney(BigDecimal.ZERO);
|
||||||
|
}else {
|
||||||
|
// 剩余金额不够分账
|
||||||
|
money = financialChangeRecord.getLeftMoney();
|
||||||
|
detail.setPayMoney(detail.getPayMoney().subtract(money));
|
||||||
|
}
|
||||||
|
String memberId = AdapayUtils.getWorkerMemberId(detail.getPayeeId(), detail.getDeptId());
|
||||||
|
DivMember divMember = new DivMember(memberId, AdapayUtils.bigDecimalToString(money), false);
|
||||||
|
divMembers.add(divMember);
|
||||||
|
});
|
||||||
|
//调用分账
|
||||||
|
logger.info("子订单[code={}]分账信息: {}", orderDetail.getCode(), JSON.toJSONString(divMembers));
|
||||||
|
JSONObject response;
|
||||||
|
try {
|
||||||
|
response = adapayService.paymentConfirm(financialDetail.get(0).getDeptId(), financialChangeRecord.getRemark(), payment.getOrderNo() + "_" + System.currentTimeMillis(),
|
||||||
|
String.valueOf(financialChangeRecord.getLeftMoney()), divMembers, null, null);
|
||||||
|
logger.info("子订单[code={}]分账结果: {}", orderDetail.getCode(), response.toJSONString());
|
||||||
|
} catch (BaseAdaPayException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
// 分账账户信息
|
// 分账账户信息
|
||||||
Map<String, DivMember> divMemberMap = new HashMap<>();
|
Map<String, DivMember> divMemberMap = new HashMap<>();
|
||||||
ArrayList<DivMember> divMembers = new ArrayList<>();
|
ArrayList<DivMember> divMembers = new ArrayList<>();
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,17 @@ public class FinancialChangeRecord extends BaseEntity
|
||||||
@Excel(name = "1.本单报价 2.加单报价")
|
@Excel(name = "1.本单报价 2.加单报价")
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
|
@Excel(name = "剩余分账金额")
|
||||||
|
private BigDecimal leftMoney;
|
||||||
|
|
||||||
|
public BigDecimal getLeftMoney() {
|
||||||
|
return leftMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLeftMoney(BigDecimal leftMoney) {
|
||||||
|
this.leftMoney = leftMoney;
|
||||||
|
}
|
||||||
|
|
||||||
public void setId(String id)
|
public void setId(String id)
|
||||||
{
|
{
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|
@ -102,6 +113,7 @@ public class FinancialChangeRecord extends BaseEntity
|
||||||
.append("status", getStatus())
|
.append("status", getStatus())
|
||||||
.append("payStatus", getPayStatus())
|
.append("payStatus", getPayStatus())
|
||||||
.append("type", getType())
|
.append("type", getType())
|
||||||
|
.append("leftMoney", getLeftMoney())
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ public class FinancialChangeRecordServiceImpl implements FinancialChangeRecordSe
|
||||||
@Override
|
@Override
|
||||||
public int insertFinancialChangeRecord(FinancialChangeRecord financialChangeRecord)
|
public int insertFinancialChangeRecord(FinancialChangeRecord financialChangeRecord)
|
||||||
{
|
{
|
||||||
|
financialChangeRecord.setLeftMoney(financialChangeRecord.getChangeMoney());
|
||||||
return financialChangeRecordMapper.insertFinancialChangeRecord(financialChangeRecord);
|
return financialChangeRecordMapper.insertFinancialChangeRecord(financialChangeRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import com.ghy.payment.mapper.FinancialMasterMapper;
|
||||||
import com.ghy.payment.mapper.PaymentMapper;
|
import com.ghy.payment.mapper.PaymentMapper;
|
||||||
import com.ghy.payment.service.FinancialDetailService;
|
import com.ghy.payment.service.FinancialDetailService;
|
||||||
import com.ghy.payment.service.FinancialMasterService;
|
import com.ghy.payment.service.FinancialMasterService;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -106,7 +107,9 @@ public class FinancialMasterServiceImpl implements FinancialMasterService {
|
||||||
List<FinancialMaster> result = financialMasterMapper.selectFinancialMasterList(param);
|
List<FinancialMaster> result = financialMasterMapper.selectFinancialMasterList(param);
|
||||||
if(!CollectionUtils.isEmpty(result)){
|
if(!CollectionUtils.isEmpty(result)){
|
||||||
financialMasterMapper.updateOrderStatus(result.get(0).getOrderMasterCode(), PayStatus.PAID.getCode());
|
financialMasterMapper.updateOrderStatus(result.get(0).getOrderMasterCode(), PayStatus.PAID.getCode());
|
||||||
|
if(StringUtils.isEmpty(result.get(0).getPaymentId())){
|
||||||
financialMasterMapper.paySucceeded(paymentId, result.get(0).getId(), payType);
|
financialMasterMapper.paySucceeded(paymentId, result.get(0).getId(), payType);
|
||||||
|
}
|
||||||
FinancialDetail request = new FinancialDetail();
|
FinancialDetail request = new FinancialDetail();
|
||||||
request.setFinancialMasterId(result.get(0).getId());
|
request.setFinancialMasterId(result.get(0).getId());
|
||||||
request.setPayStatus(PayStatus.PAID.getCode());
|
request.setPayStatus(PayStatus.PAID.getCode());
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,8 @@ public class PayCallbackService implements CallBackService {
|
||||||
FinancialChangeRecord financialChangeRecord = new FinancialChangeRecord();
|
FinancialChangeRecord financialChangeRecord = new FinancialChangeRecord();
|
||||||
financialChangeRecord.setId(financialChangeRecordId);
|
financialChangeRecord.setId(financialChangeRecordId);
|
||||||
financialChangeRecord.setPayStatus(1);
|
financialChangeRecord.setPayStatus(1);
|
||||||
|
// 加价的支付paymentId回填到remark
|
||||||
|
financialChangeRecord.setRemark(payment.getId());
|
||||||
financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord);
|
financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord);
|
||||||
|
|
||||||
// 修改子订单的payMoney
|
// 修改子订单的payMoney
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,11 @@
|
||||||
<result property="changeMoney" column="change_money" />
|
<result property="changeMoney" column="change_money" />
|
||||||
<result property="status" column="status" />
|
<result property="status" column="status" />
|
||||||
<result property="payStatus" column="pay_status" />
|
<result property="payStatus" column="pay_status" />
|
||||||
|
<result property="leftMoney" column="left_money" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectFinancialChangeRecordVo">
|
<sql id="selectFinancialChangeRecordVo">
|
||||||
select id, order_detail_id, change_money, status, pay_status, type, remark from financial_change_record
|
select id, order_detail_id, change_money, status, pay_status, type, left_money, remark from financial_change_record
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectNotPayRecordByDetailId" parameterType="Long" resultMap="FinancialChangeRecordResult">
|
<select id="selectNotPayRecordByDetailId" parameterType="Long" resultMap="FinancialChangeRecordResult">
|
||||||
|
|
@ -70,6 +71,7 @@
|
||||||
<if test="status != null">status = #{status},</if>
|
<if test="status != null">status = #{status},</if>
|
||||||
<if test="payStatus != null">pay_status = #{payStatus},</if>
|
<if test="payStatus != null">pay_status = #{payStatus},</if>
|
||||||
<if test="type != null">type = #{type},</if>
|
<if test="type != null">type = #{type},</if>
|
||||||
|
<if test="leftMoney != null">left_money = #{leftMoney},</if>
|
||||||
<if test="remark != null">remark = #{remark},</if>
|
<if test="remark != null">remark = #{remark},</if>
|
||||||
</trim>
|
</trim>
|
||||||
where id = #{id}
|
where id = #{id}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue