Selaa lähdekoodia

开发完成同一个手机号登录不同物业公司的支持

wuxw 1 vuosi sitten
vanhempi
commit
5700f42a37

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/user/UserDto.java

@@ -100,6 +100,8 @@ public class UserDto extends PageDto implements Serializable {
 
     private String createTime;
 
+    private String storeName;
+
 
 
     public String getUserId() {
@@ -437,4 +439,12 @@ public class UserDto extends PageDto implements Serializable {
     public void setCreateTime(String createTime) {
         this.createTime = createTime;
     }
+
+    public String getStoreName() {
+        return storeName;
+    }
+
+    public void setStoreName(String storeName) {
+        this.storeName = storeName;
+    }
 }

+ 20 - 0
java110-bean/src/main/java/com/java110/vo/api/community/ApiCommunityVo.java

@@ -8,6 +8,10 @@ import java.util.List;
 public class ApiCommunityVo extends MorePageVo implements Serializable {
     List<ApiCommunityDataVo> communitys;
 
+    private int code;
+
+    private String msg;
+
 
     public List<ApiCommunityDataVo> getCommunitys() {
         return communitys;
@@ -16,4 +20,20 @@ public class ApiCommunityVo extends MorePageVo implements Serializable {
     public void setCommunitys(List<ApiCommunityDataVo> communitys) {
         this.communitys = communitys;
     }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
 }

+ 16 - 8
java110-db/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml

@@ -466,7 +466,7 @@
     <!-- 查询员工总量 -->
     <select id="getStaffCount" parameterType="Map" resultType="Map">
         <if test="orgIds != null and orgIds.length > 0">
-        select count(*) count from(
+            select count(*) count from(
         </if>
         select count(1) count
         from u_user u
@@ -475,14 +475,17 @@
             left join u_org_staff_rel uosr on u.user_id = uosr.staff_id and uosr.status_cd = '0'
             left join u_org uo on uosr.org_id = uo.org_id and uo.status_cd = '0'
         </if>
-        where u.level_cd = '01'
+        where su.status_cd = '0'
+        and u.status_cd = '0'
+        <if test="levelCd !=null and levelCd != ''">
+            and u.level_cd = #{levelCd}
+        </if>
         <if test="storeId !=null and storeId != ''">
             and su.store_id = #{storeId}
         </if>
         <if test="orgId !=null and orgId != ''">
             and uosr.org_id = #{orgId}
         </if>
-        and u.status_cd = '0'
         <if test="tel !=null and tel != ''">
             and u.tel= #{tel}
         </if>
@@ -527,27 +530,32 @@
     <select id="getStaffs" parameterType="Map" resultType="Map">
         select u.user_id, u.user_id userId,u.name,u.name
         userName,u.email,u.address,u.location_cd,u.location_cd locationCd,
-        u.age,u.sex,u.tel,u.level_cd levelCd,u.b_id,su.rel_cd relCd,td.name relCdName,ua.value idCard
+        u.age,u.sex,u.tel,u.level_cd levelCd,u.b_id,su.rel_cd relCd,td.name relCdName,ua.value idCard,s.name storeName
         <if test="orgId !=null and orgId != ''">
             ,uo.org_id orgId,uo.org_name,uo.org_name orgName,uosr.store_id storeId,uosr.rel_id relId
         </if>
         from
         u_user u
         inner join s_store_user su on su.user_id = u.user_id
+        left join s_store s on su.store_id = s.store_id
         left join t_dict td on su.rel_cd = td.status_cd and td.table_name='s_store_user' and td.table_columns='rel_cd'
         left join u_user_attr ua on ua.user_id = u.user_id and ua.spec_cd = '100202406002' and ua.status_cd = '0'
         <if test="(orgId !=null and orgId != '')||(orgIds != null and orgIds.length > 0)">
             left join u_org_staff_rel uosr on u.user_id = uosr.staff_id and uosr.status_cd = '0'
             left join u_org uo on uosr.org_id = uo.org_id and uo.status_cd = '0'
         </if>
-        where u.level_cd = '01'
+        where su.status_cd = '0'
+        and u.status_cd = '0'
+        and s.status_cd = '0'
+        <if test="levelCd !=null and levelCd != ''">
+            and u.level_cd = #{levelCd}
+        </if>
         <if test="storeId !=null and storeId != ''">
             and su.store_id = #{storeId}
         </if>
         <if test="orgId !=null and orgId != ''">
             and uosr.org_id = #{orgId}
         </if>
-        and u.status_cd = '0'
         <if test="tel !=null and tel != ''">
             and u.tel= #{tel}
         </if>
@@ -583,7 +591,7 @@
             and uosr.status_cd =0
             GROUP BY u.user_id,u.name,u.email,u.address,u.location_cd,
             u.age,u.sex,u.tel,u.level_cd ,u.b_id,su.rel_cd ,td.name
-            ,uo.org_id,uo.org_name,uosr.store_id,uosr.rel_id,ua.value
+            ,uo.org_id,uo.org_name,uosr.store_id,uosr.rel_id,ua.value,s.name
         </if>
         order by u.create_time desc
         <if test="page != -1 and page != null ">
@@ -696,7 +704,7 @@
         where 1= 1
         <if test="openId != null and openId != ''">
             and u.user_id = ua.user_id
-            and ua.spec_cd  in ('100201911001','100201911003')
+            and ua.spec_cd in ('100201911001','100201911003')
             and ua.value = #{openId}
             and ua.status_cd = '0'
         </if>

+ 7 - 7
service-api/src/main/java/com/java110/api/aop/PageProcessAspect.java

@@ -194,13 +194,13 @@ public class PageProcessAspect {
      */
     private String getToken(HttpServletRequest request) throws FilterException {
         String token = "";
-        if (request.getCookies() != null && request.getCookies().length > 0) {
-            for (Cookie cookie : request.getCookies()) {
-                if (CommonConstant.COOKIE_AUTH_TOKEN.equals(cookie.getName())) {
-                    token = cookie.getValue();
-                }
-            }
-        }
+//        if (request.getCookies() != null && request.getCookies().length > 0) {
+//            for (Cookie cookie : request.getCookies()) {
+//                if (CommonConstant.COOKIE_AUTH_TOKEN.equals(cookie.getName())) {
+//                    token = cookie.getValue();
+//                }
+//            }
+//        }
         String authorization = request.getHeader("Authorization");
 
         if(StringUtil.isEmpty(token) && !StringUtil.isEmpty(authorization)){

+ 17 - 4
service-api/src/main/java/com/java110/api/smo/login/impl/LoginServiceSMOImpl.java

@@ -1,5 +1,6 @@
 package com.java110.api.smo.login.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.api.smo.DefaultAbstractComponentSMO;
 import com.java110.api.smo.login.ILoginServiceSMO;
@@ -10,6 +11,7 @@ import com.java110.core.factory.ValidateCodeFactory;
 import com.java110.core.log.LoggerFactory;
 import com.java110.utils.cache.CommonCache;
 import com.java110.utils.util.Assert;
+import com.java110.utils.util.ListUtil;
 import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -55,9 +57,20 @@ public class LoginServiceSMOImpl extends DefaultAbstractComponentSMO implements
 
         loginInfo.put("passwd", AuthenticationFactory.passwdMd5(loginInfo.getString("passwd")));
         responseEntity = this.callCenterService(restTemplate, pd, loginInfo.toJSONString(), "login.pcUserLogin", HttpMethod.POST);
-        if (responseEntity.getStatusCode() == HttpStatus.OK) {
-            JSONObject userInfo = JSONObject.parseObject(responseEntity.getBody());
-            pd.setToken(userInfo.getString("token"));
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            return responseEntity;
+        }
+        JSONObject resultVo = JSONArray.parseObject(responseEntity.getBody());
+        if(resultVo.getIntValue("code") != 0){
+            return responseEntity;
+        }
+        JSONArray data = resultVo.getJSONArray("data");
+        if (ListUtil.isNull(data)) {
+            return responseEntity;
+        }
+        for (int userIndex = 0; userIndex < data.size(); userIndex++) {
+            JSONObject userInfo = data.getJSONObject(userIndex);
+           // pd.setToken(userInfo.getString("token"));
             //清理缓存
             clearUserCache(userInfo);
         }
@@ -74,7 +87,7 @@ public class LoginServiceSMOImpl extends DefaultAbstractComponentSMO implements
         String storeId = "";
 
         String storeInfo = CommonCache.getValue("getStoreInfo" + Java110RedisConfig.GET_STORE_INFO_EXPIRE_TIME_KEY + "::" + userInfo.getString("userId"));
-        if(!StringUtil.isEmpty(storeInfo)){
+        if (!StringUtil.isEmpty(storeInfo)) {
             CommonCache.removeValue("getStoreInfo" + Java110RedisConfig.GET_STORE_INFO_EXPIRE_TIME_KEY + "::" + userInfo.getString("userId"));
             JSONObject storeObj = JSONObject.parseObject(storeInfo);
             storeId = storeObj.getJSONObject("msg").getString("storeId");

+ 3 - 0
service-community/src/main/java/com/java110/community/cmd/community/ListMyEnteredCommunitysCmd.java

@@ -17,6 +17,7 @@ import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
 import com.java110.vo.api.community.ApiCommunityDataVo;
 import com.java110.vo.api.community.ApiCommunityVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -131,6 +132,8 @@ public class ListMyEnteredCommunitysCmd extends Cmd {
         apiCommunityVo.setTotal(count);
         apiCommunityVo.setRecords((int) Math.ceil((double) count / (double) reqJson.getInteger("row")));
         apiCommunityVo.setCommunitys(communitys);
+        apiCommunityVo.setCode(ResultVo.CODE_OK);
+        apiCommunityVo.setMsg(ResultVo.MSG_OK);
         ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(apiCommunityVo), HttpStatus.OK);
         context.setResponseEntity(responseEntity);
     }

+ 53 - 42
service-user/src/main/java/com/java110/user/cmd/login/PcUserLoginCmd.java

@@ -1,5 +1,6 @@
 package com.java110.user.cmd.login;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.context.ICmdDataFlowContext;
@@ -26,6 +27,7 @@ import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.utils.util.DateUtil;
 import com.java110.utils.util.ListUtil;
+import com.java110.vo.ResultVo;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -55,30 +57,30 @@ import java.util.Map;
 
 @Java110ParamsDoc(
         headers = {
-                @Java110HeaderDoc(name="APP-ID",defaultValue = "通过dev账户分配应用",description = "应用APP-ID"),
-                @Java110HeaderDoc(name="TRANSACTION-ID",defaultValue = "uuid",description = "交易流水号"),
-                @Java110HeaderDoc(name="REQ-TIME",defaultValue = "20220917120915",description = "请求时间 YYYYMMDDhhmmss"),
-                @Java110HeaderDoc(name="JAVA110-LANG",defaultValue = "zh-cn",description = "语言中文"),
-                @Java110HeaderDoc(name="USER-ID",defaultValue = "-1",description = "调用用户ID 一般写-1"),
+                @Java110HeaderDoc(name = "APP-ID", defaultValue = "通过dev账户分配应用", description = "应用APP-ID"),
+                @Java110HeaderDoc(name = "TRANSACTION-ID", defaultValue = "uuid", description = "交易流水号"),
+                @Java110HeaderDoc(name = "REQ-TIME", defaultValue = "20220917120915", description = "请求时间 YYYYMMDDhhmmss"),
+                @Java110HeaderDoc(name = "JAVA110-LANG", defaultValue = "zh-cn", description = "语言中文"),
+                @Java110HeaderDoc(name = "USER-ID", defaultValue = "-1", description = "调用用户ID 一般写-1"),
         },
         params = {
-        @Java110ParamDoc(name = "username", length = 30, remark = "用户名,物业系统分配"),
-        @Java110ParamDoc(name = "passwd", length = 30, remark = "密码,物业系统分配"),
-})
+                @Java110ParamDoc(name = "username", length = 30, remark = "用户名,物业系统分配"),
+                @Java110ParamDoc(name = "passwd", length = 30, remark = "密码,物业系统分配"),
+        })
 
 @Java110ResponseDoc(
         params = {
                 @Java110ParamDoc(name = "code", type = "int", length = 11, defaultValue = "0", remark = "返回编号,0 成功 其他失败"),
                 @Java110ParamDoc(name = "msg", type = "String", length = 250, defaultValue = "成功", remark = "描述"),
                 @Java110ParamDoc(name = "data", type = "Object", remark = "有效数据"),
-                @Java110ParamDoc(parentNodeName = "data",name = "userId", type = "String", remark = "用户ID"),
-                @Java110ParamDoc(parentNodeName = "data",name = "token", type = "String", remark = "临时票据"),
+                @Java110ParamDoc(parentNodeName = "data", name = "userId", type = "String", remark = "用户ID"),
+                @Java110ParamDoc(parentNodeName = "data", name = "token", type = "String", remark = "临时票据"),
         }
 )
 
 @Java110ExampleDoc(
-        reqBody="{'username':'wuxw','passwd':'admin'}",
-        resBody="{'code':0,'msg':'成功','data':{'userId':'123123','token':'123213'}}"
+        reqBody = "{'username':'wuxw','passwd':'admin'}",
+        resBody = "{'code':0,'msg':'成功','data':{'userId':'123123','token':'123213'}}"
 )
 @Java110Cmd(serviceCode = "login.pcUserLogin")
 public class PcUserLoginCmd extends Cmd {
@@ -94,12 +96,8 @@ public class PcUserLoginCmd extends Cmd {
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
-        String paramIn = cmdDataFlowContext.getReqData();
-        Assert.isJsonObject(paramIn, "用户注册请求参数有误,不是有效的json格式 " + paramIn);
-        Assert.jsonObjectHaveKey(paramIn, "username", "用户登录,未包含username节点,请检查" + paramIn);
-        Assert.jsonObjectHaveKey(paramIn, "passwd", "用户登录,未包含passwd节点,请检查" + paramIn);
-
-
+        Assert.hasKeyAndValue(reqJson, "username", "用户登录,未包含username节点,请检查");
+        Assert.hasKeyAndValue(reqJson, "passwd", "用户登录,未包含passwd节点,请检查");
 
         AuthenticationFactory.checkLoginErrorCount(reqJson.getString("username"));
     }
@@ -140,32 +138,45 @@ public class PcUserLoginCmd extends Cmd {
                 return;
             }
         }
+        UserDto allUserDto = new UserDto();
+        allUserDto.setTel(userDtos.get(0).getTel());
+        userDtos = userInnerServiceSMOImpl.getStaffs(userDto);
+        if (userDtos.isEmpty()) {
+            throw new CmdException("用户不存在");
+        }
+        JSONArray data = new JSONArray();
+        JSONObject userInfo = null;
+        for(UserDto aUserDto: userDtos) {
+            try {
+                Map userMap = new HashMap();
+                userMap.put(CommonConstant.LOGIN_USER_ID, aUserDto.getUserId());
+                userMap.put(CommonConstant.LOGIN_USER_NAME, aUserDto.getUserName());
+                String token = AuthenticationFactory.createAndSaveToken(userMap);
+                userInfo= BeanConvertUtil.beanCovertJson(aUserDto);
+                userInfo.remove("userPwd");
+                userInfo.put("token", token);
+                data.add(userInfo);
+            } catch (Exception e) {
+                logger.error("登录异常:", e);
+                throw new SMOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "系统内部错误,请联系管理员");
+            }
+        }
 
 
-        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);
-            cmdDataFlowContext.setResponseEntity(responseEntity);
-        } catch (Exception e) {
-            logger.error("登录异常:", e);
-            throw new SMOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "系统内部错误,请联系管理员");
-        }
+        //记录登录日志
+        UserLoginPo userLoginPo = new UserLoginPo();
+        userLoginPo.setLoginId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_loginId));
+        userLoginPo.setLoginTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
+        userLoginPo.setPassword("******");
+        userLoginPo.setSource(UserLoginDto.SOURCE_WEB);
+        userLoginPo.setToken(userInfo.getString("token"));
+        userLoginPo.setUserId(userInfo.getString("userId"));
+        userLoginPo.setUserName(userInfo.getString("userName"));
+        userLoginInnerServiceSMOImpl.saveUserLogin(userLoginPo);
+
+
+        responseEntity = ResultVo.createResponseEntity(data);
+        cmdDataFlowContext.setResponseEntity(responseEntity);
     }
 
 }

+ 6 - 6
service-user/src/main/java/com/java110/user/cmd/user/UserStaffAddCmd.java

@@ -3,6 +3,7 @@ package com.java110.user.cmd.user;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.annotation.Java110Cmd;
 import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.CmdContextUtils;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
@@ -92,18 +93,17 @@ public class UserStaffAddCmd extends Cmd {
 
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
-        if (!reqJson.containsKey("storeId")) {
-            String storeId = context.getReqHeaders().get("store-id");
-            reqJson.put("storeId", storeId);
-        }
+        String storeId = CmdContextUtils.getStoreId(context);
+        Assert.hasLength(storeId, "用户未登录");
+
         //获取数据上下文对象
-        Assert.jsonObjectHaveKey(reqJson, "storeId", "请求参数中未包含storeId 节点,请确认");
         //判断员工手机号是否重复(员工可根据手机号登录平台)
         UserDto userDto = new UserDto();
         userDto.setTel(reqJson.getString("tel"));
         userDto.setUserFlag("1");
         userDto.setLevelCd("01"); //员工
-        List<UserDto> users = userInnerServiceSMOImpl.getUsers(userDto);
+        userDto.setStoreId(storeId);
+        List<UserDto> users = userInnerServiceSMOImpl.getStaffs(userDto);
         Assert.listIsNull(users, "员工手机号不能重复,请重新输入");
     }