| package com.ruoyi.auth.controller; | 
|   | 
| import javax.servlet.http.HttpServletRequest; | 
|   | 
| import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto; | 
| import com.ruoyi.system.api.model.AppMiniLoginDto; | 
| import com.ruoyi.system.api.model.AppMiniLoginVo; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiOperation; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.web.bind.annotation.DeleteMapping; | 
| import org.springframework.web.bind.annotation.PostMapping; | 
| import org.springframework.web.bind.annotation.RequestBody; | 
| import org.springframework.web.bind.annotation.RestController; | 
| import com.ruoyi.auth.form.LoginBody; | 
| import com.ruoyi.auth.form.RegisterBody; | 
| import com.ruoyi.auth.service.SysLoginService; | 
| import com.ruoyi.common.core.domain.R; | 
| import com.ruoyi.common.core.utils.JwtUtils; | 
| import com.ruoyi.common.core.utils.StringUtils; | 
| import com.ruoyi.common.security.auth.AuthUtil; | 
| import com.ruoyi.common.security.service.TokenService; | 
| import com.ruoyi.common.security.utils.SecurityUtils; | 
| import com.ruoyi.system.api.model.LoginUser; | 
|   | 
| /** | 
|  * token 控制 | 
|  *  | 
|  * @author jqs | 
|  */ | 
| @RestController | 
| @Api(value = "系统和小程序登录", tags = "系统和小程序登录") | 
|   | 
| public class TokenController | 
| { | 
|     @Autowired | 
|     private TokenService tokenService; | 
|   | 
|     @Autowired | 
|     private SysLoginService sysLoginService; | 
|   | 
|     @ApiOperation("系统登录") | 
|     @PostMapping("login") | 
|     public R<?> login(@RequestBody LoginBody form) | 
|     { | 
|         // 用户登录 | 
|         LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword()); | 
|         // 获取登录token | 
|         return R.ok(tokenService.createToken(userInfo)); | 
|     } | 
|   | 
|     @ApiOperation("小程序登录") | 
|     @PostMapping("miniLogin") | 
|     public R<?> miniLogin(@RequestBody AppMiniLoginDto appMiniLoginDto) | 
|     { | 
|         // 小程序用户登录 | 
|         AppMiniLoginVo appMiniLoginVo = sysLoginService.miniLogin(appMiniLoginDto); | 
|         // 获取登录token | 
|         return R.ok(tokenService.createMiniToken(appMiniLoginVo)); | 
|     } | 
|   | 
|     @ApiOperation("小程序注册") | 
|     @PostMapping("miniRegister") | 
|     public R<?> miniRegister(@RequestBody AppMiniRegisterDto appUserRegisterDto) | 
|     { | 
|         // 小程序用户登录 | 
|         AppMiniLoginVo appMiniLoginVo = sysLoginService.miniRegister(appUserRegisterDto); | 
|         // 获取登录token | 
|         return R.ok(tokenService.createMiniToken(appMiniLoginVo)); | 
|     } | 
|   | 
|     @DeleteMapping("logout") | 
|     public R<?> logout(HttpServletRequest request) | 
|     { | 
|         String token = SecurityUtils.getToken(request); | 
|         if (StringUtils.isNotEmpty(token)) | 
|         { | 
|             String username = JwtUtils.getUserName(token); | 
|             // 删除用户缓存记录 | 
|             AuthUtil.logoutByToken(token); | 
|             // 记录用户退出日志 | 
|             sysLoginService.logout(username); | 
|         } | 
|         return R.ok(); | 
|     } | 
|   | 
|     @PostMapping("refresh") | 
|     public R<?> refresh(HttpServletRequest request) | 
|     { | 
|         LoginUser loginUser = tokenService.getLoginUser(request); | 
|         if (StringUtils.isNotNull(loginUser)) | 
|         { | 
|             // 刷新令牌有效期 | 
|             tokenService.refreshToken(loginUser); | 
|             return R.ok(); | 
|         } | 
|         return R.ok(); | 
|     } | 
|   | 
|     @PostMapping("register") | 
|     public R<?> register(@RequestBody RegisterBody registerBody) | 
|     { | 
|         // 用户注册 | 
|         sysLoginService.register(registerBody.getUsername(), registerBody.getPassword()); | 
|         return R.ok(); | 
|     } | 
| } |