Browse Source

更新menduner 会员相关,增加会员登陆相关接口

DESKTOP-VAEGFGM\zqc 10 months ago
parent
commit
fe90322dfa

+ 4 - 0
menduner/menduner-mall-biz/src/main/java/com/citu/module/menduner/mall/controller/app/packageinfo.java

@@ -0,0 +1,4 @@
+package com.citu.module.menduner.mall.controller.app;
+
+public class packageinfo {
+}

+ 68 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/app/member/AuthController.java

@@ -0,0 +1,68 @@
+package com.citu.module.menduner.reward.controller.app.member;
+
+import cn.hutool.core.util.StrUtil;
+import com.citu.framework.common.pojo.CommonResult;
+import com.citu.framework.security.core.util.SecurityFrameworkUtils;
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthLoginReqVO;
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthLoginRespVO;
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthSmsLoginReqVO;
+import com.citu.module.menduner.reward.service.auth.MendunerMemberAuthService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.security.PermitAll;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+import static com.citu.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "用户 APP - 认证")
+@RestController
+@RequestMapping("/member/auth")
+@Validated
+@Slf4j
+public class AuthController {
+
+
+    private MendunerMemberAuthService authService;
+
+    // ========== 短信登录相关 ==========
+
+    @PostMapping("/sms-login")
+    @Operation(summary = "使用手机 + 验证码登录")
+    public CommonResult<AppAuthLoginRespVO> smsLogin(@RequestBody @Valid AppAuthSmsLoginReqVO reqVO) {
+        return success(authService.smsLogin(reqVO));
+    }
+
+    @PostMapping("/login")
+    @Operation(summary = "使用手机 + 密码登录")
+    public CommonResult<AppAuthLoginRespVO> login(@RequestBody @Valid AppAuthLoginReqVO reqVO) {
+        return success(authService.login(reqVO));
+    }
+
+
+//    @PostMapping("/logout")
+//    @PermitAll
+//    @Operation(summary = "登出系统")
+//    public CommonResult<Boolean> logout(HttpServletRequest request) {
+//        String token = SecurityFrameworkUtils.obtainAuthorization(request,
+//                securityProperties.getTokenHeader(), securityProperties.getTokenParameter());
+//        if (StrUtil.isNotBlank(token)) {
+//            authService.logout(token);
+//        }
+//        return success(true);
+//    }
+
+
+    @Autowired
+    public void setAuthService(MendunerMemberAuthService authService) {
+        this.authService = authService;
+    }
+}

+ 56 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/auth/vo/AppAuthLoginReqVO.java

@@ -0,0 +1,56 @@
+package com.citu.module.menduner.reward.controller.base.auth.vo;
+
+import cn.hutool.core.util.StrUtil;
+import com.citu.framework.common.validation.InEnum;
+import com.citu.framework.common.validation.Mobile;
+import com.citu.module.system.enums.social.SocialTypeEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.AssertTrue;
+import javax.validation.constraints.NotEmpty;
+
+@Schema(description = "用户 APP - 手机 + 密码登录 Request VO,如果登录并绑定社交用户,需要传递 social 开头的参数")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AppAuthLoginReqVO {
+
+    @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
+    @NotEmpty(message = "手机号不能为空")
+    @Mobile
+    private String mobile;
+
+    @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "buzhidao")
+    @NotEmpty(message = "密码不能为空")
+    @Length(min = 4, max = 16, message = "密码长度为 4-16 位")
+    private String password;
+
+    // ========== 绑定社交登录时,需要传递如下参数 ==========
+
+    @Schema(description = "社交平台的类型,参见 SocialTypeEnum 枚举值", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    @InEnum(SocialTypeEnum.class)
+    private Integer socialType;
+
+    @Schema(description = "授权码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private String socialCode;
+
+    @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
+    private String socialState;
+
+    @AssertTrue(message = "授权码不能为空")
+    public boolean isSocialCodeValid() {
+        return socialType == null || StrUtil.isNotEmpty(socialCode);
+    }
+
+    @AssertTrue(message = "授权 state 不能为空")
+    public boolean isSocialState() {
+        return socialType == null || StrUtil.isNotEmpty(socialState);
+    }
+
+}

+ 38 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/auth/vo/AppAuthLoginRespVO.java

@@ -0,0 +1,38 @@
+package com.citu.module.menduner.reward.controller.base.auth.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "用户 APP - 登录 Response VO")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AppAuthLoginRespVO {
+
+    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Long userId;
+
+    @Schema(description = "访问令牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "happy")
+    private String accessToken;
+
+    @Schema(description = "刷新令牌", requiredMode = Schema.RequiredMode.REQUIRED, example = "nice")
+    private String refreshToken;
+
+    @Schema(description = "过期时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    private LocalDateTime expiresTime;
+
+    /**
+     * 仅社交登录、社交绑定时会返回
+     *
+     * 为什么需要返回?微信公众号、微信小程序支付需要传递 openid 给支付接口
+     */
+    @Schema(description = "社交用户 openid", example = "qq768")
+    private String openid;
+
+}

+ 58 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/controller/base/auth/vo/AppAuthSmsLoginReqVO.java

@@ -0,0 +1,58 @@
+package com.citu.module.menduner.reward.controller.base.auth.vo;
+
+import cn.hutool.core.util.StrUtil;
+import com.citu.framework.common.validation.InEnum;
+import com.citu.framework.common.validation.Mobile;
+import com.citu.module.system.enums.social.SocialTypeEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.validator.constraints.Length;
+
+import javax.validation.constraints.AssertTrue;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Pattern;
+
+@Schema(description = "用户 APP - 手机 + 验证码登录 Request VO,如果登录并绑定社交用户,需要传递 social 开头的参数")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AppAuthSmsLoginReqVO {
+
+    @Schema(description = "手机号", requiredMode = Schema.RequiredMode.REQUIRED, example = "15601691300")
+    @NotEmpty(message = "手机号不能为空")
+    @Mobile
+    private String mobile;
+
+    @Schema(description = "手机验证码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    @NotEmpty(message = "手机验证码不能为空")
+    @Length(min = 4, max = 6, message = "手机验证码长度为 4-6 位")
+    @Pattern(regexp = "^[0-9]+$", message = "手机验证码必须都是数字")
+    private String code;
+
+    // ========== 绑定社交登录时,需要传递如下参数 ==========
+
+    @Schema(description = "社交平台的类型,参见 SocialTypeEnum 枚举值", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
+    @InEnum(SocialTypeEnum.class)
+    private Integer socialType;
+
+    @Schema(description = "授权码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private String socialCode;
+
+    @Schema(description = "state", requiredMode = Schema.RequiredMode.REQUIRED, example = "9b2ffbc1-7425-4155-9894-9d5c08541d62")
+    private String socialState;
+
+    @AssertTrue(message = "授权码不能为空")
+    public boolean isSocialCodeValid() {
+        return socialType == null || StrUtil.isNotEmpty(socialCode);
+    }
+
+    @AssertTrue(message = "授权 state 不能为空")
+    public boolean isSocialState() {
+        return socialType == null || StrUtil.isNotEmpty(socialState);
+    }
+
+}

+ 11 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/auth/MendunerMemberAuthService.java

@@ -0,0 +1,11 @@
+package com.citu.module.menduner.reward.service.auth;
+
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthLoginReqVO;
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthLoginRespVO;
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthSmsLoginReqVO;
+
+public interface MendunerMemberAuthService {
+    AppAuthLoginRespVO smsLogin(AppAuthSmsLoginReqVO reqVO);
+
+    AppAuthLoginRespVO login(AppAuthLoginReqVO reqVO);
+}

+ 26 - 0
menduner/menduner-reward-biz/src/main/java/com/citu/module/menduner/reward/service/auth/MendunerMemberAuthServiceImpl.java

@@ -0,0 +1,26 @@
+package com.citu.module.menduner.reward.service.auth;
+
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthLoginReqVO;
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthLoginRespVO;
+import com.citu.module.menduner.reward.controller.base.auth.vo.AppAuthSmsLoginReqVO;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MendunerMemberAuthServiceImpl  implements MendunerMemberAuthService{
+
+
+    @Override
+    public AppAuthLoginRespVO smsLogin(AppAuthSmsLoginReqVO reqVO) {
+
+
+        return null;
+    }
+
+    @Override
+    public AppAuthLoginRespVO login(AppAuthLoginReqVO reqVO) {
+
+        return null;
+    }
+
+
+}