|
@@ -7,8 +7,8 @@ import com.caimei365.order.mapper.PayOrderMapper;
|
|
|
import com.caimei365.order.mapper.ReceiptMapper;
|
|
|
import com.caimei365.order.model.ResponseJson;
|
|
|
import com.caimei365.order.model.bo.ReceiptParamsBo;
|
|
|
-import com.caimei365.order.model.dto.ReceiptAssociateDto;
|
|
|
import com.caimei365.order.model.dto.ReceiptDto;
|
|
|
+import com.caimei365.order.model.dto.ReceiptOperateDto;
|
|
|
import com.caimei365.order.model.enums.OrderStatus;
|
|
|
import com.caimei365.order.model.enums.ReceiptStatus;
|
|
|
import com.caimei365.order.model.enums.ReceiptType;
|
|
@@ -415,7 +415,7 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
/**
|
|
|
* 操作收款信息(作废,设为返佣/普通/供应商退款/)
|
|
|
*
|
|
|
- * @param receiptDto {
|
|
|
+ * @param receiptOperateDto {
|
|
|
* id:收款Id
|
|
|
* receiptType: 1订单款,2非订单款,3返佣款 4订单款或者非订单款(因财务阶段无法区分订单非订单), 5供应商退款
|
|
|
* noOrderReason: 非订单款说明
|
|
@@ -423,39 +423,39 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
* }
|
|
|
*/
|
|
|
@Override
|
|
|
- public ResponseJson<ReceiptPo> operateReceipt(ReceiptDto receiptDto, HttpHeaders headers) {
|
|
|
+ public ResponseJson<ReceiptPo> operateReceipt(ReceiptOperateDto receiptOperateDto, HttpHeaders headers) {
|
|
|
// 检查收款用户权限
|
|
|
ReceiptUserVo receiptUser = checkPermissions(3, headers);
|
|
|
if (null == receiptUser) {
|
|
|
return ResponseJson.error("无权限操作!", null);
|
|
|
}
|
|
|
- ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptDto.getId());
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptOperateDto.getId());
|
|
|
if (null == receipt) {
|
|
|
return ResponseJson.error("收款数据异常!", null);
|
|
|
}
|
|
|
String time = DateUtils.getDateTime();
|
|
|
ReceiptPo receiptPo = new ReceiptPo();
|
|
|
- receiptPo.setId(receiptDto.getId());
|
|
|
+ receiptPo.setId(receiptOperateDto.getId());
|
|
|
receiptPo.setUpdateDate(time);
|
|
|
// 收款作废
|
|
|
- if (null != receiptDto.getDelFlag() && receiptDto.getDelFlag() > 0) {
|
|
|
+ if (null != receiptOperateDto.getDelFlag() && receiptOperateDto.getDelFlag() > 0) {
|
|
|
// 收款状态receiptStatus:2已确认(待审核)、3审核通过
|
|
|
- if (null != receiptDto.getReceiptStatus() && (2 == receiptDto.getReceiptStatus() || 3 == receiptDto.getReceiptStatus())) {
|
|
|
+ if (null != receipt.getReceiptStatus() && (2 == receipt.getReceiptStatus() || 3 == receipt.getReceiptStatus())) {
|
|
|
// 收款款项类型receiptType:1订单款
|
|
|
- if (null != receiptDto.getReceiptType() && 1 == receiptDto.getReceiptType()) {
|
|
|
+ if (null != receipt.getReceiptType() && 1 == receipt.getReceiptType()) {
|
|
|
return ResponseJson.error(-2, "该收款已关联了订单,不能作废!请刷新页面查看最新数据", null);
|
|
|
}
|
|
|
// 收款款项类型receiptType:3返佣款
|
|
|
- else if (null != receiptDto.getReceiptType() && 3 == receiptDto.getReceiptType()) {
|
|
|
+ else if (null != receipt.getReceiptType() && 3 == receipt.getReceiptType()) {
|
|
|
return ResponseJson.error(-2, "该收款已关联了返佣订单,不能作废!请刷新页面查看最新数据", null);
|
|
|
}
|
|
|
}
|
|
|
- receiptPo.setDelFlag(receiptDto.getDelFlag());
|
|
|
+ receiptPo.setDelFlag(receiptOperateDto.getDelFlag());
|
|
|
}
|
|
|
- receiptPo.setReceiptType(receiptDto.getReceiptType());
|
|
|
+ receiptPo.setReceiptType(receiptOperateDto.getReceiptType());
|
|
|
// 收款款项类型receiptType:2非订单款
|
|
|
- if (null != receiptDto.getReceiptType() && 2 == receiptDto.getReceiptType()) {
|
|
|
- receiptPo.setNoOrderReason(receiptDto.getNoOrderReason());
|
|
|
+ if (null != receiptOperateDto.getReceiptType() && 2 == receiptOperateDto.getReceiptType()) {
|
|
|
+ receiptPo.setNoOrderReason(receiptOperateDto.getNoOrderReason());
|
|
|
receiptPo.setReceiptStatus(2);
|
|
|
receiptPo.setConfirmUserPermissionId(receiptUser.getId());
|
|
|
receiptPo.setConfirmDate(time);
|
|
@@ -883,7 +883,7 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
/**
|
|
|
* 关联收款信息
|
|
|
*
|
|
|
- * @param receiptAssociateDto {
|
|
|
+ * @param receiptOperateDto {
|
|
|
* id: 收款Id
|
|
|
* orderIds: 关联订单IDS
|
|
|
* confirmType: 确认订单类型:1小额抹平确认,2大额抹平确认,3大额退款余额,4确认关联
|
|
@@ -892,13 +892,13 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public ResponseJson<Void> receiptAssociate(ReceiptAssociateDto receiptAssociateDto, HttpHeaders headers) {
|
|
|
+ public ResponseJson<Void> receiptAssociate(ReceiptOperateDto receiptOperateDto, HttpHeaders headers) {
|
|
|
// 检查收款用户权限: 4收款关联订单
|
|
|
ReceiptUserVo receiptUser = checkPermissions(4, headers);
|
|
|
if (null == receiptUser) {
|
|
|
return ResponseJson.error("无权限操作!", null);
|
|
|
}
|
|
|
- ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptOperateDto.getId());
|
|
|
if (null == receipt) {
|
|
|
return ResponseJson.error("收款数据异常!", null);
|
|
|
}
|
|
@@ -910,17 +910,17 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
BeanUtils.copyProperties(receipt, receiptPo);
|
|
|
receiptPo.setUpdateDate(time);
|
|
|
receiptPo.setReceiptStatus(2);
|
|
|
- receiptPo.setConfirmType(receiptAssociateDto.getConfirmType());
|
|
|
+ receiptPo.setConfirmType(receiptOperateDto.getConfirmType());
|
|
|
// 非订单款项确认
|
|
|
if (2 == receipt.getReceiptType()) {
|
|
|
- if (StringUtils.isNotBlank(receiptAssociateDto.getNoOrderReason())) {
|
|
|
- receiptPo.setNoOrderReason(receiptAssociateDto.getNoOrderReason());
|
|
|
+ if (StringUtils.isNotBlank(receiptOperateDto.getNoOrderReason())) {
|
|
|
+ receiptPo.setNoOrderReason(receiptOperateDto.getNoOrderReason());
|
|
|
}
|
|
|
}
|
|
|
// 订单款项
|
|
|
if (1 == receipt.getReceiptType()) {
|
|
|
- if (StringUtils.isNotBlank(receiptAssociateDto.getOrderIds())) {
|
|
|
- String[] orderIDS = receiptAssociateDto.getOrderIds().split(",");
|
|
|
+ if (StringUtils.isNotBlank(receiptOperateDto.getOrderIds())) {
|
|
|
+ String[] orderIDS = receiptOperateDto.getOrderIds().split(",");
|
|
|
// 关联一个订单
|
|
|
if (orderIDS.length == 1) {
|
|
|
// 收款项和订单关系表
|
|
@@ -1094,20 +1094,20 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
/**
|
|
|
* 确认收款-关联供应商退款
|
|
|
*
|
|
|
- * @param receiptAssociateDto {
|
|
|
+ * @param receiptOperateDto {
|
|
|
* id: 收款Id
|
|
|
* shopOrderId: 关联供应商退款子订单ID
|
|
|
* }
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public ResponseJson<ReceiptPo> receiptAssociateRefund(ReceiptAssociateDto receiptAssociateDto, HttpHeaders headers) {
|
|
|
+ public ResponseJson<Void> receiptAssociateRefund(ReceiptOperateDto receiptOperateDto, HttpHeaders headers) {
|
|
|
// 检查收款用户权限: 6收款关联供应商退款
|
|
|
ReceiptUserVo receiptUser = checkPermissions(6, headers);
|
|
|
if (null == receiptUser) {
|
|
|
return ResponseJson.error("无权限操作!", null);
|
|
|
}
|
|
|
- ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptOperateDto.getId());
|
|
|
if (null == receipt) {
|
|
|
return ResponseJson.error("收款数据异常!", null);
|
|
|
}
|
|
@@ -1115,9 +1115,9 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
if (5 != receipt.getReceiptStatus() && 1 != receipt.getReceiptStatus()) {
|
|
|
return ResponseJson.error("收款记录状态异常!", null);
|
|
|
}
|
|
|
- ShopOrderVo shopOrder = receiptMapper.getShopOrderById(receiptAssociateDto.getShopOrderId());
|
|
|
+ ShopOrderVo shopOrder = receiptMapper.getShopOrderById(receiptOperateDto.getShopOrderId());
|
|
|
// 总退款金额
|
|
|
- Double refundAmount = receiptMapper.getRefundShopAmount(receiptAssociateDto.getShopOrderId());
|
|
|
+ Double refundAmount = receiptMapper.getRefundShopAmount(receiptOperateDto.getShopOrderId());
|
|
|
// 确认本次收款金额大于已付金额与已退金额的差值,不能关联
|
|
|
if (MathUtil.compare(shopOrder.getPayedShopAmount(), MathUtil.add(refundAmount, receipt.getReceiptAmount())) < 0) {
|
|
|
return ResponseJson.error("确认本次收款金额大于已付金额与已退金额的差值,不能关联!", null);
|
|
@@ -1136,7 +1136,7 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
receiptMapper.updateReceipt(receiptPo);
|
|
|
// 保存 收款项和订单关系
|
|
|
OrderReceiptRelationPo relation = new OrderReceiptRelationPo();
|
|
|
- relation.setOrderId(receiptAssociateDto.getShopOrderId());
|
|
|
+ relation.setOrderId(receiptOperateDto.getShopOrderId());
|
|
|
relation.setReceiptId(receipt.getId());
|
|
|
relation.setRelationType(1);
|
|
|
relation.setAssociateAmount(receipt.getReceiptAmount());
|
|
@@ -1186,7 +1186,7 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
/**
|
|
|
* 确认收款-关联返佣款
|
|
|
*
|
|
|
- * @param receiptAssociateDto {
|
|
|
+ * @param receiptOperateDto {
|
|
|
* id: 收款Id
|
|
|
* shopOrderIds: 关联返佣子订单IDs
|
|
|
* rebateRemarks:关联返佣备注
|
|
@@ -1194,19 +1194,19 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
*/
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public ResponseJson<ReceiptPo> receiptAssociateRebate(ReceiptAssociateDto receiptAssociateDto, HttpHeaders headers) {
|
|
|
+ public ResponseJson<Void> receiptAssociateRebate(ReceiptOperateDto receiptOperateDto, HttpHeaders headers) {
|
|
|
// 检查收款用户权限: 5收款关联返佣
|
|
|
ReceiptUserVo receiptUser = checkPermissions(5, headers);
|
|
|
if (null == receiptUser) {
|
|
|
return ResponseJson.error("无权限操作!", null);
|
|
|
}
|
|
|
- String[] shopOrderIdArr = receiptAssociateDto.getShopOrderIds().split(",");
|
|
|
+ String[] shopOrderIdArr = receiptOperateDto.getShopOrderIds().split(",");
|
|
|
|
|
|
List<Integer> shopIdList = receiptMapper.getShopIdList(shopOrderIdArr);
|
|
|
if (shopIdList.size() > 1) {
|
|
|
return ResponseJson.error("子订单不属于相同的供应商!", null);
|
|
|
}
|
|
|
- ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptAssociateDto.getId());
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(receiptOperateDto.getId());
|
|
|
if (null == receipt) {
|
|
|
return ResponseJson.error("收款数据异常!", null);
|
|
|
}
|
|
@@ -1225,8 +1225,8 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
receiptPo.setReceiptStatus(2);
|
|
|
receiptPo.setConfirmDate(time);
|
|
|
receiptPo.setConfirmUserPermissionId(receiptUser.getId());
|
|
|
- if (StringUtils.isNotBlank(receiptAssociateDto.getRebateRemarks())) {
|
|
|
- receiptPo.setRebateRemarks(receiptAssociateDto.getRebateRemarks());
|
|
|
+ if (StringUtils.isNotBlank(receiptOperateDto.getRebateRemarks())) {
|
|
|
+ receiptPo.setRebateRemarks(receiptOperateDto.getRebateRemarks());
|
|
|
}
|
|
|
receiptMapper.updateReceipt(receiptPo);
|
|
|
for (String shopOrderId : shopOrderIdArr) {
|
|
@@ -1260,23 +1260,299 @@ public class ReceiptServiceImpl implements ReceiptService {
|
|
|
order.setReceiptStatus(3);
|
|
|
order.setPayStatus(3);
|
|
|
if (order.getStatus().toString().length() == 2) {
|
|
|
- order.setStatus(Integer.valueOf("3" + order.getStatus().toString().substring(1, 2)));
|
|
|
+ order.setStatus(Integer.valueOf("3" + order.getStatus().toString().charAt(1)));
|
|
|
}
|
|
|
} else {
|
|
|
//子订单的款还没有收全
|
|
|
order.setReceiptStatus(2);
|
|
|
order.setPayStatus(2);
|
|
|
if (order.getStatus().toString().length() == 2) {
|
|
|
- order.setStatus(Integer.valueOf("2" + order.getStatus().toString().substring(1, 2)));
|
|
|
+ order.setStatus(Integer.valueOf("2" + order.getStatus().toString().charAt(1)));
|
|
|
}
|
|
|
}
|
|
|
order.setUpdateDate(time);
|
|
|
- // 更新订单状态
|
|
|
- receiptMapper.updateOrderStatus(order);
|
|
|
+ // 更新订单收款状态
|
|
|
+ payOrderMapper.updateOrderStatus(order);
|
|
|
}
|
|
|
return ResponseJson.success("关联返佣款成功!", null);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 审核收款信息
|
|
|
+ *
|
|
|
+ * @param id 收款Id
|
|
|
+ * @param receiptStatus 收款状态
|
|
|
+ * @param reviewReason 审核不通过原因
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @Override
|
|
|
+ public ResponseJson<Void> receiptAudit(Integer id, Integer receiptStatus, String reviewReason, HttpHeaders headers) {
|
|
|
+ // 检查收款用户权限: 7收款审核
|
|
|
+ ReceiptUserVo receiptUser = checkPermissions(7, headers);
|
|
|
+ if (null == receiptUser) {
|
|
|
+ return ResponseJson.error("无权限操作!", null);
|
|
|
+ }
|
|
|
+ ReceiptVo receipt = receiptMapper.getReceiptDetail(id);
|
|
|
+ if (null == receipt) {
|
|
|
+ return ResponseJson.error("收款数据异常!", null);
|
|
|
+ }
|
|
|
+ // ReceiptVo -- copy to --> ReceiptPo
|
|
|
+ String time = DateUtils.getDateTime();
|
|
|
+ ReceiptPo receiptPo = new ReceiptPo();
|
|
|
+ BeanUtils.copyProperties(receipt, receiptPo);
|
|
|
+ receiptPo.setUpdateDate(time);
|
|
|
+ // 收款项和订单关系
|
|
|
+ List<OrderReceiptRelationPo> listRelation = new ArrayList<>();
|
|
|
+ // 订单款项
|
|
|
+ if (null != receipt.getReceiptType() && 1 == receipt.getReceiptType()){
|
|
|
+ // 只要当收款状态为已确认状态时候才能做审核操作
|
|
|
+ if (3 == receiptStatus && 2 == receipt.getReceiptStatus()) {
|
|
|
+ // 收款项和订单关系
|
|
|
+ listRelation = receiptMapper.getOrderReceiptRelationList(receipt.getId());
|
|
|
+ String statusFlag = "";
|
|
|
+ Integer orderReceiptStatus = null;
|
|
|
+ Double totalAssociateAmount = 0d;
|
|
|
+ for (OrderReceiptRelationPo relationItem : listRelation) {
|
|
|
+ // 订单信息
|
|
|
+ OrderVo order = orderCommonMapper.getOrderByOrderId(relationItem.getOrderId());
|
|
|
+ Double payAbleAmount = order.getPayableAmount();
|
|
|
+ Double unPayMoney = getUnPayMoney(order, false);
|
|
|
+ log.info("-----------------UnPayMoney:" + unPayMoney + ", payAbleAmount:" + payAbleAmount);
|
|
|
+ if (unPayMoney.equals(relationItem.getAssociateAmount())) {
|
|
|
+ //确认关联(收款金额=订单应付金额)
|
|
|
+ statusFlag = "3";
|
|
|
+ orderReceiptStatus = 3;
|
|
|
+ } else if (relationItem.getAssociateAmount() < unPayMoney) {
|
|
|
+ /*(收款金额<订单应付金额)*/
|
|
|
+ statusFlag = "2";
|
|
|
+ orderReceiptStatus = 2;
|
|
|
+ } else if (relationItem.getAssociateAmount() > unPayMoney) {
|
|
|
+ /*(收款金额>订单应付金额)*/
|
|
|
+ statusFlag = "3";
|
|
|
+ orderReceiptStatus = 3;
|
|
|
+ }
|
|
|
+ //大额退款余额-大额抹平确认-小额抹平确认
|
|
|
+ if (null != receipt.getConfirmType() && (3 == receipt.getConfirmType() || 2 == receipt.getConfirmType() || 1 == receipt.getConfirmType())) {
|
|
|
+ // 查询待审核数量
|
|
|
+ int pendingCount = receiptMapper.getPendingtAuditCount(order.getOrderId());
|
|
|
+ if (pendingCount > 1) {
|
|
|
+ int i = pendingCount - 1;
|
|
|
+ String operating;
|
|
|
+ if (3 == receipt.getConfirmType()) {
|
|
|
+ operating = "多收退余额";
|
|
|
+ } else if (2 == receipt.getConfirmType()) {
|
|
|
+ operating = "多收抹平";
|
|
|
+ } else {
|
|
|
+ operating = "少收抹平";
|
|
|
+ }
|
|
|
+ // 设置手动回滚事务
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ log.info("本条收款进行了" + operating + "操作需要最后审核,请先审核该订单的其他" + i + "条收款");
|
|
|
+ return ResponseJson.error("本条收款进行了" + operating + "操作需要最后审核,请先审核该订单的其他" + i + "条收款", null);
|
|
|
+ }
|
|
|
+ statusFlag = "3";
|
|
|
+ orderReceiptStatus = 3;
|
|
|
+ totalAssociateAmount += relationItem.getAssociateAmount();
|
|
|
+ }
|
|
|
+ statusFlag = statusFlag + order.getStatus().toString().charAt(1);
|
|
|
+ order.setStatus(Integer.parseInt(statusFlag));
|
|
|
+ order.setReceiptStatus(orderReceiptStatus);
|
|
|
+ //设置订单状态
|
|
|
+ //获取主订单下面的所有的确认收货商品数量
|
|
|
+ Integer receiptNum = receiptMapper.getReceiptNumByOrderId(order.getOrderId());
|
|
|
+ Integer returnAndCancelNum = 0;
|
|
|
+ //获取该主订单下面所有已完成状态退货退款商品数量
|
|
|
+ if (null != order.getRefundType() && (1 == order.getRefundType() || 2 == order.getRefundType())) {
|
|
|
+ returnAndCancelNum = receiptMapper.getReturnAndCancelNum(order.getOrderId());
|
|
|
+ }
|
|
|
+ //确认收货商品数量+已完成状态退货退款商品数量 = 订单商品总数
|
|
|
+ if (order.getProductCount().equals(returnAndCancelNum + receiptNum)) {
|
|
|
+ //已收款--->交易完成
|
|
|
+ //已收款+已付款--->订单完成
|
|
|
+ if (3 == order.getReceiptStatus()) {
|
|
|
+ order.setStatus(OrderStatus.TRANSACTION_COMPLETED.getCode());
|
|
|
+ }
|
|
|
+ if (3 == order.getReceiptStatus() && 3 == order.getPayStatus()) {
|
|
|
+ order.setStatus(OrderStatus.ORDER_COMPLETED.getCode());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 更新订单收款状态
|
|
|
+ payOrderMapper.updateOrderStatus(order);
|
|
|
+ log.info("-------------审核通过订单状态改变---orderID:" + order.getOrderId() + "--status:" + order.getStatus());
|
|
|
+ //判断是否有充值商品,充值到余额
|
|
|
+ Integer rechargeGoods = null;
|
|
|
+ //缴纳订金订单
|
|
|
+ int[] productId1 = {6060, 6061, 6062, 6063, 6064};
|
|
|
+ //充值余额订单
|
|
|
+ int[] productId2 = {6065, 6066, 6067, 6068, 6069};
|
|
|
+ List<OrderProductVo> orderProductList = orderCommonMapper.getOrderProductByOrderId(order.getOrderId());
|
|
|
+ for (OrderProductVo orderProduct : orderProductList) {
|
|
|
+ if (ArrayUtils.contains(productId1, orderProduct.getProductId())) {
|
|
|
+ rechargeGoods = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (ArrayUtils.contains(productId2, orderProduct.getProductId())) {
|
|
|
+ rechargeGoods = 2;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 充值与订金订单
|
|
|
+ if (rechargeGoods != null) {
|
|
|
+ Double userMoney = baseMapper.getUserMoney(order.getUserId());
|
|
|
+ Double ableUserMoney = baseMapper.getAbleUserMoney(order.getUserId());
|
|
|
+ userMoney = MathUtil.add(userMoney, relationItem.getAssociateAmount()).doubleValue();
|
|
|
+ ableUserMoney = MathUtil.add(ableUserMoney, relationItem.getAssociateAmount()).doubleValue();
|
|
|
+ //保存余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
+ balanceRecord.setUserId(order.getUserId());
|
|
|
+ balanceRecord.setType(1);
|
|
|
+ if (rechargeGoods == 1) {
|
|
|
+ balanceRecord.setBalanceType(6);
|
|
|
+ } else {
|
|
|
+ balanceRecord.setBalanceType(7);
|
|
|
+ }
|
|
|
+ balanceRecord.setAddDate(new Date());
|
|
|
+ balanceRecord.setAmount(relationItem.getAssociateAmount());
|
|
|
+ balanceRecord.setOrderId(order.getOrderId());
|
|
|
+ balanceRecord.setReceiptId(receipt.getId());
|
|
|
+ balanceRecord.setRemark("订单商品充值余额");
|
|
|
+ balanceRecord.setDelFlag(0);
|
|
|
+ // 保存 余额收支记录
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
+ baseMapper.updateUserMoney(userMoney, ableUserMoney, order.getUserId());
|
|
|
+ log.info("订单商品充值余额>>>>>>>>>>>>>" + relationItem.getAssociateAmount());
|
|
|
+ }
|
|
|
+ if (null != orderReceiptStatus && 3 == orderReceiptStatus) {
|
|
|
+ // 已收款赠送采美豆自主下单赠送采美豆
|
|
|
+ if (1 == order.getOrderType()) {
|
|
|
+ UserBeansHistoryPo beansHistory = new UserBeansHistoryPo();
|
|
|
+ beansHistory.setUserId(order.getUserId());
|
|
|
+ beansHistory.setOrderId(order.getOrderId());
|
|
|
+ beansHistory.setBeansType(5);
|
|
|
+ beansHistory.setType(1);
|
|
|
+ beansHistory.setPushStatus(0);
|
|
|
+ beansHistory.setAddTime(new Date());
|
|
|
+ beansHistory.setDelFlag(0);
|
|
|
+ int num;
|
|
|
+ if (MathUtil.compare(1000, order.getPayTotalFee()) > -1) {
|
|
|
+ num = 0;
|
|
|
+ } else if (MathUtil.compare(5000, order.getPayTotalFee()) > -1) {
|
|
|
+ num = 1000;
|
|
|
+ } else if (MathUtil.compare(10000, order.getPayTotalFee()) > -1) {
|
|
|
+ num = 2500;
|
|
|
+ } else if (MathUtil.compare(25000, order.getPayTotalFee()) > -1) {
|
|
|
+ num = 5000;
|
|
|
+ } else if (MathUtil.compare(100000, order.getPayTotalFee()) > -1) {
|
|
|
+ num = 7500;
|
|
|
+ } else if (MathUtil.compare(250000, order.getPayTotalFee()) > -1) {
|
|
|
+ num = 10000;
|
|
|
+ } else if (MathUtil.compare(500000, order.getPayTotalFee()) > -1) {
|
|
|
+ num = 12500;
|
|
|
+ } else {
|
|
|
+ num = 20000;
|
|
|
+ }
|
|
|
+ if (num > 0) {
|
|
|
+ beansHistory.setNum(num);
|
|
|
+ // 保存 采美豆使用记录
|
|
|
+ baseMapper.insertBeansHistory(beansHistory);
|
|
|
+ Integer userBeans = baseMapper.getUserBeans(order.getUserId());
|
|
|
+ userBeans += num;
|
|
|
+ baseMapper.updateUserBeans(order.getUserId(), userBeans);
|
|
|
+ log.info("【线下收款】>>>>>更新用户采美豆(update[user(userBeans:" + userBeans + ")]),userId:" + beansHistory.getUserId());
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != receipt.getConfirmType() && 3 == receipt.getConfirmType()) {
|
|
|
+ Double money = receipt.getReceiptAmount() - totalAssociateAmount;
|
|
|
+ // 订单信息
|
|
|
+ OrderVo order = orderCommonMapper.getOrderByOrderId(listRelation.get(0).getOrderId());
|
|
|
+ Double userMoney = baseMapper.getUserMoney(order.getUserId());
|
|
|
+ Double ableUserMoney = baseMapper.getAbleUserMoney(order.getUserId());
|
|
|
+ log.info("----------------------->原余额:" + userMoney + "==原可用余额:" + ableUserMoney);
|
|
|
+ // 减操作不更新可用余额
|
|
|
+ if (money < 0d) {
|
|
|
+ if (0 != order.getStatus()) {
|
|
|
+ userMoney = MathUtil.add(userMoney, money).doubleValue();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 待确认状态不需要修改余额,因为本身存在冻结余额不需要重复退回
|
|
|
+ if (0 != order.getStatus()) {
|
|
|
+ userMoney = MathUtil.add(ableUserMoney, money).doubleValue();
|
|
|
+ }
|
|
|
+ ableUserMoney = MathUtil.add(ableUserMoney, money).doubleValue();
|
|
|
+ }
|
|
|
+ log.info("大额抹平金额退回账户:" + order.getUserId() + ",------->大额抹平金额:" + money);
|
|
|
+ //保存余额到余额收支记录
|
|
|
+ BalanceRecordPo balanceRecord = new BalanceRecordPo();
|
|
|
+ balanceRecord.setUserId(order.getUserId());
|
|
|
+ balanceRecord.setType(1);
|
|
|
+ balanceRecord.setBalanceType(2);
|
|
|
+ balanceRecord.setAddDate(new Date());
|
|
|
+ balanceRecord.setAmount(money);
|
|
|
+ balanceRecord.setOrderId(order.getOrderId());
|
|
|
+ balanceRecord.setReceiptId(receipt.getId());
|
|
|
+ balanceRecord.setRemark("订单商品充值余额");
|
|
|
+ balanceRecord.setDelFlag(0);
|
|
|
+ // 保存 余额收支记录
|
|
|
+ baseMapper.insertBalanceRecord(balanceRecord);
|
|
|
+ baseMapper.updateUserMoney(userMoney, ableUserMoney, order.getUserId());
|
|
|
+ log.info("大额抹平金额退回账户>>>>>>>>>>>>>" + money);
|
|
|
+ }
|
|
|
+ } else if (4 == receiptStatus && 2 == receipt.getReceiptStatus()) {
|
|
|
+ //审核不通过
|
|
|
+ receiptPo.setReviewReason(reviewReason);
|
|
|
+ } else {
|
|
|
+ // 设置手动回滚事务
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ log.info("订单不是已确认状态 或者 审核结果不正确");
|
|
|
+ return ResponseJson.error("审核信息有误!", null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ receiptPo.setReviewUserPermissionId(receiptUser.getId());
|
|
|
+ receiptPo.setReceiptStatus(receiptStatus);
|
|
|
+ receiptPo.setReviewDate(time);
|
|
|
+ receiptMapper.updateReceipt(receiptPo);
|
|
|
+
|
|
|
+ // 推送消息给指定人员
|
|
|
+ if (3 == receiptStatus) {
|
|
|
+ // 审核通过
|
|
|
+ String title = "订单支付成功!";
|
|
|
+ String openid = receiptUser.getOpenid();
|
|
|
+ String date = receiptPo.getReceiptDate();
|
|
|
+ for (OrderReceiptRelationPo relationItem : listRelation) {
|
|
|
+ // 订单信息
|
|
|
+ OrderVo order = orderCommonMapper.getOrderByOrderId(relationItem.getOrderId());
|
|
|
+ String remarkText = "订单ID:"+order.getOrderId()+","+order.getReceiptStatus()+",买家:"+order.getUserName();
|
|
|
+
|
|
|
+ //todo /spCmOrder/listDetails.rpc?orderId="+order.getOrderId()
|
|
|
+ String redirectUrl = "";
|
|
|
+ // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
|
|
|
+ weChatService.sendTemplateMsg(openid, title, relationItem.getAssociateAmount(), date, remarkText, redirectUrl);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 审核未通过
|
|
|
+ String title = "订单审核未通过,请重新确认审核!";
|
|
|
+ String date = receipt.getReceiptDate();
|
|
|
+ String receiptTypeStr = receiptMapper.getReceiptTypeStrById(receipt.getPayType());
|
|
|
+ String remarkText = "收款类型:"+ receiptTypeStr +";"+"审核时间:"+receiptPo.getReviewDate();
|
|
|
+ double associateAmount = receiptMapper.countAssociateAmountById(receipt.getId());
|
|
|
+ List<String> openidList = receiptMapper.getOpenidListByUserType(1);
|
|
|
+ openidList.removeIf(Objects::isNull);
|
|
|
+
|
|
|
+ // todo /api/user/receivables/toReceivablesPage.rpc?pageName="+pageName+"&id="+receipt.getId()
|
|
|
+ String redirectUrl = "";
|
|
|
+
|
|
|
+ for (String openid : openidList) {
|
|
|
+ // sendTemplateMsg(openid, 标题, 金额, 收款日期, 备注, 跳转链接)
|
|
|
+ weChatService.sendTemplateMsg(openid, title, associateAmount, date, remarkText, redirectUrl);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ResponseJson.success("审核收款信息成功!", null);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 设置订单的款项信息
|
|
|
*/
|