钱包整改

pull/2/head
shaowenhao 2023-10-29 11:19:29 +08:00
parent 18915baa22
commit f6b14edcd2
9 changed files with 205 additions and 105 deletions

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,7 +17,7 @@ public class Purse {
/**
*
*/
private Integer userId;
private Long userId;
/**
*
*/
@ -36,5 +36,11 @@ public class Purse {
@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;//用户编号

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;
@ -69,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);
}
/**
@ -106,32 +108,25 @@ public class PurseControllerTwo {
request.setBizContent(bizContent.toString());
/**
* H
*/
// Long userId = SecurityUtils.getUserId();
long userId = 1;
PurseResponse purseResponse = purseServiceTwo.purseObject(userId);
UserMoneyLogs userMoneyLogs = new UserMoneyLogs();
//获取到当前余额
int balanceFee = purseResponse.getBalanceFee();
//获取前台传入的一个参数
//获取前台传入的一个参数 充值金额
double totalAmount = aliPay.getTotalAmount();
double totalAmountOne = (totalAmount * 100);// 1/100
PurseRequest purseRequest = new PurseRequest();
purseRequest.setUserId(userId + "");
purseRequest.setBalanceFee(balanceFee);
purseRequest.setAmountIncome(totalAmountOne);
purseRequest.setStatus(2);
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 = "";
@ -218,7 +213,7 @@ public class PurseControllerTwo {
public R<?> withdrawPurse(AliPay aliPay, HttpServletResponse httpResponse){
//获取当前用户的userId 里面的余额
Long userId = SecurityUtils.getUserId();
PurseResponse purseResponse = purseServiceTwo.purseObject(userId);
PurseResponse purseResponse = purseServiceTwo.purseObject();
//获取当前用户的余额
int balanceFee = purseResponse.getBalanceFee();
//获取前台输入的金额
@ -234,6 +229,11 @@ public class PurseControllerTwo {
//修改H币 以及添加提现事物里面的金额
purseServiceTwo.updWithdrawPurse(purseRequest);
//添加记录表
MoneyLogsRequest moneyLogsRequest = new MoneyLogsRequest();
moneyLogsRequest.setStatus(1);
}
return null;
@ -252,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();
}
@ -266,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

@ -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,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;
/**
@ -43,13 +45,14 @@ public class PurseServiceTwoImpl implements PurseServiceTwo {
/**
* userId
*
* @param userId
* @param
* @return
*/
@Override
public PurseResponse purseObject(Long userId) {
PurseResponse purseResponse = purseMapperTwo.purseObject(userId);
return purseResponse;
public PurseResponse purseObject() {
//获取当前用户id
Long userId = SecurityUtils.getUserId();
return purseMapperTwo.purseObject(userId);
}
@ -80,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("系统繁忙");
}
}
/**
*
@ -90,34 +105,25 @@ public class PurseServiceTwoImpl implements PurseServiceTwo {
*
*/
@Override
public void purseBalanceChange(PurseRequest 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();
//当前用户的余额
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);
}
/***
@ -137,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,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

@ -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>
@ -138,7 +139,14 @@
)
</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
balance_fee = balance_fee - (#{amount} * 100)