diff --git a/server/like-common/src/main/java/com/mdd/common/enums/AccountLogEnum.java b/server/like-common/src/main/java/com/mdd/common/enums/AccountLogEnum.java new file mode 100644 index 00000000..7c55ed82 --- /dev/null +++ b/server/like-common/src/main/java/com/mdd/common/enums/AccountLogEnum.java @@ -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 getUserMoneyChangeType() { + List 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; + } + +} diff --git a/server/like-front/src/main/java/com/mdd/front/controller/AccountLogController.java b/server/like-front/src/main/java/com/mdd/front/controller/AccountLogController.java new file mode 100644 index 00000000..0c1b63e7 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/controller/AccountLogController.java @@ -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> lists(@Validated PageValidate pageValidate, + @Validated UserAccountLogSearchValidate searchValidate) { + searchValidate.setUserId(LikeFrontThreadLocal.getUserId()); + PageResult list = iUserAccountLogService.lists(pageValidate, searchValidate); + return AjaxResult.success(list); + } +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/IUserAccountLogService.java b/server/like-front/src/main/java/com/mdd/front/service/IUserAccountLogService.java new file mode 100644 index 00000000..9f09cd50 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/IUserAccountLogService.java @@ -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 lists(PageValidate pageValidate, UserAccountLogSearchValidate searchValidate); +} diff --git a/server/like-front/src/main/java/com/mdd/front/service/impl/UserAccountLogServiceImpl.java b/server/like-front/src/main/java/com/mdd/front/service/impl/UserAccountLogServiceImpl.java new file mode 100644 index 00000000..8c18cf5a --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/service/impl/UserAccountLogServiceImpl.java @@ -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 lists(PageValidate pageValidate, UserAccountLogSearchValidate searchValidate) { + Integer pageNo = pageValidate.getPage_no(); + Integer pageSize = pageValidate.getPage_size(); + + QueryWrapper 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 iPage = userAccountLogMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); + List 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); + } +} diff --git a/server/like-front/src/main/java/com/mdd/front/validate/users/UserAccountLogSearchValidate.java b/server/like-front/src/main/java/com/mdd/front/validate/users/UserAccountLogSearchValidate.java new file mode 100644 index 00000000..0f89896c --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/validate/users/UserAccountLogSearchValidate.java @@ -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; +} diff --git a/server/like-front/src/main/java/com/mdd/front/vo/user/UserAccountListVo.java b/server/like-front/src/main/java/com/mdd/front/vo/user/UserAccountListVo.java new file mode 100644 index 00000000..53e5b469 --- /dev/null +++ b/server/like-front/src/main/java/com/mdd/front/vo/user/UserAccountListVo.java @@ -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; + + +}