package com.moral.api.controller; import com.moral.constant.Constants; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.moral.api.entity.Group; import com.moral.api.entity.User; import com.moral.api.service.GroupService; import com.moral.api.service.UserService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import com.moral.util.AESUtils; import com.moral.util.MD5Utils; import com.moral.util.TokenUtils; import com.moral.util.WebUtils; @Slf4j @Api(tags = {"登陆"}) @RestController public class LoginController { @Autowired private UserService userService; @Autowired private GroupService groupService; @Value("${AES.KEY}") private String AESKey; @ApiOperation(value = "登陆", notes = "登陆") @ApiImplicitParams({ @ApiImplicitParam(name = "account", value = "账户", required = false, paramType = "query", dataType = "String"), @ApiImplicitParam(name = "password", value = "密码", required = false, paramType = "query", dataType = "String") }) @RequestMapping(value = "login", method = RequestMethod.POST) public ResultMessage login(HttpServletRequest request) { Map parameters = WebUtils.getParametersStartingWith(request, null); if (!(parameters.containsKey("account") && parameters.containsKey("password"))) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } //接收参数 String password = parameters.get("password").toString(); //密码解密 password = AESUtils.decrypt(password, AESKey); User user = userService.selectUserInfo(parameters); //校验账户 if (user == null) { return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode(), ResponseCodeEnum.ACCOUNT_NOT_EXIST.getMsg()); } //校验密码 if (!MD5Utils.saltMD5Verify(password, user.getPassword())) { return ResultMessage.fail(ResponseCodeEnum.PASSWORD_INVALID.getCode(), ResponseCodeEnum.PASSWORD_INVALID.getMsg()); } //校验是否删除 if (Constants.DELETE.equals(user.getIsDelete())) { return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_IS_DELETE.getCode(), ResponseCodeEnum.ACCOUNT_IS_DELETE.getMsg()); } //校验是否过期 if (user.getExpireTime() != null && user.getExpireTime().getTime() < System.currentTimeMillis()) { return ResultMessage.fail(ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getCode(), ResponseCodeEnum.ACCOUNT_IS_EXPIRE.getMsg()); } Map result = userService.login(user); if (!result.containsKey("token")) { return ResultMessage.fail(ResponseCodeEnum.TOKEN_CREATE_ERROR.getCode(), ResponseCodeEnum.TOKEN_CREATE_ERROR.getMsg()); } return ResultMessage.ok(); } @ApiOperation(value = "注销", notes = "注销") @RequestMapping(value = "logout", method = RequestMethod.POST) public ResultMessage logout(HttpServletRequest request) { Map parameters = WebUtils.getParametersStartingWith(request, null); if (!parameters.containsKey("uid")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } String userId = request.getParameter("uid"); String token = request.getHeader("token"); TokenUtils.destoryToken(userId, token); return ResultMessage.ok(); } @ApiOperation(value = "添加组", notes = "添加组") @ApiImplicitParams({ @ApiImplicitParam(name = "groupName", value = "组名", required = true, paramType = "query", dataType = "String") }) @RequestMapping(value = "addGroup", method = RequestMethod.POST) private ResultMessage addGroup(Group group, HttpServletRequest request) { String currentUserId = request.getHeader("uid"); Map map = groupService.addGroup(group, currentUserId); String msg = map.get("msg").toString(); boolean flag = Boolean.parseBoolean(map.get("flag").toString()); if (flag) { return ResultMessage.ok(msg); } return ResultMessage.fail(msg); } }