mitao
2024-09-07 2862c3e4da3adbb4bea43151514f0c43b86476d6
xinquan-auth/src/main/java/com/xinquan/auth/controller/TokenController.java
@@ -1,8 +1,11 @@
package com.xinquan.auth.controller;
import com.xinquan.auth.form.AppChangePwdBody;
import com.xinquan.auth.form.AppLoginBody;
import com.xinquan.auth.form.AppRegisterBody;
import com.xinquan.auth.form.LoginBody;
import com.xinquan.auth.form.RegisterBody;
import com.xinquan.auth.form.VerifyResultVO;
import com.xinquan.auth.service.SysLoginService;
import com.xinquan.common.core.domain.R;
import com.xinquan.common.core.utils.JwtUtils;
@@ -13,16 +16,21 @@
import com.xinquan.system.api.domain.SysRole;
import com.xinquan.system.api.domain.SysUser;
import com.xinquan.system.api.feignClient.SysUserClient;
import com.xinquan.system.api.model.AppCaptchaBody;
import com.xinquan.system.api.model.AppLoginUser;
import com.xinquan.system.api.model.AppVerifyCellPhoneBody;
import com.xinquan.system.api.model.AppWXLoginBody;
import com.xinquan.system.api.model.LoginUser;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.Date;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@@ -52,11 +60,15 @@
     * @param cellPhone 手机号码
     * @return
     */
    @GetMapping("/app/send-captcha-code")
    @GetMapping("/app/sendCaptchaCode")
    @ApiOperation(value = "发送验证码",tags = {"APP端"})
    @ApiImplicitParams({@ApiImplicitParam(name = "cellPhone",value = "手机号码",required = true,dataType = "String",paramType = "query")})
    public R<?> sendCaptchaCode(@RequestParam("cellPhone") String cellPhone) {
        sysLoginService.sendCaptchaCode(cellPhone);
    @ApiImplicitParams({
            @ApiImplicitParam(name = "cellPhone", value = "手机号码", required = true, dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "type", value = "类型 1=注册 2=验证码登录 3=找回密码 4=第三方登录后验证手机", required = true, dataType = "Integer", paramType = "query")})
    public R<?> sendCaptchaCode(
            @RequestParam(value = "cellPhone", required = true) String cellPhone,
            @RequestParam("type") Integer type) {
        sysLoginService.sendCaptchaCode(cellPhone, type);
        return R.ok();
    }
@@ -67,13 +79,112 @@
     */
    @ApiOperation(value = "注册账户",tags = {"APP端"})
    @PostMapping("/app/register")
    public R<?> appRegister(@RequestBody AppRegisterBody appRegisterBody)
    public R<AppLoginUser> appRegister(@Validated @RequestBody AppRegisterBody appRegisterBody)
    {
        // 用户注册
        sysLoginService.appRegister(appRegisterBody);
        AppLoginUser appLoginUser = sysLoginService.appRegister(appRegisterBody);
        return R.ok(tokenService.createToken4AppLoginUser(appLoginUser));
    }
    /**
     * 账号密码登录
     *
     * @param body
     * @return
     */
    @ApiOperation(value = "账号密码登录", tags = {"APP端"})
    @PostMapping("/app/login")
    public R<AppLoginUser> appLogin(@Validated @RequestBody AppLoginBody body) {
        AppLoginUser appLoginUser = sysLoginService.appLogin(body);
        return R.ok(tokenService.createToken4AppLoginUser(appLoginUser));
    }
    /**
     * 验证码登录
     *
     * @param body
     * @return
     */
    @ApiOperation(value = "验证码登录", tags = {"APP端"})
    @PostMapping("/app/captchaLogin")
    public R<AppLoginUser> appCaptchaLogin(@Validated @RequestBody AppCaptchaBody body) {
        AppLoginUser appLoginUser = sysLoginService.appCaptchaLogin(body);
        return R.ok(tokenService.createToken4AppLoginUser(appLoginUser));
    }
    /**
     * 验证手机号
     *
     * @param body
     * @return
     */
    @ApiOperation(value = "忘记密码-验证手机号", tags = {"APP端"})
    @PostMapping("/app/verifyPhone")
    public R<VerifyResultVO> verifyPhone(@Validated @RequestBody AppCaptchaBody body) {
        return R.ok(sysLoginService.verifyPhone(body));
    }
    /**
     * 设置新密码
     *
     * @param body
     * @return
     */
    @ApiOperation(value = "设置新密码", tags = {"APP端"})
    @PostMapping("/app/changePassword")
    public R<?> changePassword(@Validated @RequestBody AppChangePwdBody body) {
        sysLoginService.changePassword(body);
        return R.ok();
    }
    /**
     * APP微信登录
     *
     * @param body
     * @return
     */
    @ApiOperation(value = "微信登录", tags = {"APP端"})
    @PostMapping("/app/wxLogin")
    public R<AppLoginUser> thirdLogin(@Validated @RequestBody AppWXLoginBody body) {
        AppLoginUser appLoginUser = sysLoginService.wxLogin(body);
        return R.ok(tokenService.createToken4AppLoginUser(appLoginUser));
    }
    /**
     * 苹果登录
     *
     * @param appleId
     * @return
     */
    @ApiOperation(value = "苹果登录", tags = {"APP端"})
    @PostMapping("/app/appleLogin")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "appleId", value = "苹果ID", required = true, dataType = "String", paramType = "query")})
    public R<AppLoginUser> appleLogin(
            @RequestParam(value = "appleId", required = true) String appleId) {
        AppLoginUser appLoginUser = sysLoginService.appleLogin(appleId);
        return R.ok(tokenService.createToken4AppLoginUser(appLoginUser));
    }
    /**
     * 微信苹果登录-验证手机号
     *
     * @param body
     * @return
     */
    @ApiOperation(value = "微信苹果登录-验证手机号", tags = {"APP端"})
    @PostMapping("/app/verifyCellPhone")
    public R<?> verifyCellPhone(@Validated @RequestBody AppVerifyCellPhoneBody body) {
        return R.ok(tokenService.createToken4AppLoginUser(
                sysLoginService.verifyCellPhone(body)));
    }
    /**
     * 管理后台登录
     *
     * @param form
     * @return
     */
    @ApiOperation(value = "管理后台登录",tags = {"管理后台"})
    @PostMapping("login")
    public R<?> login(@RequestBody LoginBody form)
@@ -92,7 +203,7 @@
        // 修改用户最后登录时间
        SysUser sysUser = new SysUser();
        sysUser.setUserId(userInfo.getSysUser().getUserId());
        sysUser.setLoginDate(new Date());
        sysUser.setLoginDate(LocalDateTime.now());
        System.out.println("修改用户登录时间"+sysUser);
        userClient.updateSysUser(sysUser);
        // 获取登录token