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("充值失败!");
|
}
|
}
|
}
|