feat 增加移动端用户资金变更记录

This commit is contained in:
damonyuan 2024-10-20 16:55:22 +08:00
parent c8e70fd3a0
commit aad5d82e73
6 changed files with 307 additions and 0 deletions

View File

@ -0,0 +1,94 @@
package com.mdd.common.enums;
import com.alibaba.fastjson2.JSONObject;
import java.util.ArrayList;
import java.util.List;
/**
* 通知枚举类
*/
public enum AccountLogEnum {
/**
* 变动对象
* UM 用户余额(user_money)
*/
UM(1, "变动对象"),
/**
* 动作
* INC 增加
* DEC 减少
*/
INC(1, "增加"),
DEC(2, "减少"),
/**
* 用户余额减少类型
*/
UM_DEC_ADMIN(100, "平台减少余额"),
UM_DEC_RECHARGE_REFUND(101, "充值订单退款减少余额"),
UM_INC_ADMIN(200, "平台增加余额"),
UM_INC_RECHARGE(201, "充值增加余额");
/**
* 构造方法
*/
private final int code;
private final String msg;
AccountLogEnum(int code, String msg) {
this.code = code;
this.msg = msg;
}
/**
* @notes 变动类型描述
* @param $changeType
* @param false $flag
* @return string|string[]
* @author 段誉
* @date 2023/2/23 10:07
*/
public static String getChangeTypeDesc(Integer changeType) {
JSONObject ret = new JSONObject();
ret.put(String.valueOf(UM_DEC_ADMIN.getCode()), UM_DEC_ADMIN.getMsg());
ret.put(String.valueOf(UM_INC_ADMIN.getCode()), UM_INC_ADMIN.getMsg());
ret.put(String.valueOf(UM_INC_RECHARGE.getCode()), UM_INC_RECHARGE.getMsg());
ret.put(String.valueOf(UM_DEC_RECHARGE_REFUND.getCode()), UM_DEC_RECHARGE_REFUND.getMsg());
return ret.getString(String.valueOf(changeType));
}
/**
* 获取状态码
*
* @author fzr
* @return Long
*/
public int getCode() {
return this.code;
}
/**
* 获取提示
*
* @author fzr
* @return String
*/
public String getMsg() {
return this.msg;
}
/**
* 验证码场景
*/
public static List<Integer> getUserMoneyChangeType() {
List<Integer> ret = new ArrayList<>();
ret.add(UM_DEC_ADMIN.getCode());
ret.add(UM_DEC_RECHARGE_REFUND.getCode());
ret.add(UM_INC_ADMIN.getCode());
ret.add(UM_INC_RECHARGE.getCode());
return ret;
}
}

View File

@ -0,0 +1,43 @@
package com.mdd.front.controller;
import com.mdd.common.aop.NotLogin;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import com.mdd.common.validator.annotation.IDMust;
import com.mdd.front.LikeFrontThreadLocal;
import com.mdd.front.service.IArticleService;
import com.mdd.front.service.IUserAccountLogService;
import com.mdd.front.validate.article.ArticleCollectValidate;
import com.mdd.front.validate.article.ArticleSearchValidate;
import com.mdd.front.validate.common.PageValidate;
import com.mdd.front.validate.users.UserAccountLogSearchValidate;
import com.mdd.front.vo.article.ArticleCateVo;
import com.mdd.front.vo.article.ArticleCollectVo;
import com.mdd.front.vo.article.ArticleDetailVo;
import com.mdd.front.vo.article.ArticleListedVo;
import com.mdd.front.vo.user.UserAccountListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/api/account_log")
@Api(tags = "用户资金变更管理")
public class AccountLogController {
@Resource
IUserAccountLogService iUserAccountLogService;
@GetMapping("/lists")
@ApiOperation(value="用户资金变更列表")
public AjaxResult<PageResult<UserAccountListVo>> lists(@Validated PageValidate pageValidate,
@Validated UserAccountLogSearchValidate searchValidate) {
searchValidate.setUserId(LikeFrontThreadLocal.getUserId());
PageResult<UserAccountListVo> list = iUserAccountLogService.lists(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,21 @@
package com.mdd.front.service;
import com.mdd.common.core.PageResult;
import com.mdd.front.validate.common.PageValidate;
import com.mdd.front.validate.users.*;
import com.mdd.front.vo.user.UserAccountListVo;
import com.mdd.front.vo.user.UserCenterVo;
import com.mdd.front.vo.user.UserInfoVo;
/**
* 用户服务接口类
*/
public interface IUserAccountLogService {
/**
* @notes 获取列表
* @return array
* @author damonyuan
*/
PageResult<UserAccountListVo> lists(PageValidate pageValidate, UserAccountLogSearchValidate searchValidate);
}

View File

@ -0,0 +1,90 @@
package com.mdd.front.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mdd.common.config.GlobalConfig;
import com.mdd.common.core.PageResult;
import com.mdd.common.entity.article.Article;
import com.mdd.common.entity.log.UserAccountLog;
import com.mdd.common.entity.user.User;
import com.mdd.common.entity.user.UserAuth;
import com.mdd.common.enums.AccountLogEnum;
import com.mdd.common.enums.ClientEnum;
import com.mdd.common.enums.NoticeEnum;
import com.mdd.common.enums.UserEnum;
import com.mdd.common.exception.OperateException;
import com.mdd.common.mapper.log.UserAccountLogMapper;
import com.mdd.common.mapper.user.UserAuthMapper;
import com.mdd.common.mapper.user.UserMapper;
import com.mdd.common.plugin.notice.NoticeCheck;
import com.mdd.common.plugin.wechat.WxMnpDriver;
import com.mdd.common.util.*;
import com.mdd.front.LikeFrontThreadLocal;
import com.mdd.front.service.IUserAccountLogService;
import com.mdd.front.service.IUserService;
import com.mdd.front.validate.common.PageValidate;
import com.mdd.front.validate.users.*;
import com.mdd.front.vo.article.ArticleListedVo;
import com.mdd.front.vo.user.UserAccountListVo;
import com.mdd.front.vo.user.UserCenterVo;
import com.mdd.front.vo.user.UserInfoVo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* 用户服务实现类
*/
@Service
public class UserAccountLogServiceImpl implements IUserAccountLogService {
@Resource
UserAccountLogMapper userAccountLogMapper;
@Override
public PageResult<UserAccountListVo> lists(PageValidate pageValidate, UserAccountLogSearchValidate searchValidate) {
Integer pageNo = pageValidate.getPage_no();
Integer pageSize = pageValidate.getPage_size();
QueryWrapper<UserAccountLog> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("delete_time");
queryWrapper.eq("user_id", searchValidate.getUserId());
if (StringUtils.isNotEmpty(searchValidate.getType()) && searchValidate.getType().equals("um")) {
queryWrapper.in("change_type", AccountLogEnum.getUserMoneyChangeType());
}
if (StringUtils.isNotNull(searchValidate.getAction())) {
queryWrapper.eq("action", searchValidate.getAction());
}
queryWrapper.orderByDesc("id");
IPage<UserAccountLog> iPage = userAccountLogMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper);
List<UserAccountListVo> list = new LinkedList<>();
for (UserAccountLog item : iPage.getRecords()) {
UserAccountListVo vo = new UserAccountListVo();
BeanUtils.copyProperties(item, vo);
vo.setTypeDesc(AccountLogEnum.getChangeTypeDesc(item.getChangeType()));
String symbol = item.getAction().equals(AccountLogEnum.DEC.getCode()) ? "-" : "+";
vo.setChangeAmountDesc(symbol + item.getChangeAmount());
vo.setCreateTime(TimeUtils.timestampToDate(item.getCreateTime()));
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
}

View File

@ -0,0 +1,20 @@
package com.mdd.front.validate.users;
import com.mdd.common.validator.annotation.StringContains;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@ApiModel("用户资金变更参数")
public class UserAccountLogSearchValidate implements Serializable {
private static final long serialVersionUID = 1L;
private Integer userId;
private String type;
private Integer action;
}

View File

@ -0,0 +1,39 @@
package com.mdd.front.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@ApiModel(value = "用户资金变更Vo")
public class UserAccountListVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "用户ID")
private Integer id;
@ApiModelProperty("变动类型")
private Integer changeType;
@ApiModelProperty("变动类型字符串")
private String typeDesc;
@ApiModelProperty("变动数量")
private BigDecimal changeAmount;
@ApiModelProperty("变动数量字符串")
private String changeAmountDesc;
@ApiModelProperty("变动类型: [1=增加, 2=减少]")
private Integer action;
@ApiModelProperty("备注信息")
private String remark;
@ApiModelProperty("创建时间")
private String createTime;
}