diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java index bb027ce..bde9e44 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java @@ -1,13 +1,13 @@ package com.mcwl.web.controller.memberCenter; +import cn.hutool.core.bean.BeanUtil; import com.mcwl.common.core.domain.AjaxResult; import com.mcwl.common.core.domain.R; import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.utils.SecurityUtils; -import com.mcwl.memberCenter.domain.MemberConsume; -import com.mcwl.memberCenter.domain.Member; -import com.mcwl.memberCenter.domain.MemberLevel; -import com.mcwl.memberCenter.domain.MemberPromotion; +import com.mcwl.memberCenter.domain.*; +import com.mcwl.memberCenter.domain.vo.MemberConsumeVO; +import com.mcwl.memberCenter.domain.vo.RechargeRecordVO; import com.mcwl.memberCenter.enums.PromotionEnum; import com.mcwl.memberCenter.service.*; import com.mcwl.memberCenter.domain.dto.RechargePointsDto; @@ -80,37 +80,35 @@ public class MemberController { /** - * 获取积分余额和历史记录 + * 获取积分消费记录 * - * @return 积分余额和历史记录 + * @return 积分消费记录 */ @GetMapping("getPoints") - @ApiOperation(value = "获取积分余额和历史记录") - public R getPoints() { + @ApiOperation(value = "获取积分消费记录") + public R> getPoints() { Long userId = SecurityUtils.getUserId(); - SysUser sysUser = sysUserService.selectUserById(userId); - - Member member = memberService.getUseUserMemberByUserId(userId); - - double points = sysUser.getFreePoints(); - - if (Objects.nonNull(member)) { - points = points + member.getPoints(); - } - - PointsVO pointsVO = new PointsVO(); - // 会员消费记录 List memberConsumeList = memberConsumeService .lambdaQuery() .eq(MemberConsume::getUserId, userId) .list(); - pointsVO.setPoints(points); - pointsVO.setMemberConsumeList(memberConsumeList); + return R.ok(BeanUtil.copyToList(memberConsumeList, MemberConsumeVO.class)); + } - return R.ok(pointsVO); + /** + * 获取积分记录 + */ + @GetMapping("getRechargePoints") + @ApiOperation(value = "获取积分记录") + public R> getRechargePoints() { + Long userId = SecurityUtils.getUserId(); + + List rechargeRecordList = memberService.getRechargePoints(userId); + + return R.ok(rechargeRecordList); } 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 072a60d..c2f78fd 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,10 +1,16 @@ package com.mcwl.web.controller.personalCenter; +import com.mcwl.common.core.domain.R; +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.memberCenter.domain.Member; +import com.mcwl.memberCenter.service.MemberService; import com.mcwl.resource.domain.dto.ModelImagePageRes; import com.mcwl.resource.service.*; +import com.mcwl.system.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -14,18 +20,33 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + @Api(tags = "个人中心") @RestController @RequestMapping("personalCenter") @RequiredArgsConstructor public class PersonalCenterController { + private final ModelService modelService; + private final ModelLikeService modelLikeService; + private final ModelImageService modelImageService; + private final WorkFlowService workFlowService; + private final WorkFlowLikeService workFlowLikeService; + private final ModelImageLikeService modelImageLikeService; + private final ISysUserService sysUserService; + + private final MemberService memberService; + + /** * 我的发布-模型列表 */ @@ -83,6 +104,34 @@ public class PersonalCenterController { return modelImageLikeService.listByPage(pageDomain); } + /** + * 获取积分和金币 + */ + @ApiOperation(value = "获取积分和金币") + @PostMapping("/getPointAndWallet") + public R> getPointAndWallet() { + + Long userId = SecurityUtils.getUserId(); + + Map map = new HashMap<>(); + + SysUser sysUser = sysUserService.selectUserById(userId); + + Member member = memberService.getUseUserMemberByUserId(userId); + + double points = sysUser.getFreePoints(); + + if (Objects.nonNull(member)) { + points = points + member.getPoints(); + } + + map.put("point", points); + map.put("wallet", sysUser.getWallet()); + + return R.ok(map); + + } + } 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 ce887ba..0b0fa43 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 @@ -77,6 +77,10 @@ public class TokenService LoginUser user = redisCache.getCacheObject(userKey); return user; } + catch (RedisCommandTimeoutException e) + { + throw new RedisCommandTimeoutException(); + } catch (Exception e) { log.error("获取用户信息异常'{}'", e.getMessage()); diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberConsume.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberConsume.java index 2cf461f..2de9aa2 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberConsume.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberConsume.java @@ -2,6 +2,7 @@ package com.mcwl.memberCenter.domain; 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 lombok.Data; import lombok.EqualsAndHashCode; @@ -9,7 +10,7 @@ import lombok.EqualsAndHashCode; import java.util.Date; /** - * 会员消费表 + * 积分消费记录表 */ @Data @EqualsAndHashCode(callSuper = false) @@ -29,6 +30,7 @@ public class MemberConsume extends BaseEntity { private Double remainingPoints; // 消费时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date consumeTime; diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/RechargeRecord.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/RechargeRecord.java index ac5506a..80862cf 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/RechargeRecord.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/RechargeRecord.java @@ -3,9 +3,15 @@ package com.mcwl.memberCenter.domain; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.mcwl.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; +import java.util.Date; + +/** + * 积分充值记录 + */ @Data @EqualsAndHashCode(callSuper = false) @TableName("mem_recharge_record") @@ -19,6 +25,11 @@ public class RechargeRecord extends BaseEntity { */ private Long userId; + /** + * 获取来源 + */ + private String getSource; + /** * 订单号 */ @@ -34,4 +45,14 @@ public class RechargeRecord extends BaseEntity { */ private Double points; + /** + * 有效期开始时间 + */ + private Date effectStartTime; + + /** + * 有效期结束时间 + */ + private Date effectEndTime; + } diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/MemberConsumeVO.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/MemberConsumeVO.java new file mode 100644 index 0000000..6f6ceba --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/MemberConsumeVO.java @@ -0,0 +1,35 @@ +package com.mcwl.memberCenter.domain.vo; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.mcwl.memberCenter.domain.MemberConsume; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * 积分消费 + */ +@Data +@ApiModel(description = "积分消费") +public class MemberConsumeVO { + + private Long id; + + // 用户id + @ApiModelProperty(value = "用户id") + private Long userId; + + // 消费积分 + @ApiModelProperty(value = "消费积分") + private Double consumePoints; + + // 消费时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date consumeTime; + +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/PointsVO.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/PointsVO.java index b4f937b..6d7f82f 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/PointsVO.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/PointsVO.java @@ -1,6 +1,8 @@ package com.mcwl.memberCenter.domain.vo; import com.mcwl.memberCenter.domain.MemberConsume; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.ArrayList; @@ -10,11 +12,11 @@ import java.util.List; * 积分余额和历史记录 */ @Data +@ApiModel(description = "积分历史记录") public class PointsVO { - // 积分余额 - private Double points; // 积分消费记录 - private List memberConsumeList = new ArrayList<>(); + @ApiModelProperty(value = "积分消费记录") + private List memberConsumeList = new ArrayList<>(); } diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/RechargeRecordVO.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/RechargeRecordVO.java new file mode 100644 index 0000000..af2f8e6 --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/vo/RechargeRecordVO.java @@ -0,0 +1,70 @@ +package com.mcwl.memberCenter.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 +@EqualsAndHashCode(callSuper = false) +@ApiModel(description = "积分获取记录") +public class RechargeRecordVO { + + + private Long id; + + /** + * 用户ID + */ + @ApiModelProperty(value = "用户ID") + private Long userId; + + + /** + * 获取来源 + */ + private String getSource; + + /** + * 充值金额 + */ + @ApiModelProperty(value = "充值金额") + private Double amount; + + /** + * 获取到的积分 + */ + @ApiModelProperty(value = "获取到的积分") + private Double points; + + /** + * 有效期开始时间 + */ + @ApiModelProperty(value = "有效期开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date effectStartTime; + + /** + * 有效期结束时间 + */ + @ApiModelProperty(value = "有效期结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date effectEndTime; + + /** + * 积分获取时间 + */ + @ApiModelProperty(value = "积分获取时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date rechargeTime; + +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberService.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberService.java index e8c5e9d..6dd51fd 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberService.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberService.java @@ -2,6 +2,7 @@ package com.mcwl.memberCenter.service; import com.baomidou.mybatisplus.extension.service.IService; import com.mcwl.memberCenter.domain.Member; +import com.mcwl.memberCenter.domain.vo.RechargeRecordVO; import javax.validation.constraints.NotNull; import java.util.List; @@ -25,6 +26,7 @@ public interface MemberService extends IService { */ List getUseUserMember(); + /** /** * 根据用户id获取正常的正在使用的用户会员 * @param userId 用户id @@ -44,4 +46,6 @@ public interface MemberService extends IService { void consumePoints(Double consumePoints); Double calculatePayment(Double unitPrice, Long promotionId); + + List getRechargePoints(Long userId); } diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java index 9eacbb4..a8ecc6e 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberServiceImpl.java @@ -1,5 +1,6 @@ package com.mcwl.memberCenter.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -8,6 +9,7 @@ import com.mcwl.common.core.domain.entity.SysUser; import com.mcwl.common.exception.ServiceException; import com.mcwl.common.utils.SecurityUtils; import com.mcwl.memberCenter.domain.*; +import com.mcwl.memberCenter.domain.vo.RechargeRecordVO; import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum; import com.mcwl.memberCenter.enums.MemberEnum; import com.mcwl.memberCenter.enums.MemberPeriodicEnum; @@ -39,6 +41,8 @@ public class MemberServiceImpl extends ServiceImpl impleme private final BenefitService benefitService; + private final RechargeRecordService rechargeRecordService; + @Override public Member createUserMember(Long userId, Long memberLevelId, String paymentMethod, Long promotionId) { if (userId == null) { @@ -110,12 +114,6 @@ public class MemberServiceImpl extends ServiceImpl impleme member.setLastPaymentDate(new Date()); // 设置支付方式 member.setPaymentMethod(paymentMethod); - // 设置创建者 - SysUser sysUser = sysUserService.selectUserById(userId); - member.setCreateBy(sysUser.getUserName()); - member.setCreateTime(new Date()); - member.setUpdateBy(sysUser.getUserName()); - member.setUpdateTime(new Date()); baseMapper.insert(member); @@ -283,4 +281,24 @@ public class MemberServiceImpl extends ServiceImpl impleme return calendar.getTime(); } + + @Override + public List getRechargePoints(Long userId) { + if (Objects.isNull(userId)) { + return Collections.emptyList(); + } + List rechargeRecordList = rechargeRecordService.lambdaQuery() + .eq(RechargeRecord::getUserId, userId) + .list(); + + List rechargeRecordVOList = new ArrayList<>(); + + for (RechargeRecord rechargeRecord : rechargeRecordList) { + RechargeRecordVO rechargeRecordVO = BeanUtil.copyProperties(rechargeRecord, RechargeRecordVO.class); + rechargeRecordVO.setRechargeTime(rechargeRecord.getCreateTime()); + rechargeRecordVOList.add(rechargeRecordVO); + } + + return rechargeRecordVOList; + } } diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTrade.java b/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTrade.java index 8a5b35a..fa13e7d 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTrade.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTrade.java @@ -44,7 +44,7 @@ public class OrderTrade extends BaseEntity { /** * 商品ID */ - private Integer productId; + private Long productId; /** * 商品名称 */ diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTradeDto.java b/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTradeDto.java index c69669e..7d20cbd 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTradeDto.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/domain/OrderTradeDto.java @@ -15,7 +15,7 @@ public class OrderTradeDto { * 商品ID */ @ApiModelProperty(value = "商品ID 如果订单类型是points 或者 wallet,可以不传") - private Integer productId; + private Long productId; /** * 支付金额 diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java index d6160b5..a42ae7f 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java @@ -167,7 +167,7 @@ public class AliPayServiceImpl implements AliPayService { public PayVo memberPay(OrderTradeDto orderTradeDto) throws Exception { // 会员等级id - Integer productId = orderTradeDto.getProductId(); + Long productId = orderTradeDto.getProductId(); if (!Optional.ofNullable(productId).isPresent()) { throw new ServiceException("memberLevelId不能为空"); @@ -225,7 +225,7 @@ public class AliPayServiceImpl implements AliPayService { OrderTrade tradeEntity = new OrderTrade(); tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30) + "_points"); tradeEntity.setUserId(SecurityUtils.getUserId()); - tradeEntity.setProductId(-1); + tradeEntity.setProductId(-1L); tradeEntity.setProductName("积分充值"); tradeEntity.setUserName(SecurityUtils.getUsername()); tradeEntity.setTotalAmount(paymentAmount); @@ -263,7 +263,7 @@ public class AliPayServiceImpl implements AliPayService { OrderTrade tradeEntity = new OrderTrade(); tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30) + "_wallet"); tradeEntity.setUserId(SecurityUtils.getUserId()); - tradeEntity.setProductId(-1); + tradeEntity.setProductId(-1L); tradeEntity.setProductName("金币充值"); tradeEntity.setUserName(SecurityUtils.getUsername()); tradeEntity.setTotalAmount(paymentAmount); 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 ad5f4b5..390956b 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,5 +1,6 @@ package com.mcwl.pay.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mcwl.common.core.domain.entity.SysUser; @@ -8,7 +9,10 @@ import com.mcwl.common.domain.IdsParam; import com.mcwl.common.utils.DateUtils; import com.mcwl.common.utils.SecurityUtils; import com.mcwl.common.utils.StringUtils; +import com.mcwl.memberCenter.domain.Member; +import com.mcwl.memberCenter.domain.MemberLevel; import com.mcwl.memberCenter.domain.RechargeRecord; +import com.mcwl.memberCenter.service.MemberLevelService; import com.mcwl.memberCenter.service.MemberService; import com.mcwl.memberCenter.service.RechargeRecordService; import com.mcwl.myInvitation.domain.Commission; @@ -31,12 +35,16 @@ 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.*; /** @@ -53,7 +61,7 @@ public class OrderTradeServiceImpl extends ServiceImpl