浏览代码

余额支付修改用户余额改为在回调修改,余额记录增加单号

liyuan 5 月之前
父节点
当前提交
15c6e72553

+ 11 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/feign/IPJCorpClient.java

@@ -3,6 +3,7 @@ package org.springblade.salesPart.feign;
 import org.springblade.core.tool.api.R;
 import org.springblade.salesPart.entity.PjCorpsDesc;
 import org.springblade.salesPart.entity.PjOrder;
+import org.springblade.salesPart.vo.PayRecoveredBalanceVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -28,6 +29,8 @@ public interface IPJCorpClient {
 	String UPDATE_REVOKE_INTEGRAL_LT = API_PREFIX + "/updateRevokeIntegral";
 	String UPDATE_CORPS = API_PREFIX + "/updateCorps";
 
+	String UPDATE_CORPS_RECOVERED_BALANCE = API_PREFIX + "/updateRecoveredBalance";
+
 	/**
 	 * 根据id查询订单
 	 *
@@ -46,4 +49,12 @@ public interface IPJCorpClient {
 	@PostMapping(UPDATE_CORPS)
 	R updateCorps(@RequestBody PjCorpsDesc corpsDesc);
 
+	/**
+	 * 支付回调修改余额
+	 *
+	 * @param payRecoveredBalanceVo 参数
+	 * @return 结果
+	 */
+	@PostMapping(UPDATE_CORPS_RECOVERED_BALANCE)
+	R<String> updateRecoveredBalance(PayRecoveredBalanceVo payRecoveredBalanceVo);
 }

+ 5 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/recycling/entity/GreenRecyclingRecord.java

@@ -64,4 +64,9 @@ public class GreenRecyclingRecord implements Serializable {
 	 */
 	private Integer changeType;
 
+	/**
+	 * 订单号
+	 */
+	private String orderNo;
+
 }

+ 25 - 0
blade-service-api/blade-sales-part-api/src/main/java/org/springblade/salesPart/vo/PayRecoveredBalanceVo.java

@@ -0,0 +1,25 @@
+package org.springblade.salesPart.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author Rain
+ */
+@Data
+public class PayRecoveredBalanceVo {
+
+
+	private String orderNo;
+
+
+	private BigDecimal recoveredBalance;
+
+
+	private String tenantId;
+
+	private Long corpsDescId;
+
+	private Long createUserId;
+}

+ 21 - 0
blade-service/blade-pay/src/main/java/org/springblade/pay/tonglianPayment/service/impl/PaymentServiceImpl.java

@@ -36,6 +36,7 @@ import org.springblade.salesPart.feign.IMaintenanceClient;
 import org.springblade.salesPart.feign.IPJCorpClient;
 import org.springblade.salesPart.feign.IPJOrderClient;
 import org.springblade.salesPart.maintenance.entity.Maintenance;
+import org.springblade.salesPart.vo.PayRecoveredBalanceVo;
 import org.springblade.stock.entity.StockGoods;
 import org.springblade.stock.feign.IStockGoodsClient;
 import org.springblade.stock.vo.StockGoodsVO;
@@ -908,6 +909,9 @@ public class PaymentServiceImpl implements IPaymentService {
 						StringBuilder openIds = new StringBuilder();
 						String serialNumber = re.getData().get(0).getSrcOrdNo();
 						BigDecimal amount = new BigDecimal("0.00");
+						BigDecimal useRecoveredBalance = BigDecimal.ZERO;
+						Long createUserId = null;
+						Long customerId = null;
 						for (PjOrder selectOrder : re.getData()) {
 							selectOrder.setActualPaymentStatus(2);
 							selectOrder.setPaymentDate(new Date());
@@ -921,6 +925,14 @@ public class PaymentServiceImpl implements IPaymentService {
 							wechatMark.setSalesCompanyName(selectOrder.getSalesCompanyName());
 							amount = amount.add(selectOrder.getPaymentAmountTl());
 							ipjOrderClient.updateBySrcOrgId(selectOrder.getId() + "");
+							if (Objects.isNull(createUserId) && Objects.nonNull(selectOrder.getCreateUser())) {
+								createUserId = selectOrder.getCreateUser();
+								customerId = selectOrder.getCustomerId();
+							}
+							if (Objects.nonNull(selectOrder.getPaymentRecoveredBalance())) {
+								// 如果使用了余额进行扣除
+								useRecoveredBalance = useRecoveredBalance.add(selectOrder.getPaymentRecoveredBalance());
+							}
 							LocalDateTime now = LocalDateTime.now();
 							DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
 							String formatted = now.format(formatter);
@@ -978,6 +990,15 @@ public class PaymentServiceImpl implements IPaymentService {
 								}
 							}
 						}
+						if (useRecoveredBalance.compareTo(BigDecimal.ZERO) > 0) {
+							PayRecoveredBalanceVo payRecoveredBalanceVo = new PayRecoveredBalanceVo();
+							payRecoveredBalanceVo.setRecoveredBalance(useRecoveredBalance);
+							payRecoveredBalanceVo.setCorpsDescId(customerId);
+							payRecoveredBalanceVo.setTenantId(parametersDetails.getTenantId());
+							payRecoveredBalanceVo.setCreateUserId(createUserId);
+							payRecoveredBalanceVo.setOrderNo(serialNumber);
+							ipjCorpClient.updateRecoveredBalance(payRecoveredBalanceVo);
+						}
 						ipjOrderClient.updateOrder(re.getData());
 						String status = sysClient.paramServiceValue( parametersDetails.getTenantId(),"whether.calculation.integral");
 						if ("1".equals(status)) {

+ 33 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/corps/fegin/PJCorprClient.java

@@ -3,6 +3,8 @@ package org.springblade.salesPart.corps.fegin;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import lombok.AllArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tenant.annotation.TenantIgnore;
@@ -14,11 +16,16 @@ import org.springblade.salesPart.feign.IPJCorpClient;
 import org.springblade.salesPart.goods.mapper.GoodsDescMapper;
 import org.springblade.salesPart.order.mapper.OrderItemsMapper;
 import org.springblade.salesPart.order.service.IPjIntegralDetailService;
+import org.springblade.salesPart.recycling.entity.GreenRecyclingRecord;
+import org.springblade.salesPart.recycling.service.IGreenRecyclingRecordService;
+import org.springblade.salesPart.util.WxParamUtil;
+import org.springblade.salesPart.vo.PayRecoveredBalanceVo;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RestController;
 import springfox.documentation.annotations.ApiIgnore;
 
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -41,6 +48,10 @@ public class PJCorprClient implements IPJCorpClient {
 
 	private final IPjIntegralDetailService integralDetailService;
 
+	private final IGreenRecyclingRecordService greenRecyclingRecordService;
+
+	private final Logger logger = LoggerFactory.getLogger(PJCorprClient.class);
+
 
 	@Override
 	public PjCorpsDesc getByCorp(Long id) {
@@ -279,4 +290,26 @@ public class PJCorprClient implements IPJCorpClient {
 	public R updateCorps(PjCorpsDesc corpsDesc) {
 		return R.data(corpsDescMapper.updateById(corpsDesc));
 	}
+
+	@Override
+	public R<String> updateRecoveredBalance(PayRecoveredBalanceVo payRecoveredBalanceVo) {
+		PjCorpsDesc corpsDesc = corpsDescMapper.selectById(payRecoveredBalanceVo.getCorpsDescId());
+		if (Objects.isNull(corpsDesc)) {
+			logger.error("支付回调修改余额未找到客户信息,当前订单为:{}, 使用余额为:{}", payRecoveredBalanceVo.getOrderNo(), payRecoveredBalanceVo.getRecoveredBalance());
+			return R.fail("支付回调未找到客户信息");
+		}
+		BigDecimal srcBalance = corpsDesc.getRecoveredBalance();
+		PjCorpsDesc updateCorps = new PjCorpsDesc();
+		updateCorps.setId(corpsDesc.getId());
+		updateCorps.setTenantId(corpsDesc.getTenantId());
+		updateCorps.setRecoveredBalance(corpsDesc.getRecoveredBalance().subtract(payRecoveredBalanceVo.getRecoveredBalance()));
+		int count = corpsDescMapper.updateById(updateCorps);
+		greenRecyclingRecordService.save(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, payRecoveredBalanceVo.getCreateUserId(),
+			srcBalance, payRecoveredBalanceVo.getRecoveredBalance(), 1, payRecoveredBalanceVo.getOrderNo()));
+		if (count <= 0) {
+			logger.error("支付回调修改余额未找到客户信息,当前订单为:{}, 使用余额为:{}", payRecoveredBalanceVo.getOrderNo(), payRecoveredBalanceVo.getRecoveredBalance());
+			return R.fail("支付回调未找到客户信息");
+		}
+		return R.success("支付回调修改余额成功");
+	}
 }

+ 2 - 2
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/order/service/impl/OrderServiceImpl.java

@@ -6393,7 +6393,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 				if (realTotalMoney.compareTo(BigDecimal.ZERO) > 0) {
 					BigDecimal srcRecoveredBalance = corpsDesc.getRecoveredBalance();
 					corpsDesc.setRecoveredBalance(srcRecoveredBalance.add(realTotalMoney));
-					greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, AuthUtil.getUserId(), srcRecoveredBalance, realTotalMoney, 2));
+					greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, AuthUtil.getUserId(), srcRecoveredBalance, realTotalMoney, NumberEnum.TWO.number, order.getOrdNo()));
 				}
 				corpsDescMapper.updateById(corpsDesc);
 			}
@@ -6419,7 +6419,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, PjOrder> implemen
 					if (realAmount.compareTo(BigDecimal.ZERO) > 0) {
 						BigDecimal srcRecoveredBalance = corpsDesc.getRecoveredBalance();
 						corpsDesc.setRecoveredBalance(corpsDesc.getRecoveredBalance().add(recoveredBalanceAmount));
-						greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, AuthUtil.getUserId(), srcRecoveredBalance, recoveredBalanceAmount, 2));
+						greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, AuthUtil.getUserId(), srcRecoveredBalance, recoveredBalanceAmount, 2, order.getOrdNo()));
 						corpsDescMapper.updateById(corpsDesc);
 					}
 					R<Map<String, String>> r = payService.refund(order.getId(), realAmount, order.getOrdNo(), order.getSrcOrdNo(), order.getOldTrxId());

+ 2 - 0
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/recycling/mapper/GreenRecyclingRecordMapper.xml

@@ -14,6 +14,7 @@
         <result column="change_time" property="changeTime"/>
         <result column="change_user" property="changeUser"/>
         <result column="change_type" property="changeType"/>
+        <result column="order_no" property="orderNo"/>
     </resultMap>
 
     <resultMap id="greenRecyclingRecordVoResultMap" type="org.springblade.salesPart.recycling.vo.GreenRecyclingRecordVo">
@@ -26,6 +27,7 @@
         <result column="change_time" property="changeTime"/>
         <result column="change_user" property="changeUser"/>
         <result column="change_type" property="changeType"/>
+        <result column="order_no" property="orderNo"/>
         <result column="name" property="changeUserName"/>
     </resultMap>
     <select id="getCustomerGreenRecyclingRecordList"

+ 1 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/recycling/service/impl/GreenRecyclingServiceImpl.java

@@ -88,7 +88,7 @@ public class GreenRecyclingServiceImpl extends ServiceImpl<GreenRecyclingMapper,
 			corpsDesc.setRecoveredBalance(srcCorps.getRecoveredBalance().add(recycling.getAmount()));
 			corpsDescMapper.updateById(corpsDesc);
 			greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, AuthUtil.getUserId(),
-				srcCorps.getRecoveredBalance(), recycling.getAmount(), NumberEnum.Zero.number));
+				srcCorps.getRecoveredBalance(), recycling.getAmount(), NumberEnum.Zero.number, null));
 		}
 		return R.success("审核成功");
 	}

+ 6 - 5
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/shoppingCart/service/impl/ShoppingCartServiceImpl.java

@@ -305,12 +305,12 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					pjOrderList.get(pjOrderList.size() - 1).setTotalMoney(pjOrderList.get(pjOrderList.size() - 1).getTotalMoney().subtract(diff));
 				}
 				amount = amount.subtract(useAmount);
-				PjCorpsDesc corpsDesc = new PjCorpsDesc();
+/*				PjCorpsDesc corpsDesc = new PjCorpsDesc();
 				corpsDesc.setId(finalCorpsDesc.getId());
 				corpsDesc.setTenantId(finalCorpsDesc.getTenantId());
 				corpsDesc.setRecoveredBalance(finalCorpsDesc.getRecoveredBalance().subtract(useAmount));
 				corpsDescService.updateById(corpsDesc);
-				greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, bladeUser.getUserId(), finalCorpsDesc.getRecoveredBalance(), useAmount, NumberEnum.ONE.number));
+				greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(corpsDesc, bladeUser.getUserId(), finalCorpsDesc.getRecoveredBalance(), useAmount, NumberEnum.ONE.number, billNo));*/
 			}
 
 			R<Map<Object, Object>> r = payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo, 0, goodsName.substring(0, goodsName.length() - 1), payType);
@@ -1246,12 +1246,12 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 					}
 					amount = amount.subtract(useAmount);
 
-					PjCorpsDesc updateCorpsDesc = new PjCorpsDesc();
+/*					PjCorpsDesc updateCorpsDesc = new PjCorpsDesc();
 					updateCorpsDesc.setId(corpsDesc.getId());
 					updateCorpsDesc.setTenantId(corpsDesc.getTenantId());
 					updateCorpsDesc.setRecoveredBalance(corpsDesc.getRecoveredBalance().subtract(useAmount));
 					corpsDescService.updateById(updateCorpsDesc);
-					greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(updateCorpsDesc, bladeUser.getUserId(), corpsDesc.getRecoveredBalance(), useAmount, NumberEnum.ONE.number));
+					greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(updateCorpsDesc, bladeUser.getUserId(), corpsDesc.getRecoveredBalance(), useAmount, NumberEnum.ONE.number, billNo));*/
 				}
 				R<Map<Object, Object>> r = payService.payPrepay(ids.substring(0, ids.length() - 1), amount, billNo, 0, goodsName.substring(0, goodsName.length() - 1), payType);
 				if ("1".equals(paymentType)) {
@@ -1574,7 +1574,8 @@ public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, PjS
 			updateCorpsDesc.setTenantId(corpsDesc.getTenantId());
 			updateCorpsDesc.setRecoveredBalance(corpsDesc.getRecoveredBalance().subtract(useAmount));
 			corpsDescService.updateById(updateCorpsDesc);
-			greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(updateCorpsDesc, bladeUser.getUserId(), corpsDesc.getRecoveredBalance(), useAmount, NumberEnum.ONE.number));
+			greenRecyclingRecordMapper.insert(WxParamUtil.parseGreenRecyclingRecord(updateCorpsDesc, bladeUser.getUserId(),
+				corpsDesc.getRecoveredBalance(), useAmount, NumberEnum.ONE.number, billNo));
 		}
 		for (PjOrder item : pjOrderList) {
 			LocalDateTime now = LocalDateTime.now();

+ 3 - 1
blade-service/blade-sales-part/src/main/java/org/springblade/salesPart/util/WxParamUtil.java

@@ -282,7 +282,8 @@ public class WxParamUtil {
 	}
 
 	public static GreenRecyclingRecord parseGreenRecyclingRecord(PjCorpsDesc corpsDesc, Long changeUserId,
-																 BigDecimal srcRecoveredBalance, BigDecimal changeQuota, Integer changeType) {
+																 BigDecimal srcRecoveredBalance, BigDecimal changeQuota,
+																 Integer changeType, String orderNo) {
 		GreenRecyclingRecord greenRecyclingRecord = new GreenRecyclingRecord();
 		greenRecyclingRecord.setCustomerId(corpsDesc.getId());
 		greenRecyclingRecord.setTenantId(corpsDesc.getTenantId());
@@ -292,6 +293,7 @@ public class WxParamUtil {
 		greenRecyclingRecord.setChangeUser(changeUserId);
 		greenRecyclingRecord.setChangeTime(LocalDateTime.now());
 		greenRecyclingRecord.setChangeType(changeType);
+		greenRecyclingRecord.setOrderNo(orderNo);
 		return greenRecyclingRecord;
 	}
 }