From 7ce0a4fbcb3eadca2aac2706cff684c3e26e4962 Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Fri, 3 Jan 2025 12:53:44 +0800 Subject: [PATCH] =?UTF-8?q?modify=EF=BC=9A=E7=B1=BB=E5=90=8D=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=90=8E=E7=BB=AD=E6=89=A9?= =?UTF-8?q?=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../memberCenter/MemberController.java | 84 +++++++++++++ .../{MemberTest.java => MemberLevelTest.java} | 27 +++-- .../mcwl/common/core/domain/BaseEntity.java | 12 ++ .../consumer/EmptyPointsRemindConsumer.java | 17 ++- .../com/mcwl/memberCenter/domain/Member.java | 41 ++++--- .../memberCenter/domain/MemberConsume.java | 33 ++++++ .../mcwl/memberCenter/domain/MemberLevel.java | 31 +++++ .../mcwl/memberCenter/domain/UserMember.java | 59 ---------- .../mcwl/memberCenter/dto/UserMemberDto.java | 17 +++ .../mapper/MemberConsumeMapper.java | 9 ++ ...mberMapper.java => MemberLevelMapper.java} | 8 +- .../memberCenter/mapper/MemberMapper.java | 4 +- .../service/MemberConsumeService.java | 10 ++ .../service/MemberLevelService.java | 9 ++ .../memberCenter/service/MemberService.java | 22 ++++ .../service/UserMemberService.java | 17 --- .../impl/MemberConsumeServiceImpl.java | 16 +++ .../service/impl/MemberLevelServiceImpl.java | 12 ++ .../service/impl/MemberServiceImpl.java | 109 ++++++++++++++++- .../service/impl/UserMemberServiceImpl.java | 110 ------------------ .../memberCenter/task/UserMemberTask.java | 81 +++++-------- .../MemberLevelMapper.xml} | 2 +- .../mcwl/myInvitation/domain/Commission.java | 3 - .../com/mcwl/myInvitation/domain/Consume.java | 3 - .../mcwl/myInvitation/domain/Invitation.java | 2 - 25 files changed, 453 insertions(+), 285 deletions(-) create mode 100644 mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java rename mcwl-admin/src/test/java/com/mcwl/memberCenter/{MemberTest.java => MemberLevelTest.java} (66%) create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberConsume.java create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberLevel.java delete mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/UserMember.java create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/dto/UserMemberDto.java create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberConsumeMapper.java rename mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/{UserMemberMapper.java => MemberLevelMapper.java} (52%) create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberConsumeService.java create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberLevelService.java delete mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/UserMemberService.java create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberConsumeServiceImpl.java create mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberLevelServiceImpl.java delete mode 100644 mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/UserMemberServiceImpl.java rename mcwl-memberCenter/src/main/resources/mapper/{MemberMapper.xml => memberCenter/MemberLevelMapper.xml} (68%) 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 new file mode 100644 index 0000000..39fa465 --- /dev/null +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/memberCenter/MemberController.java @@ -0,0 +1,84 @@ +package com.mcwl.web.controller.memberCenter; + +import com.mcwl.common.core.domain.AjaxResult; +import com.mcwl.common.core.domain.entity.SysUser; +import com.mcwl.memberCenter.domain.MemberConsume; +import com.mcwl.memberCenter.domain.Member; +import com.mcwl.memberCenter.dto.UserMemberDto; +import com.mcwl.memberCenter.service.MemberConsumeService; +import com.mcwl.memberCenter.service.MemberService; +import com.mcwl.system.service.ISysUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("member") +@RequiredArgsConstructor +public class MemberController { + + private final MemberService memberService; + + private final ISysUserService sysUserService; + + private final MemberConsumeService memberConsumeService; + + + /** + * 创建用户会员 + * + * @param userMemberDto 参数 + * @return 用户会员 + */ + @PostMapping("createMember") + public AjaxResult createMemberCenter(@RequestBody UserMemberDto userMemberDto) { + Long userId = userMemberDto.getUserId(); + if (userId == null) { + return AjaxResult.warn("用户未登录"); + } + Long memberLevelId = userMemberDto.getMemberLevelId(); + if (memberLevelId == null) { + return AjaxResult.warn("会员等级未选择"); + } + String paymentMethod = userMemberDto.getPaymentMethod(); + if (paymentMethod == null) { + return AjaxResult.warn("支付方式错误,请重新支付"); + } + Member member = memberService.createUserMember(userId, memberLevelId, paymentMethod); + return AjaxResult.success(member); + } + + + /** + * 积分查询 + * @param userId 用户id + * @return 用户积分 + */ + @GetMapping("getPoints/{id}") + public AjaxResult getPoints(@PathVariable("id") Long userId) { + if (userId == null) { + return AjaxResult.warn("用户未登录"); + } + + SysUser sysUser = sysUserService.selectUserById(userId); + if (sysUser == null) { + return AjaxResult.warn("用户不存在"); + } + + List member = memberService.getUseUserMemberByUserId(userId); + if (member == null || member.isEmpty()) { + return AjaxResult.warn("用户未开通会员"); + } + + List memberConsumeList = memberConsumeService + .lambdaQuery() + .eq(MemberConsume::getUserId, userId) + .list(); + + + return AjaxResult.success(memberConsumeList); + } + + +} diff --git a/mcwl-admin/src/test/java/com/mcwl/memberCenter/MemberTest.java b/mcwl-admin/src/test/java/com/mcwl/memberCenter/MemberLevelTest.java similarity index 66% rename from mcwl-admin/src/test/java/com/mcwl/memberCenter/MemberTest.java rename to mcwl-admin/src/test/java/com/mcwl/memberCenter/MemberLevelTest.java index 8b12b1d..adee648 100644 --- a/mcwl-admin/src/test/java/com/mcwl/memberCenter/MemberTest.java +++ b/mcwl-admin/src/test/java/com/mcwl/memberCenter/MemberLevelTest.java @@ -1,12 +1,12 @@ package com.mcwl.memberCenter; import com.mcwl.McWlApplication; -import com.mcwl.common.utils.ShareCodeUtils; +import com.mcwl.common.core.domain.AjaxResult; import com.mcwl.memberCenter.consumer.EmptyPointsRemindConsumer; -import com.mcwl.memberCenter.domain.UserMember; +import com.mcwl.memberCenter.service.MemberLevelService; import com.mcwl.memberCenter.service.MemberService; -import com.mcwl.memberCenter.service.UserMemberService; import com.mcwl.memberCenter.task.UserMemberTask; +import com.mcwl.web.controller.memberCenter.MemberController; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -15,15 +15,18 @@ import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest(classes = McWlApplication.class) -public class MemberTest { +public class MemberLevelTest { + @Autowired + private MemberLevelService memberLevelService; + + @Autowired + private MemberController memberController; + @Autowired private MemberService memberService; - @Autowired - private UserMemberService userMemberService; - @Autowired private UserMemberTask userMemberTask; @@ -31,7 +34,7 @@ public class MemberTest { private EmptyPointsRemindConsumer emptyPointsRemindConsumer; @Test public void createUserMember() { - System.out.println(userMemberService.createUserMember(1L, 1013L, "wechat")); + System.out.println(memberService.createUserMember(1L, 1013L, "wechat")); } @Test @@ -52,7 +55,13 @@ public class MemberTest { @Test public void memberServiceTest() { - System.out.println(memberService.list()); + System.out.println(memberLevelService.list()); + } + + @Test + public void getPointsTest() { + AjaxResult points = memberController.getPoints(1L); + System.out.println("points = " + points); } } diff --git a/mcwl-common/src/main/java/com/mcwl/common/core/domain/BaseEntity.java b/mcwl-common/src/main/java/com/mcwl/common/core/domain/BaseEntity.java index 9a637aa..73d7409 100644 --- a/mcwl-common/src/main/java/com/mcwl/common/core/domain/BaseEntity.java +++ b/mcwl-common/src/main/java/com/mcwl/common/core/domain/BaseEntity.java @@ -101,6 +101,18 @@ public class BaseEntity implements Serializable this.updateTime = updateTime; } + + public String getDelFlag() + { + return delFlag; + } + + public void setDelFlag(String delFlag) + { + this.delFlag = delFlag; + } + + public String getRemark() { return remark; diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java index c8ee908..98b261d 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/EmptyPointsRemindConsumer.java @@ -1,19 +1,16 @@ package com.mcwl.memberCenter.consumer; import com.mcwl.common.constant.QueueConstants; -import com.mcwl.memberCenter.domain.UserMember; -import com.mcwl.memberCenter.service.UserMemberService; -import com.mcwl.memberCenter.task.UserMemberTask; +import com.mcwl.memberCenter.domain.Member; +import com.mcwl.memberCenter.service.MemberService; import com.rabbitmq.client.Channel; import org.springframework.amqp.core.Message; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.RabbitListener; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.IOException; -import java.util.List; @Slf4j @@ -21,13 +18,13 @@ import java.util.List; @RequiredArgsConstructor public class EmptyPointsRemindConsumer { - private final UserMemberService userMemberService; + private final MemberService memberService; @RabbitListener(queues = QueueConstants.EMPTY_POINTS_REMIND_QUEUE, ackMode = "MANUAL") - public void emptyPointsRemind(UserMember UserMember, Channel channel, Message message) { + public void emptyPointsRemind(Member Member, Channel channel, Message message) { try { // TODO 发送短信提醒用户积分即将清零 - log.info("获取到积分清零提醒的数据:{}", UserMember); + log.info("获取到积分清零提醒的数据:{}", Member); channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch (Exception e) { log.error("处理积分清零提醒消息时出错: {}", e.getMessage(), e); @@ -41,10 +38,10 @@ public class EmptyPointsRemindConsumer { @RabbitListener(queues = QueueConstants.MEMBER_BILLING_QUEUE, ackMode = "MANUAL") - public void memberBillingQueue(UserMember userMember, Channel channel, Message message) { + public void memberBillingQueue(Member member, Channel channel, Message message) { try { // TODO 发送短信提醒用户会员账单,如果支付成功,更新last_payment_date,并重新计算end_date(start_date + 1个月) - log.info("获取到会员账单的数据:{}", userMember); + log.info("获取到会员账单的数据:{}", member); } catch (Exception e) { log.error("处理会员账单消息时出错: {}", e.getMessage(), e); try { diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/Member.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/Member.java index bbe83db..513aa42 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/Member.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/Member.java @@ -1,12 +1,14 @@ 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 com.mcwl.memberCenter.enums.MemberMenu; import lombok.Data; import lombok.EqualsAndHashCode; -import java.util.Objects; +import java.util.Date; @Data @EqualsAndHashCode(callSuper = false) @@ -16,24 +18,37 @@ public class Member extends BaseEntity { @TableId private Long id; - // 会员类型 - private String memberType; + // 用户ID + private Long userId; - // 会员名称 - private String memberName; + // 会员等级ID + private Long memberLevelId; - // 会员价格 - private Double unitPrice; + // 会员开始时间 + private Date startDate; - // 会员原价 - private Double originalPrice; + // 会员结束时间 + private Date endDate; // 会员积分 private Integer points; - // 订阅周期(天) - private Integer subscriptionPeriod; + // 订阅状态 active(活跃,连续包月)、inactive(非活跃,不连续包月)、pending(待支付)和expired(过期) + private MemberMenu subscriptionStatus; + + // 支付方式 + private String paymentMethod; + + // 上次支付时间 + private Date lastPaymentDate; + + // 下次计费时间 + private Date nextBillingDate; + + // 上次登录时间 + private Date lastLoginDate; + + // 状态(0:正常 1:禁用) + private String status; - // 备注 - private String remark; } 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 new file mode 100644 index 0000000..17123d3 --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberConsume.java @@ -0,0 +1,33 @@ +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 lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("mem_member_consume") +public class MemberConsume extends BaseEntity { + + @TableId + private Long id; + + // 用户id + private Long userId; + + // 消费积分 + private Integer consumePoints; + + // 剩余积分 + private Integer remainingPoints; + + // 消费时间 + private Date consumeTime; + + + +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberLevel.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberLevel.java new file mode 100644 index 0000000..5a27f67 --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/MemberLevel.java @@ -0,0 +1,31 @@ +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 lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("mem_member_level") +public class MemberLevel extends BaseEntity { + + @TableId + private Long id; + + // 会员名称 + private String memberName; + + // 会员价格 + private Double unitPrice; + + // 会员原价 + private Double originalPrice; + + // 会员积分 + private Integer points; + + // 订阅周期(天) + private Integer subscriptionPeriod; +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/UserMember.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/UserMember.java deleted file mode 100644 index bb95be5..0000000 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/domain/UserMember.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.mcwl.memberCenter.domain; - - -import com.baomidou.mybatisplus.annotation.EnumValue; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; -import com.baomidou.mybatisplus.annotation.TableName; -import com.mcwl.common.core.domain.BaseEntity; -import com.mcwl.memberCenter.enums.MemberMenu; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; - -@Data -@EqualsAndHashCode(callSuper = false) -@TableName("mem_user_member") -public class UserMember extends BaseEntity { - - @TableId - private Long id; - - // 用户ID - private Long userId; - - // 会员ID - private Long memberId; - - // 会员开始时间 - private Date startDate; - - // 会员结束时间 - private Date endDate; - - // 会员积分 - private Integer points; - - // 订阅状态 active(活跃,连续包月)、inactive(非活跃,不连续包月)、pending(待支付)和expired(过期) - private MemberMenu subscriptionStatus; - - // 支付方式 - private String paymentMethod; - - // 上次支付时间 - private Date lastPaymentDate; - - // 下次计费时间 - private Date nextBillingDate; - - // 上次登录时间 - private Date lastLoginDate; - - // 状态(0:正常 1:禁用) - private String status; - - // 备注 - private String remark; - -} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/dto/UserMemberDto.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/dto/UserMemberDto.java new file mode 100644 index 0000000..ee8ad44 --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/dto/UserMemberDto.java @@ -0,0 +1,17 @@ +package com.mcwl.memberCenter.dto; + +import lombok.Data; + +@Data +public class UserMemberDto { + + // 用户ID + private Long userId; + + // 会员ID + private Long memberLevelId; + + // 支付方式 + private String paymentMethod; + +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberConsumeMapper.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberConsumeMapper.java new file mode 100644 index 0000000..218d1a3 --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberConsumeMapper.java @@ -0,0 +1,9 @@ +package com.mcwl.memberCenter.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mcwl.memberCenter.domain.MemberConsume; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface MemberConsumeMapper extends BaseMapper { +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/UserMemberMapper.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberLevelMapper.java similarity index 52% rename from mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/UserMemberMapper.java rename to mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberLevelMapper.java index 80311c6..13c0730 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/UserMemberMapper.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberLevelMapper.java @@ -1,9 +1,11 @@ package com.mcwl.memberCenter.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.mcwl.memberCenter.domain.UserMember; +import com.mcwl.memberCenter.domain.MemberLevel; import org.apache.ibatis.annotations.Mapper; -//@Mapper -public interface UserMemberMapper extends BaseMapper { +@Mapper +public interface MemberLevelMapper extends BaseMapper { + + } diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberMapper.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberMapper.java index c127692..61f0d66 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberMapper.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/mapper/MemberMapper.java @@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mcwl.memberCenter.domain.Member; import org.apache.ibatis.annotations.Mapper; -//@Mapper +@Mapper public interface MemberMapper extends BaseMapper { - - } diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberConsumeService.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberConsumeService.java new file mode 100644 index 0000000..79d564f --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberConsumeService.java @@ -0,0 +1,10 @@ +package com.mcwl.memberCenter.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mcwl.memberCenter.domain.MemberConsume; + +public interface MemberConsumeService extends IService { + + + +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberLevelService.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberLevelService.java new file mode 100644 index 0000000..5852b7d --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/MemberLevelService.java @@ -0,0 +1,9 @@ +package com.mcwl.memberCenter.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mcwl.memberCenter.domain.MemberLevel; + +public interface MemberLevelService extends IService { + + +} 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 41aaeaf..932f5a5 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 @@ -7,5 +7,27 @@ import java.util.List; public interface MemberService extends IService { + /** + * 创建用户会员 + * + * @param userId 用户id + * @param memberLevelId 会员等级id + * @return 用户会员 + */ + Member createUserMember(Long userId, Long memberLevelId, String paymentMethod); + + /** + * + * @return 获取正常的正在使用的用户会员集合 + */ + List getUseUserMember(); + + /** + * 根据用户id获取正常的正在使用的用户会员 + * @param userId 用户id + * @return 用户会员 + */ + List getUseUserMemberByUserId(Long userId); + } diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/UserMemberService.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/UserMemberService.java deleted file mode 100644 index 9298702..0000000 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/UserMemberService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.mcwl.memberCenter.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.mcwl.memberCenter.domain.UserMember; - -public interface UserMemberService extends IService { - - /** - * 创建用户会员 - * @param userId 用户id - * @param memberId 会员id - * @return 用户会员 - */ - UserMember createUserMember(Long userId, Long memberId, String paymentMethod); - - -} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberConsumeServiceImpl.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberConsumeServiceImpl.java new file mode 100644 index 0000000..aad3310 --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberConsumeServiceImpl.java @@ -0,0 +1,16 @@ +package com.mcwl.memberCenter.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mcwl.memberCenter.domain.MemberConsume; +import com.mcwl.memberCenter.mapper.MemberConsumeMapper; +import com.mcwl.memberCenter.service.MemberConsumeService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class MemberConsumeServiceImpl extends ServiceImpl implements MemberConsumeService { + + + +} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberLevelServiceImpl.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberLevelServiceImpl.java new file mode 100644 index 0000000..b974b0f --- /dev/null +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/MemberLevelServiceImpl.java @@ -0,0 +1,12 @@ +package com.mcwl.memberCenter.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mcwl.memberCenter.domain.MemberLevel; +import com.mcwl.memberCenter.mapper.MemberLevelMapper; +import com.mcwl.memberCenter.service.MemberLevelService; +import org.springframework.stereotype.Service; + +@Service +public class MemberLevelServiceImpl extends ServiceImpl implements MemberLevelService { + +} 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 13dda34..d798621 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,14 +1,121 @@ package com.mcwl.memberCenter.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mcwl.common.core.domain.entity.SysUser; +import com.mcwl.common.exception.ServiceException; +import com.mcwl.memberCenter.domain.MemberLevel; import com.mcwl.memberCenter.domain.Member; +import com.mcwl.memberCenter.enums.MemberMenu; import com.mcwl.memberCenter.mapper.MemberMapper; +import com.mcwl.memberCenter.service.MemberLevelService; import com.mcwl.memberCenter.service.MemberService; +import com.mcwl.system.service.ISysUserService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.List; +import java.util.*; @Service +@RequiredArgsConstructor public class MemberServiceImpl extends ServiceImpl implements MemberService { + private final MemberLevelService memberLevelService; + + private final ISysUserService sysUserService; + + @Override + public Member createUserMember(Long userId, Long memberLevelId, String paymentMethod) { + if (userId == null) { + throw new ServiceException("用户不能为空"); + } + SysUser user = sysUserService.selectUserById(userId); + if (user == null) { + throw new ServiceException("用户不存在"); + } + if (memberLevelId == null) { + throw new ServiceException("会员等级不能为空"); + } + MemberLevel memberLevel = memberLevelService.getById(memberLevelId); + if (memberLevel == null) { + throw new ServiceException("会员等级不存在"); + } + // 查询用户是否已经存在会员 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(Member::getUserId, userId) + // subscriptionStatus不为expired + .ne(Member::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_EXPIRED) + .orderBy(true, false, Member::getEndDate); + List memberList = baseMapper.selectList(lqw); + Member member = new Member(); + // 设置用户id + member.setUserId(userId); + // 设置会员id + member.setMemberLevelId(memberLevelId); + if (memberList != null && !memberList.isEmpty()) { + Member lastMember = memberList.get(0); + Date endDate = lastMember.getEndDate(); + // 设置会员开始时间和结束时间 + Date startDate = new Date(endDate.getTime() + 1000L * 60L * 60L * 24L); + member.setStartDate(startDate); + member.setEndDate(new Date(startDate.getTime() + memberLevel.getSubscriptionPeriod() * 1000L * 60L * 60L * 24L)); + } else { + // 用户不存在会员 + // 设置会员开始时间和结束时间 + Date startDate = new Date(); + member.setStartDate(startDate); + member.setEndDate(new Date(startDate.getTime() + memberLevel.getSubscriptionPeriod() * 1000L * 60L * 60L * 24L)); + } + + // 设置积分 + member.setPoints(memberLevel.getPoints()); + // 设置订阅状态 + if (memberLevel.getSubscriptionPeriod() == null) { + // 连续包月,会员状态为活跃 + member.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_ACTIVE); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(member.getEndDate()); + calendar.add(Calendar.MONTH, 1); + member.setNextBillingDate(calendar.getTime()); + } else { + member.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_INACTIVE); + } + // 设置支付时间 + 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); + + + return member; + } + + + @Override + public List getUseUserMember() { + return this.getUseUserMemberByUserId(null); + } + + @Override + public List getUseUserMemberByUserId(Long userId) { + // startDate 小于等于当前时间、endDate 大于等于当前时间 + // subscriptionStatus 不为 "过期" 或 "待支付" + // status 为 0 的 + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.le(Member::getStartDate, new Date()) + .ge(Member::getEndDate, new Date()) + .ne(Member::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_EXPIRED) + .ne(Member::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_PENDING) + .eq(Member::getStatus, "0") + .eq(userId != null, Member::getUserId, userId); + return baseMapper.selectList(qw); + } + } diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/UserMemberServiceImpl.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/UserMemberServiceImpl.java deleted file mode 100644 index 5bd6436..0000000 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/service/impl/UserMemberServiceImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.mcwl.memberCenter.service.impl; - -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -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.Member; -import com.mcwl.memberCenter.domain.UserMember; -import com.mcwl.memberCenter.enums.MemberMenu; -import com.mcwl.memberCenter.mapper.UserMemberMapper; -import com.mcwl.memberCenter.service.MemberService; -import com.mcwl.memberCenter.service.UserMemberService; -import com.mcwl.system.service.ISysUserService; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; - -@Service -@RequiredArgsConstructor -public class UserMemberServiceImpl extends ServiceImpl implements UserMemberService { - - private final MemberService memberService; - - private final ISysUserService sysUserService; - - - public void aaa() { - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - - Member member = new Member(); - memberService.update(lqw); - } - - @Override - public UserMember createUserMember(Long userId, Long memberId, String paymentMethod) { - if (userId == null) { - throw new ServiceException("用户不能为空"); - } - SysUser user = sysUserService.selectUserById(userId); - if (user == null) { - throw new ServiceException("用户不存在"); - } - if (memberId == null) { - throw new ServiceException("会员不能为空"); - } - Member member = memberService.getById(memberId); - if (member == null) { - throw new ServiceException("会员不存在"); - } - // 查询用户是否已经存在会员 - LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); - lqw.eq(UserMember::getUserId, userId) - // subscriptionStatus不为expired - .ne(UserMember::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_EXPIRED) - .orderBy(true, false, UserMember::getEndDate); - List userMemberList = baseMapper.selectList(lqw); - UserMember userMember = new UserMember(); - // 设置用户id - userMember.setUserId(userId); - // 设置会员id - userMember.setMemberId(memberId); - if (userMemberList != null && !userMemberList.isEmpty()) { - UserMember lastUserMember = userMemberList.get(0); - Date endDate = lastUserMember.getEndDate(); - // 设置会员开始时间和结束时间 - Date startDate = new Date(endDate.getTime() + 1000L * 60L * 60L * 24L); - userMember.setStartDate(startDate); - userMember.setEndDate(new Date(startDate.getTime() + member.getSubscriptionPeriod() * 1000L * 60L * 60L * 24L)); - } else { - // 用户不存在会员 - // 设置会员开始时间和结束时间 - Date startDate = new Date(); - userMember.setStartDate(startDate); - userMember.setEndDate(new Date(startDate.getTime() + member.getSubscriptionPeriod() * 1000L * 60L * 60L * 24L)); - } - - // 设置积分 - userMember.setPoints(member.getPoints()); - // 设置订阅状态 - if (member.getSubscriptionPeriod() == null) { - // 连续包月,会员状态为活跃 - userMember.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_ACTIVE); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(userMember.getEndDate()); - calendar.add(Calendar.MONTH, 1); - userMember.setNextBillingDate(calendar.getTime()); - } else { - userMember.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_INACTIVE); - } - // 设置支付时间 - userMember.setLastPaymentDate(new Date()); - // 设置支付方式 - userMember.setPaymentMethod(paymentMethod); - // 设置创建者 - SysUser sysUser = sysUserService.selectUserById(userId); - userMember.setCreateBy(sysUser.getUserName()); - userMember.setCreateTime(new Date()); - userMember.setUpdateBy(sysUser.getUserName()); - userMember.setUpdateTime(new Date()); - - baseMapper.insert(userMember); - - - return userMember; - } -} diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java index 11cc3f4..9add30f 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/task/UserMemberTask.java @@ -1,17 +1,13 @@ package com.mcwl.memberCenter.task; -import cn.hutool.core.bean.BeanUtil; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mcwl.common.constant.QueueConstants; -import com.mcwl.memberCenter.domain.UserMember; +import com.mcwl.memberCenter.domain.Member; import com.mcwl.memberCenter.enums.MemberMenu; -import com.mcwl.memberCenter.service.UserMemberService; +import com.mcwl.memberCenter.service.MemberService; import lombok.RequiredArgsConstructor; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.transaction.annotation.Transactional; import java.util.Calendar; import java.util.Date; @@ -21,7 +17,7 @@ import java.util.List; @RequiredArgsConstructor public class UserMemberTask { - private final UserMemberService userMemberService; + private final MemberService memberService; private final RabbitTemplate rabbitTemplate; @@ -30,13 +26,13 @@ public class UserMemberTask { * 积分清零提醒 月底前五天 */ public void emptyPointsRemindTask() { - List userMemberList = this.getUseUserMember(); - if (userMemberList == null || userMemberList.isEmpty()) { + List memberList = memberService.getUseUserMember(); + if (memberList == null || memberList.isEmpty()) { return; } // 发送积分清零消息 - for (UserMember userMember : userMemberList) { - rabbitTemplate.convertAndSend(QueueConstants.EMPTY_POINTS_REMIND_QUEUE, userMember); + for (Member member : memberList) { + rabbitTemplate.convertAndSend(QueueConstants.EMPTY_POINTS_REMIND_QUEUE, member); } } @@ -46,71 +42,54 @@ public class UserMemberTask { * 清空积分 每月月底前两天 */ public void emptyPointsTsk() { - List userMemberList = this.getUseUserMember(); - if (userMemberList == null || userMemberList.isEmpty()) { + List memberList = memberService.getUseUserMember(); + if (memberList == null || memberList.isEmpty()) { return; } - for (UserMember userMember : userMemberList) { - userMember.setPoints(0); - userMember.setUpdateTime(new Date()); + for (Member member : memberList) { + member.setPoints(0); + member.setUpdateTime(new Date()); } - userMemberService.updateBatchById(userMemberList); + memberService.updateBatchById(memberList); } /** * 更新会员状态 间隔1h检查 */ public void updateSubscriptionStatusTask() { - LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); // endDate大于当前时间, subscriptionStatus不为过期 - qw.gt(UserMember::getEndDate, System.currentTimeMillis()) - .ne(UserMember::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_EXPIRED) - .ne(UserMember::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_PENDING); - List userMemberList = userMemberService.list(qw); - if (userMemberList == null || userMemberList.isEmpty()) { + qw.gt(Member::getEndDate, System.currentTimeMillis()) + .ne(Member::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_EXPIRED) + .ne(Member::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_PENDING); + List memberList = memberService.list(qw); + if (memberList == null || memberList.isEmpty()) { return; } - System.out.println("userMemberList = " + userMemberList); + System.out.println("userMemberList = " + memberList); - for (UserMember userMember : userMemberList) { - MemberMenu subscriptionStatus = userMember.getSubscriptionStatus(); + for (Member member : memberList) { + MemberMenu subscriptionStatus = member.getSubscriptionStatus(); if (subscriptionStatus == MemberMenu.MEMBER_CENTER_ACTIVE) { // 如果subscriptionStatus是活跃的,表示连续包月。订阅状态改为"待支付" - userMember.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_PENDING); + member.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_PENDING); // nextBillingDate设置为当前会员结束日期的下个月的同一天,发送账单通知 Calendar calendar = Calendar.getInstance(); - calendar.setTime(userMember.getEndDate()); + calendar.setTime(member.getEndDate()); calendar.add(Calendar.MONTH, 1); - userMember.setNextBillingDate(calendar.getTime()); - userMemberService.updateById(userMember); + member.setNextBillingDate(calendar.getTime()); + memberService.updateById(member); // 发送会员账单消息,如果支付成功,更新last_payment_date,并重新计算end_date(start_date + 1个月) - rabbitTemplate.convertAndSend(QueueConstants.MEMBER_BILLING_QUEUE, userMember); + rabbitTemplate.convertAndSend(QueueConstants.MEMBER_BILLING_QUEUE, member); } else if (subscriptionStatus == MemberMenu.MEMBER_CENTER_INACTIVE) { // 不是连续包月,会员状态改为过期,状态改为"1" - userMember.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_EXPIRED); - userMember.setStatus("1"); - userMember.setUpdateTime(new Date()); + member.setSubscriptionStatus(MemberMenu.MEMBER_CENTER_EXPIRED); + member.setStatus("1"); + member.setUpdateTime(new Date()); } } } - // 获取正常使用的会员 - private List getUseUserMember() { - // startDate 小于等于当前时间、endDate 大于等于当前时间 - // subscriptionStatus 不为 "过期" 或 "待支付" - // status 为 0 的 - LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); - qw.le(UserMember::getStartDate, new Date()) - .ge(UserMember::getEndDate, new Date()) - .ne(UserMember::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_EXPIRED) - .ne(UserMember::getSubscriptionStatus, MemberMenu.MEMBER_CENTER_PENDING) - .eq(UserMember::getStatus, "0"); - // 对应的sql为 - System.out.println("sql = " + qw.getSqlSegment()); - return userMemberService.list(qw); - } - - } diff --git a/mcwl-memberCenter/src/main/resources/mapper/MemberMapper.xml b/mcwl-memberCenter/src/main/resources/mapper/memberCenter/MemberLevelMapper.xml similarity index 68% rename from mcwl-memberCenter/src/main/resources/mapper/MemberMapper.xml rename to mcwl-memberCenter/src/main/resources/mapper/memberCenter/MemberLevelMapper.xml index ea8093a..6b9c5d8 100644 --- a/mcwl-memberCenter/src/main/resources/mapper/MemberMapper.xml +++ b/mcwl-memberCenter/src/main/resources/mapper/memberCenter/MemberLevelMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Commission.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Commission.java index 05d127d..bb7cd4a 100644 --- a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Commission.java +++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Commission.java @@ -27,9 +27,6 @@ public class Commission extends BaseEntity { // 支付状态 private Integer payStatus; - // 备注 - private String remark; - @Override public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Consume.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Consume.java index 6d9cc5a..1cd9935 100644 --- a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Consume.java +++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Consume.java @@ -25,9 +25,6 @@ public class Consume extends BaseEntity { // 消费时间 private Date consumeDate; - // 备注 - private String remark; - @Override public boolean equals(Object o) { if (o == null || getClass() != o.getClass()) return false; diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Invitation.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Invitation.java index 06b237f..9b22e83 100644 --- a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Invitation.java +++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Invitation.java @@ -25,8 +25,6 @@ public class Invitation extends BaseEntity { // 邀请码 private String invitationCode; - // 备注 - private String remark; @Override public boolean equals(Object o) {