|
|
@@ -1,6 +1,7 @@
|
|
|
package com.jzg.organization.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
@@ -24,6 +25,8 @@ import com.jzg.organization.state.AuditState;
|
|
|
import com.jzg.organization.state.listener.AuditStateListener;
|
|
|
import org.redisson.api.RBucket;
|
|
|
import org.redisson.api.RedissonClient;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
@@ -38,11 +41,12 @@ import java.util.concurrent.TimeUnit;
|
|
|
/**
|
|
|
* @author dongxin
|
|
|
* @description 针对表【sys_amount_auditing(提现申请表)】的数据库操作Service实现
|
|
|
-* @createDate 2025-07-11 11:05:25
|
|
|
+* @date 2025-07-11 11:05:25
|
|
|
*/
|
|
|
@Service
|
|
|
public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingMapper, SysAmountAuditing>
|
|
|
implements SysAmountAuditingService {
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(SysAmountAuditingServiceImpl.class);
|
|
|
|
|
|
@Autowired
|
|
|
private BaseController baseController;
|
|
|
@@ -88,8 +92,14 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
return bigDecimal;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 领取提现申请
|
|
|
+ *
|
|
|
+ * @param id 提现申请的序号
|
|
|
+ * @param receiveUser 领取人
|
|
|
+ */
|
|
|
@Override
|
|
|
- public void auditReceive(String id) {
|
|
|
+ public void auditReceive(String id, String receiveUser) {
|
|
|
SysAmountAuditing audit = this.getById(id);
|
|
|
if(audit.getAuditingStatus() > 0){
|
|
|
if(audit.getAuditingStatus() == 1){
|
|
|
@@ -97,33 +107,30 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
}else{
|
|
|
AssertionUtils.isFail(true, "提现已驳回请刷新列表");
|
|
|
}
|
|
|
- // 未审核
|
|
|
+ }
|
|
|
+ // 未审核
|
|
|
+ if(StringUtils.isNotBlank(audit.getReceiveUser())){
|
|
|
+ if(receiveUser.equals(audit.getReceiveUser())){
|
|
|
+ // redis 锁定按钮
|
|
|
+ RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
|
|
|
+ bucket.set(1, 10, TimeUnit.MINUTES);
|
|
|
+ }else{
|
|
|
+ AssertionUtils.isFail(true, "提现申请已被" + audit.getReceiveUser() + "领取!");
|
|
|
+ }
|
|
|
}else{
|
|
|
- String userName = baseController.getUserName();
|
|
|
- if(StringUtils.isNotBlank(audit.getReceiveUser())){
|
|
|
- if(userName.equals(audit.getReceiveUser())){
|
|
|
- // redis 锁定按钮
|
|
|
- RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
|
|
|
- bucket.set(1, 10, TimeUnit.MINUTES);
|
|
|
- }else{
|
|
|
- AssertionUtils.isFail(true, "提现申请已被" + audit.getReceiveUser() + "领取!");
|
|
|
- }
|
|
|
+ LambdaQueryWrapper<SysAmountAuditing> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.like(SysAmountAuditing::getReceiveUser, receiveUser);
|
|
|
+ long count = this.count(wrapper);
|
|
|
+ if(count >= 10){
|
|
|
+ AssertionUtils.isFail(true, "超出10次领取限制,请先审核后再领取订单!");
|
|
|
}else{
|
|
|
- LambdaQueryWrapper<SysAmountAuditing> wrapper = new LambdaQueryWrapper<>();
|
|
|
- wrapper.like(SysAmountAuditing::getReceiveUser, userName);
|
|
|
- long count = this.count(wrapper);
|
|
|
- if(count >= 10){
|
|
|
- AssertionUtils.isFail(true, "超出10次领取限制,请先审核后再领取订单!");
|
|
|
- }else{
|
|
|
- // 领取订单
|
|
|
- audit.setReceiveUser(userName);
|
|
|
- audit.setReceiveTime(LocalDateTime.now());
|
|
|
- this.updateById(audit);
|
|
|
-
|
|
|
- // redis 锁定按钮
|
|
|
- RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
|
|
|
- bucket.set(1, 10, TimeUnit.MINUTES);
|
|
|
- }
|
|
|
+ // 领取订单
|
|
|
+ audit.setReceiveUser(receiveUser);
|
|
|
+ audit.setReceiveTime(LocalDateTime.now());
|
|
|
+ this.updateById(audit);
|
|
|
+ // redis 锁定按钮
|
|
|
+ RBucket<Object> bucket = redissonClient.getBucket(AMOUNT_LOCK_PREFIX + id);
|
|
|
+ bucket.set(1, 10, TimeUnit.MINUTES);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -156,6 +163,8 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void verifyAmount(AmountAuditEditParam param) {
|
|
|
+ String userName = baseController.getUserName();
|
|
|
+ log.info("用户开始进行付款操作。userName=[{}],param=[{}]",userName,JSONUtil.toJsonStr(param));
|
|
|
SysAmountAuditing audit = this.getById(param.getId());
|
|
|
if(audit.getAuditingStatus() > 0){
|
|
|
if(audit.getAuditingStatus() == 1){
|
|
|
@@ -167,7 +176,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
if(StringUtils.isBlank(audit.getReceiveUser())){
|
|
|
AssertionUtils.isFail(true, "请领取提现申请后再进行付款,返回待付款提现申请列表!");
|
|
|
}
|
|
|
- String userName = baseController.getUserName();
|
|
|
+
|
|
|
if (!userName.equals(audit.getReceiveUser())) {
|
|
|
AssertionUtils.isFail(true, "申请已被"+audit.getReceiveUser()+"领取返回待付款提现申请列表!");
|
|
|
}
|
|
|
@@ -185,6 +194,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
AssertionUtils.isFail(audit.getAmount().compareTo(audit.getBalanceAmount()) > 0, "提现金额大于账户余额!");
|
|
|
|
|
|
if(userAccount.getSumAmount().compareTo(audit.getAmount()) < 0){
|
|
|
+ log.info("账户金额少于提现金额,请审核账户。 userId=[{}}], userAccount.getSumAmount()=[{}],audit.getAmount()=[{}]",userAccount.getUserId(), userAccount.getSumAmount(), audit.getAmount());
|
|
|
throw new SystemException("账户金额少于提现金额,请审核账户");
|
|
|
}
|
|
|
userAccount.setSumAmount(userAccount.getSumAmount().subtract(audit.getAmount()));
|
|
|
@@ -202,6 +212,8 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
|
|
|
@Override
|
|
|
public void rejectAmount(AmountAuditRejectParam param) {
|
|
|
+ String userName = baseController.getUserName();
|
|
|
+ log.info("用户[{}]驳回体现申请. param=[{}]",userName,JSONUtil.toJsonStr(param));
|
|
|
SysAmountAuditing audit = this.getById(param.getId());
|
|
|
if(audit.getAuditingStatus() > 0){
|
|
|
if(audit.getAuditingStatus() == 1){
|
|
|
@@ -213,7 +225,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
if(StringUtils.isBlank(audit.getReceiveUser())){
|
|
|
AssertionUtils.isFail(true, "请领取任务后再进行审核关闭弹窗,刷新列表");
|
|
|
}
|
|
|
- String userName = baseController.getUserName();
|
|
|
+
|
|
|
if (!userName.equals(audit.getReceiveUser())) {
|
|
|
AssertionUtils.isFail(true, "申请已被"+audit.getReceiveUser()+"领取返回待付款提现申请列表!");
|
|
|
}
|
|
|
@@ -234,6 +246,7 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
|
|
|
|
|
|
@Override
|
|
|
public Page<AmountAuditVo> myPayment(AmountAuditParam param) {
|
|
|
+ log.info("应付账款-我的付款。param=[{}]", JSONUtil.toJsonStr(param));
|
|
|
Page<AmountAuditVo> amountAuditVoPage = baseMapper.queryPaymentPage(param.getPage(), param, baseController.getUserName());
|
|
|
return amountAuditVoPage;
|
|
|
}
|