feat 增加移动端用户资金变更记录
This commit is contained in:
parent
c8e70fd3a0
commit
aad5d82e73
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue