增加钱包日志记录
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.UserAuth;
|
||||
import com.mdd.common.enums.ClientEnum;
|
||||
import com.mdd.common.enums.LogMoneyEnum;
|
||||
import com.mdd.common.enums.PaymentEnum;
|
||||
import com.mdd.common.mapper.LogMoneyMapper;
|
||||
import com.mdd.common.mapper.RechargeOrderMapper;
|
||||
import com.mdd.common.mapper.setting.DevPayConfigMapper;
|
||||
import com.mdd.common.mapper.setting.DevPayWayMapper;
|
||||
|
|
@ -24,6 +26,7 @@ import com.mdd.front.validate.PaymentValidate;
|
|||
import com.mdd.front.vo.PayWayListedVo;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
|
|
@ -41,15 +44,18 @@ public class PayServiceImpl implements IPayService {
|
|||
@Resource
|
||||
UserAuthMapper userAuthMapper;
|
||||
|
||||
@Resource
|
||||
RechargeOrderMapper rechargeOrderMapper;
|
||||
|
||||
@Resource
|
||||
DevPayWayMapper devPayWayMapper;
|
||||
|
||||
@Resource
|
||||
DevPayConfigMapper devPayConfigMapper;
|
||||
|
||||
@Resource
|
||||
RechargeOrderMapper rechargeOrderMapper;
|
||||
|
||||
@Resource
|
||||
LogMoneyMapper logMoneyMapper;
|
||||
|
||||
/**
|
||||
* 支付方式
|
||||
*
|
||||
|
|
@ -163,6 +169,7 @@ public class PayServiceImpl implements IPayService {
|
|||
* @param transactionId 流水号
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void handlePaidNotify(String attach, String outTradeNo, String transactionId) {
|
||||
switch (attach) {
|
||||
case "order":
|
||||
|
|
@ -207,6 +214,13 @@ public class PayServiceImpl implements IPayService {
|
|||
user.setMoney(rechargeOrder.getOrderAmount());
|
||||
user.setUpdateTime(System.currentTimeMillis() / 1000);
|
||||
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.mdd.common.core.PageResult;
|
||||
import com.mdd.common.entity.RechargeOrder;
|
||||
import com.mdd.common.entity.article.Article;
|
||||
import com.mdd.common.enums.PaymentEnum;
|
||||
import com.mdd.common.mapper.RechargeOrderMapper;
|
||||
import com.mdd.common.util.TimeUtils;
|
||||
import com.mdd.common.util.ToolUtils;
|
||||
import com.mdd.common.util.UrlUtils;
|
||||
import com.mdd.front.service.IRechargeService;
|
||||
import com.mdd.front.validate.RechargeValidate;
|
||||
import com.mdd.front.validate.common.PageValidate;
|
||||
import com.mdd.front.vo.RechargeRecordVo;
|
||||
import com.mdd.front.vo.article.ArticleListedVo;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
|
@ -34,6 +30,14 @@ public class RechargeServiceImpl implements IRechargeService {
|
|||
@Resource
|
||||
RechargeOrderMapper rechargeOrderMapper;
|
||||
|
||||
/**
|
||||
* 充值记录
|
||||
*
|
||||
* @author fzr
|
||||
* @param userId 用户ID
|
||||
* @param pageValidate 分页参数
|
||||
* @return PageResult<RechargeRecordVo>
|
||||
*/
|
||||
@Override
|
||||
public PageResult<RechargeRecordVo> record(Integer userId, PageValidate pageValidate) {
|
||||
Integer pageNo = pageValidate.getPageNo();
|
||||
|
|
|
|||
Loading…
Reference in New Issue