增加钱包日志记录
This commit is contained in:
parent
2f854d5a94
commit
b0bb903643
|
|
@ -0,0 +1,55 @@
|
||||||
|
package com.mdd.common.entity;
|
||||||
|
|
||||||
|
import io.swagger.annotations.ApiModel;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@ApiModel("账户变动实体")
|
||||||
|
public class LogMoney {
|
||||||
|
|
||||||
|
@ApiModelProperty("主键")
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@ApiModelProperty("流水号")
|
||||||
|
private String sn;
|
||||||
|
|
||||||
|
@ApiModelProperty("用户ID")
|
||||||
|
private Integer userId;
|
||||||
|
|
||||||
|
@ApiModelProperty("关联ID")
|
||||||
|
private Integer sourceId;
|
||||||
|
|
||||||
|
@ApiModelProperty("关联单号")
|
||||||
|
private String sourceSn;
|
||||||
|
|
||||||
|
@ApiModelProperty("变动类型")
|
||||||
|
private Integer changeType;
|
||||||
|
|
||||||
|
@ApiModelProperty("变动数量")
|
||||||
|
private BigDecimal changeAmount;
|
||||||
|
|
||||||
|
@ApiModelProperty("变动后数量")
|
||||||
|
private BigDecimal leftAmount;
|
||||||
|
|
||||||
|
@ApiModelProperty("变动类型: [1=增加, 2=减少]")
|
||||||
|
private Integer action;
|
||||||
|
|
||||||
|
@ApiModelProperty("备注信息")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
@ApiModelProperty("预留字段")
|
||||||
|
private String extra;
|
||||||
|
|
||||||
|
@ApiModelProperty("创建时间")
|
||||||
|
private Long createTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("更新时间")
|
||||||
|
private Long updateTime;
|
||||||
|
|
||||||
|
@ApiModelProperty("删除时间")
|
||||||
|
private Long deleteTime;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.mdd.common.enums;
|
||||||
|
|
||||||
|
public enum LogMoneyEnum {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户余额类型
|
||||||
|
*/
|
||||||
|
UM_INC_ADMIN(1001, "平台增加余额"),
|
||||||
|
UM_DEC_ADMIN(1002, "平台减少余额"),
|
||||||
|
UM_INC_RECHARGE(1003, "充值余额增加"),
|
||||||
|
UM_DEC_RECHARGE(1004, "充值余额退回");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造方法
|
||||||
|
*/
|
||||||
|
private final int code;
|
||||||
|
private final String msg;
|
||||||
|
LogMoneyEnum(int code, String msg) {
|
||||||
|
this.code = code;
|
||||||
|
this.msg = msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取状态码
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @return Long
|
||||||
|
*/
|
||||||
|
public int getCode() {
|
||||||
|
return this.code;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取提示
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public String getMsg() {
|
||||||
|
return this.msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
package com.mdd.common.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.mdd.common.core.basics.IBaseMapper;
|
||||||
|
import com.mdd.common.entity.LogMoney;
|
||||||
|
import com.mdd.common.entity.user.User;
|
||||||
|
import com.mdd.common.mapper.user.UserMapper;
|
||||||
|
import com.mdd.common.util.SpringUtils;
|
||||||
|
import com.mdd.common.util.StringUtils;
|
||||||
|
import com.mdd.common.util.TimeUtils;
|
||||||
|
import com.mdd.common.util.ToolUtils;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 账户变动Mapper
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface LogMoneyMapper extends IBaseMapper<LogMoney> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 增加
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @param changeType 变动类型
|
||||||
|
* @param changeAmount 变动金额
|
||||||
|
* @param sourceId 来源ID
|
||||||
|
* @param sourceSn 来源订单
|
||||||
|
* @param remark 备注信息
|
||||||
|
* @param extra 预留字段
|
||||||
|
*/
|
||||||
|
default void add(Integer userId, Integer changeType, BigDecimal changeAmount,
|
||||||
|
Integer sourceId, String sourceSn, String remark, String extra) {
|
||||||
|
|
||||||
|
for (int i=0; i<=0; i++) {
|
||||||
|
UserMapper userMapper = SpringUtils.getBean(UserMapper.class);
|
||||||
|
User user = userMapper.selectById(userId);
|
||||||
|
if (StringUtils.isNull(user)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal leftAmount = user.getMoney().add(changeAmount);
|
||||||
|
|
||||||
|
LogMoney logMoney = new LogMoney();
|
||||||
|
logMoney.setSn(this.randMakeOrderSn());
|
||||||
|
logMoney.setUserId(userId);
|
||||||
|
logMoney.setSourceId(sourceId);
|
||||||
|
logMoney.setSourceSn(sourceSn);
|
||||||
|
logMoney.setChangeType(changeType);
|
||||||
|
logMoney.setChangeAmount(changeAmount);
|
||||||
|
logMoney.setLeftAmount(leftAmount);
|
||||||
|
logMoney.setAction(1);
|
||||||
|
logMoney.setRemark(remark);
|
||||||
|
logMoney.setExtra(extra);
|
||||||
|
logMoney.setCreateTime(System.currentTimeMillis() / 1000);
|
||||||
|
logMoney.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
|
this.insert(logMoney);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 减少
|
||||||
|
*
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @param changeType 变动类型
|
||||||
|
* @param changeAmount 变动金额
|
||||||
|
* @param sourceId 来源ID
|
||||||
|
* @param sourceSn 来源订单
|
||||||
|
* @param remark 备注信息
|
||||||
|
* @param extra 预留字段
|
||||||
|
*/
|
||||||
|
default void dec(Integer userId, Integer changeType, BigDecimal changeAmount,
|
||||||
|
Integer sourceId, String sourceSn, String remark, String extra) {
|
||||||
|
|
||||||
|
for (int i=0; i<=0; i++) {
|
||||||
|
UserMapper userMapper = SpringUtils.getBean(UserMapper.class);
|
||||||
|
User user = userMapper.selectById(userId);
|
||||||
|
if (StringUtils.isNull(user)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal leftAmount = user.getMoney().subtract(changeAmount);
|
||||||
|
|
||||||
|
LogMoney logMoney = new LogMoney();
|
||||||
|
logMoney.setSn(this.randMakeOrderSn());
|
||||||
|
logMoney.setUserId(userId);
|
||||||
|
logMoney.setSourceId(sourceId);
|
||||||
|
logMoney.setSourceSn(sourceSn);
|
||||||
|
logMoney.setChangeType(changeType);
|
||||||
|
logMoney.setChangeAmount(changeAmount);
|
||||||
|
logMoney.setLeftAmount(leftAmount);
|
||||||
|
logMoney.setAction(2);
|
||||||
|
logMoney.setRemark(remark);
|
||||||
|
logMoney.setExtra(extra);
|
||||||
|
logMoney.setCreateTime(System.currentTimeMillis() / 1000);
|
||||||
|
logMoney.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
|
this.insert(logMoney);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成唯一流水号
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
default String randMakeOrderSn() {
|
||||||
|
String date = TimeUtils.timestampToDate(System.currentTimeMillis()/1000, "yyyyMMddHHmmss");
|
||||||
|
String sn;
|
||||||
|
while (true) {
|
||||||
|
sn = date + ToolUtils.randomInt(12);
|
||||||
|
LogMoney snModel = this.selectOne(
|
||||||
|
new QueryWrapper<LogMoney>()
|
||||||
|
.select("id")
|
||||||
|
.eq("sn", sn)
|
||||||
|
.last("limit 1"));
|
||||||
|
if (snModel == null) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sn;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -11,7 +11,9 @@ import com.mdd.common.entity.setting.DevPayWay;
|
||||||
import com.mdd.common.entity.user.User;
|
import com.mdd.common.entity.user.User;
|
||||||
import com.mdd.common.entity.user.UserAuth;
|
import com.mdd.common.entity.user.UserAuth;
|
||||||
import com.mdd.common.enums.ClientEnum;
|
import com.mdd.common.enums.ClientEnum;
|
||||||
|
import com.mdd.common.enums.LogMoneyEnum;
|
||||||
import com.mdd.common.enums.PaymentEnum;
|
import com.mdd.common.enums.PaymentEnum;
|
||||||
|
import com.mdd.common.mapper.LogMoneyMapper;
|
||||||
import com.mdd.common.mapper.RechargeOrderMapper;
|
import com.mdd.common.mapper.RechargeOrderMapper;
|
||||||
import com.mdd.common.mapper.setting.DevPayConfigMapper;
|
import com.mdd.common.mapper.setting.DevPayConfigMapper;
|
||||||
import com.mdd.common.mapper.setting.DevPayWayMapper;
|
import com.mdd.common.mapper.setting.DevPayWayMapper;
|
||||||
|
|
@ -24,6 +26,7 @@ import com.mdd.front.validate.PaymentValidate;
|
||||||
import com.mdd.front.vo.PayWayListedVo;
|
import com.mdd.front.vo.PayWayListedVo;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
@ -41,15 +44,18 @@ public class PayServiceImpl implements IPayService {
|
||||||
@Resource
|
@Resource
|
||||||
UserAuthMapper userAuthMapper;
|
UserAuthMapper userAuthMapper;
|
||||||
|
|
||||||
@Resource
|
|
||||||
RechargeOrderMapper rechargeOrderMapper;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
DevPayWayMapper devPayWayMapper;
|
DevPayWayMapper devPayWayMapper;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
DevPayConfigMapper devPayConfigMapper;
|
DevPayConfigMapper devPayConfigMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
RechargeOrderMapper rechargeOrderMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
LogMoneyMapper logMoneyMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付方式
|
* 支付方式
|
||||||
*
|
*
|
||||||
|
|
@ -163,6 +169,7 @@ public class PayServiceImpl implements IPayService {
|
||||||
* @param transactionId 流水号
|
* @param transactionId 流水号
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void handlePaidNotify(String attach, String outTradeNo, String transactionId) {
|
public void handlePaidNotify(String attach, String outTradeNo, String transactionId) {
|
||||||
switch (attach) {
|
switch (attach) {
|
||||||
case "order":
|
case "order":
|
||||||
|
|
@ -207,6 +214,13 @@ public class PayServiceImpl implements IPayService {
|
||||||
user.setMoney(rechargeOrder.getOrderAmount());
|
user.setMoney(rechargeOrder.getOrderAmount());
|
||||||
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||||
userMapper.update(user, new QueryWrapper<User>().eq("id", rechargeOrder.getUserId()));
|
userMapper.update(user, new QueryWrapper<User>().eq("id", rechargeOrder.getUserId()));
|
||||||
|
|
||||||
|
logMoneyMapper.add(user.getId(),
|
||||||
|
LogMoneyEnum.UM_INC_ADMIN.getCode(),
|
||||||
|
rechargeOrder.getOrderAmount(),
|
||||||
|
rechargeOrder.getId(),
|
||||||
|
rechargeOrder.getOrderSn(),
|
||||||
|
"用户充值余额", null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.mdd.common.core.PageResult;
|
import com.mdd.common.core.PageResult;
|
||||||
import com.mdd.common.entity.RechargeOrder;
|
import com.mdd.common.entity.RechargeOrder;
|
||||||
import com.mdd.common.entity.article.Article;
|
|
||||||
import com.mdd.common.enums.PaymentEnum;
|
import com.mdd.common.enums.PaymentEnum;
|
||||||
import com.mdd.common.mapper.RechargeOrderMapper;
|
import com.mdd.common.mapper.RechargeOrderMapper;
|
||||||
import com.mdd.common.util.TimeUtils;
|
import com.mdd.common.util.TimeUtils;
|
||||||
import com.mdd.common.util.ToolUtils;
|
import com.mdd.common.util.ToolUtils;
|
||||||
import com.mdd.common.util.UrlUtils;
|
|
||||||
import com.mdd.front.service.IRechargeService;
|
import com.mdd.front.service.IRechargeService;
|
||||||
import com.mdd.front.validate.RechargeValidate;
|
import com.mdd.front.validate.RechargeValidate;
|
||||||
import com.mdd.front.validate.common.PageValidate;
|
import com.mdd.front.validate.common.PageValidate;
|
||||||
import com.mdd.front.vo.RechargeRecordVo;
|
import com.mdd.front.vo.RechargeRecordVo;
|
||||||
import com.mdd.front.vo.article.ArticleListedVo;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
@ -34,6 +30,14 @@ public class RechargeServiceImpl implements IRechargeService {
|
||||||
@Resource
|
@Resource
|
||||||
RechargeOrderMapper rechargeOrderMapper;
|
RechargeOrderMapper rechargeOrderMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 充值记录
|
||||||
|
*
|
||||||
|
* @author fzr
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @param pageValidate 分页参数
|
||||||
|
* @return PageResult<RechargeRecordVo>
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public PageResult<RechargeRecordVo> record(Integer userId, PageValidate pageValidate) {
|
public PageResult<RechargeRecordVo> record(Integer userId, PageValidate pageValidate) {
|
||||||
Integer pageNo = pageValidate.getPageNo();
|
Integer pageNo = pageValidate.getPageNo();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue