package com.lf.server.controller.all; import com.lf.server.aspect.LogAspect; import com.lf.server.aspect.SysLog; import com.lf.server.config.PropertiesConfig; import com.lf.server.entity.all.ResponseMsg; import com.lf.server.entity.all.StaticData; import com.lf.server.entity.sys.LoginEntity; import com.lf.server.entity.sys.TokenEntity; import com.lf.server.entity.sys.UserEntity; import com.lf.server.helper.*; import com.lf.server.service.sys.LoginService; import com.lf.server.service.sys.TokenService; import com.lf.server.service.sys.UserService; import com.lf.server.service.all.SignService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 签名控制器 * @author WWW * @date 2022-09-21 */ @Api(tags = "运维管理\\签名管理") @RestController @RequestMapping("/sign") public class SignController extends BaseController { @Autowired UserService userService; @Autowired LoginService loginService; @Autowired TokenService tokenService; @Autowired SignService signService; @Autowired PropertiesConfig propertiesConfig; @SysLog() @ApiOperation(value = "跳转首页") @GetMapping({"/", "/toIndex"}) public ModelAndView toIndex(ModelAndView mv, HttpServletRequest req) { mv.setViewName("index"); UserEntity ue = tokenService.getCurrentUser(req); if (ue != null) { mv.addObject("msg", "Hello " + ue.getUname() + " !"); } return mv; } @SysLog() @ApiOperation(value = "跳转登录页") @GetMapping("/toLogin") public ModelAndView toLogin(ModelAndView mv) { mv.setViewName("login"); return mv; } @SysLog() @ApiOperation(value = "数据库监控") @GetMapping(value = "/toDruid") public ModelAndView toDruid(HttpServletRequest req, HttpServletResponse res) { ModelAndView mv = new ModelAndView(); mv.setViewName("druid"); try { UserEntity ue = tokenService.getCurrentUser(req); if (ue != null) { String sessionId = WebHelper.getCookieByKey(StaticData.DRUID_COOKIE_KEY, req); if (StringHelper.isNull(sessionId)) { signService.loginDruid(req, res); } } } catch (Exception ex) { log.error(ex.getMessage() + ex.getStackTrace() + "\n"); } return mv; } @SysLog() @ApiOperation(value = "资源监控") @GetMapping(value = "/toMonitor") public ModelAndView toMonitor(ModelAndView mv, HttpServletRequest req, HttpServletResponse res) { try { mv.setViewName("redirect:/toLogin"); UserEntity ue = tokenService.getCurrentUser(req); if (ue != null) { mv.setViewName("monitor"); } } catch (Exception ex) { log.error(ex.getMessage() + ex.getStackTrace() + "\n"); } return mv; } @SysLog() @ApiOperation(value = "登录") @ApiImplicitParams({ @ApiImplicitParam(name = "user", value = "用戶名", dataType = "UsersEntity", paramType = "body", example = "") }) @PostMapping(value = "/login", produces = "application/json; charset=UTF-8") public ResponseMsg login(@RequestBody UserEntity user, HttpServletRequest req, HttpServletResponse res) { try { if (user == null) { return fail("请输入用户名和密码!", null); } if (StringHelper.isEmpty(user.getUid())) { return fail("用户名不能为空!", null); } if (StringHelper.isEmpty(user.getPwd())) { return fail("密码不能为空!", null); } // 解密 String uid = RsaHelper.decrypt(user.getUid()); String pwd = RsaHelper.decrypt(user.getPwd()); UserEntity ue = userService.selectByUid(uid); if (ue == null) { return fail("用户名不存在!", null); } LoginEntity le = loginService.getNewLogin(ue.getId(), 1, req); if (!Md5Helper.validatePassword(pwd, ue.getPwd())) { le.setStatus(0); le.setDescr("密码错误"); loginService.insertLogin(le); return fail("密码不正确!", null); } Integer rows = loginService.insertLogin(le); if (rows == 0) { return fail("创建登录日志失败!", null); } TokenEntity te = tokenService.getNewToken(ue.getId(), req); rows = tokenService.insertToken(te); if (rows == 0) { return fail("创建令牌信息失败!", null); } tokenService.saveToken(ue, te, req, res); return success(te); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "登出") @GetMapping(value = "/logout") public ResponseMsg logout(HttpServletRequest req, HttpServletResponse res) { try { String token = WebHelper.getToken(req); if (StringHelper.isEmpty(token)) { return fail("没有检测到令牌", false); } Boolean flag = tokenService.logout(token, req, res); return success(flag ? "登出成功" : "登出失败", flag); } catch (Exception ex) { return fail(ex.getMessage(), false); } } @SysLog() @ApiOperation(value = "检查是/否登录") @GetMapping("/check") public ResponseMsg check(HttpServletRequest req, HttpServletResponse res) { try { Boolean flag = tokenService.isLogin(req, res); if (flag) { // 写日志 UserEntity ue = tokenService.getCurrentUser(req); LoginEntity le = loginService.getNewLogin(ue.getId(), 2, req); Integer rows = loginService.insertLogin(le); } return success(flag ? "用户已登录" : "用户未登录", flag); } catch (Exception ex) { return fail(ex.getMessage(), false); } } @SysLog() @ApiOperation(value = "获取当前用户") @GetMapping("/getCurrentUser") public ResponseMsg getCurrentUser(HttpServletRequest req) { try { UserEntity ue = tokenService.getCurrentUser(req); if (ue == null) { return fail("没有找到", null); } return success(ue); } catch (Exception ex) { return fail(ex.getMessage(), null); } } @SysLog() @ApiOperation(value = "获取RSA加密公钥") @GetMapping("/getPublicKey") public ResponseMsg getPublicKey() { try { String key = RsaHelper.getPublicKey(); return success(key); } catch (Exception ex) { return fail(ex.getMessage(), null); } } }