PcUserLoginCmd.java 5.5 KB

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