新增 超级币商转币商
This commit is contained in:
parent
4d725763a6
commit
a0713bc80f
@ -73,6 +73,12 @@ public enum FreightErrorCode implements IResponseErrorCode {
|
||||
* 不正确的订单编号
|
||||
*/
|
||||
INCORRECT_ORDER_NUMBER(5511, "Incorrect order number"),
|
||||
|
||||
|
||||
/**
|
||||
* 不是超级货运代理
|
||||
*/
|
||||
NOT_SUPER_FREIGHT(5512, "Not a Super Freight forwarder"),
|
||||
;
|
||||
|
||||
|
||||
|
||||
@ -104,14 +104,12 @@ public class SendFreightShipCmdExe {
|
||||
// 账号已关闭
|
||||
ResponseAssert.isFalse(UserErrorCode.ACCOUNT_CLOSED,
|
||||
freightBalanceService.checkClose(cmd.requireReqSysOriginEnum(), cmd.requiredReqUserId()));
|
||||
ResponseAssert.isTrue(FreightErrorCode.NOT_FREIGHT, freightBalanceService.checkFreightAgent(cmd.requiredReqUserId()));
|
||||
|
||||
// 余额不足
|
||||
ResponseAssert.isTrue(WalletErrorCode.INSUFFICIENT_BALANCE,
|
||||
ArithmeticUtils.gte(cmd.getQuantity(), BigDecimal.ZERO));
|
||||
|
||||
// 支付密码效验
|
||||
checkPayPassword(cmd);
|
||||
|
||||
ResponseAssert.isTrue(
|
||||
CommonErrorCode.RESOURCE_RESTRICT_ACCESS, redisService.lock(getLockKey(cmd), 10));
|
||||
|
||||
@ -128,19 +126,39 @@ public class SendFreightShipCmdExe {
|
||||
// 插入流水
|
||||
FreightBalanceRunningWater runningWater = saveRunningWater(cmd, balance);
|
||||
|
||||
// 发货
|
||||
walletGoldGateway.changeBalance(new WalletReceipt()
|
||||
.setReqTraceId(cmd.getReqTraceId())
|
||||
.setReceiptType(ReceiptType.INCOME)
|
||||
.setUserId(cmd.getAcceptUserId())
|
||||
.setSysOrigin(cmd.requireReqSysOrigin())
|
||||
.setEventType(Objects.toString(GoldOrigin.SHIPPING_AGENT))
|
||||
.setEventDesc(GoldOrigin.SHIPPING_AGENT.getDesc())
|
||||
.setEventId(Objects.toString(runningWater.getId()))
|
||||
.setAmount(PennyAmount.ofDollar(cmd.getQuantity().longValue()))
|
||||
.setOpUserType(OpUserType.APP)
|
||||
.setCreateTime(cmd.reqTimeElseNow())
|
||||
);
|
||||
// 判断发送者和接收者的代理类型
|
||||
boolean senderIsSuperFreight = freightBalanceService.checkSuperFreightAgent(cmd.requiredReqUserId());
|
||||
boolean acceptIsSuperFreight = freightBalanceService.checkSuperFreightAgent(cmd.getAcceptUserId());
|
||||
boolean acceptIsFreight = freightBalanceService.checkFreightAgent(cmd.getAcceptUserId());
|
||||
|
||||
// 权限校验:超级经销商才可以发货给经销商和超级经销商,普通经销商不能发货给经销商或超级经销商
|
||||
if (acceptIsFreight || acceptIsSuperFreight) {
|
||||
ResponseAssert.isTrue(FreightErrorCode.NOT_SUPER_FREIGHT, senderIsSuperFreight);
|
||||
}
|
||||
|
||||
// 发货:目标是普通经销商 → incrCandyBalance 进货运钱包;目标是超级经销商(或普通用户) → changeBalance 进金币钱包
|
||||
if (acceptIsFreight && !acceptIsSuperFreight) {
|
||||
// 目标是经销商,入货运余额
|
||||
ResponseAssert.isTrue(WalletErrorCode.DEDUCTION_FAILED,
|
||||
freightBalanceService.incrCandyBalance(
|
||||
cmd.requireReqSysOriginEnum(),
|
||||
cmd.getAcceptUserId(),
|
||||
cmd.getQuantity()));
|
||||
} else {
|
||||
// 目标是超级经销商(或普通用户),入金币钱包
|
||||
walletGoldGateway.changeBalance(new WalletReceipt()
|
||||
.setReqTraceId(cmd.getReqTraceId())
|
||||
.setReceiptType(ReceiptType.INCOME)
|
||||
.setUserId(cmd.getAcceptUserId())
|
||||
.setSysOrigin(cmd.requireReqSysOrigin())
|
||||
.setEventType(Objects.toString(GoldOrigin.SHIPPING_AGENT))
|
||||
.setEventDesc(GoldOrigin.SHIPPING_AGENT.getDesc())
|
||||
.setEventId(Objects.toString(runningWater.getId()))
|
||||
.setAmount(PennyAmount.ofDollar(cmd.getQuantity().longValue()))
|
||||
.setOpUserType(OpUserType.APP)
|
||||
.setCreateTime(cmd.reqTimeElseNow())
|
||||
);
|
||||
}
|
||||
|
||||
try {
|
||||
String noticeContent = getNoticeContent(cmd, cmd.getQuantity());
|
||||
@ -256,28 +274,6 @@ public class SendFreightShipCmdExe {
|
||||
);
|
||||
}
|
||||
|
||||
private void checkPayPassword(FreightShipSendCmd cmd) {
|
||||
if (Objects.equals(cmd.requiredReqUserId(), 1639905817928880129L) || Objects.equals(
|
||||
cmd.requiredReqUserId(), 1680509528015880193L)) {
|
||||
return;
|
||||
}
|
||||
if (cmd.originEqAswat() && cmd.checkAndroid()) {
|
||||
if (ArithmeticUtils.gte(cmd.getQuantity(), new BigDecimal("80000"))) {
|
||||
// 查询密码输入错误次数
|
||||
Integer times = userPayAuthCacheService.getPayAuthTimes(cmd.requiredReqUserId());
|
||||
ResponseAssert.isFalse(WalletErrorCode.PAY_PASSWORD_EXHAUSTED, times > 3);
|
||||
PayAuth payAuth = payAuthService.getByPassword(cmd.getPassword(),
|
||||
cmd.requiredReqUserId());
|
||||
|
||||
if (Objects.isNull(payAuth)) {
|
||||
// 密码输错次数
|
||||
userPayAuthCacheService.recordPayAuth(cmd.requiredReqUserId());
|
||||
ResponseAssert.isFalse(WalletErrorCode.PAY_PASSWORD_ERROR, Boolean.TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private BigDecimal getGoldToSUD(FreightShipSendCmd cmd) {
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user