新增收入支出记录以及金额变更

pull/2/head
ZhiShuo_Lou 2023-10-28 15:44:10 +08:00
parent 5fe464db23
commit b7ddaceb2d
8 changed files with 133 additions and 14 deletions

View File

@ -21,15 +21,15 @@ public class Purse {
/**
*
*/
private double walletIncome;
private Integer walletIncome;
/**
*
*/
private double walletOutcome;
private Integer walletOutcome;
/**
*
*/
private double balanceFee;
private Integer balanceFee;
/**
*
*/

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("/updatePurseByLogsMoney")
public R updatePurseByLogsMoney(@RequestBody UserMoneyLogs userMoneyLogs){
log.info("功能介绍:根据记录处理金额,请求方式:{},请求路径:{},请求参数:{}",
request.getMethod(),request.getRequestURI(),JSONObject.toJSONString(userMoneyLogs));
invitationService.updatePurseByLogsMoney(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

@ -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,9 +1,12 @@
package com.ruoyi.mybasic.service.Impl;
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 +28,8 @@ public class InvitationServiceImpl implements InvitationService {
/** @noinspection SpringJavaInjectionPointsAutowiringInspection*/
@Autowired
private InvitationMapper invitationMapper;
@Autowired
private PurseServiceTwo purseServiceTwo;
@ -77,4 +82,54 @@ public class InvitationServiceImpl implements InvitationService {
invitationMapper.insertUserMoneyLogs(PurseMoneyLogsTwo);
}
/**
*
* @param userMoneyLogs
*/
@Override
@Transactional//事务
public void updatePurseByLogsMoney(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);
}else{
//收入操作
purse.setBalanceFee(purseResponse.getBalanceFee() + amountIncome);
purse.setWalletIncome(purseResponse.getWalletIncome() + amountIncome);
}
//修改钱包余额
i = invitationMapper.updateUserMoney(purse);
if (i < 0){
throw new RuntimeException("钱包余额变更失败!");
}
//余额变更后添加记录表
i = invitationMapper.insertUserMoneyLogs(userMoneyLogs);
if (i < 0){
throw new RuntimeException("订单未生效!");
}
}
}

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 updatePurseByLogsMoney(UserMoneyLogs userMoneyLogs);
}

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>