1
0
mirror of https://gitee.com/bookshelfplus/bookshelfplus synced 2025-09-21 01:10:39 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
Files
bookshelfplus/bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/BaseController.java

98 lines
3.6 KiB
Java

package plus.bookshelf.Controller.Controller;
import com.aventrix.jnanoid.jnanoid.NanoIdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import plus.bookshelf.Common.Error.BusinessErrorCode;
import plus.bookshelf.Common.Error.BusinessException;
import plus.bookshelf.Common.Response.CommonReturnType;
import plus.bookshelf.Common.Response.CommonReturnTypeStatus;
import plus.bookshelf.Common.SessionManager.RedisSessionManager;
import plus.bookshelf.Common.SessionManager.SessionManager;
import plus.bookshelf.Service.Model.UserModel;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
public class BaseController {
@Autowired
HttpServletRequest httpServletRequest;
@Autowired
RedisTemplate redisTemplate;
// content-type 常量
public static final String CONTENT_TYPE_FORMED = "application/x-www-form-urlencoded";
// PageHelper分页常量
public static final Integer COMMON_START_PAGE = 1;
public static final Integer COMMON_PAGE_SIZE = 10;
/**
* 获取用户登录状态
*/
public Boolean isLogin() {
SessionManager sessionManager = RedisSessionManager.getInstance(redisTemplate);
return (Boolean) sessionManager.getValue("IS_LOGIN");
// SessionManager sessionManager = LocalSessionManager.getInstance(httpServletRequest);
// return (Boolean) sessionManager.getValue("IS_LOGIN");
}
/**
* 保存用户的登录状态
*
* @return String uuidToken
*/
public String onLogin(UserModel userModel) {
String token = NanoIdUtils.randomNanoId(); // UUID.randomUUID().toString();
SessionManager sessionManager = RedisSessionManager.getInstance(redisTemplate);
sessionManager.setValue(token, userModel.getId());
return token;
// SessionManager sessionManager = LocalSessionManager.getInstance(httpServletRequest);
// sessionManager.setValue("IS_LOGIN", true);
// sessionManager.setValue("user", userModel);
// return;
}
/**
* 用户退出登录
*/
public void onLogout(String token) {
SessionManager sessionManager = RedisSessionManager.getInstance(redisTemplate);
sessionManager.remove(token);
return;
// SessionManager sessionManager = LocalSessionManager.getInstance(httpServletRequest);
// sessionManager.setValue("IS_LOGIN", false);
// sessionManager.remove("user");
// return;
}
// 定义ExceptionHandler解决未被Controller层吸收的Exception
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
public Object handlerException(HttpServletRequest request, Exception ex) {
HashMap<Object, Object> responseData = new HashMap<>();
if (ex instanceof BusinessException) {
BusinessException businessException = (BusinessException) ex;
responseData.put("errCode", businessException.getErrCode());
responseData.put("errMsg", businessException.getErrMsg());
} else {
// 生产环境输出格式化信息
responseData.put("errCode", BusinessErrorCode.UNKNOWN_ERROR.getErrCode());
responseData.put("errMsg", BusinessErrorCode.UNKNOWN_ERROR.getErrMsg());
}
return CommonReturnType.create(responseData, CommonReturnTypeStatus.FAILED);
}
}