增加:【余额明细,充值记录,余额调整】功能

This commit is contained in:
TinyAnts 2023-03-30 10:10:40 +08:00
parent 93d55c0e22
commit e003d98100
65 changed files with 725 additions and 115 deletions

View File

@ -3,10 +3,10 @@ package com.mdd.admin.controller;
import com.alibaba.fastjson2.JSONArray;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IAlbumsService;
import com.mdd.admin.validate.AlbumCateValidate;
import com.mdd.admin.validate.AlbumMoveValidate;
import com.mdd.admin.validate.AlbumRenameValidate;
import com.mdd.admin.validate.AlbumSearchValidate;
import com.mdd.admin.validate.album.AlbumCateValidate;
import com.mdd.admin.validate.album.AlbumMoveValidate;
import com.mdd.admin.validate.album.AlbumRenameValidate;
import com.mdd.admin.validate.album.AlbumSearchValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.IdsValidate;
import com.mdd.admin.validate.commons.PageValidate;

View File

@ -3,9 +3,9 @@ package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.common.aop.NotPower;
import com.mdd.admin.service.IArtCateService;
import com.mdd.admin.validate.ArtCateCreateValidate;
import com.mdd.admin.validate.ArtCateUpdateValidate;
import com.mdd.admin.validate.ArtCateSearchValidate;
import com.mdd.admin.validate.article.ArtCateCreateValidate;
import com.mdd.admin.validate.article.ArtCateUpdateValidate;
import com.mdd.admin.validate.article.ArtCateSearchValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleCateVo;

View File

@ -2,9 +2,9 @@ package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IArticleService;
import com.mdd.admin.validate.ArticleCreateValidate;
import com.mdd.admin.validate.ArticleSearchValidate;
import com.mdd.admin.validate.ArticleUpdateValidate;
import com.mdd.admin.validate.article.ArticleCreateValidate;
import com.mdd.admin.validate.article.ArticleSearchValidate;
import com.mdd.admin.validate.article.ArticleUpdateValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;

View File

@ -2,8 +2,8 @@ package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.ICrontabService;
import com.mdd.admin.validate.CrontabCreateValidate;
import com.mdd.admin.validate.CrontabUpdateValidate;
import com.mdd.admin.validate.crontab.CrontabCreateValidate;
import com.mdd.admin.validate.crontab.CrontabUpdateValidate;
import com.mdd.admin.validate.commons.IdValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.CrontabDetailVo;

View File

@ -1,10 +1,11 @@
package com.mdd.admin.controller;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IUsersService;
import com.mdd.admin.validate.UsersSearchValidate;
import com.mdd.admin.validate.UsersUpdateValidate;
import com.mdd.admin.service.IUserService;
import com.mdd.admin.validate.user.UserSearchValidate;
import com.mdd.admin.validate.user.UserUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.user.UserWalletValidate;
import com.mdd.admin.vo.user.UserVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
@ -19,31 +20,39 @@ import javax.annotation.Resource;
@RestController
@RequestMapping("api/user")
@Api(tags = "用户数据管理")
public class UsersController {
public class UserController {
@Resource
IUsersService iUsersService;
IUserService iUserService;
@GetMapping("/list")
@ApiOperation(value="用户列表")
public AjaxResult<PageResult<UserVo>> list(@Validated PageValidate pageValidate,
@Validated UsersSearchValidate searchValidate) {
PageResult<UserVo> list = iUsersService.list(pageValidate, searchValidate);
@Validated UserSearchValidate searchValidate) {
PageResult<UserVo> list = iUserService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
@GetMapping("/detail")
@ApiOperation(value="用户详情")
public AjaxResult<UserVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
UserVo vo = iUsersService.detail(id);
UserVo vo = iUserService.detail(id);
return AjaxResult.success(vo);
}
@Log(title = "用户编辑")
@PostMapping("/edit")
@ApiOperation(value="用户编辑")
public AjaxResult<Object> edit(@Validated @RequestBody UsersUpdateValidate updateValidate) {
iUsersService.edit(updateValidate);
public AjaxResult<Object> edit(@Validated @RequestBody UserUpdateValidate updateValidate) {
iUserService.edit(updateValidate);
return AjaxResult.success();
}
@Log(title = "余额调整")
@PostMapping("/adjustWallet")
@ApiOperation(value="余额调整")
public AjaxResult<Object> adjustWallet(@Validated @RequestBody UserWalletValidate walletValidate) {
iUserService.adjustWallet(walletValidate);
return AjaxResult.success();
}

View File

@ -2,7 +2,7 @@ package com.mdd.admin.controller.decorate;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IDecoratePageService;
import com.mdd.admin.validate.DecoratePageValidate;
import com.mdd.admin.validate.decorate.DecoratePageValidate;
import com.mdd.admin.vo.decorate.DecoratePageVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.validator.annotation.IDMust;

View File

@ -2,7 +2,7 @@ package com.mdd.admin.controller.decorate;
import com.mdd.admin.aop.Log;
import com.mdd.admin.service.IDecorateTabbarService;
import com.mdd.admin.validate.DecorateTabsValidate;
import com.mdd.admin.validate.decorate.DecorateTabsValidate;
import com.mdd.admin.vo.decorate.DecorateTabbarVo;
import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;

View File

@ -0,0 +1,34 @@
package com.mdd.admin.controller.finance;
import com.mdd.admin.service.IFinanceRechargerService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRechargeSearchValidate;
import com.mdd.admin.vo.finance.FinanceRechargeListVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/finance/recharger")
@Api("充值记录管理")
public class FinanceRechargerController {
@Resource
IFinanceRechargerService iFinanceRechargerService;
@GetMapping("/list")
@ApiOperation("记录列表")
public AjaxResult<Object> list(@Validated PageValidate pageValidate,
@Validated FinanceRechargeSearchValidate searchValidate) {
PageResult<FinanceRechargeListVo> list = iFinanceRechargerService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,34 @@
package com.mdd.admin.controller.finance;
import com.mdd.admin.service.IFinanceRefundService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRefundSearchValidate;
import com.mdd.admin.vo.finance.FinanceRefundListVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/finance/refund")
@Api("退款记录管理")
public class FinanceRefundController {
@Resource
IFinanceRefundService iFinanceRefundService;
@GetMapping("/list")
@ApiOperation("记录列表")
public AjaxResult<Object> list(@Validated PageValidate pageValidate,
@Validated FinanceRefundSearchValidate searchValidate) {
PageResult<FinanceRefundListVo> list = iFinanceRefundService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}

View File

@ -0,0 +1,34 @@
package com.mdd.admin.controller.finance;
import com.mdd.admin.service.IFinanceWalletService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceWalletSearchValidate;
import com.mdd.admin.vo.finance.FinanceWalletListVo;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.core.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@RequestMapping("api/finance/wallet")
@Api("余额明细管理")
public class FinanceWalletController {
@Resource
IFinanceWalletService iFinanceWalletService;
@GetMapping("/list")
@ApiOperation("记录列表")
public AjaxResult<Object> list(@Validated PageValidate pageValidate,
@Validated FinanceWalletSearchValidate searchValidate) {
PageResult<FinanceWalletListVo> list = iFinanceWalletService.list(pageValidate, searchValidate);
return AjaxResult.success(list);
}
}

View File

@ -1,8 +1,8 @@
package com.mdd.admin.service;
import com.alibaba.fastjson2.JSONArray;
import com.mdd.admin.validate.AlbumCateValidate;
import com.mdd.admin.validate.AlbumSearchValidate;
import com.mdd.admin.validate.album.AlbumCateValidate;
import com.mdd.admin.validate.album.AlbumSearchValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.album.AlbumVo;
import com.mdd.common.core.PageResult;

View File

@ -1,8 +1,8 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.ArtCateCreateValidate;
import com.mdd.admin.validate.ArtCateUpdateValidate;
import com.mdd.admin.validate.ArtCateSearchValidate;
import com.mdd.admin.validate.article.ArtCateCreateValidate;
import com.mdd.admin.validate.article.ArtCateUpdateValidate;
import com.mdd.admin.validate.article.ArtCateSearchValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleCateVo;
import com.mdd.common.core.PageResult;

View File

@ -1,8 +1,8 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.ArticleCreateValidate;
import com.mdd.admin.validate.ArticleSearchValidate;
import com.mdd.admin.validate.ArticleUpdateValidate;
import com.mdd.admin.validate.article.ArticleCreateValidate;
import com.mdd.admin.validate.article.ArticleSearchValidate;
import com.mdd.admin.validate.article.ArticleUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleDetailVo;
import com.mdd.admin.vo.article.ArticleListedVo;

View File

@ -1,7 +1,7 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.CrontabCreateValidate;
import com.mdd.admin.validate.CrontabUpdateValidate;
import com.mdd.admin.validate.crontab.CrontabCreateValidate;
import com.mdd.admin.validate.crontab.CrontabUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.CrontabDetailVo;
import com.mdd.admin.vo.CrontabListedVo;

View File

@ -1,6 +1,6 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.DecoratePageValidate;
import com.mdd.admin.validate.decorate.DecoratePageValidate;
import com.mdd.admin.vo.decorate.DecoratePageVo;
public interface IDecoratePageService {

View File

@ -1,6 +1,6 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.DecorateTabsValidate;
import com.mdd.admin.validate.decorate.DecorateTabsValidate;
import com.mdd.admin.vo.decorate.DecorateTabbarVo;
/**

View File

@ -0,0 +1,23 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRechargeSearchValidate;
import com.mdd.admin.vo.finance.FinanceRechargeListVo;
import com.mdd.common.core.PageResult;
/**
* 充值记录服务接口类
*/
public interface IFinanceRechargerService {
/**
* 充值记录列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<FinanceRechargeListVo>
*/
PageResult<FinanceRechargeListVo> list(PageValidate pageValidate, FinanceRechargeSearchValidate searchValidate);
}

View File

@ -0,0 +1,23 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRefundSearchValidate;
import com.mdd.admin.vo.finance.FinanceRefundListVo;
import com.mdd.common.core.PageResult;
/**
* 退款记录服务接口类
*/
public interface IFinanceRefundService {
/**
* 退款记录列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<FinanceRechargeListVo>
*/
PageResult<FinanceRefundListVo> list(PageValidate pageValidate, FinanceRefundSearchValidate searchValidate);
}

View File

@ -0,0 +1,15 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceWalletSearchValidate;
import com.mdd.admin.vo.finance.FinanceWalletListVo;
import com.mdd.common.core.PageResult;
/**
* 用户余额记录服务接口类
*/
public interface IFinanceWalletService {
PageResult<FinanceWalletListVo> list(PageValidate pageValidate, FinanceWalletSearchValidate searchValidate);
}

View File

@ -1,17 +1,16 @@
package com.mdd.admin.service;
import com.mdd.admin.validate.UsersSearchValidate;
import com.mdd.admin.validate.UsersUpdateValidate;
import com.mdd.admin.validate.user.UserSearchValidate;
import com.mdd.admin.validate.user.UserUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.user.UserWalletValidate;
import com.mdd.admin.vo.user.UserVo;
import com.mdd.common.core.PageResult;
import java.util.Map;
/**
* 用户服务接口类
*/
public interface IUsersService {
public interface IUserService {
/**
* 用户列表
@ -21,7 +20,7 @@ public interface IUsersService {
* @param searchValidate (搜索参数)
* @return PageResult<UserVo>
*/
PageResult<UserVo> list(PageValidate pageValidate, UsersSearchValidate searchValidate);
PageResult<UserVo> list(PageValidate pageValidate, UserSearchValidate searchValidate);
/**
* 用户详情
@ -38,6 +37,14 @@ public interface IUsersService {
* @author fzr
* @param updateValidate 参数
*/
void edit(UsersUpdateValidate updateValidate);
void edit(UserUpdateValidate updateValidate);
/**
* 余额调整
*
* @author fzr
* @param userWalletValidate 余额
*/
void adjustWallet(UserWalletValidate userWalletValidate);
}

View File

@ -6,8 +6,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mdd.admin.service.IAlbumsService;
import com.mdd.admin.validate.AlbumCateValidate;
import com.mdd.admin.validate.AlbumSearchValidate;
import com.mdd.admin.validate.album.AlbumCateValidate;
import com.mdd.admin.validate.album.AlbumSearchValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.album.AlbumCateVo;
import com.mdd.admin.vo.album.AlbumVo;

View File

@ -4,9 +4,9 @@ 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.admin.service.IArtCateService;
import com.mdd.admin.validate.ArtCateCreateValidate;
import com.mdd.admin.validate.ArtCateUpdateValidate;
import com.mdd.admin.validate.ArtCateSearchValidate;
import com.mdd.admin.validate.article.ArtCateCreateValidate;
import com.mdd.admin.validate.article.ArtCateUpdateValidate;
import com.mdd.admin.validate.article.ArtCateSearchValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleCateVo;
import com.mdd.common.core.PageResult;

View File

@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mdd.admin.service.IArticleService;
import com.mdd.admin.validate.ArticleCreateValidate;
import com.mdd.admin.validate.ArticleSearchValidate;
import com.mdd.admin.validate.ArticleUpdateValidate;
import com.mdd.admin.validate.article.ArticleCreateValidate;
import com.mdd.admin.validate.article.ArticleSearchValidate;
import com.mdd.admin.validate.article.ArticleUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.article.ArticleDetailVo;
import com.mdd.admin.vo.article.ArticleListedVo;

View File

@ -5,8 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mdd.admin.config.quartz.QuartzUtils;
import com.mdd.admin.service.ICrontabService;
import com.mdd.admin.validate.CrontabCreateValidate;
import com.mdd.admin.validate.CrontabUpdateValidate;
import com.mdd.admin.validate.crontab.CrontabCreateValidate;
import com.mdd.admin.validate.crontab.CrontabUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.vo.CrontabDetailVo;
import com.mdd.admin.vo.CrontabListedVo;

View File

@ -2,10 +2,10 @@ package com.mdd.admin.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.mdd.admin.service.IDecoratePageService;
import com.mdd.admin.validate.DecoratePageValidate;
import com.mdd.admin.validate.decorate.DecoratePageValidate;
import com.mdd.admin.vo.decorate.DecoratePageVo;
import com.mdd.common.entity.DecoratePage;
import com.mdd.common.mapper.DecoratePageMapper;
import com.mdd.common.entity.decorate.DecoratePage;
import com.mdd.common.mapper.decorate.DecoratePageMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

View File

@ -3,11 +3,11 @@ package com.mdd.admin.service.impl;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mdd.admin.service.IDecorateTabbarService;
import com.mdd.admin.validate.DecorateTabsValidate;
import com.mdd.admin.validate.decorate.DecorateTabsValidate;
import com.mdd.admin.vo.decorate.DecorateTabsListsVo;
import com.mdd.admin.vo.decorate.DecorateTabbarVo;
import com.mdd.common.entity.DecorateTabbar;
import com.mdd.common.mapper.DecorateTabbarMapper;
import com.mdd.common.entity.decorate.DecorateTabbar;
import com.mdd.common.mapper.decorate.DecorateTabbarMapper;
import com.mdd.common.util.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

View File

@ -0,0 +1,80 @@
package com.mdd.admin.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mdd.admin.service.IFinanceRechargerService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRechargeSearchValidate;
import com.mdd.admin.vo.finance.FinanceRechargeListVo;
import com.mdd.common.config.GlobalConfig;
import com.mdd.common.core.PageResult;
import com.mdd.common.entity.RechargeOrder;
import com.mdd.common.enums.PaymentEnum;
import com.mdd.common.mapper.RechargeOrderMapper;
import com.mdd.common.util.StringUtils;
import com.mdd.common.util.TimeUtils;
import com.mdd.common.util.UrlUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 充值记录服务实现类
*/
@Service
public class FinanceRechargerServiceImpl implements IFinanceRechargerService {
@Resource
RechargeOrderMapper rechargeOrderMapper;
/**
* 充值记录列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<FinanceRechargeListVo>
*/
@Override
public PageResult<FinanceRechargeListVo> list(PageValidate pageValidate, FinanceRechargeSearchValidate searchValidate) {
Integer pageNo = pageValidate.getPageNo();
Integer pageSize = pageValidate.getPageSize();
MPJQueryWrapper<RechargeOrder> mpjQueryWrapper = new MPJQueryWrapper<>();
mpjQueryWrapper.selectAll(RechargeOrder.class)
.select("U.id as user_id,U.sn as user_sn,U.nickname,U.avatar")
.leftJoin("?_user U ON U.id=t.user_id".replace("?_", GlobalConfig.tablePrefix))
.orderByDesc("id");
rechargeOrderMapper.setSearch(mpjQueryWrapper, searchValidate, new String[]{
"like:sn@t.order_sn:str",
"=:payWay@t.pay_way:int",
"=:payStatus@t.pay_status:int",
">=:payTime@pay_time:long"
});
if (StringUtils.isNotEmpty(searchValidate.getKeyword())) {
String keyword = searchValidate.getKeyword();
mpjQueryWrapper.nested(wq->wq
.like("U.nickname", keyword).or()
.like("U.sn", keyword).or()
.like("U.mobile", keyword));
}
IPage<FinanceRechargeListVo> iPage = rechargeOrderMapper.selectJoinPage(
new Page<>(pageNo, pageSize),
FinanceRechargeListVo.class,
mpjQueryWrapper);
for (FinanceRechargeListVo vo : iPage.getRecords()) {
vo.setCreateTime(TimeUtils.timestampToDate(vo.getCreateTime()));
vo.setPayTime(TimeUtils.timestampToDate(vo.getPayTime()));
vo.setAvatar(UrlUtils.toAbsoluteUrl(vo.getAvatar()));
vo.setPayWay(PaymentEnum.getMsgByCode(Integer.parseInt(vo.getPayWay())));
}
return PageResult.iPageHandle(iPage);
}
}

View File

@ -0,0 +1,29 @@
package com.mdd.admin.service.impl;
import com.mdd.admin.service.IFinanceRefundService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceRefundSearchValidate;
import com.mdd.admin.vo.finance.FinanceRefundListVo;
import com.mdd.common.core.PageResult;
import org.springframework.stereotype.Service;
/**
* 退款记录服务实现类
*/
@Service
public class FinanceRefundServiceImpl implements IFinanceRefundService {
/**
* 退款记录列表
*
* @author fzr
* @param pageValidate 分页参数
* @param searchValidate 搜索参数
* @return PageResult<FinanceRechargeListVo>
*/
@Override
public PageResult<FinanceRefundListVo> list(PageValidate pageValidate, FinanceRefundSearchValidate searchValidate) {
return null;
}
}

View File

@ -0,0 +1,69 @@
package com.mdd.admin.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mdd.admin.service.IFinanceWalletService;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.finance.FinanceWalletSearchValidate;
import com.mdd.admin.vo.finance.FinanceWalletListVo;
import com.mdd.common.config.GlobalConfig;
import com.mdd.common.core.PageResult;
import com.mdd.common.entity.log.LogMoney;
import com.mdd.common.enums.LogMoneyEnum;
import com.mdd.common.mapper.log.LogMoneyMapper;
import com.mdd.common.util.StringUtils;
import com.mdd.common.util.TimeUtils;
import com.mdd.common.util.UrlUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 用户余额记录服务实现类
*/
@Service
public class FinanceWalletServiceImpl implements IFinanceWalletService {
@Resource
LogMoneyMapper logMoneyMapper;
@Override
public PageResult<FinanceWalletListVo> list(PageValidate pageValidate, FinanceWalletSearchValidate searchValidate) {
Integer pageNo = pageValidate.getPageNo();
Integer pageSize = pageValidate.getPageSize();
MPJQueryWrapper<LogMoney> mpjQueryWrapper = new MPJQueryWrapper<>();
mpjQueryWrapper.selectAll(LogMoney.class)
.select("U.id as user_id,U.sn as user_sn,U.nickname,U.avatar")
.leftJoin("?_user U ON U.id=t.user_id".replace("?_", GlobalConfig.tablePrefix))
.orderByDesc("id");
logMoneyMapper.setSearch(mpjQueryWrapper, searchValidate, new String[]{
"=:type@change_type:int",
"datetime:startTime-endTime@create_time:long",
});
if (StringUtils.isNotEmpty(searchValidate.getKeyword())) {
String keyword = searchValidate.getKeyword();
mpjQueryWrapper.nested(wq->wq
.like("U.nickname", keyword).or()
.like("U.sn", keyword).or()
.like("U.mobile", keyword));
}
IPage<FinanceWalletListVo> iPage = logMoneyMapper.selectJoinPage(
new Page<>(pageNo, pageSize),
FinanceWalletListVo.class,
mpjQueryWrapper);
for (FinanceWalletListVo vo : iPage.getRecords()) {
vo.setCreateTime(TimeUtils.timestampToDate(vo.getCreateTime()));
vo.setChangeType(LogMoneyEnum.getMsgByCode(Integer.parseInt(vo.getChangeType())));
vo.setAvatar(UrlUtils.toAbsoluteUrl(vo.getAvatar()));
}
return PageResult.iPageHandle(iPage);
}
}

View File

@ -4,23 +4,28 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mdd.admin.service.IUsersService;
import com.mdd.admin.validate.UsersSearchValidate;
import com.mdd.admin.validate.UsersUpdateValidate;
import com.mdd.admin.service.IUserService;
import com.mdd.admin.validate.user.UserSearchValidate;
import com.mdd.admin.validate.user.UserUpdateValidate;
import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.user.UserWalletValidate;
import com.mdd.admin.vo.user.UserVo;
import com.mdd.common.core.PageResult;
import com.mdd.common.entity.user.User;
import com.mdd.common.enums.ClientEnum;
import com.mdd.common.enums.LogMoneyEnum;
import com.mdd.common.exception.OperateException;
import com.mdd.common.mapper.log.LogMoneyMapper;
import com.mdd.common.mapper.user.UserMapper;
import com.mdd.common.util.StringUtils;
import com.mdd.common.util.TimeUtils;
import com.mdd.common.util.UrlUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Pattern;
@ -29,11 +34,14 @@ import java.util.regex.Pattern;
* 用户服务实现类
*/
@Service
public class UsersServiceImpl implements IUsersService {
public class UserServiceImpl implements IUserService {
@Resource
UserMapper userMapper;
@Resource
LogMoneyMapper logMoneyMapper;
/**
* 用户列表
*
@ -43,7 +51,7 @@ public class UsersServiceImpl implements IUsersService {
* @return PageResult<UserVo>
*/
@Override
public PageResult<UserVo> list(PageValidate pageValidate, UsersSearchValidate searchValidate) {
public PageResult<UserVo> list(PageValidate pageValidate, UserSearchValidate searchValidate) {
Integer pageNo = pageValidate.getPageNo();
Integer pageSize = pageValidate.getPageSize();
@ -141,7 +149,7 @@ public class UsersServiceImpl implements IUsersService {
* @param updateValidate 参数
*/
@Override
public void edit(UsersUpdateValidate updateValidate) {
public void edit(UserUpdateValidate updateValidate) {
Integer id = updateValidate.getId();
String field = updateValidate.getField();
String value = updateValidate.getValue();
@ -176,7 +184,7 @@ public class UsersServiceImpl implements IUsersService {
user.setSex(Integer.parseInt(value));
break;
case "mobile":
if (!Pattern.matches("^[1][3,4,5,6,7,8,9][0-9]{9}$", value)) {
if (!Pattern.matches("^[1][3-9][0-9]{9}$", value)) {
throw new OperateException("手机号格式不正确!");
}
user.setMobile(value);
@ -189,4 +197,42 @@ public class UsersServiceImpl implements IUsersService {
userMapper.updateById(user);
}
/**
* 余额调整
*
* @author cjh
* @param userWalletValidate 余额
*/
@Override
@Transactional
public void adjustWallet(UserWalletValidate userWalletValidate) {
User user = userMapper.selectOne(new QueryWrapper<User>()
.eq("id", userWalletValidate.getUserId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(user,"用户不存在!");
BigDecimal userMoney = user.getMoney();
BigDecimal amount = userWalletValidate.getAmount();
BigDecimal surplusAmount;
int changeType;
if(userWalletValidate.getAction().equals(0) ){
surplusAmount = userMoney.subtract(amount);
if(surplusAmount.compareTo(BigDecimal.ZERO) < 0){
throw new OperateException("用户余额仅剩:"+ userMoney);
}
changeType = LogMoneyEnum.UM_DEC_ADMIN.getCode();
logMoneyMapper.dec(user.getId(), changeType, amount, 0, "", userWalletValidate.getRemark(), null);
}else{
surplusAmount = userMoney.add(amount);
changeType = LogMoneyEnum.UM_INC_ADMIN.getCode();
logMoneyMapper.add(user.getId(), changeType, amount, 0, "", userWalletValidate.getRemark(), null);
}
user.setMoney(surplusAmount);
userMapper.updateById(user);
}
}

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.album;
import com.mdd.common.validator.annotation.IntegerContains;
import io.swagger.annotations.ApiModel;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.album;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.album;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.ApiModel;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.album;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.article;
import com.mdd.common.validator.annotation.IntegerContains;
import io.swagger.annotations.ApiModel;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.article;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.article;
import com.mdd.common.validator.annotation.IDMust;
import com.mdd.common.validator.annotation.IntegerContains;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.article;
import com.mdd.common.validator.annotation.IDMust;
import com.mdd.common.validator.annotation.IntegerContains;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.article;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.article;
import com.mdd.common.validator.annotation.IDMust;
import com.mdd.common.validator.annotation.IntegerContains;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.crontab;
import com.mdd.common.validator.annotation.IntegerContains;
import io.swagger.annotations.ApiModel;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.crontab;
import com.mdd.common.validator.annotation.IDMust;
import com.mdd.common.validator.annotation.IntegerContains;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.decorate;
import com.mdd.common.validator.annotation.IDMust;
import io.swagger.annotations.ApiModel;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.decorate;
import com.mdd.admin.vo.decorate.DecorateTabsListsVo;
import com.mdd.admin.vo.decorate.DecorateTabsStyleVo;

View File

@ -0,0 +1,30 @@
package com.mdd.admin.validate.finance;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("充值订单搜索参数")
public class FinanceRechargeSearchValidate implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "订单编号")
private String sn;
@ApiModelProperty(value = "关键词")
private String keyword;
@ApiModelProperty(value = "支付方式")
private Integer payWay;
@ApiModelProperty(value = "支付状态")
private Integer payStatus;
@ApiModelProperty(value = "支付时间")
private Integer payTime;
}

View File

@ -0,0 +1,14 @@
package com.mdd.admin.validate.finance;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("退款记录搜索参数")
public class FinanceRefundSearchValidate implements Serializable {
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,27 @@
package com.mdd.admin.validate.finance;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("余额记录搜索参数")
public class FinanceWalletSearchValidate implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "关键词")
private String keyword;
@ApiModelProperty(value = "类型")
private Integer type;
@ApiModelProperty(value = "创建时间")
private Integer startTime;
@ApiModelProperty(value = "结束时间")
private Integer endTime;
}

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -8,7 +8,7 @@ import java.io.Serializable;
@Data
@ApiModel("用户搜索参数")
public class UsersSearchValidate implements Serializable {
public class UserSearchValidate implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -1,4 +1,4 @@
package com.mdd.admin.validate;
package com.mdd.admin.validate.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ -8,7 +8,7 @@ import java.io.Serializable;
@Data
@ApiModel("用户更新参数")
public class UsersUpdateValidate implements Serializable {
public class UserUpdateValidate implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -0,0 +1,29 @@
package com.mdd.admin.validate.user;
import com.mdd.common.validator.annotation.IntegerContains;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class UserWalletValidate implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "缺少用户id参数")
@Min(value = 0, message = "用户id必须为数字")
private Integer userId;
@NotNull(message = "请输入变动类型")
@IntegerContains(values = {0,1}, message = "变动类型错误")
private Integer action;
@NotNull(message = "请输入变动金额")
private BigDecimal amount;
private String remark;
}

View File

@ -0,0 +1,46 @@
package com.mdd.admin.vo.finance;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@ApiModel("充值记录列表Vo")
public class FinanceRechargeListVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("ID")
private Integer id;
@ApiModelProperty("用户昵称")
private String nickname;
@ApiModelProperty("用户头像")
private String avatar;
@ApiModelProperty("用户编号")
private String userSn;
@ApiModelProperty("订单编号")
private String orderSn;
@ApiModelProperty("支付方式: [2=微信支付, 3=支付宝支付]")
private String payWay;
@ApiModelProperty("支付状态: [0=待支付, 1=已支付]")
private Integer payStatus;
@ApiModelProperty("支付金额")
private BigDecimal orderAmount;
@ApiModelProperty("支付时间")
private String payTime;
@ApiModelProperty("创建时间")
private String createTime;
}

View File

@ -0,0 +1,14 @@
package com.mdd.admin.vo.finance;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel("退款记录列表Vo")
public class FinanceRefundListVo implements Serializable {
private static final long serialVersionUID = 1L;
}

View File

@ -0,0 +1,43 @@
package com.mdd.admin.vo.finance;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@ApiModel("余额记录列表Vo")
public class FinanceWalletListVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "记录ID")
private Integer id;
@ApiModelProperty(value = "用户编号")
private String userSn;
@ApiModelProperty(value = "u屏幕估计头皮屑")
private String avatar;
@ApiModelProperty(value = "用户昵称")
private String nickname;
@ApiModelProperty(value = "变动金额")
private BigDecimal changeAmount;
@ApiModelProperty(value = "剩余金额")
private BigDecimal leftAmount;
@ApiModelProperty(value = "变动类型")
private String changeType;
@ApiModelProperty(value = "来源单号")
private String sourceSn;
@ApiModelProperty(value = "记录时间")
private String createTime;
}

View File

@ -1,4 +1,4 @@
package com.mdd.common.entity;
package com.mdd.common.entity.decorate;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

View File

@ -1,4 +1,4 @@
package com.mdd.common.entity;
package com.mdd.common.entity.decorate;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

View File

@ -1,4 +1,4 @@
package com.mdd.common.entity;
package com.mdd.common.entity.log;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

View File

@ -42,4 +42,20 @@ public enum PaymentEnum {
return this.msg;
}
/**
* 根据编码获取Msg
*
* @author fzr
* @param code 类型
* @return String
*/
public static String getMsgByCode(Integer code){
for(PaymentEnum enumItem: PaymentEnum.values()) {
if (enumItem.getCode() == code) {
return enumItem.getMsg();
}
}
return null;
}
}

View File

@ -1,7 +1,7 @@
package com.mdd.common.mapper;
package com.mdd.common.mapper.decorate;
import com.mdd.common.core.basics.IBaseMapper;
import com.mdd.common.entity.DecoratePage;
import com.mdd.common.entity.decorate.DecoratePage;
import org.apache.ibatis.annotations.Mapper;
/**

View File

@ -1,7 +1,7 @@
package com.mdd.common.mapper;
package com.mdd.common.mapper.decorate;
import com.mdd.common.core.basics.IBaseMapper;
import com.mdd.common.entity.DecorateTabbar;
import com.mdd.common.entity.decorate.DecorateTabbar;
import org.apache.ibatis.annotations.Mapper;
/**

View File

@ -1,8 +1,8 @@
package com.mdd.common.mapper;
package com.mdd.common.mapper.log;
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.log.LogMoney;
import com.mdd.common.entity.user.User;
import com.mdd.common.mapper.user.UserMapper;
import com.mdd.common.util.SpringUtils;

View File

@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.mdd.common.config.GlobalConfig;
import com.mdd.common.entity.article.Article;
import com.mdd.common.entity.DecoratePage;
import com.mdd.common.entity.DecorateTabbar;
import com.mdd.common.entity.decorate.DecoratePage;
import com.mdd.common.entity.decorate.DecorateTabbar;
import com.mdd.common.entity.setting.HotSearch;
import com.mdd.common.mapper.article.ArticleMapper;
import com.mdd.common.mapper.DecoratePageMapper;
import com.mdd.common.mapper.DecorateTabbarMapper;
import com.mdd.common.mapper.decorate.DecoratePageMapper;
import com.mdd.common.mapper.decorate.DecorateTabbarMapper;
import com.mdd.common.mapper.setting.HotSearchMapper;
import com.mdd.common.util.*;
import com.mdd.front.service.IIndexService;

View File

@ -4,17 +4,13 @@ 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.core.PageResult;
import com.mdd.common.entity.LogMoney;
import com.mdd.common.entity.article.Article;
import com.mdd.common.entity.log.LogMoney;
import com.mdd.common.enums.LogMoneyEnum;
import com.mdd.common.mapper.LogMoneyMapper;
import com.mdd.common.mapper.log.LogMoneyMapper;
import com.mdd.common.util.TimeUtils;
import com.mdd.common.util.UrlUtils;
import com.mdd.front.service.ILogsService;
import com.mdd.front.validate.common.PageValidate;
import com.mdd.front.vo.LogRecordDataVo;
import com.mdd.front.vo.article.ArticleListedVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

View File

@ -1,21 +1,15 @@
package com.mdd.front.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderV3Result;
import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum;
import com.github.binarywang.wxpay.service.WxPayService;
import com.mdd.common.core.AjaxResult;
import com.mdd.common.entity.RechargeOrder;
import com.mdd.common.entity.setting.DevPayConfig;
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.exception.PaymentException;
import com.mdd.common.mapper.LogMoneyMapper;
import com.mdd.common.mapper.log.LogMoneyMapper;
import com.mdd.common.mapper.RechargeOrderMapper;
import com.mdd.common.mapper.setting.DevPayConfigMapper;
import com.mdd.common.mapper.setting.DevPayWayMapper;
@ -32,8 +26,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

View File

@ -2,12 +2,12 @@ package com.mdd.front.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mdd.common.config.GlobalConfig;
import com.mdd.common.entity.DecoratePage;
import com.mdd.common.entity.decorate.DecoratePage;
import com.mdd.common.entity.article.Article;
import com.mdd.common.entity.article.ArticleCategory;
import com.mdd.common.entity.article.ArticleCollect;
import com.mdd.common.exception.OperateException;
import com.mdd.common.mapper.DecoratePageMapper;
import com.mdd.common.mapper.decorate.DecoratePageMapper;
import com.mdd.common.mapper.article.ArticleCategoryMapper;
import com.mdd.common.mapper.article.ArticleCollectMapper;
import com.mdd.common.mapper.article.ArticleMapper;

View File

@ -50,7 +50,7 @@
"quickapp" : {},
/* */
"mp-weixin" : {
"appid" : "wx65b3824de0b3d3b0",
"appid" : "wx386a75e518b38935",
"setting" : {
"urlCheck" : false
},