UserLoginController.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package com.goafanti.user.controller;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.List;
  5. import java.util.UUID;
  6. import javax.annotation.Resource;
  7. import javax.servlet.http.HttpServletRequest;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.apache.shiro.SecurityUtils;
  10. import org.apache.shiro.web.util.SavedRequest;
  11. import org.apache.shiro.web.util.WebUtils;
  12. import org.springframework.stereotype.Controller;
  13. import org.springframework.ui.Model;
  14. import org.springframework.web.bind.annotation.RequestMapping;
  15. import org.springframework.web.bind.annotation.RequestMethod;
  16. import org.springframework.web.bind.annotation.ResponseBody;
  17. import org.springframework.web.servlet.ModelAndView;
  18. import org.springframework.web.servlet.view.RedirectView;
  19. import com.alibaba.fastjson.JSON;
  20. import com.alibaba.fastjson.JSONObject;
  21. import com.goafanti.app.bo.UserBasicInfo;
  22. import com.goafanti.common.bo.Result;
  23. import com.goafanti.common.constant.ErrorConstants;
  24. import com.goafanti.common.controller.BaseController;
  25. import com.goafanti.common.dao.AdminMapper;
  26. import com.goafanti.common.model.Admin;
  27. import com.goafanti.common.model.MessageConsumer;
  28. import com.goafanti.common.model.MessageProducer;
  29. import com.goafanti.common.model.User;
  30. import com.goafanti.common.utils.TimeUtils;
  31. import com.goafanti.common.utils.VerifyCodeUtils;
  32. import com.goafanti.core.shiro.token.TokenManager;
  33. import com.goafanti.message.bo.MessageBo;
  34. import com.goafanti.message.service.MessageService;
  35. import com.goafanti.user.service.UserService;
  36. @Controller
  37. public class UserLoginController extends BaseController {
  38. @Resource
  39. private UserService userService;
  40. @Resource
  41. private AdminMapper adminMapper;
  42. @Resource
  43. private MessageService messageService;
  44. @RequestMapping(value = "/login", method = RequestMethod.GET)
  45. @ResponseBody
  46. public Result login(HttpServletRequest request, Model model) {
  47. Result res = new Result();
  48. TokenManager.logout();
  49. return res;
  50. }
  51. @RequestMapping(value = "/login", method = RequestMethod.POST)
  52. public ModelAndView doLogin(User user, Boolean rememberMe, HttpServletRequest request, ModelAndView modelview) {
  53. TokenManager.login(user, rememberMe);
  54. RedirectView rv = new RedirectView();
  55. rv.setUrl(request.getContextPath() + "/index");
  56. rv.setExposeModelAttributes(false);
  57. modelview.setView(rv);
  58. return modelview;
  59. }
  60. /**
  61. * 用户登录
  62. *
  63. * @param user
  64. * @param remember
  65. * @param request
  66. * @return
  67. */
  68. @RequestMapping(value = "/signin", method = RequestMethod.POST)
  69. @ResponseBody
  70. public Result signin(User user, Boolean remember, HttpServletRequest request) {
  71. Result res = new Result();
  72. JSONObject jo = (JSONObject) JSON.toJSON(TokenManager.login(user, remember));
  73. SavedRequest sr = WebUtils.getAndClearSavedRequest(request);
  74. UserBasicInfo ubi=userService.selectBaseInfo();
  75. if (sr != null) {
  76. jo.put("requestURI", sr.getRequestURI());
  77. jo.put("queryString", sr.getQueryString());
  78. }
  79. jo.put("easemobName",ubi.getEasemobName());
  80. jo.put("easemobPass",ubi.getEasemobPass());
  81. res.setToken(SecurityUtils.getSubject().getSession().getId());
  82. res.setData(jo);
  83. // 发送推送消息
  84. sendMessageAfterLogin();
  85. return res;
  86. }
  87. /**
  88. * 管理端登录
  89. *
  90. * @param user
  91. * @param remember
  92. * @param request
  93. * @return
  94. */
  95. @RequestMapping(value = "/managesignin", method = RequestMethod.POST)
  96. @ResponseBody
  97. public Result managesignin(Admin admin, Boolean remember, HttpServletRequest request) {
  98. Result res = new Result();
  99. String mobile=adminMapper.selectStatusByMobile(admin.getMobile());
  100. if("锁定".equals(mobile)){
  101. res.getError().add(buildError("","用户已被锁定不能登录"));
  102. return res;
  103. }
  104. if("注销".equals(mobile)){
  105. res.getError().add(buildError("","用户已被注销"));
  106. return res;
  107. }
  108. res.setData(TokenManager.manageLogin(admin, remember));
  109. return res;
  110. }
  111. /**
  112. * 忘记密码 使用手机号+手机验证码登录
  113. *
  114. * @param mobile
  115. * @param mobileCode
  116. * @param type
  117. * @return
  118. */
  119. @RequestMapping(value = "/mobileSigin", method = RequestMethod.POST)
  120. @ResponseBody
  121. public Result mobileSignIn(User user, String mobileCode) {
  122. Result res = new Result();
  123. if (StringUtils.isBlank(user.getMobile())) {
  124. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "手机号"));
  125. return res;
  126. }
  127. if (TimeUtils.checkOverTime("register")) {
  128. res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "手机验证码超时失效"));
  129. return res;
  130. }
  131. if (!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode)) {
  132. res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "手机验证码错误"));
  133. return res;
  134. }
  135. return res;
  136. }
  137. /**
  138. * 登陆时查询未发送消息指定发送
  139. */
  140. private void sendMessageAfterLogin(){
  141. //更新 message_producer
  142. User u = TokenManager.getUserToken();
  143. if(u != null){
  144. List<MessageBo> boList = messageService.selectSyncMessage(u.getId());
  145. if(boList != null && boList.size()>0){
  146. List<MessageProducer> producers = new ArrayList<MessageProducer>();
  147. List<MessageConsumer> consumers = new ArrayList<MessageConsumer>();
  148. MessageProducer mp = null;
  149. MessageConsumer mc = null;
  150. Date date = new Date();
  151. for(MessageBo bo : boList){
  152. mp = new MessageProducer();
  153. mp.setId(bo.getId());
  154. mp.setSendTime(date);
  155. producers.add(mp);
  156. mc = new MessageConsumer();
  157. mc.setId(UUID.randomUUID().toString());
  158. mc.setConsumerId(TokenManager.getUserId());
  159. mc.setMessageId(bo.getMessageId());
  160. consumers.add(mc);
  161. }
  162. if(producers.size()>0)messageService.updateMessageProducer(producers);
  163. //新增 message_consumer
  164. if(consumers.size()>0)messageService.insertBatchConsumer(consumers);
  165. }
  166. messageService.updateJpushEasemobAccount(null, null, null,null);
  167. }
  168. }
  169. }