新增 超级币商转币商
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"),
|
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,
|
ResponseAssert.isFalse(UserErrorCode.ACCOUNT_CLOSED,
|
||||||
freightBalanceService.checkClose(cmd.requireReqSysOriginEnum(), cmd.requiredReqUserId()));
|
freightBalanceService.checkClose(cmd.requireReqSysOriginEnum(), cmd.requiredReqUserId()));
|
||||||
|
ResponseAssert.isTrue(FreightErrorCode.NOT_FREIGHT, freightBalanceService.checkFreightAgent(cmd.requiredReqUserId()));
|
||||||
|
|
||||||
// 余额不足
|
// 余额不足
|
||||||
ResponseAssert.isTrue(WalletErrorCode.INSUFFICIENT_BALANCE,
|
ResponseAssert.isTrue(WalletErrorCode.INSUFFICIENT_BALANCE,
|
||||||
ArithmeticUtils.gte(cmd.getQuantity(), BigDecimal.ZERO));
|
ArithmeticUtils.gte(cmd.getQuantity(), BigDecimal.ZERO));
|
||||||
|
|
||||||
// 支付密码效验
|
|
||||||
checkPayPassword(cmd);
|
|
||||||
|
|
||||||
ResponseAssert.isTrue(
|
ResponseAssert.isTrue(
|
||||||
CommonErrorCode.RESOURCE_RESTRICT_ACCESS, redisService.lock(getLockKey(cmd), 10));
|
CommonErrorCode.RESOURCE_RESTRICT_ACCESS, redisService.lock(getLockKey(cmd), 10));
|
||||||
|
|
||||||
@ -128,19 +126,39 @@ public class SendFreightShipCmdExe {
|
|||||||
// 插入流水
|
// 插入流水
|
||||||
FreightBalanceRunningWater runningWater = saveRunningWater(cmd, balance);
|
FreightBalanceRunningWater runningWater = saveRunningWater(cmd, balance);
|
||||||
|
|
||||||
// 发货
|
// 判断发送者和接收者的代理类型
|
||||||
walletGoldGateway.changeBalance(new WalletReceipt()
|
boolean senderIsSuperFreight = freightBalanceService.checkSuperFreightAgent(cmd.requiredReqUserId());
|
||||||
.setReqTraceId(cmd.getReqTraceId())
|
boolean acceptIsSuperFreight = freightBalanceService.checkSuperFreightAgent(cmd.getAcceptUserId());
|
||||||
.setReceiptType(ReceiptType.INCOME)
|
boolean acceptIsFreight = freightBalanceService.checkFreightAgent(cmd.getAcceptUserId());
|
||||||
.setUserId(cmd.getAcceptUserId())
|
|
||||||
.setSysOrigin(cmd.requireReqSysOrigin())
|
// 权限校验:超级经销商才可以发货给经销商和超级经销商,普通经销商不能发货给经销商或超级经销商
|
||||||
.setEventType(Objects.toString(GoldOrigin.SHIPPING_AGENT))
|
if (acceptIsFreight || acceptIsSuperFreight) {
|
||||||
.setEventDesc(GoldOrigin.SHIPPING_AGENT.getDesc())
|
ResponseAssert.isTrue(FreightErrorCode.NOT_SUPER_FREIGHT, senderIsSuperFreight);
|
||||||
.setEventId(Objects.toString(runningWater.getId()))
|
}
|
||||||
.setAmount(PennyAmount.ofDollar(cmd.getQuantity().longValue()))
|
|
||||||
.setOpUserType(OpUserType.APP)
|
// 发货:目标是普通经销商 → incrCandyBalance 进货运钱包;目标是超级经销商(或普通用户) → changeBalance 进金币钱包
|
||||||
.setCreateTime(cmd.reqTimeElseNow())
|
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 {
|
try {
|
||||||
String noticeContent = getNoticeContent(cmd, cmd.getQuantity());
|
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) {
|
private BigDecimal getGoldToSUD(FreightShipSendCmd cmd) {
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user