Compare commits
13 Commits
5fe464db23
...
f6b14edcd2
Author | SHA1 | Date |
---|---|---|
|
f6b14edcd2 | |
|
18915baa22 | |
|
1ec02df246 | |
|
1fef9d675d | |
|
2ffeb09176 | |
|
6860cd013b | |
|
ede9a8e9c7 | |
|
3436cedce9 | |
|
d86d56a90d | |
|
5df7c16a96 | |
|
b962728367 | |
|
a1e102a9a6 | |
|
b7ddaceb2d |
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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;//修改时间
|
||||
|
||||
}
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;//收入支出金额
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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接口 消息队列根据api接口的返回结果进行不同的操作失败:根据参数中的提现记录id 把对应记录状态改为失败
|
||||
* 成功:根据参数中的充值记录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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,10 @@ import java.util.List;
|
|||
* @Description 描述
|
||||
* @Author WenHao.Sao
|
||||
*/
|
||||
|
||||
/***
|
||||
* 钱包旧
|
||||
*/
|
||||
@Service
|
||||
public class PurseServiceImpl implements PurseService {
|
||||
|
||||
|
|
|
@ -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("系统繁忙,请稍后重试");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
// }
|
||||
//}
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue