package com.ruoyi.web.controller.product; import cn.hutool.core.util.ObjectUtil; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.UserAccount; import com.ruoyi.system.domain.UserKyc; import com.ruoyi.system.service.UserAccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.util.Date; @RestController @RequestMapping("/wallet") public class UserWalletControlkler { @Autowired UserAccountService userAccountService; /** * 用户资金操作 * @param userId 用户id * @param type 账变类型 1:充值 2:扣款 * @param money 账变金额 * @return */ @GetMapping("/topUp") @Transactional public AjaxResult topUp(@RequestParam(value = "userId") Integer userId, @RequestParam(value = "type") Integer type, @RequestParam(value = "money") BigDecimal money) { if(userId == null || type == null || money.compareTo(BigDecimal.ZERO) <= 0) { return AjaxResult.error("参数不正确"); } try { UserAccount userAccount = userAccountService.getById(userId); if(ObjectUtil.isEmpty(userAccount)){ return AjaxResult.error("用户不存在"); } if(type == 1){ userAccount.setBalance(userAccount.getBalance().add(money)); }else if(type == 2){ BigDecimal balance = userAccount.getBalance().subtract(money); if(balance.compareTo(BigDecimal.ZERO) < 0){ return AjaxResult.error("扣款金额超过用户余额,操作失败!"); } userAccount.setBalance(balance); }else { return AjaxResult.success("充值类型错误"); } userAccountService.updateById(userAccount); return AjaxResult.success("充值成功"); }catch (Exception e){ e.printStackTrace(); // 手动设置回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return AjaxResult.error("充值失败!"); } } }