PcUserLoginCmd.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.java110.user.cmd.login;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.java110.core.annotation.Java110Cmd;
  4. import com.java110.core.context.ICmdDataFlowContext;
  5. import com.java110.core.event.cmd.AbstractServiceCmdListener;
  6. import com.java110.core.event.cmd.CmdEvent;
  7. import com.java110.core.factory.AuthenticationFactory;
  8. import com.java110.core.factory.GenerateCodeFactory;
  9. import com.java110.dto.store.StoreUserDto;
  10. import com.java110.dto.user.UserDto;
  11. import com.java110.dto.userLogin.UserLoginDto;
  12. import com.java110.intf.store.IStoreInnerServiceSMO;
  13. import com.java110.intf.user.IUserInnerServiceSMO;
  14. import com.java110.intf.user.IUserLoginInnerServiceSMO;
  15. import com.java110.po.userLogin.UserLoginPo;
  16. import com.java110.utils.constant.CommonConstant;
  17. import com.java110.utils.constant.ResponseConstant;
  18. import com.java110.utils.exception.CmdException;
  19. import com.java110.utils.exception.SMOException;
  20. import com.java110.utils.util.Assert;
  21. import com.java110.utils.util.BeanConvertUtil;
  22. import com.java110.utils.util.DateUtil;
  23. import org.slf4j.Logger;
  24. import org.slf4j.LoggerFactory;
  25. import org.springframework.beans.factory.annotation.Autowired;
  26. import org.springframework.http.HttpStatus;
  27. import org.springframework.http.ResponseEntity;
  28. import java.util.HashMap;
  29. import java.util.List;
  30. import java.util.Map;
  31. /**
  32. * 保存编码映射处理类
  33. */
  34. @Java110Cmd(serviceCode = "login.pcUserLogin")
  35. public class PcUserLoginCmd extends AbstractServiceCmdListener {
  36. private final static Logger logger = LoggerFactory.getLogger(PcUserLoginCmd.class);
  37. @Autowired
  38. private IUserLoginInnerServiceSMO userLoginInnerServiceSMOImpl;
  39. @Autowired
  40. private IStoreInnerServiceSMO storeInnerServiceSMOImpl;
  41. @Autowired
  42. private IUserInnerServiceSMO userInnerServiceSMOImpl;
  43. @Override
  44. public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
  45. String paramIn = cmdDataFlowContext.getReqData();
  46. Assert.isJsonObject(paramIn, "用户注册请求参数有误,不是有效的json格式 " + paramIn);
  47. Assert.jsonObjectHaveKey(paramIn, "username", "用户登录,未包含username节点,请检查" + paramIn);
  48. Assert.jsonObjectHaveKey(paramIn, "passwd", "用户登录,未包含passwd节点,请检查" + paramIn);
  49. }
  50. @Override
  51. public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
  52. ResponseEntity responseEntity = null;
  53. JSONObject paramInJson = JSONObject.parseObject(cmdDataFlowContext.getReqData());
  54. //根据AppId 查询 是否有登录的服务,查询登录地址调用
  55. UserDto userDto = new UserDto();
  56. userDto.setName(paramInJson.getString("username"));
  57. userDto.setPassword(paramInJson.getString("passwd"));
  58. userDto.setLevelCds(new String[]{UserDto.LEVEL_CD_ADMIN, UserDto.LEVEL_CD_STAFF});
  59. List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto);
  60. if (userDtos == null || userDtos.size() < 1) {
  61. userDto.setName("");
  62. userDto.setTel(paramInJson.getString("username"));
  63. userDtos = userInnerServiceSMOImpl.getUsers(userDto);
  64. }
  65. if (userDtos == null || userDtos.size() < 1) {
  66. responseEntity = new ResponseEntity<String>("用户或密码错误", HttpStatus.UNAUTHORIZED);
  67. cmdDataFlowContext.setResponseEntity(responseEntity);
  68. return;
  69. }
  70. //检查商户状态
  71. StoreUserDto storeUserDto = new StoreUserDto();
  72. storeUserDto.setUserId(userDtos.get(0).getUserId());
  73. List<StoreUserDto> storeUserDtos = storeInnerServiceSMOImpl.getStoreUserInfo(storeUserDto);
  74. if (storeUserDtos != null && storeUserDtos.size() > 0) {
  75. String state = storeUserDtos.get(0).getState();
  76. if ("48002".equals(state)) {
  77. responseEntity = new ResponseEntity<String>("当前商户限制登录,请联系管理员", HttpStatus.UNAUTHORIZED);
  78. cmdDataFlowContext.setResponseEntity(responseEntity);
  79. return;
  80. }
  81. }
  82. try {
  83. Map userMap = new HashMap();
  84. userMap.put(CommonConstant.LOGIN_USER_ID, userDtos.get(0).getUserId());
  85. userMap.put(CommonConstant.LOGIN_USER_NAME, userDtos.get(0).getUserName());
  86. String token = AuthenticationFactory.createAndSaveToken(userMap);
  87. JSONObject userInfo = BeanConvertUtil.beanCovertJson(userDtos.get(0));
  88. userInfo.remove("userPwd");
  89. userInfo.put("token", token);
  90. //记录登录日志
  91. UserLoginPo userLoginPo = new UserLoginPo();
  92. userLoginPo.setLoginId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_loginId));
  93. userLoginPo.setLoginTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
  94. userLoginPo.setPassword(userDtos.get(0).getPassword());
  95. userLoginPo.setSource(UserLoginDto.SOURCE_WEB);
  96. userLoginPo.setToken(token);
  97. userLoginPo.setUserId(userInfo.getString("userId"));
  98. userLoginPo.setUserName(userInfo.getString("userName"));
  99. userLoginInnerServiceSMOImpl.saveUserLogin(userLoginPo);
  100. responseEntity = new ResponseEntity<String>(userInfo.toJSONString(), HttpStatus.OK);
  101. cmdDataFlowContext.setResponseEntity(responseEntity);
  102. } catch (Exception e) {
  103. logger.error("登录异常:", e);
  104. throw new SMOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "系统内部错误,请联系管理员");
  105. }
  106. }
  107. }