From c69d7e032f0d9369866dd5bb34ebb3266a15753a Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Thu, 6 Mar 2025 10:55:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(myInvitation):=20=E9=87=91=E5=B8=81?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=AE=B0=E5=BD=95=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../myInvitation/ConsumeController.java | 30 ----------- .../PersonalCenterController.java | 36 +++++-------- .../web/exception/GlobalExceptionHandler.java | 7 +-- .../framework/web/service/TokenService.java | 9 ++-- .../myInvitation/domain/vo/ConsumeVo.java | 38 ++++++++++++++ .../myInvitation/service/ConsumeService.java | 4 ++ .../service/impl/ConsumeServiceImpl.java | 51 +++++++++++++++++++ .../pay/domain/vo/WalletConsumeRecordVo.java | 39 ++++++++++++++ ...adeVo.java => WalletRechargeRecordVo.java} | 13 ++--- .../mcwl/pay/service/OrderTradeService.java | 11 ++++ .../service/impl/OrderTradeServiceImpl.java | 37 +++++++++++--- 11 files changed, 198 insertions(+), 77 deletions(-) delete mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/ConsumeController.java create mode 100644 mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/vo/ConsumeVo.java create mode 100644 mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/WalletConsumeRecordVo.java rename mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/{OrderTradeVo.java => WalletRechargeRecordVo.java} (70%) diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/ConsumeController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/ConsumeController.java deleted file mode 100644 index 97cd6a5..0000000 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/ConsumeController.java +++ /dev/null @@ -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); - } - - -} diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/personalCenter/PersonalCenterController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/personalCenter/PersonalCenterController.java index b014782..79a9ced 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/personalCenter/PersonalCenterController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/personalCenter/PersonalCenterController.java @@ -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> getRechargePoints() { - - Long userId = SecurityUtils.getUserId(); - List 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, "金币充值"); } } diff --git a/mcwl-framework/src/main/java/com/mcwl/framework/web/exception/GlobalExceptionHandler.java b/mcwl-framework/src/main/java/com/mcwl/framework/web/exception/GlobalExceptionHandler.java index 1af5137..10d0ddf 100644 --- a/mcwl-framework/src/main/java/com/mcwl/framework/web/exception/GlobalExceptionHandler.java +++ b/mcwl-framework/src/main/java/com/mcwl/framework/web/exception/GlobalExceptionHandler.java @@ -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, "超时"); } diff --git a/mcwl-framework/src/main/java/com/mcwl/framework/web/service/TokenService.java b/mcwl-framework/src/main/java/com/mcwl/framework/web/service/TokenService.java index d8d9064..9592247 100644 --- a/mcwl-framework/src/main/java/com/mcwl/framework/web/service/TokenService.java +++ b/mcwl-framework/src/main/java/com/mcwl/framework/web/service/TokenService.java @@ -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()); } } diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/vo/ConsumeVo.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/vo/ConsumeVo.java new file mode 100644 index 0000000..64da08b --- /dev/null +++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/vo/ConsumeVo.java @@ -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; +} diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/ConsumeService.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/ConsumeService.java index 565c2be..ecce083 100644 --- a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/ConsumeService.java +++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/ConsumeService.java @@ -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 { void saveConsume(Consume consume); + + TableDataInfo getWalletRecord(PageDomain pageDomain); } diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/ConsumeServiceImpl.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/ConsumeServiceImpl.java index 1d79f5e..53c2c8b 100644 --- a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/ConsumeServiceImpl.java +++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/ConsumeServiceImpl.java @@ -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 implements ConsumeService { @@ -44,4 +55,44 @@ public class ConsumeServiceImpl extends ServiceImpl impl } + + @Override + public TableDataInfo getWalletRecord(PageDomain pageDomain) { + Page page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize()); + + Long userId = SecurityUtils.getUserId(); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(Consume::getUserId, userId); + + consumeMapper.selectPage(page, lqw); + + List consumeList = page.getRecords(); + List 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; + } } diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/WalletConsumeRecordVo.java b/mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/WalletConsumeRecordVo.java new file mode 100644 index 0000000..e8f637d --- /dev/null +++ b/mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/WalletConsumeRecordVo.java @@ -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; +} diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/OrderTradeVo.java b/mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/WalletRechargeRecordVo.java similarity index 70% rename from mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/OrderTradeVo.java rename to mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/WalletRechargeRecordVo.java index c79278e..fbeb103 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/OrderTradeVo.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/domain/vo/WalletRechargeRecordVo.java @@ -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; /** diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/OrderTradeService.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/OrderTradeService.java index 5f0f02f..af53198 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/OrderTradeService.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/OrderTradeService.java @@ -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 { void orderHandler(OrderTrade orderTrade, String suffix, Map params); void productHandler(ProductRes productRes); + + /** + * 根据商品名称分页查询 + * @param pageDomain 分页参数 + * @param productName 商品名称 + * @return TableDataInfo + */ + TableDataInfo getRecord(PageDomain pageDomain, String productName); + } diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java index 390956b..3ce4db1 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java @@ -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 page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize()); + + Long userId = SecurityUtils.getUserId(); + + LambdaQueryWrapper 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 selectMallProductList(OrderTrade orderTrade) { @@ -402,9 +424,10 @@ public class OrderTradeServiceImpl extends ServiceImpl 商品价格(price) 邀请人提成(amount) */ private Map getStringDoubleMap(Long productUserId, SysUser sysUser, Double price) {