| New file |
| | |
| | | package com.java110.api.listener.login; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.api.listener.AbstractServiceApiDataFlowListener; |
| | | import com.java110.core.annotation.Java110Listener; |
| | | import com.java110.core.context.DataFlowContext; |
| | | import com.java110.core.event.service.api.ServiceDataFlowEvent; |
| | | import com.java110.core.factory.AuthenticationFactory; |
| | | import com.java110.core.factory.GenerateCodeFactory; |
| | | import com.java110.dto.store.StoreUserDto; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.dto.userLogin.UserLoginDto; |
| | | import com.java110.entity.center.AppService; |
| | | import com.java110.intf.store.IStoreInnerServiceSMO; |
| | | import com.java110.intf.user.IUserInnerServiceSMO; |
| | | import com.java110.intf.user.IUserLoginInnerServiceSMO; |
| | | import com.java110.po.userLogin.UserLoginPo; |
| | | import com.java110.utils.constant.CommonConstant; |
| | | import com.java110.utils.constant.ResponseConstant; |
| | | import com.java110.utils.constant.ServiceCodeConstant; |
| | | import com.java110.utils.exception.SMOException; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.DateUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 用户注册 侦听 |
| | | * Created by wuxw on 2018/5/18. |
| | | */ |
| | | @Java110Listener("pcUserLoginListener") |
| | | public class PcUserLoginListener extends AbstractServiceApiDataFlowListener { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(PcUserLoginListener.class); |
| | | |
| | | |
| | | @Autowired |
| | | private IUserLoginInnerServiceSMO userLoginInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IStoreInnerServiceSMO storeInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IUserInnerServiceSMO userInnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public String getServiceCode() { |
| | | return ServiceCodeConstant.SERVICE_CODE_PC_USER_LOGIN; |
| | | } |
| | | |
| | | @Override |
| | | public HttpMethod getHttpMethod() { |
| | | return HttpMethod.POST; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public int getOrder() { |
| | | return 0; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 请求参数格式: |
| | | * { |
| | | * "username":"admin", |
| | | * "passwd":"1234565" |
| | | * } |
| | | * 返回报文: |
| | | * { |
| | | * "userId":"", |
| | | * "token":"12dddd" |
| | | * } |
| | | * |
| | | * @param event |
| | | */ |
| | | @Override |
| | | public void soService(ServiceDataFlowEvent event) { |
| | | //获取数据上下文对象 |
| | | DataFlowContext dataFlowContext = event.getDataFlowContext(); |
| | | String paramIn = dataFlowContext.getReqData(); |
| | | Assert.isJsonObject(paramIn, "用户注册请求参数有误,不是有效的json格式 " + paramIn); |
| | | Assert.jsonObjectHaveKey(paramIn, "username", "用户登录,未包含username节点,请检查" + paramIn); |
| | | Assert.jsonObjectHaveKey(paramIn, "passwd", "用户登录,未包含passwd节点,请检查" + paramIn); |
| | | ResponseEntity responseEntity = null; |
| | | JSONObject paramInJson = JSONObject.parseObject(paramIn); |
| | | //根据AppId 查询 是否有登录的服务,查询登录地址调用 |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setName(paramInJson.getString("username")); |
| | | userDto.setPassword(paramInJson.getString("passwd")); |
| | | userDto.setLevelCds(new String[]{UserDto.LEVEL_CD_ADMIN, UserDto.LEVEL_CD_STAFF}); |
| | | List<UserDto> userDtos = userInnerServiceSMOImpl.getUsers(userDto); |
| | | if (userDtos == null || userDtos.size() < 1) { |
| | | userDto.setTel(paramInJson.getString("username")); |
| | | userDtos = userInnerServiceSMOImpl.getUsers(userDto); |
| | | } |
| | | if (userDtos == null || userDtos.size() < 1) { |
| | | responseEntity = new ResponseEntity<String>("用户或密码错误", HttpStatus.UNAUTHORIZED); |
| | | dataFlowContext.setResponseEntity(responseEntity); |
| | | return; |
| | | } |
| | | |
| | | //检查商户状态 |
| | | StoreUserDto storeUserDto = new StoreUserDto(); |
| | | storeUserDto.setUserId(userDtos.get(0).getUserId()); |
| | | List<StoreUserDto> storeUserDtos = storeInnerServiceSMOImpl.getStoreUserInfo(storeUserDto); |
| | | |
| | | if (storeUserDtos != null && storeUserDtos.size() > 0) { |
| | | String state = storeUserDtos.get(0).getState(); |
| | | if ("48002".equals(state)) { |
| | | responseEntity = new ResponseEntity<String>("当前商户限制登录,请联系管理员", HttpStatus.UNAUTHORIZED); |
| | | dataFlowContext.setResponseEntity(responseEntity); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | |
| | | try { |
| | | Map userMap = new HashMap(); |
| | | userMap.put(CommonConstant.LOGIN_USER_ID, userDtos.get(0).getUserId()); |
| | | userMap.put(CommonConstant.LOGIN_USER_NAME, userDtos.get(0).getUserName()); |
| | | String token = AuthenticationFactory.createAndSaveToken(userMap); |
| | | JSONObject userInfo = BeanConvertUtil.beanCovertJson(userDtos.get(0)); |
| | | userInfo.remove("userPwd"); |
| | | userInfo.put("token", token); |
| | | //记录登录日志 |
| | | UserLoginPo userLoginPo = new UserLoginPo(); |
| | | userLoginPo.setLoginId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_loginId)); |
| | | userLoginPo.setLoginTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A)); |
| | | userLoginPo.setPassword(userDtos.get(0).getPassword()); |
| | | userLoginPo.setSource(UserLoginDto.SOURCE_WEB); |
| | | userLoginPo.setToken(token); |
| | | userLoginPo.setUserId(userInfo.getString("userId")); |
| | | userLoginPo.setUserName(userInfo.getString("userName")); |
| | | userLoginInnerServiceSMOImpl.saveUserLogin(userLoginPo); |
| | | responseEntity = new ResponseEntity<String>(userInfo.toJSONString(), HttpStatus.OK); |
| | | dataFlowContext.setResponseEntity(responseEntity); |
| | | } catch (Exception e) { |
| | | logger.error("登录异常:", e); |
| | | throw new SMOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "系统内部错误,请联系管理员"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 对请求报文处理 |
| | | * |
| | | * @param paramIn |
| | | * @return |
| | | */ |
| | | private JSONObject refreshParamIn(String paramIn) { |
| | | JSONObject paramObj = JSONObject.parseObject(paramIn); |
| | | paramObj.put("userId", "-1"); |
| | | paramObj.put("levelCd", "0"); |
| | | |
| | | return paramObj; |
| | | } |
| | | |
| | | |
| | | } |