| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package cn.com.lzt.common.controller;
- import com.xcgl.weixin.base.ApiException;
- import org.apache.log4j.Logger;
- import org.jeecgframework.core.common.controller.BaseController;
- import org.jeecgframework.core.constant.Globals;
- import org.jeecgframework.core.util.ContextHolderUtils;
- import org.jeecgframework.core.util.IpUtil;
- import org.jeecgframework.core.util.ResourceUtil;
- import org.jeecgframework.core.util.oConvertUtils;
- import org.jeecgframework.web.system.manager.ClientManager;
- import org.jeecgframework.web.system.pojo.base.Client;
- import org.jeecgframework.web.system.pojo.base.TSDepart;
- import org.jeecgframework.web.system.pojo.base.TSUser;
- import org.jeecgframework.web.system.service.MutiLangServiceI;
- import org.jeecgframework.web.system.service.SystemService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- public class BaseLztController extends BaseController {
- private Logger logger = Logger.getLogger(this.getClass());
- @Autowired
- protected SystemService systemService;
- @Autowired
- private MutiLangServiceI mutiLangService;
- /**
- * 校验用户授权,后续可以优化
- *
- * @param forceLogin 是否强制用户登录
- * @return
- */
- protected TSUser verifyMobileUser(boolean forceLogin) {
- try {
- TSUser user = ResourceUtil.getSessionUser();
- if(user != null) {
- return user;
- }
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
- .getRequestAttributes())
- .getRequest();
- String openid = oConvertUtils.getString(request.getParameter("openid"));
- if (org.apache.commons.lang.xwork.StringUtils.isBlank(openid)) {
- throw new ApiException(300, "openid required");
- }
- List<TSUser> userList = systemService.findByProperty(TSUser.class, "openid", openid);
- if (userList.size() == 0) {
- throw new ApiException(301, "用户未找到");
- }
- user = userList.get(0);
- Long orgNum = systemService.getCountForJdbc("select count(1) from t_s_user_org where user_id = '"
- + user.getId() + "'" + " and status = '" + Globals.BELONG_STATUS_NORMAL + "'"
- + " and ifpluralism = '" + Globals.PLURALISM_NO + "'");
- if (orgNum == 1) {
- Map<String, Object> userOrgMap = systemService.findOneForJdbc(
- "select org_id as orgId from t_s_user_org where user_id=? and status=? and ifpluralism=? ",
- user.getId(), Globals.BELONG_STATUS_NORMAL.toString(), Globals.PLURALISM_NO.toString());
- saveLoginSuccessInfo(request, user, (String) userOrgMap.get("orgId"));
- }
- return user;
- } catch (ApiException e) {
- if (forceLogin) throw e;
- }
- return null;
- }
- /**
- * 保存用户登录的信息,并将当前登录用户的组织机构赋值到用户实体中;
- * @param req request
- * @param user 当前登录用户
- * @param orgId 组织主键
- */
- private void saveLoginSuccessInfo(HttpServletRequest req, TSUser user, String orgId) {
- String message = null;
- TSDepart currentDepart = systemService.get(TSDepart.class, orgId);
- user.setCurrentDepart(currentDepart);
- HttpSession session = ContextHolderUtils.getSession();
- //update-begin--update---author:scott-----------date:20151218-------for:解决分布式登录问题----------
- //update-begin--update---author:dangzhenghui-----------date:20170429-------for:修正添加用户部门----------
- user.setDepartid(orgId);
- //update-begin--update---author:dangzhenghui-----------date:20170429-------for:修正添加用户部门----------
- session.setAttribute(ResourceUtil.LOCAL_CLINET_USER, user);
- //update-end--author:scott-----------date:20151218-------for:解决分布式登录问题---------------------
- message = mutiLangService.getLang("common.user") + ": " + user.getUserName() + "["+ currentDepart.getDepartname() + "]" + mutiLangService.getLang("common.login.success");
- Client clientOld = ClientManager.getInstance().getClient(session.getId());
- if(clientOld == null || clientOld.getUser() ==null ||user.getUserName().equals(clientOld.getUser().getUserName())){
- Client client = new Client();
- client.setIp(IpUtil.getIpAddr(req));
- client.setLogindatetime(new Date());
- client.setUser(user);
- ClientManager.getInstance().addClinet(session.getId(), client);
- } else {//如果不一致,则注销session并通过session=req.getSession(true)初始化session
- ClientManager.getInstance().removeClinet(session.getId());
- session.invalidate();
- session = req.getSession(true);//session初始化
- session.setAttribute(ResourceUtil.LOCAL_CLINET_USER, user);
- // session.setAttribute("randCode",req.getParameter("randCode"));//保存验证码
- // checkuser(user,req);
- }
- systemService.addLog(message, Globals.Log_Type_LOGIN, Globals.Log_Leavel_INFO);
- }
- }
|