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

View File

@ -12,6 +12,7 @@ import io.lettuce.core.RedisCommandTimeoutException;
import io.lettuce.core.RedisException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.dao.QueryTimeoutException;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.validation.BindException;
import org.springframework.web.HttpRequestMethodNotSupportedException;
@ -48,11 +49,11 @@ public class GlobalExceptionHandler {
/**
* redis
*/
@ExceptionHandler(RedisException.class)
public AjaxResult commandTimeoutException(RedisException e, HttpServletRequest request) {
@ExceptionHandler(QueryTimeoutException.class)
public AjaxResult commandTimeoutException(QueryTimeoutException e, HttpServletRequest request) {
String requestURI = request.getRequestURI();
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.dao.QueryTimeoutException;
import org.springframework.data.redis.RedisSystemException;
import org.springframework.stereotype.Component;
import com.mcwl.common.constant.CacheConstants;
import com.mcwl.common.constant.Constants;
@ -78,14 +80,11 @@ public class TokenService
LoginUser user = redisCache.getCacheObject(userKey);
return user;
}
catch (RedisException e) {
catch (Exception e)
{
if (e.getCause() instanceof io.lettuce.core.RedisCommandTimeoutException) {
throw new RedisCommandTimeoutException("连接超时");
}
throw e;
}
catch (Exception e)
{
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;
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;
public interface ConsumeService extends IService<Consume> {
void saveConsume(Consume consume);
TableDataInfo getWalletRecord(PageDomain pageDomain);
}

View File

@ -1,9 +1,17 @@
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.mcwl.common.constant.HttpStatus;
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.Consume;
import com.mcwl.myInvitation.domain.vo.ConsumeVo;
import com.mcwl.myInvitation.mapper.ConsumeMapper;
import com.mcwl.myInvitation.service.CommissionService;
import com.mcwl.myInvitation.service.ConsumeService;
@ -12,6 +20,9 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
@RequiredArgsConstructor
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;
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 com.mcwl.common.interfaces.MaxMoney;
import com.mcwl.common.interfaces.MinMoney;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
*
*/
@Data
@ApiModel(value = "金币充值记录")
public class OrderTradeVo {
public class WalletRechargeRecordVo {
private Long id;
/**

View File

@ -1,6 +1,8 @@
package com.mcwl.pay.service;
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.pay.domain.OrderTrade;
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 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;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
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.mcwl.common.constant.HttpStatus;
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.domain.IdsParam;
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.pay.domain.OrderTrade;
import com.mcwl.pay.domain.enums.CommissionRationEnum;
import com.mcwl.pay.domain.vo.WalletRechargeRecordVo;
import com.mcwl.pay.mapper.OrderTradeMapper;
import com.mcwl.pay.service.OrderTradeService;
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.WorkFlowService;
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalTime;
import java.time.YearMonth;
import java.time.temporal.TemporalAdjusters;
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
public List<OrderTrade> selectMallProductList(OrderTrade orderTrade) {
@ -402,9 +424,10 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
/**
*
*
* @param productUserId id
* @param sysUser
* @param price
* @param sysUser
* @param price
* @return Map<String, Double> (price) (amount)
*/
private Map<String, Double> getStringDoubleMap(Long productUserId, SysUser sysUser, Double price) {