Commit b1ecd8ee by zhangxingmin

push

parent 5c2e1a32
...@@ -360,7 +360,7 @@ public class ApiCommissionController { ...@@ -360,7 +360,7 @@ public class ApiCommissionController {
* @return * @return
*/ */
@PostMapping("/update") @PostMapping("/update")
@Operation(summary = "更新保单来佣信息") @Operation(summary = "更新保单来佣信息(旧)")
public Result<Boolean> updateCommission(@RequestBody CommissionUpdateRequest commissionUpdateRequest) { public Result<Boolean> updateCommission(@RequestBody CommissionUpdateRequest commissionUpdateRequest) {
if (commissionUpdateRequest == null || commissionUpdateRequest.getCommissionBizId() == null) { if (commissionUpdateRequest == null || commissionUpdateRequest.getCommissionBizId() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage()); return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
...@@ -395,6 +395,47 @@ public class ApiCommissionController { ...@@ -395,6 +395,47 @@ public class ApiCommissionController {
} }
/** /**
* 更新保单来佣
*
* @param commissionUpdateRequest
* @return
*/
@PostMapping("/update/new")
@Operation(summary = "更新保单来佣信息(新)")
public Result<Boolean> updateCommissionNew(@RequestBody CommissionUpdateRequest commissionUpdateRequest) {
if (commissionUpdateRequest == null || commissionUpdateRequest.getCommissionBizId() == null) {
return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMessage());
}
// 校验入参
commissionService.validateCommissionUpdateRequest(commissionUpdateRequest);
String lockKey = "COMMISSION_LOCK:" + commissionUpdateRequest.getCommissionBizId();
RLock lock = redissonClient.getLock(lockKey);
try {
// 竞争锁
boolean res = lock.tryLock(3, 15, TimeUnit.SECONDS);
if (!res) {
log.warn("获取分布式锁失败,commissionBizId: {}", commissionUpdateRequest.getCommissionBizId());
throw new BusinessException("系统繁忙,请稍后重试");
}
// 更新来佣记录
Result.success(commissionService.updateCommissionNew(commissionUpdateRequest));
} catch (BusinessException e) {
log.error("更新来佣记录时,业务异常", e);
return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), e.getMessage());
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("更新来佣记录时,获取锁被中断", e);
return Result.fail(ErrorCode.OPERATION_ERROR.getCode(), "更新来佣记录时,获取锁被中断");
} finally {
if (lock != null && lock.isLocked() && lock.isHeldByCurrentThread()) {
lock.unlock();
}
}
return Result.success(true);
}
/**
* 修改比对状态 * 修改比对状态
* *
* @param updateCompareStatusRequest * @param updateCompareStatusRequest
......
...@@ -30,6 +30,8 @@ public interface CommissionService extends IService<Commission> { ...@@ -30,6 +30,8 @@ public interface CommissionService extends IService<Commission> {
Boolean updateCommission(CommissionUpdateRequest commissionUpdateRequest); Boolean updateCommission(CommissionUpdateRequest commissionUpdateRequest);
Boolean updateCommissionNew(CommissionUpdateRequest commissionUpdateRequest);
Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest); Boolean generateFortune(GenerateFortuneRequest generateFortuneRequest);
String buildPolicyPeriodKey(String policyNo, Object period); String buildPolicyPeriodKey(String policyNo, Object period);
......
...@@ -452,6 +452,33 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss ...@@ -452,6 +452,33 @@ public class CommissionServiceImpl extends ServiceImpl<CommissionMapper, Commiss
return true; return true;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateCommissionNew(CommissionUpdateRequest commissionUpdateRequest) {
String commissionBizId = commissionUpdateRequest.getCommissionBizId();
// 查询旧数据
Commission commission = this.getByCommissionBizId(commissionBizId);
if (commission == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "未找到该来佣记录");
}
if ("R".equals(commissionUpdateRequest.getCommissionBizType())) {
//R=关联保单应收单
//查询保单号是否存在
Policy policy = policyService.lambdaQuery().eq(Policy::getPolicyNo, commissionUpdateRequest.getPolicyNo()).one();
if (policy == null) {
throw new BusinessException(ResultCode.NULL_ERROR.getCode(), "保单号不存在");
}
}else if ("U".equals(commissionUpdateRequest.getCommissionBizType())) {
//U=非关联保单应收单
}
return true;
}
private BigDecimal calculateHKDAmount(BigDecimal requestAmount, String currency) { private BigDecimal calculateHKDAmount(BigDecimal requestAmount, String currency) {
if ("HKD".equalsIgnoreCase(currency)) { if ("HKD".equalsIgnoreCase(currency)) {
return requestAmount; return requestAmount;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment