diff --git a/mcwl-admin/pom.xml b/mcwl-admin/pom.xml
index 34d1874..85736cc 100644
--- a/mcwl-admin/pom.xml
+++ b/mcwl-admin/pom.xml
@@ -55,6 +55,13 @@
mcwl-quartz
+
+
+ com.mcwl
+ mcwl-myInvitation
+ 3.8.8
+
+
com.mcwl
@@ -80,15 +87,15 @@
-
- org.apache.maven.plugins
- maven-war-plugin
- 3.1.0
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ 3.1.0
false
${project.artifactId}
-
-
+
+
${project.artifactId}
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
new file mode 100644
index 0000000..ad4868f
--- /dev/null
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/ConsumeController.java
@@ -0,0 +1,12 @@
+package com.mcwl.web.controller.myInvitation;
+
+
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController("/consume")
+public class ConsumeController {
+
+
+
+
+}
diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/InvitationController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/InvitationController.java
new file mode 100644
index 0000000..94e3dd1
--- /dev/null
+++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/myInvitation/InvitationController.java
@@ -0,0 +1,49 @@
+package com.mcwl.web.controller.myInvitation;
+
+
+import com.mcwl.common.annotation.Anonymous;
+import com.mcwl.common.core.domain.AjaxResult;
+import com.mcwl.common.utils.SecurityUtils;
+import com.mcwl.myInvitation.domain.Invitation;
+import com.mcwl.myInvitation.service.InvitationService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+import static com.mcwl.common.core.domain.AjaxResult.success;
+
+@RestController("/invitation")
+@RequiredArgsConstructor
+
+public class InvitationController {
+
+ private final InvitationService invitationService;
+
+
+ @GetMapping("/getInvitationCode")
+ @Anonymous
+ public AjaxResult getInvitationCode() {
+ // 获取当前用户
+ Long userId = SecurityUtils.getUserId();
+ String invitationCode = invitationService.getInvitationCode(userId);
+ return success("操作成功", invitationCode);
+ }
+
+ @GetMapping("/list")
+ public AjaxResult list() {
+ List list = invitationService.list();
+ return success(list);
+ }
+
+ @GetMapping("/getById")
+ public AjaxResult getById(Long id) {
+ Invitation invitation = invitationService.getById(id);
+ return success(invitation);
+ }
+
+
+
+
+}
diff --git a/mcwl-common/src/main/java/com/mcwl/common/constant/JwtConstants.java b/mcwl-common/src/main/java/com/mcwl/common/constant/JwtConstants.java
new file mode 100644
index 0000000..3833f60
--- /dev/null
+++ b/mcwl-common/src/main/java/com/mcwl/common/constant/JwtConstants.java
@@ -0,0 +1,39 @@
+package com.mcwl.common.constant;
+
+public class JwtConstants {
+ /**
+ * 用户ID字段
+ */
+ public static final String DETAILS_USER_ID = "user_id";
+
+ /**
+ * 用户名字段
+ */
+ public static final String DETAILS_USERNAME = "user_name";
+
+ /**
+ * 用户标识
+ */
+ public static final String USER_KEY = "user_key";
+
+ /**
+ * 令牌秘钥
+ */
+ public final static String SECRET = "abcdefghijklmnopqrstuvwxyz";
+
+ /**
+ * 手机
+ */
+ public static final String USER_PHONE = "user_phone";
+
+
+ /**
+ * 用户token 的键的前缀
+ */
+ public static final String LOGIN_TOKEN = "login_token:";
+
+ /**
+ * token过期时间 1h = 60 * 60 * 1000L
+ */
+ public static final Long EXPIRATION = 60 * 60 * 1000L;
+}
diff --git a/mcwl-common/src/main/java/com/mcwl/common/utils/JwtUtils.java b/mcwl-common/src/main/java/com/mcwl/common/utils/JwtUtils.java
new file mode 100644
index 0000000..8038062
--- /dev/null
+++ b/mcwl-common/src/main/java/com/mcwl/common/utils/JwtUtils.java
@@ -0,0 +1,114 @@
+package com.mcwl.common.utils;
+
+import com.mcwl.common.constant.JwtConstants;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+
+import java.util.Date;
+import java.util.Map;
+
+/**
+ * @description: Jwt工具类
+ * @author DongZl
+ */
+public class JwtUtils {
+
+ /**
+ * 秘钥
+ */
+ public static String secret = JwtConstants.SECRET;
+
+ /**
+ * 从数据声明生成令牌
+ *
+ * @param claims 数据声明
+ * @return 令牌
+ */
+ public static String createToken(Map claims){
+ String token = Jwts.builder()
+ .addClaims(claims)
+ .signWith(SignatureAlgorithm.HS512, secret)
+ .setExpiration(new Date(System.currentTimeMillis() + JwtConstants.EXPIRATION))
+ .compact();
+ return token;
+ }
+
+ /**
+ * 从令牌中获取数据声明
+ *
+ * @param token 令牌
+ * @return 数据声明
+ */
+ public static Claims parseToken(String token){
+ return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
+ }
+ /**
+ * 根据令牌获取用户标识
+ *
+ * @param token 令牌
+ * @return 用户ID
+ */
+ public static String getUserKey(String token){
+ Claims claims = parseToken(token);
+ return getValue(claims, JwtConstants.USER_KEY);
+ }
+ /**
+ * 根据令牌获取用户标识
+ *
+ * @param claims 身份信息
+ * @return 用户ID
+ */
+ public static String getUserKey(Claims claims){
+ return getValue(claims, JwtConstants.USER_KEY);
+ }
+ /**
+ * 根据令牌获取用户ID
+ *
+ * @param token 令牌
+ * @return 用户ID
+ */
+ public static String getUserId(String token){
+ Claims claims = parseToken(token);
+ return getValue(claims, JwtConstants.DETAILS_USER_ID);
+ }
+ /**
+ * 根据身份信息获取用户ID
+ *
+ * @param claims 身份信息
+ * @return 用户ID
+ */
+ public static String getUserId(Claims claims){
+ return getValue(claims, JwtConstants.DETAILS_USER_ID);
+ }
+ /**
+ * 根据令牌获取用户名
+ *
+ * @param token 令牌
+ * @return 用户名
+ */
+ public static String getUserName(String token){
+ Claims claims = parseToken(token);
+ return getValue(claims, JwtConstants.DETAILS_USERNAME);
+ }
+ /**
+ * 根据身份信息获取用户名
+ *
+ * @param claims 身份信息
+ * @return 用户名
+ */
+ public static String getUserName(Claims claims){
+ return getValue(claims, JwtConstants.DETAILS_USERNAME);
+ }
+ /**
+ * 根据身份信息获取键值
+ *
+ * @param claims 身份信息
+ * @param key 键
+ * @return 值
+ */
+ public static String getValue(Claims claims, String key){
+ Object obj = claims.get(key);
+ return obj == null ? "" : obj.toString();
+ }
+}
diff --git a/mcwl-myInvitation/pom.xml b/mcwl-myInvitation/pom.xml
new file mode 100644
index 0000000..4c77feb
--- /dev/null
+++ b/mcwl-myInvitation/pom.xml
@@ -0,0 +1,42 @@
+
+
+ 4.0.0
+
+ com.mcwl
+ mcwl
+ 3.8.8
+
+
+ mcwl-myInvitation
+
+
+ 8
+ 8
+ UTF-8
+ 3.5.2
+
+
+
+
+
+
+ com.mcwl
+ mcwl-common
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ ${mybatis-plus.version}
+
+
+
+
\ No newline at end of file
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
new file mode 100644
index 0000000..bb7cd4a
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Commission.java
@@ -0,0 +1,41 @@
+package com.mcwl.myInvitation.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mcwl.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Objects;
+
+// 提成表
+@Data
+@TableName("commissions")
+public class Commission extends BaseEntity {
+
+ @TableId
+ private Long id;
+
+ // 用户id
+ private Long userId;
+
+ // 消费id
+ private Long consumeId;
+
+ // 提成金额
+ private Double amount;
+
+ // 支付状态
+ private Integer payStatus;
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass()) return false;
+ Commission that = (Commission) o;
+ return Objects.equals(id, that.id) && Objects.equals(userId, that.userId) && Objects.equals(consumeId, that.consumeId) && Objects.equals(amount, that.amount) && Objects.equals(payStatus, that.payStatus);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, userId, consumeId, amount, payStatus);
+ }
+}
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
new file mode 100644
index 0000000..1cd9935
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Consume.java
@@ -0,0 +1,39 @@
+package com.mcwl.myInvitation.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.mcwl.common.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.Objects;
+
+// 消费表
+@Data
+@TableName("consumes")
+public class Consume extends BaseEntity {
+
+ @TableId
+ private Long id;
+
+ // 用户id
+ private Long userId;
+
+ // 消费金额
+ private Double amount;
+
+ // 消费时间
+ private Date consumeDate;
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass()) return false;
+ Consume consume = (Consume) o;
+ return Objects.equals(id, consume.id) && Objects.equals(userId, consume.userId) && Objects.equals(amount, consume.amount) && Objects.equals(consumeDate, consume.consumeDate);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, userId, amount, consumeDate);
+ }
+}
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
new file mode 100644
index 0000000..3076d14
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/domain/Invitation.java
@@ -0,0 +1,39 @@
+package com.mcwl.myInvitation.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.Objects;
+
+// 邀请表
+@Data
+@TableName("invitations")
+public class Invitation extends BaseEntity {
+
+ @TableId
+ private Long id;
+
+ // 邀请者
+ private Long userId;
+
+ // 被邀请者
+ private Long userInviteId ;
+
+ // 邀请码
+ private String invitationCode;
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass()) return false;
+ Invitation that = (Invitation) o;
+ return Objects.equals(id, that.id) && Objects.equals(userId, that.userId) && Objects.equals(userInviteId, that.userInviteId) && Objects.equals(invitationCode, that.invitationCode);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id, userId, userInviteId, invitationCode);
+ }
+}
diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/CommissionMapper.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/CommissionMapper.java
new file mode 100644
index 0000000..0f6e4b3
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/CommissionMapper.java
@@ -0,0 +1,13 @@
+package com.mcwl.myInvitation.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.myInvitation.domain.Commission;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CommissionMapper extends BaseMapper {
+
+}
diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/ConsumeMapper.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/ConsumeMapper.java
new file mode 100644
index 0000000..46dd641
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/ConsumeMapper.java
@@ -0,0 +1,11 @@
+package com.mcwl.myInvitation.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.myInvitation.domain.Commission;
+import com.mcwl.myInvitation.domain.Consume;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ConsumeMapper extends BaseMapper {
+
+}
diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/InvitationMapper.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/InvitationMapper.java
new file mode 100644
index 0000000..4bb170a
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/mapper/InvitationMapper.java
@@ -0,0 +1,11 @@
+package com.mcwl.myInvitation.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.mcwl.myInvitation.domain.Commission;
+import com.mcwl.myInvitation.domain.Invitation;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface InvitationMapper extends BaseMapper {
+
+}
diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/CommissionService.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/CommissionService.java
new file mode 100644
index 0000000..fb41594
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/CommissionService.java
@@ -0,0 +1,8 @@
+package com.mcwl.myInvitation.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.myInvitation.domain.Commission;
+
+public interface CommissionService extends IService {
+
+}
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
new file mode 100644
index 0000000..9afdfd8
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/ConsumeService.java
@@ -0,0 +1,8 @@
+package com.mcwl.myInvitation.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.myInvitation.domain.Consume;
+
+public interface ConsumeService extends IService {
+
+}
diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/InvitationService.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/InvitationService.java
new file mode 100644
index 0000000..d898219
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/InvitationService.java
@@ -0,0 +1,14 @@
+package com.mcwl.myInvitation.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.mcwl.myInvitation.domain.Invitation;
+
+public interface InvitationService extends IService {
+
+ /**
+ * 获取邀请码
+ * @param userId 用户id
+ * @return 邀请码
+ */
+ String getInvitationCode(Long userId);
+}
diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/CommissionServiceImpl.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/CommissionServiceImpl.java
new file mode 100644
index 0000000..8590de7
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/CommissionServiceImpl.java
@@ -0,0 +1,16 @@
+package com.mcwl.myInvitation.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.myInvitation.domain.Commission;
+import com.mcwl.myInvitation.mapper.CommissionMapper;
+import com.mcwl.myInvitation.service.CommissionService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+
+@Service
+@RequiredArgsConstructor
+public class CommissionServiceImpl extends ServiceImpl implements CommissionService {
+
+
+}
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
new file mode 100644
index 0000000..e3d5032
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/ConsumeServiceImpl.java
@@ -0,0 +1,15 @@
+package com.mcwl.myInvitation.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.myInvitation.domain.Consume;
+import com.mcwl.myInvitation.mapper.ConsumeMapper;
+import com.mcwl.myInvitation.service.ConsumeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+@Service
+@RequiredArgsConstructor
+public class ConsumeServiceImpl extends ServiceImpl implements ConsumeService {
+
+
+}
diff --git a/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/InvitationServiceImpl.java b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/InvitationServiceImpl.java
new file mode 100644
index 0000000..7fb977b
--- /dev/null
+++ b/mcwl-myInvitation/src/main/java/com/mcwl/myInvitation/service/impl/InvitationServiceImpl.java
@@ -0,0 +1,28 @@
+package com.mcwl.myInvitation.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mcwl.common.constant.JwtConstants;
+import com.mcwl.common.utils.JwtUtils;
+import com.mcwl.myInvitation.domain.Invitation;
+import com.mcwl.myInvitation.mapper.InvitationMapper;
+import com.mcwl.myInvitation.service.InvitationService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+@RequiredArgsConstructor
+public class InvitationServiceImpl extends ServiceImpl implements InvitationService {
+
+
+ @Override
+ public String getInvitationCode(Long userId) {
+ // 生成邀请码
+ Map claims = new HashMap<>() ;
+ claims.put(JwtConstants.DETAILS_USER_ID, userId);
+ String invitationCode = JwtUtils.createToken(claims);
+ return invitationCode;
+ }
+}
diff --git a/mcwl-myInvitation/src/main/resources/mapper/myInvitation/CommissionMapper.xml b/mcwl-myInvitation/src/main/resources/mapper/myInvitation/CommissionMapper.xml
new file mode 100644
index 0000000..a93c957
--- /dev/null
+++ b/mcwl-myInvitation/src/main/resources/mapper/myInvitation/CommissionMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mcwl-myInvitation/src/main/resources/mapper/myInvitation/ConsumeMapper.xml b/mcwl-myInvitation/src/main/resources/mapper/myInvitation/ConsumeMapper.xml
new file mode 100644
index 0000000..7eef87e
--- /dev/null
+++ b/mcwl-myInvitation/src/main/resources/mapper/myInvitation/ConsumeMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mcwl-myInvitation/src/main/resources/mapper/myInvitation/InvitationMapper.xml b/mcwl-myInvitation/src/main/resources/mapper/myInvitation/InvitationMapper.xml
new file mode 100644
index 0000000..610e6fa
--- /dev/null
+++ b/mcwl-myInvitation/src/main/resources/mapper/myInvitation/InvitationMapper.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 38cb07c..a2a431f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -228,6 +228,7 @@
mcwl-quartz
mcwl-generator
mcwl-common
+ mcwl-myInvitation
pom