Jelajahi Sumber

调度预案

lihui001 3 tahun lalu
induk
melakukan
5099f6e6ba

+ 14 - 3
common/src/main/java/com/zcxk/model/LoginUser.java

@@ -29,30 +29,41 @@ public class LoginUser implements UserDetails {
 
     @ApiModelProperty(value="类型,1超级管理员,-999站点管理员,2普通用户")
     private String type;
+
     @ApiModelProperty(value="公司id")
     private Integer companyId;
+
     @ApiModelProperty(value="部门id")
     private Integer departmentId;
 
 
     @ApiModelProperty(value="租户标识")
     private String tenantId;
+
     @ApiModelProperty(value="用户权限类型")
     private Integer permissonType;
+
     @ApiModelProperty(value="用户角色id")
     private Integer roleId;
 
     @JsonIgnore
     private String LoginToken;
 
-    //数据权限
+    /**
+     * 数据权限
+     */
     private List<ProgramItem> programItemList;
+
+    /**
+     * 同一个手机号下的所有用户信息
+     */
     @JsonIgnore
-    //同一个手机号下的所有用户信息
     private String userInfos;
-    private List<String>appIds;
 
+    private List<String> appIds;
 
+    @ApiModelProperty(value="物联网客户ID")
+    private String customerId;
 
     //权限
     private Set<GrantedAuthority> authorities;

+ 1 - 1
gateway/src/main/resources/bootstrap.properties

@@ -1,6 +1,6 @@
 #指定服务名
 spring.application.name=smart-city-v2-gateway
-# 这里的应用名对应 Nacos Config 中的 Data ID,实际应用名称以配置中心的配置为准
+# 这里的应用名对应 Nacos config 中的 Data ID,实际应用名称以配置中心的配置为准
 # 指定查找名为 nacos-provider-config.yaml 的配置文件
 spring.cloud.nacos.config.file-extension=properties
 # Nacos Server 的地址

+ 5 - 0
pom.xml

@@ -155,6 +155,11 @@
                 <artifactId>zoniot-core-oauth2</artifactId>
                 <version>${zoniot.version}</version>
             </dependency>
+            <dependency>
+                <groupId>com.zcxk</groupId>
+                <artifactId>zoniot-iot-sync</artifactId>
+                <version>${zoniot.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

+ 1 - 1
sms_water/src/main/resources/application-dev.properties

@@ -18,7 +18,7 @@ spring.jackson.time-zone=GMT+8
 #spring.jackson.joda-date-time-format: yyyy-MM-dd HH:mm:ss
 
 
-#mongodb
+#mongo
 spring.data.mongodb.uri=mongodb://10.0.0.63:27017/sms
 logging.level.org.springframework.data.mongodb.core=DEBUG
 

+ 1 - 1
sms_water/src/main/resources/application-prd.properties

@@ -18,7 +18,7 @@ spring.jackson.time-zone=GMT+8
 #spring.jackson.joda-date-time-format: yyyy-MM-dd HH:mm:ss
 
 
-#mongodb
+#mongo
 spring.data.mongodb.uri=mongodb://10.0.0.137:27017/sms
 logging.level.org.springframework.data.mongodb.core=DEBUG
 

+ 1 - 1
sms_water/src/main/resources/application-sit.properties

@@ -18,7 +18,7 @@ spring.jackson.time-zone=GMT+8
 #spring.jackson.joda-date-time-format: yyyy-MM-dd HH:mm:ss
 
 
-#mongodb
+#mongo
 spring.data.mongodb.uri=mongodb://10.0.0.63:27017/sms
 logging.level.org.springframework.data.mongodb.core=DEBUG
 

+ 6 - 0
user_auth/src/main/java/com/zcxk/dto/UserDto.java

@@ -7,10 +7,16 @@ import lombok.Data;
 public class UserDto {
     @ApiModelProperty(value="电话")
     private String phone;
+
     @ApiModelProperty(value="租户")
     private String  tenantName;
+
     @ApiModelProperty(value="租户id")
     private String tenantId;
+
+    @ApiModelProperty(value="客户ID")
+    private String customerId;
+
     @ApiModelProperty(value="界面url")
     private String webUrl;
     @ApiModelProperty(value="logo")

+ 3 - 4
user_auth/src/main/java/com/zcxk/service/MyUserDetailService.java

@@ -28,8 +28,6 @@ import static com.google.common.collect.Lists.newArrayList;
 public class MyUserDetailService implements UserDetailsService {
 
 
-
-
     @Autowired
     private UserMapper userMapper;
 
@@ -38,9 +36,9 @@ public class MyUserDetailService implements UserDetailsService {
     public UserDetails loadUserByUsername(String phone) throws UsernameNotFoundException {
 
         UserDto userDto=new UserDto();
-        //解析不到参数
+        // 解析不到参数
          userDto.setPhone(phone);
-        //如果电话和租户值任意为空,设置条件使user查不出
+        // 如果电话和租户值任意为空,设置条件使user查不出
         if(StringUtils.isEmpty(phone)){
             userDto.setPhone("-1");
 
@@ -54,6 +52,7 @@ public class MyUserDetailService implements UserDetailsService {
         loginUser.setId(loginInfos.get(0).getId());
         loginUser.setLoginToken(UUID.randomUUID().toString());
         loginUser.setPhoneNumber(phone);
+        loginUser.setCustomerId(loginInfos.get(0).getCustomerId());
         loginUser.setUserInfos(JSONObject.toJSONString(loginInfos));
         return loginUser;
     }

+ 43 - 42
user_auth/src/main/java/com/zcxk/service/impl/UserServiceImpl.java

@@ -180,13 +180,14 @@ public class UserServiceImpl implements UserService {
     }
 
 
+    @Override
     public void offline(String clientId, Integer userId, Integer status) {
         Collection<OAuth2AccessToken> c = tokenStore.findTokensByClientIdAndUserName(clientId, String.valueOf(userId));
-        System.out.println(c.size());
         for (OAuth2AccessToken oAuth2AccessToken : c) {
             String accessToken = oAuth2AccessToken.getValue();
             String tokenKey = "offlineStatus:" + accessToken;
-            redisUtil.setExpire(tokenKey.getBytes(), ByteArrayUtils.objectToBytes(status).get(), 1800);//15分钟过期
+            // 15分钟过期
+            redisUtil.setExpire(tokenKey.getBytes(), ByteArrayUtils.objectToBytes(status).get(), 1800);
             tokenStore.removeAccessToken(oAuth2AccessToken);
         }
     }
@@ -236,7 +237,7 @@ public class UserServiceImpl implements UserService {
         String key = null;
         try {
             // 验证加密的内容是否正确 32
-            encryptValue=encryptValue.replaceAll(" ","+");
+            encryptValue = encryptValue.replaceAll(" ","+");
             key = DESUtil.decrypt(encryptValue,appSecret);
             // 截取里面的时间
             String date = key.substring(key.lastIndexOf("_") + 1, key.length());
@@ -257,47 +258,42 @@ public class UserServiceImpl implements UserService {
     public User chooseUser(User user) {
 
         LoginUser currentUser = UserUtil.getCurrentUser();
-
-        if(currentUser.getTenantId()!=null){
+        if (currentUser.getTenantId() != null){
             user.setPhone(currentUser.getPhoneNumber());
             user.setTenantId(currentUser.getTenantId());
         }
-        user=findUser(user);
+
+        user = this.findUser(user);
         UserDto userDto=new UserDto();
         userDto.setPhone(user.getPhone());
-
-
-       List<ProgramItem>programItems=new ArrayList<>();
-
-        Permission permission= findPermission(user);
-
-        boolean returnFlag=false;
-        if((permission!=null&&permission.getRoleState()==0)){
+        List<ProgramItem> programItems = new ArrayList<>();
+        Permission permission = findPermission(user);
+        boolean returnFlag  = false;
+        if ((permission != null && permission.getRoleState() == 0)){
             user.setEnableState("0");
-            returnFlag=true;
+            returnFlag = true;
 
         }
-        if((user.getTenantState()!=null&&user.getTenantState()==0)){
+        if ((user.getTenantState() != null && user.getTenantState() == 0)){
             user.setEnableState("0");
-            returnFlag=true;
+            returnFlag = true;
         }
-        if((user.getCompanyOrgState()!=null&&user.getCompanyOrgState()==0)){
+        if ((user.getCompanyOrgState() != null && user.getCompanyOrgState() == 0)){
             user.setEnableState("0");
-            returnFlag=true;
+            returnFlag = true;
         }
-        if((user.getDepartmentOrgState()!=null&&user.getDepartmentOrgState()==0)){
+        if ((user.getDepartmentOrgState() != null && user.getDepartmentOrgState() == 0)){
             user.setEnableState("0");
-            returnFlag=true;
+            returnFlag = true;
         }
         if("0".equals(user.getEnableState())){
-         returnFlag=true;
+            returnFlag = true;
         }
-        if(returnFlag){
+
+        if (returnFlag) {
             return user;
         }
         offline("smart-city-v2",user.getId(),1);
-
-
         getDataPermission(permission.getPermissionType(),user,programItems);
         //角色必须是ROLE_开头,其余的是用户功能权限
         /*
@@ -321,7 +317,7 @@ public class UserServiceImpl implements UserService {
         Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
         OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication();
         LoginUser loginUser = (LoginUser) oAuth2Authentication.getPrincipal();
-        //放置系统级菜单对应用户appid
+        // 放置系统级菜单对应用户appid
         loginUser.setAppIds(findUserFirstMenu(user.getTenantId(),user.getId(),user.getUserType()));
         loginUser.setProgramItemList(programItems);
         loginUser.setName(user.getUsername());
@@ -336,15 +332,15 @@ public class UserServiceImpl implements UserService {
         loginUser.setPermissonType(permission.getPermissionType());
         loginUser.setRoleId(permission.getRoleId());
         loginUser.setLoginToken(UUID.randomUUID().toString());
-
+        loginUser.setCustomerId(user.getCustomerId());
         MobileLoginAuthenticationToken authenticationTokenReslut = new MobileLoginAuthenticationToken(loginUser,oAuth2Authentication.getCredentials(),loginUser.getAuthorities());
         authenticationTokenReslut.setDetails(oAuth2Authentication.getDetails());
         OAuth2Authentication oAuth2AuthenticationNew = new OAuth2Authentication(oAuth2Authentication.getOAuth2Request(), authenticationTokenReslut);
 
         OAuth2AccessToken accessToken = authorizationServerTokenServices.createAccessToken(oAuth2AuthenticationNew);
-        //可以加一个映射表
+        // 可以加一个映射表
         String iotToken=getLoginIotToken(user.getIotPhoneNumber());
-        if(iotToken!=null){
+        if (iotToken != null) {
             String iotTokenKey = "iotToken:" + accessToken.getValue();
             redisUtil.set(iotTokenKey,iotToken);
             redisUtil.setExpire(iotTokenKey,60*30);
@@ -353,6 +349,7 @@ public class UserServiceImpl implements UserService {
         user.setToken(accessToken.getValue());
         return user;
     }
+
     public String getLoginIotToken(String account){
         log.info("begin IotService login account={}",account);
         String url = iotUrl + "/api/integration/auth/login";
@@ -367,25 +364,26 @@ public class UserServiceImpl implements UserService {
         HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map,headers);
         ResponseEntity<JSONObject> responseEntity  = restTemplate.postForEntity(url, request, JSONObject.class);
         log.info("responseEntity ={}", JSONObject.toJSONString(responseEntity));
-        if(responseEntity !=null && responseEntity.getStatusCode() == HttpStatus.OK){
+        if (responseEntity !=null && responseEntity.getStatusCode() == HttpStatus.OK) {
             JSONObject jsonObject =  responseEntity.getBody();
-            if(jsonObject != null){
-                if(jsonObject.getInteger("status")==0){
+            if (jsonObject != null) {
+                if (jsonObject.getInteger("status")==0) {
                     String token = jsonObject.getString("data");
                     log.info("IotService getLoginIotToken success res={}",token);
                     return token;
-                }else {
+                } else {
                     log.info("IotService getLoginIotToken fail");
                     return null;
 
                 }
-            }else {
+            } else {
                 return null;
             }
         }
 
         return null;
     }
+
     private void getDataPermission(int permissionType,User user, List<ProgramItem> programItemList){
         ProgramItem defaultProgramItem=new ProgramItem();
         defaultProgramItem.setOrgCompanyId(-999);
@@ -404,19 +402,19 @@ public class UserServiceImpl implements UserService {
             getOrg(user.getCompanyOrgId(),allOrgs,programItemList);
             programItemList.add(programItem);
 
-        }else if(permissionType==3&&user.getDeptOrgId()!=null){
+        }else if(permissionType==3 && user.getDeptOrgId()!=null){
             ProgramItem programItem=new ProgramItem();
             programItem.setOrgId(user.getDeptOrgId());
             programItem.setOrgDeparmtmentId(user.getDeptOrgId());
             programItemList.add(programItem);
-        }else if(permissionType==4&&user.getDeptOrgId()!=null) {
+        }else if(permissionType==4 && user.getDeptOrgId()!=null) {
             ProgramItem programItem=new ProgramItem();
             programItem.setOrgId(user.getDeptOrgId());
             programItem.setOrgDeparmtmentId(user.getDeptOrgId());
             Map<Integer, List<Org>> allOrgs = getAllOrgs("department",user.getTenantId());
             getOrg(user.getDeptOrgId(),allOrgs,programItemList);
             programItemList.add(programItem);
-        }else if(permissionType==5){
+        }else if( permissionType == 5 ){
             programItemList.addAll( userMapper.findOrgRole(user));
             programItemList.forEach(programItem -> {
                 if("company".equals(programItem.getNewType())){
@@ -474,30 +472,32 @@ public class UserServiceImpl implements UserService {
 //			case "2"://普通用户按角色查询租户菜单
 //				menuEntities = menuMapper.findUserFirstMenu(currentUser.getTenantId(),userId);
 //				break;
-            case "-9999"://超级管理员查询所有系统菜单
+            // 超级管理员查询所有系统菜单
+            case "-9999":
                 menuEntities = userMapper.findAllFirstMenu();
                 break;
-            case "-999"://租户管理员查询租户菜单
+            // 租户管理员查询租户菜单
+            case "-999":
                 menuEntities = userMapper.findTenantFirstMenu(tenantId);
                 break;
             default:	//其他租户用户暂时不区分类型
                 menuEntities = userMapper.findUserFirstMenu(tenantId,userId);
                 break;
         }
-        List<String>appIds=new ArrayList<>();
-
+        List<String> appIds = new ArrayList<>();
         menuEntities.forEach(menuEntity -> {
             appIds.add(menuEntity.getAppId());
         });
         return appIds;
     }
+
     @Override
     public boolean logOut(String token) {
-
         boolean flag=consumerTokenServices.revokeToken(token);
         insertLoginLog(UserUtil.getCurrentUser(),"登出");
         return flag;
     }
+
     /**
      * 新增注册数据
      * @author yjy
@@ -508,6 +508,7 @@ public class UserServiceImpl implements UserService {
     public int insertRegister(User user) {
         return this.userMapper.insertRegister(user);
     }
+
     private void insertLoginLog(LoginUser loginUser,String type){
         LoginLog loginLog=new LoginLog();
         loginLog.setName(loginUser.getName());

+ 2 - 1
user_auth/src/main/resources/mapper/UserMapper.xml

@@ -275,8 +275,9 @@
          </where>
 
     </select>
+
     <select id="findLoginInfo" resultType="com.zcxk.dto.UserDto">
-        select a.id, a.PHONE,b.TENANT_NAME,b.code tenantId,b.WEB_URL ,b.LOGO,a.USERNAME name
+        select a.id, a.PHONE,b.TENANT_NAME,b.code tenantId,b.WEB_URL ,b.LOGO,a.USERNAME name,b.customer_id
         from uims_user a  join uims_tenant b on
         a.TENANT_ID=b.CODE
         where a.PHONE=#{phone} and a.status!=0 and b.status!=0

+ 4 - 0
user_center/pom.xml

@@ -68,6 +68,10 @@
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
        </dependency>
+       <dependency>
+           <groupId>com.zcxk</groupId>
+           <artifactId>zoniot-iot-sync</artifactId>
+       </dependency>
    </dependencies>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 13 - 0
user_center/src/main/java/com/zcxk/dto/TenantDto.java

@@ -18,12 +18,25 @@ public class TenantDto extends TenantEntity {
 
     @ApiModelProperty("用户id")
     private Long userId;
+
     @ApiModelProperty("租户类型展示值")
     private String tenantTypeValue;
+
     @ApiModelProperty("管理员姓名")
     private String userName;
+
+    @ApiModelProperty("所属区域")
+    private Integer orgAreaId;
+
+    @ApiModelProperty(value="城市code")
+    private Integer cityCode;
+
+    @ApiModelProperty(value="省级code")
+    private Integer provinceCode;
+
     @ApiModelProperty("手机号")
     private String phone;
+
     @ApiModelProperty("租户菜单id")
     private List<Integer> tenantMenuIds;
 

+ 3 - 0
user_center/src/main/java/com/zcxk/entity/TenantEntity.java

@@ -1,6 +1,7 @@
 package com.zcxk.entity;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -33,6 +34,8 @@ public class TenantEntity implements Serializable {
     private String logo;
     @ApiModelProperty(value = "租户域名")
     private String webUrl;
+    @ApiModelProperty(value = "物联网客户ID")
+    private String customerId;
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
     @ApiModelProperty(value = "租期开始日期",example = "2020-12-12 12:12:12")
     private Date startDate;

+ 8 - 8
user_center/src/main/java/com/zcxk/service/UserService.java

@@ -4,6 +4,7 @@ package com.zcxk.service;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zcxk.common.ToolUtil;
+import com.zcxk.core.utils.util.RedisUtils;
 import com.zcxk.dao.OrgMapper;
 import com.zcxk.dao.UserMapper;
 import com.zcxk.dto.MaintainerCountDto;
@@ -14,7 +15,6 @@ import com.zcxk.entity.UserRoleEntity;
 import com.zcxk.entity.UserTagEntity;
 import com.zcxk.model.LoginUser;
 import com.zcxk.util.ByteArrayUtils;
-import com.zcxk.util.RedisUtil;
 import com.zcxk.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -51,7 +51,7 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 	@Resource
 	private OrgMapper orgMapper;
 	@Autowired
-	private RedisUtil redisUtil;
+	private RedisUtils redisUtils;
 	@Value("${add_iot_user_url}")
 	private String addIotUserUrl;
 
@@ -89,12 +89,12 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 				//將禁用的角色放入redis,作为登出判断
 				if (userEntity.getEnableState().equals("0")) {
 					String roleKey = "disableUser:" + id;
-					redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
+					redisUtils.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
 
 				}
 				if (userEntity.getEnableState().equals("1")) {
 					String roleKey = "disableUser:" + id;
-					redisUtil.del(roleKey.getBytes());
+					redisUtils.del(roleKey.getBytes());
 				}
 			}
 		}
@@ -129,12 +129,12 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 			//將禁用的角色放入redis,作为登出判断
 			if (userEntity.getEnableState().equals("0")) {
 			String roleKey = "disableUser:" + id;
-			redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
+			redisUtils.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
 
 		}
 		if (userEntity.getEnableState().equals("1")) {
 			String roleKey = "disableUser:" + id;
-			redisUtil.del(roleKey.getBytes());
+			redisUtils.del(roleKey.getBytes());
 		}
 	}
 		return this.removeById(id);
@@ -209,12 +209,12 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 				//將禁用的角色放入redis,作为登出判断
 				if (userEntity.getEnableState().equals("0")) {
 					String roleKey = "disableUser:" + user.getId();
-					redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
+					redisUtils.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
 
 				}
 				if (userEntity.getEnableState().equals("1")) {
 					String roleKey = "disableUser:" + user.getId();
-					redisUtil.del(roleKey.getBytes());
+					redisUtils.del(roleKey.getBytes());
 				}
 			}
 			//更新关联附件信息						

+ 12 - 9
user_center/src/main/java/com/zcxk/service/impl/OrgServiceImpl.java

@@ -1,7 +1,7 @@
 package com.zcxk.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.api.R;
+import com.zcxk.core.utils.util.RedisUtils;
 import com.zcxk.dao.OrgMapper;
 import com.zcxk.dto.OrgBaseTreeInfoDto;
 import com.zcxk.dto.OrgTree;
@@ -10,7 +10,6 @@ import com.zcxk.model.LoginUser;
 import com.zcxk.model.ProgramItem;
 import com.zcxk.service.OrgService;
 import com.zcxk.util.ByteArrayUtils;
-import com.zcxk.util.RedisUtil;
 import com.zcxk.util.UserUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,10 +28,12 @@ import static com.google.common.collect.Lists.newArrayList;
  */
 @Service("orgService")
 public class OrgServiceImpl implements OrgService {
+
     @Resource
     private OrgMapper orgMapper;
+
     @Autowired
-    private RedisUtil redisUtil;
+    private RedisUtils redisUtils;
 
 
     /**
@@ -83,7 +84,7 @@ public class OrgServiceImpl implements OrgService {
         if(org.getParentOrgId()==null){
             org.setParentOrgId(0);
         }
-        redisUtil.del("orgInfo"+currentUser.getTenantId());
+        redisUtils.del("orgInfo"+currentUser.getTenantId());
         return this.orgMapper.insert(org);
     }
 
@@ -127,17 +128,17 @@ public class OrgServiceImpl implements OrgService {
 
             String orgKey=keyName+org.getId();
 
-            redisUtil.setExpire(orgKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60*60*24);//15分钟过期
+            redisUtils.setExpire(orgKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60*60*24);//15分钟过期
 
         } if(org.getOrgState()==1){
             String orgKey=keyName+org.getId();
-            redisUtil.del(orgKey.getBytes());
+            redisUtils.del(orgKey.getBytes());
 
         }
 
         LoginUser currentUser = UserUtil.getCurrentUser();
         org.setUpdateBy(currentUser.getUsername());
-        redisUtil.del("orgInfo"+currentUser.getTenantId());
+        redisUtils.del("orgInfo"+currentUser.getTenantId());
         return this.orgMapper.update(org);
     }
 
@@ -170,7 +171,7 @@ public class OrgServiceImpl implements OrgService {
                  });
 
         LoginUser currentUser = UserUtil.getCurrentUser();
-        redisUtil.del("orgInfo"+currentUser.getTenantId());
+        redisUtils.del("orgInfo"+currentUser.getTenantId());
         return fail;
     }
 
@@ -328,7 +329,9 @@ public class OrgServiceImpl implements OrgService {
             return null;
         }
     }
-   public String findParentOrgByChildId(Integer childId)
+
+    @Override
+    public String findParentOrgByChildId(Integer childId)
    {
       return  orgMapper.findParentOrgByChildId(childId);
    }

+ 4 - 4
user_center/src/main/java/com/zcxk/service/impl/RoleServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zcxk.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zcxk.core.utils.util.RedisUtils;
 import com.zcxk.dao.MenuMapper;
 import com.zcxk.dao.RoleMapper;
 import com.zcxk.dao.RoleMenuMapper;
@@ -11,7 +12,6 @@ import com.zcxk.entity.*;
 import com.zcxk.model.LoginUser;
 import com.zcxk.service.RoleService;
 import com.zcxk.util.ByteArrayUtils;
-import com.zcxk.util.RedisUtil;
 import com.zcxk.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,7 +36,7 @@ public class RoleServiceImpl implements RoleService {
     @Autowired
     private RoleMenuMapper roleMenuMapper;
     @Autowired
-    private RedisUtil redisUtil;
+    private RedisUtils redisUtils;
     @Autowired
     private MenuMapper menuMapper;
 
@@ -130,11 +130,11 @@ public class RoleServiceImpl implements RoleService {
         //將禁用的角色放入redis,作为登出判断
         if(role.getRoleState()==0){
             String roleKey="disableRole:"+role.getId();
-            redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60*60*24);//15分钟过期
+            redisUtils.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60*60*24);//15分钟过期
 
         } if(role.getRoleState()==1){
             String roleKey="disableRole:"+role.getId();
-            redisUtil.del(roleKey.getBytes());
+            redisUtils.del(roleKey.getBytes());
 
         }
         LoginUser currentUser = UserUtil.getCurrentUser();

+ 70 - 40
user_center/src/main/java/com/zcxk/service/impl/TenantServiceImpl.java

@@ -2,13 +2,17 @@ package com.zcxk.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.zcxk.common.ToolUtil;
+import com.zcxk.core.common.exception.BusinessException;
 import com.zcxk.dao.*;
 import com.zcxk.dto.TenantDto;
 import com.zcxk.entity.*;
+import com.zcxk.iot.sync.dto.CustomerDTO;
+import com.zcxk.iot.sync.service.SyncCustomerService;
 import com.zcxk.model.LoginUser;
 import com.zcxk.service.TenantService;
 import com.zcxk.util.Snowflake;
 import com.zcxk.util.UserUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -25,37 +29,28 @@ import java.util.stream.Collectors;
  */
 @Service("tenantService")
 public class TenantServiceImpl implements TenantService {
-    /**
-     * 租户
-     */
+
      @Resource
      private TenantMapper tenantMapper;
-    /**
-     * 用户
-     */
+
      @Resource
      private UserMapper userMapper;
-    /**
-     * 角色
-     */
-    @Resource
+
+     @Resource
      private RoleMapper roleMapper;
-    /**
-     * 角色
-     */
-    @Resource
-    private RoleMenuMapper roleMenuMapper;
-    /**
-     * 机构
-     */
-    @Resource
-    private OrgMapper orgMapper;
 
-    /**
-     * 机构
-     */
-    @Resource
-    private UserRoleMapper userRoleMapper;
+     @Resource
+     private RoleMenuMapper roleMenuMapper;
+
+     @Resource
+     private OrgMapper orgMapper;
+
+     @Resource
+     private UserRoleMapper userRoleMapper;
+
+     @Resource
+     private SyncCustomerService syncCustomerService;
+
 
     /**
      * 通过ID查询单条数据
@@ -111,9 +106,20 @@ public class TenantServiceImpl implements TenantService {
      */
     @Override
     public Integer insert(TenantDto tenantDto) {
+        CustomerDTO dto = new CustomerDTO();
+        dto.setCustomerRegionCode(tenantDto.getOrgAreaId());
+        dto.setCustomerProvinceCode(tenantDto.getProvinceCode());
+        dto.setCustomerCityCode(tenantDto.getCityCode());
+        dto.setCustomerName(tenantDto.getTenantName());
+        // 同步物联网客户
+        Long customerId = syncCustomerService.addCustomer(dto);
+        if (customerId == null || customerId == 0){
+            throw BusinessException.builder(500, "同步物联网客户失败");
+        }
+
         LoginUser loginUser = UserUtil.getCurrentUser();
-        //创建租户信息
-        if(loginUser != null){
+        // 创建租户信息
+        if (loginUser != null){
             tenantDto.setUpdateBy(loginUser.getUsername());
             tenantDto.setCreateBy(loginUser.getUsername());
         }
@@ -122,6 +128,7 @@ public class TenantServiceImpl implements TenantService {
         tenantDto.setCode(Snowflake.generateId().toString());
         tenantDto.setStatus(1);
         tenantDto.setTenantState(1);
+        tenantDto.setCustomerId(customerId.toString());
         tenantMapper.insert(tenantDto);
 
         //创建租户菜单信息
@@ -159,23 +166,25 @@ public class TenantServiceImpl implements TenantService {
 
 //        roleService.updateRoleMenuRelations(roleRequestDto);
 
-        /*创建机构*/
+        // 创建机构
         Org org = new Org();
         org.setTenantId(tenantDto.getCode());
         org.setOrgLeaderName(tenantDto.getUserName());
         org.setOrgLeaderPhone(tenantDto.getPhone());
         org.setOrgName(tenantDto.getTenantName());
         org.setOrgState(1);
-        org.setOrgType("company");  //机构类型
+        // 机构类型
+        org.setOrgType("company");
         org.setParentId(0);
         org.setCreateBy(loginUser.getUsername());
         org.setDateCreate(new Date());
         org.setStatus(1);
         org.setParentOrgId(0);
+        org.setOrgAreaId(tenantDto.getOrgAreaId());
         orgMapper.insert(org);
 
 
-        //创建管理员信息
+        // 创建管理员信息
         UserEntity userEntity =new UserEntity();
         userEntity.setTenantId(tenantDto.getCode());
         userEntity.setCreateBy(tenantDto.getCreateBy());
@@ -185,9 +194,12 @@ public class TenantServiceImpl implements TenantService {
         userEntity.setStatus(1);
         userEntity.setPhone(tenantDto.getPhone());
         userEntity.setUsername(tenantDto.getUserName());
-        userEntity.setUserType("-999");//租户系统管理员
-        userEntity.setRoleId(role.getId().longValue()); //赋值角色
-        userEntity.setCompanyOrgId(org.getId().longValue());//公司
+        // 租户系统管理员
+        userEntity.setUserType("-999");
+        // 赋值角色
+        userEntity.setRoleId(role.getId().longValue());
+        // 公司
+        userEntity.setCompanyOrgId(org.getId().longValue());
 //        userEntity.setDeptOrgId(org.getId().longValue());//机构
         userEntity.setEnableState("1");
         userMapper.insert(userEntity);
@@ -201,15 +213,12 @@ public class TenantServiceImpl implements TenantService {
         userRoleEntity.setRoleId(Long.valueOf(userEntity.getRoleId()));
         userRoleEntity.setUserId(userEntity.getId());
         userRoleMapper.insert(userRoleEntity);
-
-
         return 1;
     }
 
 
     /**
      * 修改数据
-     *
      * @param tenantDto 实例对象
      * @return 实例对象
      */
@@ -219,12 +228,26 @@ public class TenantServiceImpl implements TenantService {
         if(tenantDto.getId() == null){
             return 0;
         }
-        //修改租户信息
+        if (StringUtils.isNotEmpty(tenantDto.getCustomerId())) {
+            CustomerDTO dto = new CustomerDTO();
+            dto.setCustomerRegionCode(tenantDto.getOrgAreaId());
+            dto.setCustomerProvinceCode(tenantDto.getProvinceCode());
+            dto.setCustomerCityCode(tenantDto.getCityCode());
+            dto.setCustomerName(tenantDto.getTenantName());
+            dto.setId(Long.parseLong(tenantDto.getCustomerId()));
+            // 同步物联网客户
+            Long customerId = syncCustomerService.updateCustomer(dto);
+            if (customerId == null || customerId == 0){
+                throw BusinessException.builder(500, "同步物联网客户信息失败");
+            }
+        }
+
+        // 修改租户信息
         if(loginUser != null){
             tenantDto.setUpdateBy(loginUser.getUsername());
         }
-        tenantDto.setDateUpdate(new Date());
 
+        tenantDto.setDateUpdate(new Date());
         tenantMapper.update(tenantDto);
 
         //修改租户菜单信息
@@ -294,9 +317,16 @@ public class TenantServiceImpl implements TenantService {
     @Override
     public int deleteById(Integer id) {
         TenantDto tenantDto = tenantMapper.selectById(id);
-        //先删除租户菜单
+        if (StringUtils.isNotEmpty(tenantDto.getCustomerId())){
+            Long customerId = syncCustomerService.deleteCustomer(Long.parseLong(tenantDto.getCustomerId()));
+            if (customerId == null || customerId == 0){
+                throw BusinessException.builder(500, "同步物联网客户信息失败");
+            }
+        }
+
+        // 先删除租户菜单
         tenantMapper.deleteTenantMenuIds(tenantDto.getCode(),null);
-        //删除用户信息
+        // 删除用户信息
         tenantMapper.deleteUserByTenantId(id);
         return tenantMapper.deleteById(id);
     }

+ 4 - 4
user_center/src/main/java/com/zcxk/service/impl/UserGroupServiceImpl.java

@@ -1,6 +1,7 @@
 package com.zcxk.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zcxk.core.utils.util.RedisUtils;
 import com.zcxk.dao.GroupUserMapper;
 import com.zcxk.dao.UserGroupMapper;
 import com.zcxk.dao.UserMapper;
@@ -10,7 +11,6 @@ import com.zcxk.model.LoginUser;
 import com.zcxk.service.UserGroupService;
 import com.zcxk.service.UserService;
 import com.zcxk.util.ByteArrayUtils;
-import com.zcxk.util.RedisUtil;
 import com.zcxk.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -37,7 +37,7 @@ public class UserGroupServiceImpl implements UserGroupService {
     @Autowired
     private UserService userService;
     @Autowired
-    private RedisUtil redisUtil;
+    private RedisUtils redisUtils;
 
 
 
@@ -124,12 +124,12 @@ public class UserGroupServiceImpl implements UserGroupService {
             userService.updateUserById(updateUserEntity);
             if (userGroup.getGroupState()==0) {
                 String roleKey = "disableUser:" + userEntity.getId();
-                redisUtil.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
+                redisUtils.setExpire(roleKey.getBytes(), ByteArrayUtils.objectToBytes("1").get(), 60 * 60 * 24);//15分钟过期
 
             }
             if (userGroup.getGroupState()==1) {
                 String roleKey = "disableUser:" + userEntity.getId();
-                redisUtil.del(roleKey.getBytes());
+                redisUtils.del(roleKey.getBytes());
             }
             userIds.add(userEntity.getId());
             UserRoleEntity userRoleEntity=new UserRoleEntity();

+ 2 - 1
user_center/src/main/resources/application-dev.properties

@@ -39,7 +39,8 @@ spring.redis.lettuce.shutdown-timeout=100
 security.oauth2.client.client-id=smart-city-v2
 security.oauth2.client.client-secret=smart-city-v2-123
 security.oauth2.resource.id=smartcity-deivice-service
-security.oauth2.resource.user-info-uri=http://10.0.0.62:8321/user/principal
+#security.oauth2.resource.user-info-uri=http://10.0.0.62:8321/user/principal
+security.oauth2.resource.user-info-uri=http://127.0.0.1:8321/user/principal
 security.oauth2.resource.prefer-token-info=false
 
 

+ 3 - 2
user_center/src/main/resources/mapper/TenantMapper.xml

@@ -15,6 +15,7 @@
         ,t.WEB_URL as "webUrl"
         ,t.DATE_CREATE as "dateCreate"
         ,dict.DICT_VALUE as "tenantTypeValue"
+        ,t.customer_id
     </sql>
 
     <sql id="tenantJoins">
@@ -66,8 +67,8 @@
 
     <!-- 新增所有列 -->
     <insert id="insert" keyProperty="id" useGeneratedKeys="true">
-        insert into uims_tenant(TENANT_NAME,tenant_type ,CODE ,LOGO ,WEB_URL ,START_DATE ,END_DATE ,TENANT_STATE ,REMARK ,STATUS ,DATE_CREATE ,CREATE_BY ,DATE_UPDATE ,UPDATE_BY)
-        values ( #{tenantName},#{tenantType}, #{code}, #{logo}, #{webUrl}, #{startDate}, #{endDate}, #{tenantState}, #{remark}, #{status},#{dateCreate},#{createBy},#{dateUpdate},#{updateBy})
+        insert into uims_tenant(TENANT_NAME,tenant_type ,CODE ,LOGO ,WEB_URL ,START_DATE ,END_DATE ,TENANT_STATE ,REMARK ,STATUS ,DATE_CREATE ,CREATE_BY ,DATE_UPDATE ,UPDATE_BY, ORG_AREA_ID,customer_id)
+        values ( #{tenantName},#{tenantType}, #{code}, #{logo}, #{webUrl}, #{startDate}, #{endDate}, #{tenantState}, #{remark}, #{status},#{dateCreate},#{createBy},#{dateUpdate},#{updateBy},#{orgAreaId},#{customerId})
     </insert>
 
     <!-- 批量新增 -->

+ 0 - 6
zoniot-rmcp/zoniot-rmcp-web/src/main/java/com/zcxk/rmcp/web/service/impl/MeterReadRecordServiceImpl.java

@@ -4,30 +4,24 @@ import com.zcxk.core.common.exception.BusinessException;
 import com.zcxk.core.common.pojo.PageResult;
 import com.zcxk.core.oauth2.util.UserUtil;
 import com.zcxk.core.utils.BigDecimalUtils;
-import com.zcxk.core.utils.CacheClient;
 import com.zcxk.core.utils.DateUtil;
-import com.zcxk.core.utils.util.RedisUtil;
 import com.zcxk.rmcp.api.dto.meterreadrecord.MeterReadRecordDeviceDto;
 import com.zcxk.rmcp.api.dto.meterreadrecord.MeterReadRecordDto;
 import com.zcxk.rmcp.api.dto.meterreadrecord.MeterReadRecordSyncDto;
 import com.zcxk.rmcp.api.dto.meterreadrecord.MeterReadRecordUpdateDto;
-import com.zcxk.rmcp.api.dto.readmeter.MeterData;
 import com.zcxk.rmcp.api.enums.ReadStatusEnum;
 import com.zcxk.rmcp.api.enums.RmcpErrorEnum;
 import com.zcxk.rmcp.api.vo.MeterReadRecordVo;
 import com.zcxk.rmcp.core.dao.mongo.MeterReadRecordDao;
 import com.zcxk.rmcp.core.mongo.MeterReadRecord;
 import com.zcxk.rmcp.web.service.MeterReadRecordService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.mongodb.core.query.Criteria;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;