BaseLztController.java 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package cn.com.lzt.common.controller;
  2. import com.xcgl.weixin.base.ApiException;
  3. import org.apache.log4j.Logger;
  4. import org.jeecgframework.core.common.controller.BaseController;
  5. import org.jeecgframework.core.constant.Globals;
  6. import org.jeecgframework.core.util.ContextHolderUtils;
  7. import org.jeecgframework.core.util.IpUtil;
  8. import org.jeecgframework.core.util.ResourceUtil;
  9. import org.jeecgframework.core.util.oConvertUtils;
  10. import org.jeecgframework.web.system.manager.ClientManager;
  11. import org.jeecgframework.web.system.pojo.base.Client;
  12. import org.jeecgframework.web.system.pojo.base.TSDepart;
  13. import org.jeecgframework.web.system.pojo.base.TSUser;
  14. import org.jeecgframework.web.system.service.MutiLangServiceI;
  15. import org.jeecgframework.web.system.service.SystemService;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.web.context.request.RequestContextHolder;
  18. import org.springframework.web.context.request.ServletRequestAttributes;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpSession;
  21. import java.util.Date;
  22. import java.util.List;
  23. import java.util.Map;
  24. public class BaseLztController extends BaseController {
  25. private Logger logger = Logger.getLogger(this.getClass());
  26. @Autowired
  27. protected SystemService systemService;
  28. @Autowired
  29. private MutiLangServiceI mutiLangService;
  30. /**
  31. * 校验用户授权,后续可以优化
  32. *
  33. * @param forceLogin 是否强制用户登录
  34. * @return
  35. */
  36. protected TSUser verifyMobileUser(boolean forceLogin) {
  37. try {
  38. TSUser user = ResourceUtil.getSessionUser();
  39. if(user != null) {
  40. return user;
  41. }
  42. HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
  43. .getRequestAttributes())
  44. .getRequest();
  45. String openid = oConvertUtils.getString(request.getParameter("openid"));
  46. if (org.apache.commons.lang.xwork.StringUtils.isBlank(openid)) {
  47. throw new ApiException(300, "openid required");
  48. }
  49. List<TSUser> userList = systemService.findByProperty(TSUser.class, "openid", openid);
  50. if (userList.size() == 0) {
  51. throw new ApiException(301, "用户未找到");
  52. }
  53. user = userList.get(0);
  54. Long orgNum = systemService.getCountForJdbc("select count(1) from t_s_user_org where user_id = '"
  55. + user.getId() + "'" + " and status = '" + Globals.BELONG_STATUS_NORMAL + "'"
  56. + " and ifpluralism = '" + Globals.PLURALISM_NO + "'");
  57. if (orgNum == 1) {
  58. Map<String, Object> userOrgMap = systemService.findOneForJdbc(
  59. "select org_id as orgId from t_s_user_org where user_id=? and status=? and ifpluralism=? ",
  60. user.getId(), Globals.BELONG_STATUS_NORMAL.toString(), Globals.PLURALISM_NO.toString());
  61. saveLoginSuccessInfo(request, user, (String) userOrgMap.get("orgId"));
  62. }
  63. return user;
  64. } catch (ApiException e) {
  65. if (forceLogin) throw e;
  66. }
  67. return null;
  68. }
  69. /**
  70. * 保存用户登录的信息,并将当前登录用户的组织机构赋值到用户实体中;
  71. * @param req request
  72. * @param user 当前登录用户
  73. * @param orgId 组织主键
  74. */
  75. private void saveLoginSuccessInfo(HttpServletRequest req, TSUser user, String orgId) {
  76. String message = null;
  77. TSDepart currentDepart = systemService.get(TSDepart.class, orgId);
  78. user.setCurrentDepart(currentDepart);
  79. HttpSession session = ContextHolderUtils.getSession();
  80. //update-begin--update---author:scott-----------date:20151218-------for:解决分布式登录问题----------
  81. //update-begin--update---author:dangzhenghui-----------date:20170429-------for:修正添加用户部门----------
  82. user.setDepartid(orgId);
  83. //update-begin--update---author:dangzhenghui-----------date:20170429-------for:修正添加用户部门----------
  84. session.setAttribute(ResourceUtil.LOCAL_CLINET_USER, user);
  85. //update-end--author:scott-----------date:20151218-------for:解决分布式登录问题---------------------
  86. message = mutiLangService.getLang("common.user") + ": " + user.getUserName() + "["+ currentDepart.getDepartname() + "]" + mutiLangService.getLang("common.login.success");
  87. Client clientOld = ClientManager.getInstance().getClient(session.getId());
  88. if(clientOld == null || clientOld.getUser() ==null ||user.getUserName().equals(clientOld.getUser().getUserName())){
  89. Client client = new Client();
  90. client.setIp(IpUtil.getIpAddr(req));
  91. client.setLogindatetime(new Date());
  92. client.setUser(user);
  93. ClientManager.getInstance().addClinet(session.getId(), client);
  94. } else {//如果不一致,则注销session并通过session=req.getSession(true)初始化session
  95. ClientManager.getInstance().removeClinet(session.getId());
  96. session.invalidate();
  97. session = req.getSession(true);//session初始化
  98. session.setAttribute(ResourceUtil.LOCAL_CLINET_USER, user);
  99. // session.setAttribute("randCode",req.getParameter("randCode"));//保存验证码
  100. // checkuser(user,req);
  101. }
  102. systemService.addLog(message, Globals.Log_Type_LOGIN, Globals.Log_Leavel_INFO);
  103. }
  104. }