Browse Source

1. 用户账户金额 数据冲突处理

785834757 8 tháng trước cách đây
mục cha
commit
829f3df05c

+ 4 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserAccountMapper.java

@@ -6,6 +6,7 @@ import com.ydtech.modules.admin.model.po.SysUserAccount;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.vo.SysUserAccountVo;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -47,6 +48,9 @@ public interface SysUserAccountMapper extends BaseMapper<SysUserAccount> {
      *  @Description:  通过用户id查询银行卡信息
      */
     List<SysUserBankCard> queryCardListByUserId(@Param("userId") String userId);
+
+    @Select("SELECT * FROM sys_user_account where user_id = #{id} for update")
+    SysUserAccount selectByIdForUpdate(@Param("id") String id);
 }
 
 

+ 7 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserAccountService.java

@@ -152,4 +152,11 @@ public interface SysUserAccountService extends IService<SysUserAccount> {
      *  @Description:  通过用户id查询银行卡信息
      */
     List<SysUserBankCard> queryCardListByUserId(String userId);
+
+    /**
+     * 更新账户金额
+     * @param sysUserAccount
+     * @return
+     */
+    public Boolean updateUserAccount(SysUserAccount sysUserAccount);
 }

+ 6 - 2
src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java

@@ -10,6 +10,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
 import com.ydtech.modules.admin.dao.SysUserAccountHistoryMapper;
+import com.ydtech.modules.admin.dao.SysUserAccountMapper;
 import com.ydtech.modules.admin.model.dto.MyCollectInAdvanceDto;
 import com.ydtech.modules.admin.model.dto.MyIncomeAndExpensesQueryDto;
 import com.ydtech.modules.admin.model.dto.SysAmountAuditingDto;
@@ -43,6 +44,9 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
     @Autowired
     private SysUserAccountService sysUserAccountService;
 
+    @Autowired
+    private SysUserAccountMapper sysUserAccountMapper;
+
     @Autowired
     private SysAmountAuditingService sysAmountAuditingService;
 
@@ -100,7 +104,8 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
         if (StringUtils.isNotEmpty(userId)) {
 //            sysUserAccountEntity.setUserId(userId);
             //提现人账户
-            SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
+//            SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
+            SysUserAccount sysUserAccount = sysUserAccountMapper.selectByIdForUpdate(userId);
             if (ObjectUtils.isNotEmpty(sysUserAccount)) {
                 //注释掉原先按类型提现的逻辑 ,改为不区分类型  add by hxl  2024-06-18
                 /**
@@ -126,7 +131,6 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
                 sysUserAccount.setSumAmountAccount((sysUserAccount.getSumAmountAccount()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountAccount()).add(amount));
                 //支付中的金额 = 原先的支付金额 -去提现的金额
                 sysUserAccount.setSumAmountPayment((sysUserAccount.getSumAmountPayment()==null?BigDecimal.ZERO:sysUserAccount.getSumAmountPayment()).subtract(amount));
-
                 sysUserAccountService.updateById(sysUserAccount);
             }
             sysAmountAuditingVo.setAuditingStatus("3");

+ 15 - 3
src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java

@@ -107,8 +107,10 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
 
     @Override
     @Transactional
-    public void addOrUpdate(SysUserAccount sysUserAccount) {
-        //SysUserAccount newSysAccount = baseMapper.getById(sysUserAccount.getUserId());
+    public void addOrUpdate(SysUserAccount oldSysUserAccount) {
+        SysUserAccount sysUserAccount = baseMapper.selectByIdForUpdate(oldSysUserAccount.getUserId());
+        sysUserAccount.setHandlingFee(oldSysUserAccount.getHandlingFee());
+        sysUserAccount.setDocumentary(sysUserAccount.getDocumentary());
 //         初始化
         if (sysUserAccount.getHandlingFee() == null) {
             sysUserAccount.setHandlingFee(BigDecimal.ZERO);
@@ -546,7 +548,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         }
 
         if (StringUtils.isNotEmpty(userId)) {
-            SysUserAccount sysUserAccount = baseMapper.getById(userId);
+            SysUserAccount sysUserAccount = baseMapper.selectByIdForUpdate(userId);
 
 
             //if (StringUtils.isNotEmpty(sysUserAccountVo.getAmountStatus())) {
@@ -1771,4 +1773,14 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         return baseMapper.queryCardListByUserId(userId);
     }
 
+
+    @Transactional
+    @Override
+    public Boolean updateUserAccount(SysUserAccount sysUserAccount) {
+        SysUserAccount sysUserAccount1 = baseMapper.selectByIdForUpdate(sysUserAccount.getId());
+        baseMapper.updateById(sysUserAccount);
+
+        return true;
+    }
+
 }