Compare commits

...

13 Commits

Author SHA1 Message Date
shaowenhao f6b14edcd2 钱包整改 2023-10-29 11:19:29 +08:00
ZhiShuo_Lou 18915baa22 定时器失效1 2023-10-29 10:11:44 +08:00
ZhiShuo_Lou 1ec02df246 定时器失效 2023-10-29 10:02:29 +08:00
ZhiShuo_Lou 1fef9d675d 定时器测试2 2023-10-29 08:30:32 +08:00
ZhiShuo_Lou 2ffeb09176 定时器测试1 2023-10-28 20:51:53 +08:00
ZhiShuo_Lou 6860cd013b 定时器测试 2023-10-28 20:33:12 +08:00
ZhiShuo_Lou ede9a8e9c7 定时器修改 2023-10-28 19:58:03 +08:00
shaowenhao 3436cedce9 修改钱包余额 2023-10-28 19:35:54 +08:00
ZhiShuo_Lou d86d56a90d 新增定时器redis存储钱包余额 404 2023-10-28 19:00:02 +08:00
ZhiShuo_Lou 5df7c16a96 新增定时器redis存储钱包余额 404 2023-10-28 18:42:04 +08:00
ZhiShuo_Lou b962728367 新增定时器redis存储钱包余额 迭代 2023-10-28 16:46:28 +08:00
ZhiShuo_Lou a1e102a9a6 新增定时器redis存储钱包余额 2023-10-28 16:30:52 +08:00
ZhiShuo_Lou b7ddaceb2d 新增收入支出记录以及金额变更 2023-10-28 15:44:10 +08:00
20 changed files with 506 additions and 148 deletions

View File

@ -5,6 +5,7 @@ import com.ruoyi.common.security.annotation.EnableRyFeignClients;
import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
*
@ -15,6 +16,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableCustomSwagger2
@EnableRyFeignClients
@SpringBootApplication
@EnableScheduling //定时器
public class MyBasicApplication
{
public static void main(String[] args)

View File

@ -0,0 +1,58 @@
package com.ruoyi.mybasic.Text;
/**
* @ClassName SpinLockDemo
* @Description
* @Author WenHao.Sao
*/
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
/**
*
*/
public class SpinLockDemo {
AtomicReference<Thread> atomicReference = new AtomicReference<>();
public void lock(){
// Thread.
Thread thread = Thread.currentThread();
System.out.println(Thread.currentThread().getName() + "------->swh come in");
while (!atomicReference.compareAndSet(null,thread)){
}
}
public void unLock(){
Thread thread = Thread.currentThread();
atomicReference.compareAndSet(thread,null);
System.out.println(Thread.currentThread().getName()+"------->task over");
}
public static void main(String[] args) {
SpinLockDemo spinLockDemo = new SpinLockDemo();
new Thread(() -> {
spinLockDemo.lock();;
//暂停几秒钟线程
try {
TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); }
spinLockDemo.unLock();
}, "A").start();
//暂停500毫秒 线程A先于B启动
try {
TimeUnit.MICROSECONDS.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); }
new Thread(() -> {
spinLockDemo.lock();;
//暂停几秒钟线程
spinLockDemo.unLock();
}, "B").start();
}
}

View File

@ -0,0 +1,35 @@
package com.ruoyi.mybasic.common.domain;
import com.alibaba.druid.sql.visitor.functions.Char;
import lombok.Data;
import java.util.Date;
/**
* @ClassName MoneyLog
* @Description
* @Author WenHao.Sao
*/
@Data
public class MoneyLog {
private Long id;
private Long userId; //用户id
private int status;//状态 1:支出 2 收入
private Date createTime;//操作时间
private String moneyTypeName;//详情
private Integer amountIncome;//收入支出金额
private String createBy;//创建人
private Char delFlag;//删除标志
private String updateBy;//修改人
private Date updateTime;//修改时间
}

View File

@ -17,24 +17,30 @@ public class Purse {
/**
*
*/
private Integer userId;
private Long userId;
/**
*
*/
private double walletIncome;
private Integer walletIncome;
/**
*
*/
private double walletOutcome;
private Integer walletOutcome;
/**
*
*/
private double balanceFee;
private Integer balanceFee;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date updateTime;
/**
*
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;
}

View File

@ -0,0 +1,34 @@
package com.ruoyi.mybasic.common.domain;
import lombok.Data;
import java.util.Date;
/**
*
* @author swh
*/
@Data
public class RechargeLog {
private Long id;
/**
* id
*/
private Long userId;
/**
* /
*/
private String rechargeType;
/**
* rmb
*/
private Double rechargeAmount;
/**
*
*/
private Date createTime;
}

View File

@ -9,7 +9,7 @@ import lombok.Data;
* @Author WenHao.Sao
*/
@Data
public class PurseRequest extends PurseResponse {
public class PurseRequest {
private String userId;//用户编号
@ -26,4 +26,6 @@ public class PurseRequest extends PurseResponse {
private String orderId;//支付宝订单Id
private double amountIncome;//收入支出金额
}

View File

@ -12,15 +12,30 @@ import java.util.Date;
@Data
public class PurseResponse {
private String userId;//用户编号
/**
*
*/
private String userId;
private Double balanceFee;//钱包总可用余额
/**
*
*/
private Integer walletIncome;
private Date updateTime;//更新时间
/**
*
*/
private Integer walletOutcome;
private Double walletIncome;//钱包总收入额
/**
*
*/
private Integer balanceFee;
private Double walletOutcome;//钱包总支出额
/**
*
*/
private Date updateTime;

View File

@ -2,6 +2,7 @@ package com.ruoyi.mybasic.controller;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.request.RequestInvitationRecord;
import com.ruoyi.mybasic.service.InvitationService;
import lombok.extern.log4j.Log4j2;
@ -34,8 +35,6 @@ public class InvitationController {
private HttpServletRequest request;
/**
*
* @param requestInvitationRecord
@ -52,4 +51,20 @@ public class InvitationController {
return R.ok();
}
/**
*
* @param userMoneyLogs
* @return
*/
@PostMapping("/updatePurseByLogs")
public R updatePurseByLogsMoney(@RequestBody UserMoneyLogs userMoneyLogs){
log.info("功能介绍:根据记录处理金额,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),request.getRequestURI(),JSONObject.toJSONString(userMoneyLogs));
invitationService.updatePurseByLogs(userMoneyLogs);
log.info("功能介绍:根据记录处理金额,请求方式:{},请求路劲:{},响应结果:{}",
request.getMethod(),request.getRequestURI(),JSONObject.toJSONString(R.ok()));
return R.ok();
}
}

View File

@ -4,19 +4,23 @@ import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.mybasic.common.domain.request.BankId;
import com.ruoyi.mybasic.common.domain.request.InvitationRecordRequest;
import com.ruoyi.mybasic.common.domain.request.MoneyTypeRequest;
import com.ruoyi.mybasic.common.domain.request.PurseRequest;
import com.ruoyi.mybasic.common.domain.response.*;
import com.ruoyi.mybasic.common.domain.response.BankResponse;
import com.ruoyi.mybasic.common.domain.response.MoneyLogsResponse;
import com.ruoyi.mybasic.common.domain.response.MoneyWithdrawResponse;
import com.ruoyi.mybasic.common.domain.response.PurseResponse;
import com.ruoyi.mybasic.fegin.feignServiceTemplate;
import com.ruoyi.mybasic.service.PurseService;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.security.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
@ -212,7 +216,7 @@ public class PurseController {
}
}catch (AlipayApiException e){
log.error(e.getErrMsg());
throw new RuntimeException("调用支付宝接口发生异常");
throw new ServiceException("调用支付宝接口发生异常");
}
return null;
}

View File

@ -9,8 +9,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.MoneyLog;
import com.ruoyi.mybasic.common.domain.Purse;
import com.ruoyi.mybasic.common.domain.RechargeLog;
import com.ruoyi.mybasic.common.domain.ailPay.AliPay;
import com.ruoyi.mybasic.common.domain.ailPay.AliPayConfig;
import com.ruoyi.mybasic.common.domain.request.MoneyLogsRequest;
import com.ruoyi.mybasic.common.domain.request.PurseRequest;
import com.ruoyi.mybasic.common.domain.response.PurseResponse;
import com.ruoyi.mybasic.service.PurseServiceTwo;
@ -28,6 +33,10 @@ import java.util.Map;
* @Description
* @Author WenHao.Sao
*/
/**
*
*/
//@CrossOrigin(origins = "*")
@RestController
@RequestMapping("purse")//purse
@ -65,11 +74,8 @@ public class PurseControllerTwo {
*/
@GetMapping("/purseObject")
public R<PurseResponse> purseObject(){
//当前登录人的UserId
Long userId = SecurityUtils.getUserId();
PurseResponse purseResponseR = purseServiceTwo.purseObject(userId);
R<PurseResponse> ok = R.ok(purseResponseR);
return ok;
PurseResponse purseResponseR = purseServiceTwo.purseObject();
return R.ok(purseResponseR);
}
/**
@ -102,30 +108,25 @@ public class PurseControllerTwo {
request.setBizContent(bizContent.toString());
/**
* H
*/
Long userId = SecurityUtils.getUserId();
PurseResponse purseResponse = purseServiceTwo.purseObject(userId);
UserMoneyLogs userMoneyLogs = new UserMoneyLogs();
//获取到当前余额
Double balanceFee = purseResponse.getBalanceFee();
//获取前台传入的一个参数
//获取前台传入的一个参数 充值金额
double totalAmount = aliPay.getTotalAmount();
double totalAmountOne = (totalAmount * 100);// 1/100
PurseRequest purseRequest = new PurseRequest();
purseRequest.setUserId(userId + "");
purseRequest.setBalanceFee(balanceFee);
purseRequest.setAmount((totalAmountOne));
userMoneyLogs.setUserId(Math.toIntExact(SecurityUtils.getUserId()));
userMoneyLogs.setAmountIncome((int) totalAmountOne);
userMoneyLogs.setMoneyTypeName("支付宝充值");
userMoneyLogs.setStatus(2);
//调用修改钱包接口
purseServiceTwo.updPurseHBi(purseRequest);
purseServiceTwo.purseBalanceChange(userMoneyLogs);
//充值记录表
purseServiceTwo.addPurseLogs(purseRequest);
RechargeLog rechargeLog = new RechargeLog();
rechargeLog.setUserId(SecurityUtils.getUserId());
rechargeLog.setRechargeType("支付宝");
rechargeLog.setRechargeAmount(totalAmount);
purseServiceTwo.insertRechargeLog(rechargeLog);
// 执行请求,拿到响应的结果,返回给浏览器
String form = "";
@ -208,13 +209,13 @@ public class PurseControllerTwo {
* api apiid
* id
*/
@PostMapping("/withdrawPurse")
@PostMapping("/withdrawPurse")//未完成
public R<?> withdrawPurse(AliPay aliPay, HttpServletResponse httpResponse){
//获取当前用户的userId 里面的余额
Long userId = SecurityUtils.getUserId();
PurseResponse purseResponse = purseServiceTwo.purseObject(userId);
PurseResponse purseResponse = purseServiceTwo.purseObject();
//获取当前用户的余额
Double balanceFee = purseResponse.getBalanceFee();
int balanceFee = purseResponse.getBalanceFee();
//获取前台输入的金额
double totalAmount = aliPay.getTotalAmount();
//判断需要提现的金额 * 100 跟当前H币的金额
@ -228,6 +229,11 @@ public class PurseControllerTwo {
//修改H币 以及添加提现事物里面的金额
purseServiceTwo.updWithdrawPurse(purseRequest);
//添加记录表
MoneyLogsRequest moneyLogsRequest = new MoneyLogsRequest();
moneyLogsRequest.setStatus(1);
}
return null;
@ -246,8 +252,8 @@ public class PurseControllerTwo {
*
*/
@PostMapping("/purseBalanceChange")
public R<?> purseBalanceChange(@RequestBody PurseRequest purseRequest){
purseServiceTwo.purseBalanceChange(purseRequest);
public R<?> purseBalanceChange(@RequestBody UserMoneyLogs userMoneyLogs){
purseServiceTwo.purseBalanceChange(userMoneyLogs);
return R.ok();
}
@ -260,8 +266,10 @@ public class PurseControllerTwo {
* userId
*/
@PostMapping("/addPurse/{userId}")
public R addPurse(@PathVariable String userId){
return purseServiceTwo.addPurse(userId);
public R<?> addPurse(@PathVariable Long userId){
purseServiceTwo.addPurse(userId);
return R.ok();
}

View File

@ -2,6 +2,7 @@ package com.ruoyi.mybasic.mapper;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.Purse;
import com.ruoyi.mybasic.common.domain.request.InvitationRecordRequest;
import com.ruoyi.mybasic.common.domain.request.PurseRequest;
import com.ruoyi.mybasic.common.domain.request.RequestInvitationRecord;
@ -36,5 +37,17 @@ public interface InvitationMapper {
int updateUserPurse(@Param("userId") Integer userId);
/**
*
* @param userMoneyLogs
* @return
*/
int insertUserMoneyLogs(UserMoneyLogs userMoneyLogs);
/**
*
* @param purse
* @return
*/
int updateUserMoney(Purse purse);
}

View File

@ -1,6 +1,10 @@
package com.ruoyi.mybasic.mapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.MoneyLog;
import com.ruoyi.mybasic.common.domain.Purse;
import com.ruoyi.mybasic.common.domain.RechargeLog;
import com.ruoyi.mybasic.common.domain.request.MoneyLogsRequest;
import com.ruoyi.mybasic.common.domain.request.PurseRequest;
import com.ruoyi.mybasic.common.domain.response.PurseResponse;
@ -23,15 +27,15 @@ public interface PurseMapperTwo{
PurseResponse purseObject(@Param("userId") Long userId);
//添加记录表
void addMoneyLogs(MoneyLogsRequest moneyLogsRequest);
void addMoneyLogs(UserMoneyLogs userMoneyLogs);
//支出
void updPurseIn(PurseRequest purseRequest);
//收入
int updPurseOut(PurseRequest purseRequest);
int updateUserBalance(UserMoneyLogs userMoneyLogs);
//根据当前userId添加钱包
Integer addPurse(PurseRequest purseRequest);
Integer addPurse(Purse purse);
//查询钱包里面的用户id
Integer purseUserId(@Param("userId") String userId);
@ -44,4 +48,7 @@ public interface PurseMapperTwo{
void addPurseLogs(PurseRequest purseRequest);
void updWithdrawPurse(PurseRequest purseRequest);
int insertRechargeLog(RechargeLog rechargeLog);
}

View File

@ -1,9 +1,13 @@
package com.ruoyi.mybasic.service.Impl;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.Purse;
import com.ruoyi.mybasic.common.domain.request.RequestInvitationRecord;
import com.ruoyi.mybasic.common.domain.response.PurseResponse;
import com.ruoyi.mybasic.mapper.InvitationMapper;
import com.ruoyi.mybasic.service.InvitationService;
import com.ruoyi.mybasic.service.PurseServiceTwo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -25,6 +29,10 @@ public class InvitationServiceImpl implements InvitationService {
/** @noinspection SpringJavaInjectionPointsAutowiringInspection*/
@Autowired
private InvitationMapper invitationMapper;
@Autowired
private PurseServiceTwo purseServiceTwo;
@Autowired
private RedisService redisService;
@ -77,4 +85,63 @@ public class InvitationServiceImpl implements InvitationService {
invitationMapper.insertUserMoneyLogs(PurseMoneyLogsTwo);
}
/**
*
* @param userMoneyLogs
*/
@Override
@Transactional//事务
public void updatePurseByLogs(UserMoneyLogs userMoneyLogs) {
//初始值
int i = 0;
//获取钱包的id
Integer userId = userMoneyLogs.getUserId();
//具体金额
Integer amountIncome = userMoneyLogs.getAmountIncome();
//判断该条记录为支出记录还是为消费记录
//1:支出
//2:收入
Integer status = userMoneyLogs.getStatus();
//查询钱包当前信息
PurseResponse purseResponse = purseServiceTwo.purseObject(Long.valueOf(userId));
Purse purse = new Purse();
purse.setUserId(userId);
purse.setUpdateTime(new Date());
if (status == 1){
//判断余额是否充足
if (purseResponse.getBalanceFee() < amountIncome){
throw new RuntimeException("钱包内余额不足!");
}
//支出操作
purse.setBalanceFee(purseResponse.getBalanceFee() - amountIncome);
purse.setWalletOutcome(purseResponse.getWalletOutcome() + amountIncome);
purse.setWalletIncome(purseResponse.getWalletIncome());
}else{
//收入操作
purse.setBalanceFee(purseResponse.getBalanceFee() + amountIncome);
purse.setWalletIncome(purseResponse.getWalletIncome() + amountIncome);
purse.setWalletOutcome(purseResponse.getWalletOutcome());
}
//修改钱包余额
i = invitationMapper.updateUserMoney(purse);
if (i < 0){
throw new RuntimeException("钱包余额变更失败!");
}
//余额变更后添加记录表
i = invitationMapper.insertUserMoneyLogs(userMoneyLogs);
if (i < 0){
throw new RuntimeException("订单未生效!");
}
// 清空redis中的钱包余额数据
// redisService.deleteObject(userId + SysUserPurse.PURSE_NAME);
// //再次查询钱包修改后的信息
// PurseResponse NewpurseResponse = purseServiceTwo.purseObject(Long.valueOf(userId));
// Integer balanceFee = NewpurseResponse.getBalanceFee();
// //将查到新用户的余额存储到Redis中
// redisService.setCacheObject(userId + SysUserPurse.PURSE_NAME,balanceFee);
}
}

View File

@ -19,6 +19,10 @@ import java.util.List;
* @Description
* @Author WenHao.Sao
*/
/***
*
*/
@Service
public class PurseServiceImpl implements PurseService {

View File

@ -1,9 +1,12 @@
package com.ruoyi.mybasic.service.Impl;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.mybasic.common.domain.request.MoneyLogsRequest;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.Purse;
import com.ruoyi.mybasic.common.domain.RechargeLog;
import com.ruoyi.mybasic.common.domain.request.PurseRequest;
import com.ruoyi.mybasic.common.domain.response.PurseResponse;
import com.ruoyi.mybasic.mapper.PurseMapperTwo;
@ -11,7 +14,6 @@ import com.ruoyi.mybasic.service.PurseServiceTwo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
@ -19,6 +21,10 @@ import java.util.List;
* @Description
* @Author WenHao.Sao
*/
/***
*
*/
@Service
public class PurseServiceTwoImpl implements PurseServiceTwo {
@ -26,12 +32,31 @@ public class PurseServiceTwoImpl implements PurseServiceTwo {
@Autowired
private PurseMapperTwo purseMapperTwo;
/**
*
* @return
*/
@Override
public List<PurseRequest> purseListAll() {
return purseMapperTwo.purseListAll();
}
/**
* userId
*
* @param
* @return
*/
@Override
public PurseResponse purseObject() {
//获取当前用户id
Long userId = SecurityUtils.getUserId();
return purseMapperTwo.purseObject(userId);
}
/**
*
* @param purseRequest
@ -43,20 +68,6 @@ public class PurseServiceTwoImpl implements PurseServiceTwo {
}
/**
* userId
*
* @param userId
* @return
*/
@Override
public PurseResponse purseObject(Long userId) {
PurseResponse purseResponse = purseMapperTwo.purseObject(userId);
return purseResponse;
}
/**
*
* : id
@ -72,6 +83,18 @@ public class PurseServiceTwoImpl implements PurseServiceTwo {
purseMapperTwo.updWithdrawPurse(purseRequest);
}
/**
*
* @param rechargeLog
*/
@Override
public void insertRechargeLog(RechargeLog rechargeLog) {
int i = purseMapperTwo.insertRechargeLog(rechargeLog);
if (i <1 ){
throw new ServiceException("系统繁忙");
}
}
/**
*
@ -82,39 +105,31 @@ public class PurseServiceTwoImpl implements PurseServiceTwo {
*
*/
@Override
public void purseBalanceChange(PurseRequest purseRequest) {
//修改余额
// Integer i = purseMapperTwo.updPurse(purseRequest);
//获取入参的金额
double doubleAmount = purseRequest.getAmount();
//获取当前用户userId
String userId = purseRequest.getUserId();
public void purseBalanceChange(UserMoneyLogs userMoneyLogs) {
//获取当前用户的余额
PurseResponse purseResponse = purseMapperTwo.purseObject(Long.valueOf(userId));
PurseResponse purseResponse = this.purseObject();
//当前用户的余额
Double balanceFee = purseResponse.getBalanceFee();
int balanceFee = purseResponse.getBalanceFee();
//获取到状态是收入还是支出 1支出 2 收入
int status = purseRequest.getStatus();
int status = userMoneyLogs.getStatus();
//如果是支出 进行入参金额 和 原有金额 进行判断
if (1 == status && doubleAmount > balanceFee) {
if (1 == status && userMoneyLogs.getAmountIncome() > balanceFee) {
throw new ServiceException("余额不足");
}
//支出/收入调用动态sql
int i = purseMapperTwo.updPurseOut(purseRequest);
//获取到收入 支出 记录表 对象
MoneyLogsRequest moneyLogsRequest = new MoneyLogsRequest();
moneyLogsRequest.setUserId(Long.valueOf(purseRequest.getUserId()));//登录人
moneyLogsRequest.setStatus(status);//状态 1:支出 2:收入
moneyLogsRequest.setAmountIncome(doubleAmount + "");//入参金额
moneyLogsRequest.setCreateTime(new Date());//创建时间
moneyLogsRequest.setCreateUserId(purseRequest.getUserId());//创建人
int i = purseMapperTwo.updateUserBalance(userMoneyLogs);
if (i < 1){
throw new ServiceException("系统繁忙");
}
//添加记录表中
purseMapperTwo.addMoneyLogs(moneyLogsRequest);
purseMapperTwo.addMoneyLogs(userMoneyLogs);
}
/***
* H
* @param purseRequest
*/
@Override
public void updPurseHBi(PurseRequest purseRequest) {
purseMapperTwo.updPurseHBi(purseRequest);
@ -128,22 +143,20 @@ public class PurseServiceTwoImpl implements PurseServiceTwo {
* @return
*/
@Override
public R addPurse(String userId) {
Integer purseUserId = purseMapperTwo.purseUserId(userId);
if (purseUserId != null ){
public void addPurse(Long userId) {
PurseResponse purseResponse = purseMapperTwo.purseObject(userId);
if (purseResponse != null ){
throw new ServiceException("已有该用户,请重新创建");
}else{
Date date = new Date();
PurseRequest purseRequest = new PurseRequest();
purseRequest.setUserId(userId);
purseRequest.setUpdateTime(new Date());
// purseRequest.setOrderId(new SimpleDateFormat("yyyyMMdd").format(date) + System.currentTimeMillis());
Integer i = purseMapperTwo.addPurse(purseRequest);
if (i>0){
return R.ok("成功");
}else{
throw new ServiceException("失败");
}
}
//创建钱包对象
Purse purse = new Purse();
purse.setUserId(userId);
purse.setBalanceFee(0);
purse.setWalletIncome(0);
purse.setWalletOutcome(0);
Integer i = purseMapperTwo.addPurse(purse);
if (i < 1){
throw new ServiceException("系统繁忙,请稍后重试");
}
}

View File

@ -1,5 +1,6 @@
package com.ruoyi.mybasic.service;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.request.RequestInvitationRecord;
/**
@ -21,4 +22,10 @@ public interface InvitationService {
*/
void UserInviteTask(RequestInvitationRecord requestInvitationRecord);
/**
*
* @param userMoneyLogs
*/
void updatePurseByLogs(UserMoneyLogs userMoneyLogs);
}

View File

@ -1,8 +1,9 @@
package com.ruoyi.mybasic.service;
import com.google.protobuf.ServiceException;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.mybasic.common.domain.request.MoneyLogsRequest;
import com.ruoyi.mybasic.api.domain.UserMoneyLogs;
import com.ruoyi.mybasic.common.domain.MoneyLog;
import com.ruoyi.mybasic.common.domain.RechargeLog;
import com.ruoyi.mybasic.common.domain.request.PurseRequest;
import com.ruoyi.mybasic.common.domain.response.PurseResponse;
import org.apache.ibatis.annotations.Param;
@ -15,11 +16,11 @@ import java.util.List;
* @Author WenHao.Sao
*/
public interface PurseServiceTwo {
PurseResponse purseObject(@Param("userId") Long userId);
PurseResponse purseObject();
R addPurse(@Param("userId") String userId);
void addPurse(Long userId);
void purseBalanceChange(PurseRequest purseRequest);
void purseBalanceChange(UserMoneyLogs userMoneyLogs);
void updPurseHBi(PurseRequest purseRequest);
@ -28,4 +29,7 @@ public interface PurseServiceTwo {
void addPurseLogs(PurseRequest purseRequest);
void updWithdrawPurse(PurseRequest purseRequest);
void insertRechargeLog(RechargeLog rechargeLog);
}

View File

@ -0,0 +1,47 @@
//package com.ruoyi.mybasic.timer;
//
//import com.ruoyi.common.redis.service.RedisService;
//import com.ruoyi.common.security.utils.SecurityUtils;
//import com.ruoyi.mybasic.common.domain.response.PurseResponse;
//import com.ruoyi.mybasic.service.PurseServiceTwo;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.scheduling.annotation.Scheduled;
//import org.springframework.stereotype.Component;
//
///**
// * 钱包余额定时器
// * @author Lou_Zs
// */
//@Component
//public class SysUserPurse {
//
// @Autowired
// private PurseServiceTwo purseServiceTwo;
// @Autowired
// private RedisService redisService;
//
// //常量
// public final static String PURSE_NAME = "PURSE";
//
//
// /**
// * 定时器每五分钟执行
// */
// @Scheduled(cron = "0 0/5 * * * ?")
// public void userPurse(){
// System.out.println("~~~~~~定时器开始扫描钱包余额~~~~~~");
// //获取用户的编号
// Long userId = SecurityUtils.getUserId();
//
// //根据用户编号查询用户钱包
// PurseResponse purseResponse = purseServiceTwo.purseObject(userId);
//
// if (null == purseResponse){
// throw new RuntimeException("查无此用户!");
// }
// //钱包余额
// Integer balanceFee = purseResponse.getBalanceFee();
// //将余额存入redis
// redisService.setCacheObject(userId + PURSE_NAME,balanceFee);
// }
//}

View File

@ -64,4 +64,14 @@ FROM
WHERE
user_id = #{userId}
</update>
<!-- 修改钱包余额-->
<update id="updateUserMoney">
UPDATE t_purse
SET wallet_income = #{walletIncome},
wallet_outcome = #{walletOutcome},
balance_fee = #{balanceFee},
update_time = #{updateTime}
WHERE
user_id = #{userId}
</update>
</mapper>

View File

@ -9,56 +9,56 @@
<insert id="addPurse">
insert into t_purse
(
<if test="null != userId">
<if test="null != userId and userId != 0">
user_id,
</if>
<if test="null != orderId">
order_id,
</if>
update_time
wallet_income,
wallet_outcome,
balance_fee,
create_time
)
values
(
<if test="null != userId">
#{userId},
</if>
<if test="null != orderId">
#{orderId},
</if>
now()
#{walletIncome},
#{walletOutcome},
#{balanceFee},
now()
)
</insert>
<!-- 添加记录表-->
<insert id="addMoneyLogs">
insert into t_money_logs
(
<if test="null != userId">
<if test="null != userId and userId != 0">
user_id,
</if>
<if test="null != status">
<if test="null != status and status != 0">
status,
</if>
<if test="null != amountIncome">
<if test="null != amountIncome and amountIncome != 0">
amount_income,
</if>
<if test="null != createUserId ">
create_user_id,
<if test="null != moneyTypeName and moneyTypeName != ''">
amount_income,
</if>
create_time
create_time
)
values
(
<if test="null != userId">
<if test="null != userId and userId != 0">
#{userId},
</if>
<if test="null != status">
<if test="null != status and status != 0">
#{status},
</if>
<if test="null != amountIncome ">
<if test="null != amountIncome and amountIncome != 0">
#{amountIncome},
</if>
<if test="null != createUserId">
#{createUserId},
<if test="null != moneyTypeName and moneyTypeName != ''">
#{moneyTypeName},
</if>
now()
)
@ -78,17 +78,18 @@
update_time = now()
where user_id = #{userId}
</update>
<!-- 修改收入方法-->
<update id="updPurseOut">
<update id="updateUserBalance">
update t_purse
<set>
<if test="status != null and status == 1">
wallet_income = wallet_income+#{amount},
balance_fee = balance_fee + #{amount},
wallet_outcome = wallet_outcome + #{amount},
balance_fee = balance_fee - #{amount},
</if>
<if test="status != null and status == 2">
wallet_outcome = #{amount},
balance_fee = balance_fee - #{amount},
wallet_income = wallet_income + #{amount},
balance_fee = balance_fee + #{amount},
</if>
update_time = now()
</set>
@ -101,25 +102,25 @@
<update id="updPurseHBi">
update t_purse set balance_fee = (#{amount} * 100) where userId = #{userId}
update t_purse set balance_fee = (#{amount} * 100) where user_id = #{userId}
</update>
<select id="purseListAll" resultType="com.ruoyi.mybasic.common.domain.request.PurseRequest">
select * from t_purse
</select>
<!-- 添加充值记录表-->
<!-- 添加充值收入支出记录表-->
<insert id="addPurseLogs">
insert into t_money_withdraw
insert into t_money_logs
(
<if test="userId != null">
user_id,
</if>
<if test="statue != null">
statue,
<if test="status != null">
status,
</if>
<if test="amount != null">
amount,
<if test="amountIncome != null">
amount_income,
</if>
create_time
)
@ -128,21 +129,27 @@
<if test="userId != null">
#{userId},
</if>
<if test="statue != null">
#{status},
<if test="status != null">
2,
</if>
<if test="amount != null">
#{amount},
<if test="amountIncome != null">
(#{amountIncome} / 10 ),
</if>
now()
)
</insert>
<!-- 修改提现 过后的H币-->
<insert id="insertRechargeLog">
insert into t_recharger_log
(user_id,recharge_type,recharge_amount,create_time)
values
(#{userId},#{rechargeType},#{rechargeAmount},now())
</insert>
<!-- 修改提现 过后的H币-->
<update id="updWithdrawPurse">
update t_purse set
<if test="userId">
</if>
balance_fee = balance_fee - (#{amount} * 100)
where user_id = #{userId}
</update>
</mapper>