feat(myInvitation): 金币消费记录查询

master
yang 2025-03-06 10:55:07 +08:00
parent 2f4d335c33
commit c69d7e032f
11 changed files with 198 additions and 77 deletions

View File

@ -1,30 +0,0 @@
package com.mcwl.web.controller.myInvitation;
import cn.hutool.core.bean.BeanUtil;
import com.mcwl.myInvitation.domain.Consume;
import com.mcwl.myInvitation.service.ConsumeService;
import com.mcwl.myInvitation.domain.dto.ConsumeDto;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
*
*/
@RestController()
@RequiredArgsConstructor
@RequestMapping("/consume")
public class ConsumeController {
private final ConsumeService consumeService;
@PostMapping
public void consume(@RequestBody ConsumeDto consumeDto) {
Consume consume = new Consume();
BeanUtil.copyProperties(consumeDto, consume);
consumeService.saveConsume(consume);
}
}

View File

@ -1,7 +1,6 @@
package com.mcwl.web.controller.personalCenter; package com.mcwl.web.controller.personalCenter;
import cn.hutool.core.bean.BeanUtil;
import com.mcwl.common.core.domain.R; import com.mcwl.common.core.domain.R;
import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.core.page.PageDomain; import com.mcwl.common.core.page.PageDomain;
@ -9,8 +8,7 @@ import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.utils.SecurityUtils; import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.memberCenter.domain.Member; import com.mcwl.memberCenter.domain.Member;
import com.mcwl.memberCenter.service.MemberService; import com.mcwl.memberCenter.service.MemberService;
import com.mcwl.pay.domain.OrderTrade; import com.mcwl.myInvitation.service.ConsumeService;
import com.mcwl.pay.domain.vo.OrderTradeVo;
import com.mcwl.pay.service.OrderTradeService; import com.mcwl.pay.service.OrderTradeService;
import com.mcwl.resource.domain.dto.ModelImagePageRes; import com.mcwl.resource.domain.dto.ModelImagePageRes;
import com.mcwl.resource.service.*; import com.mcwl.resource.service.*;
@ -18,11 +16,10 @@ import com.mcwl.system.service.ISysUserService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@ -50,6 +47,8 @@ public class PersonalCenterController {
private final OrderTradeService orderTradeService; private final OrderTradeService orderTradeService;
private final ConsumeService consumeService;
/** /**
* - * -
@ -86,7 +85,7 @@ public class PersonalCenterController {
*/ */
@ApiOperation(value = "我的点赞-模型列表") @ApiOperation(value = "我的点赞-模型列表")
@PostMapping("/likeModel") @PostMapping("/likeModel")
public TableDataInfo likeModel(@RequestBody PageDomain pageDomain) { public TableDataInfo likeModel(@Valid @RequestBody PageDomain pageDomain) {
return modelLikeService.listByPage(pageDomain); return modelLikeService.listByPage(pageDomain);
} }
@ -95,7 +94,7 @@ public class PersonalCenterController {
*/ */
@ApiOperation(value = "我的点赞-工作流列表") @ApiOperation(value = "我的点赞-工作流列表")
@PostMapping("/likeWorkFlow") @PostMapping("/likeWorkFlow")
public TableDataInfo likeWorkFlow(@RequestBody PageDomain pageDomain) { public TableDataInfo likeWorkFlow(@Valid @RequestBody PageDomain pageDomain) {
return workFlowLikeService.listByPage(pageDomain); return workFlowLikeService.listByPage(pageDomain);
} }
@ -104,7 +103,7 @@ public class PersonalCenterController {
*/ */
@ApiOperation(value = "我的点赞-图片列表") @ApiOperation(value = "我的点赞-图片列表")
@PostMapping("/likeImage") @PostMapping("/likeImage")
public TableDataInfo likeImage(@RequestBody PageDomain pageDomain) { public TableDataInfo likeImage(@Valid @RequestBody PageDomain pageDomain) {
return modelImageLikeService.listByPage(pageDomain); return modelImageLikeService.listByPage(pageDomain);
} }
@ -141,27 +140,18 @@ public class PersonalCenterController {
* *
*/ */
@ApiOperation(value = "获取金币消费记录") @ApiOperation(value = "获取金币消费记录")
@GetMapping("/getWallet") @PostMapping("/getWalletRecord")
public TableDataInfo getWallet() { public TableDataInfo getWalletRecord(@Valid @RequestBody PageDomain pageDomain) {
return consumeService.getWalletRecord(pageDomain);
Long userId = SecurityUtils.getUserId();
// return memberService.getRechargePoints(userId);
return null;
} }
/** /**
* *
*/ */
@ApiOperation(value = "获取金币充值记录") @ApiOperation(value = "获取金币充值记录")
@GetMapping("/getRechargePoints") @PostMapping("/getRecord")
public R<List<OrderTradeVo>> getRechargePoints() { public TableDataInfo getRecord(@Valid @RequestBody PageDomain pageDomain) {
return orderTradeService.getRecord(pageDomain, "金币充值");
Long userId = SecurityUtils.getUserId();
List<OrderTrade> orderTradeList = orderTradeService.lambdaQuery()
.eq(OrderTrade::getUserId, userId)
.list();
return R.ok(BeanUtil.copyToList(orderTradeList, OrderTradeVo.class));
} }
} }

View File

@ -12,6 +12,7 @@ import io.lettuce.core.RedisCommandTimeoutException;
import io.lettuce.core.RedisException; import io.lettuce.core.RedisException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.dao.QueryTimeoutException;
import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.AccessDeniedException;
import org.springframework.validation.BindException; import org.springframework.validation.BindException;
import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.HttpRequestMethodNotSupportedException;
@ -48,11 +49,11 @@ public class GlobalExceptionHandler {
/** /**
* redis * redis
*/ */
@ExceptionHandler(RedisException.class) @ExceptionHandler(QueryTimeoutException.class)
public AjaxResult commandTimeoutException(RedisException e, HttpServletRequest request) { public AjaxResult commandTimeoutException(QueryTimeoutException e, HttpServletRequest request) {
String requestURI = request.getRequestURI(); String requestURI = request.getRequestURI();
log.error("redis异常{},{}", requestURI, e.getMessage()); log.error("redis异常{},{}", requestURI, e.getMessage());
return AjaxResult.error(HttpStatus.ERROR, e.getMessage()); return AjaxResult.error(HttpStatus.ERROR, "超时");
} }

View File

@ -12,6 +12,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.dao.QueryTimeoutException;
import org.springframework.data.redis.RedisSystemException;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.mcwl.common.constant.CacheConstants; import com.mcwl.common.constant.CacheConstants;
import com.mcwl.common.constant.Constants; import com.mcwl.common.constant.Constants;
@ -78,14 +80,11 @@ public class TokenService
LoginUser user = redisCache.getCacheObject(userKey); LoginUser user = redisCache.getCacheObject(userKey);
return user; return user;
} }
catch (RedisException e) { catch (Exception e)
{
if (e.getCause() instanceof io.lettuce.core.RedisCommandTimeoutException) { if (e.getCause() instanceof io.lettuce.core.RedisCommandTimeoutException) {
throw new RedisCommandTimeoutException("连接超时"); throw new RedisCommandTimeoutException("连接超时");
} }
throw e;
}
catch (Exception e)
{
log.error("获取用户信息异常'{}'", e.getMessage()); log.error("获取用户信息异常'{}'", e.getMessage());
} }
} }

View File

@ -0,0 +1,38 @@
package com.mcwl.myInvitation.domain.vo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mcwl.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
*
*/
@Data
@ApiModel(value = "金币消费记录")
public class ConsumeVo {
private Long id;
// 用户id
@ApiModelProperty(value = "用户id")
private Long userId;
// 消费金额
@ApiModelProperty(value = "消费金额")
private Double amount;
// 商品名称
@ApiModelProperty(value = "商品名称")
private String productName;
// 消费时间
@ApiModelProperty(value = "消费时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date consumeDate;
}

View File

@ -1,9 +1,13 @@
package com.mcwl.myInvitation.service; package com.mcwl.myInvitation.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.myInvitation.domain.Consume; import com.mcwl.myInvitation.domain.Consume;
public interface ConsumeService extends IService<Consume> { public interface ConsumeService extends IService<Consume> {
void saveConsume(Consume consume); void saveConsume(Consume consume);
TableDataInfo getWalletRecord(PageDomain pageDomain);
} }

View File

@ -1,9 +1,17 @@
package com.mcwl.myInvitation.service.impl; package com.mcwl.myInvitation.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.common.constant.HttpStatus;
import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.utils.SecurityUtils;
import com.mcwl.myInvitation.domain.Commission; import com.mcwl.myInvitation.domain.Commission;
import com.mcwl.myInvitation.domain.Consume; import com.mcwl.myInvitation.domain.Consume;
import com.mcwl.myInvitation.domain.vo.ConsumeVo;
import com.mcwl.myInvitation.mapper.ConsumeMapper; import com.mcwl.myInvitation.mapper.ConsumeMapper;
import com.mcwl.myInvitation.service.CommissionService; import com.mcwl.myInvitation.service.CommissionService;
import com.mcwl.myInvitation.service.ConsumeService; import com.mcwl.myInvitation.service.ConsumeService;
@ -12,6 +20,9 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class ConsumeServiceImpl extends ServiceImpl<ConsumeMapper, Consume> implements ConsumeService { public class ConsumeServiceImpl extends ServiceImpl<ConsumeMapper, Consume> implements ConsumeService {
@ -44,4 +55,44 @@ public class ConsumeServiceImpl extends ServiceImpl<ConsumeMapper, Consume> impl
} }
@Override
public TableDataInfo getWalletRecord(PageDomain pageDomain) {
Page<Consume> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
Long userId = SecurityUtils.getUserId();
LambdaQueryWrapper<Consume> lqw = new LambdaQueryWrapper<>();
lqw.eq(Consume::getUserId, userId);
consumeMapper.selectPage(page, lqw);
List<Consume> consumeList = page.getRecords();
List<ConsumeVo> consumeVoList = new ArrayList<>();
for (Consume consume : consumeList) {
ConsumeVo consumeVo = new ConsumeVo();
BeanUtil.copyProperties(consume, consumeVo);
switch (consume.getType()) {
case 0:
consumeVo.setProductName("模型");
break;
case 1:
consumeVo.setProductName("工作流");
break;
case 2:
consumeVo.setProductName("图片");
break;
}
consumeVoList.add(consumeVo);
}
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(consumeVoList);
rspData.setTotal(page.getTotal());
return rspData;
}
} }

View File

@ -0,0 +1,39 @@
package com.mcwl.pay.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
*
*/
@Data
@ApiModel(value = "金币消费记录")
public class WalletConsumeRecordVo {
private Long id;
/**
*
*/
@ApiModelProperty(value = "商品名称")
private String productName;
/**
*
*/
@ApiModelProperty(value = "消费金额")
private Double paymentAmount;
/**
*
*/
@ApiModelProperty(value = "消费时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date orderTime;
}

View File

@ -1,24 +1,19 @@
package com.mcwl.pay.domain.vo; package com.mcwl.pay.domain.vo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.mcwl.common.core.domain.BaseEntity;
import com.mcwl.common.interfaces.MaxMoney;
import com.mcwl.common.interfaces.MinMoney;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date; import java.util.Date;
/**
*
*/
@Data @Data
@ApiModel(value = "金币充值记录") @ApiModel(value = "金币充值记录")
public class OrderTradeVo { public class WalletRechargeRecordVo {
private Long id; private Long id;
/** /**

View File

@ -1,6 +1,8 @@
package com.mcwl.pay.service; package com.mcwl.pay.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.domain.IdsParam; import com.mcwl.common.domain.IdsParam;
import com.mcwl.pay.domain.OrderTrade; import com.mcwl.pay.domain.OrderTrade;
import com.mcwl.resource.domain.dto.ProductRes; import com.mcwl.resource.domain.dto.ProductRes;
@ -29,4 +31,13 @@ public interface OrderTradeService extends IService<OrderTrade> {
void orderHandler(OrderTrade orderTrade, String suffix, Map<String, String> params); void orderHandler(OrderTrade orderTrade, String suffix, Map<String, String> params);
void productHandler(ProductRes productRes); void productHandler(ProductRes productRes);
/**
*
* @param pageDomain
* @param productName
* @return TableDataInfo
*/
TableDataInfo getRecord(PageDomain pageDomain, String productName);
} }

View File

@ -1,9 +1,14 @@
package com.mcwl.pay.service.impl; package com.mcwl.pay.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mcwl.common.constant.HttpStatus;
import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.core.domain.entity.SysUser;
import com.mcwl.common.core.page.PageDomain;
import com.mcwl.common.core.page.TableDataInfo;
import com.mcwl.common.core.redis.RedisCache; import com.mcwl.common.core.redis.RedisCache;
import com.mcwl.common.domain.IdsParam; import com.mcwl.common.domain.IdsParam;
import com.mcwl.common.utils.DateUtils; import com.mcwl.common.utils.DateUtils;
@ -23,6 +28,7 @@ import com.mcwl.myInvitation.service.CommissionService;
import com.mcwl.myInvitation.service.ConsumeService; import com.mcwl.myInvitation.service.ConsumeService;
import com.mcwl.pay.domain.OrderTrade; import com.mcwl.pay.domain.OrderTrade;
import com.mcwl.pay.domain.enums.CommissionRationEnum; import com.mcwl.pay.domain.enums.CommissionRationEnum;
import com.mcwl.pay.domain.vo.WalletRechargeRecordVo;
import com.mcwl.pay.mapper.OrderTradeMapper; import com.mcwl.pay.mapper.OrderTradeMapper;
import com.mcwl.pay.service.OrderTradeService; import com.mcwl.pay.service.OrderTradeService;
import com.mcwl.resource.domain.ModelImage; import com.mcwl.resource.domain.ModelImage;
@ -34,17 +40,12 @@ import com.mcwl.resource.service.ModelImageService;
import com.mcwl.resource.service.ModelService; import com.mcwl.resource.service.ModelService;
import com.mcwl.resource.service.WorkFlowService; import com.mcwl.resource.service.WorkFlowService;
import com.mcwl.system.service.ISysUserService; import com.mcwl.system.service.ISysUserService;
import com.mcwl.system.service.impl.SysUserServiceImpl;
import org.joda.time.LocalDateTime;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalTime;
import java.time.YearMonth;
import java.time.temporal.TemporalAdjusters;
import java.util.*; import java.util.*;
/** /**
@ -149,6 +150,27 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
} }
@Override
public TableDataInfo getRecord(PageDomain pageDomain, String productName) {
Page<OrderTrade> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
Long userId = SecurityUtils.getUserId();
LambdaQueryWrapper<OrderTrade> lqw = new LambdaQueryWrapper<>();
lqw.eq(OrderTrade::getUserId, userId)
.eq(OrderTrade::getProductName, productName)
.eq(OrderTrade::getPayStatus, 2);
orderTradeService.page(page, lqw);
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(HttpStatus.SUCCESS);
rspData.setMsg("查询成功");
rspData.setRows(BeanUtil.copyToList(page.getRecords(), WalletRechargeRecordVo.class));
rspData.setTotal(page.getTotal());
return rspData;
}
@Override @Override
public List<OrderTrade> selectMallProductList(OrderTrade orderTrade) { public List<OrderTrade> selectMallProductList(OrderTrade orderTrade) {
@ -402,6 +424,7 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
/** /**
* *
*
* @param productUserId id * @param productUserId id
* @param sysUser * @param sysUser
* @param price * @param price