Explorar el Código

优化一体化登录

hym hace 4 años
padre
commit
f5bdfc35e3

+ 1 - 1
smart-city-platform/src/main/java/com/bz/smart_city/commom/security/WebSecurityConfig.java

@@ -114,7 +114,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/druid/**").antMatchers("/syncData/**")
                 .antMatchers("/platform/**")
                 .antMatchers("/device/valve/update").antMatchers("/message/generatedMessage")
-                .antMatchers("/integration/user/save","/integration/user/del")
+                .antMatchers("/integration/user/save","/integration/user/del","/integration/user/savePlatformUser")
                 .antMatchers("/user/bindUniqId")
                 .antMatchers("/rabbit/**").antMatchers("/meter/updateUserCode","/meter/getMeterReadList")
                 .antMatchers("/device/getData","/device/getDataExcel","/common/getDeviceMeasuringPoint");

+ 5 - 1
smart-city-platform/src/main/java/com/bz/smart_city/commom/security/platform/PlatformLoginUserDetailService.java

@@ -11,6 +11,7 @@ import com.bz.smart_city.dto.LoginUser;
 import com.bz.smart_city.dto.SiteUserDto;
 import com.bz.smart_city.entity.*;
 import com.bz.smart_city.service.PermissionService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -31,6 +32,7 @@ import java.util.*;
 import static com.google.common.collect.Lists.newArrayList;
 
 @Component
+@Slf4j
 public class PlatformLoginUserDetailService implements UserDetailsService {
     @Resource
     private UserMapper userMapper;
@@ -65,7 +67,9 @@ public class PlatformLoginUserDetailService implements UserDetailsService {
         JSONObject info = JSONObject.parseObject(body);
         String result=null;
         if(info.getInteger("status")==0){
-            result=info.getString("data");
+            result=info.getJSONObject("data").getString("uniqId");
+        }else{
+           log.debug(info.toJSONString());
         }
         return result;
     }

+ 8 - 0
smart-city-platform/src/main/java/com/bz/smart_city/controller/IntegrationAuthController.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 @Controller
 @ResponseBody
@@ -59,4 +60,11 @@ public class IntegrationAuthController {
         userService.delectIntegrationUser(mobilePhone);
         return new AjaxMessage(ResultStatus.OK);
     }
+    @PostMapping("/user/savePlatformUser")
+    @ApiOperation(value = "保存用户")
+    public AjaxMessage savePlatformUser(@RequestBody Map<String,Object>args) {
+
+        userService.savePlatformUser(args);
+        return new AjaxMessage(ResultStatus.OK);
+    }
 }

+ 14 - 0
smart-city-platform/src/main/java/com/bz/smart_city/controller/common/TestController.java

@@ -20,6 +20,7 @@ import com.bz.smart_city.quartz.service.JobAndTriggerService;
 import com.bz.smart_city.redis.PublisherService;
 import com.bz.smart_city.service.*;
 import com.bz.smart_city.websocket.SendMessageService;
+
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -491,4 +492,17 @@ public class TestController {
         //int result = deviceService.importRemoteMeterExcel(file);
         return "ok";
     }
+    @ResponseBody
+    @PostMapping("/testSentry")
+    @ApiOperation(value = "sentry异常捕获测试")
+    public String testSentry(
+
+    ) {
+        try {
+            throw new Exception("This is a test.");
+        } catch (Exception e) {
+            //Sentry.captureException(e);
+        }
+        return "ok";
+    }
 }

+ 3 - 0
smart-city-platform/src/main/java/com/bz/smart_city/dao/UserMapper.java

@@ -2,6 +2,7 @@ package com.bz.smart_city.dao;
 
 import com.bz.smart_city.dto.UserRoleDto;
 import com.bz.smart_city.dto.UserTypeDto;
+import com.bz.smart_city.entity.ConfigPlatformUser;
 import com.bz.smart_city.entity.Person;
 import com.bz.smart_city.entity.Role;
 import com.bz.smart_city.entity.User;
@@ -76,5 +77,7 @@ public interface UserMapper {
     User findUserByUniqId(String uniqId);
 
     int bindUniqId(@Param("phone") String phone,@Param("uniqId")  String uniqId);
+
+    ConfigPlatformUser findPlatformUserConfig(@Param("tenantId") String tenantId);
 }
 

+ 35 - 0
smart-city-platform/src/main/java/com/bz/smart_city/entity/ConfigPlatformUser.java

@@ -0,0 +1,35 @@
+package com.bz.smart_city.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+@Data
+public class ConfigPlatformUser {
+    @ApiModelProperty(value = "站点id", position = 2)
+    private Integer siteId;
+
+    @ApiModelProperty(value = "用户id", position = 3)
+    private Integer userId;
+
+    @ApiModelProperty(value = "状态 0:删除 1:正常", position = 4)
+    private Integer status;
+
+    @ApiModelProperty("机构id")
+    private Integer organId;
+
+    @ApiModelProperty("用户类型 0:无 1:超级管理员 2:站点管理员 3:站点用户")
+    private Integer type;
+
+    @ApiModelProperty(value = "是否管理员", position = 5)
+    private Integer isAdmin;
+    @ApiModelProperty(value = "创建人", position = 51, hidden = true)
+    private String createBy;
+    @ApiModelProperty(value = "更新人", position = 53, hidden = true)
+    private String updateBy;
+    @ApiModelProperty(value = "角色id", position = 54, hidden = true)
+    private Integer rid;
+    @ApiModelProperty(value = "角色id", position = 55, hidden = true)
+    private Integer programId;
+}

+ 3 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/UserService.java

@@ -2,6 +2,7 @@ package com.bz.smart_city.service;
 
 import java.math.BigInteger;
 import java.util.List;
+import java.util.Map;
 
 import com.bz.smart_city.commom.model.Pagination;
 import com.bz.smart_city.dto.DeleteUserDto;
@@ -123,4 +124,6 @@ public interface UserService {
     void delectIntegrationUser(String mobilePhone);
 
     int bindUniqId(String phone, String platformKey);
+
+    void savePlatformUser(Map<String, Object> args);
 }

+ 89 - 0
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/UserServiceImpl.java

@@ -15,6 +15,7 @@ import com.bz.smart_city.service.*;
 import com.github.pagehelper.PageHelper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
@@ -24,6 +25,7 @@ import java.math.BigInteger;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.transaction.annotation.Transactional;
 
@@ -722,4 +724,91 @@ public class UserServiceImpl implements UserService {
         return userMapper.bindUniqId(phone,uniqId);
 
     }
+    private void updatePlatformUser(User user ){
+        user.setId(user.getId());
+        user.setUpdateBy("admin");
+        user.setUpdateDate(LocalDateTime.now());;
+        userMapper.update(user);
+    }
+    private void addPlatformUser(User user){
+
+
+        user.setPassword("");
+        user.setStatus(1);
+        user.setCreateBy("admin");
+        user.setCreateDate(LocalDateTime.now());
+        user.setUpdateBy("admin");
+        user.setUpdateDate(LocalDateTime.now());
+        user.setIsSuperAdmin(0);
+        userMapper.insertSelective(user);
+
+    }
+
+      private void addPlatformSiteUser(User user,ConfigPlatformUser configPlatformUser){
+        SiteUser siteUser = new SiteUser();
+        BeanUtils.copyProperties(configPlatformUser,siteUser);
+        //siteUser.setSiteId(1);
+        siteUser.setUserId(user.getId());
+        //siteUser.setStatus(1);
+        //siteUser.setIsAdmin(0);
+        //siteUser.setOrganId(-1);
+       // siteUser.setType(3);
+        //siteUser.setCreateBy("admin");
+        siteUser.setCreateDate(LocalDateTime.now());
+       // siteUser.setUpdateBy("admin");
+        siteUser.setUpdateDate(LocalDateTime.now());
+        siteUserMapper.insert(siteUser);
+
+    }
+    private UserRole addPlatformRole(User user,ConfigPlatformUser configPlatformUser){
+        //添加用户角色关系
+        UserRole userRole = new UserRole();
+        BeanUtils.copyProperties(configPlatformUser,userRole);
+        userRole.setUid(user.getId());
+       // userRole.setRid(25);
+        //userRole.setStatus(1);
+        //userRole.setCreateBy("admin");
+        userRole.setCreateDate(LocalDateTime.now());
+       // userRole.setUpdateBy("admin");
+        userRole.setUpdateDate(LocalDateTime.now());
+        userRoleMapper.insert(userRole);
+        return userRole;
+    }
+    private void addPlatformRoleRelation(UserRole userRole,ConfigPlatformUser configPlatformUser){
+        UserRoleProgram userRoleProgram = new UserRoleProgram();
+        BeanUtils.copyProperties(configPlatformUser,userRoleProgram);
+        userRoleProgram.setUserRoleId(userRole.getId());
+        //userRoleProgram.setProgramId(77);
+       // userRoleProgram.setStatus(1);
+       // userRoleProgram.setCreateBy("admin");
+        userRoleProgram.setDateCreate(LocalDateTime.now());
+        //userRoleProgram.setUpdateBy("admin");
+        userRoleProgram.setDateUpdate(LocalDateTime.now());
+        userRoleProgramService.insertSelective(userRoleProgram);
+    }
+    @Override
+    public void savePlatformUser(Map<String, Object> args) {
+        String mobilePhone= (String) args.get("mobilePhone");
+        String userName= (String) args.get("username");
+        String uniqId= (String) args.get("uniqId");
+        User userTemp = userMapper.findUserByMobile(mobilePhone);
+        User user = new User();
+        user.setMobilePhone(mobilePhone);
+        user.setUsername(userName);
+        user.setUniqid(uniqId);
+        if (userTemp != null) {
+           user.setId(userTemp.getId());
+           updatePlatformUser(user);
+        }else {
+            //添加用户
+            addPlatformUser(user);
+            ConfigPlatformUser configPlatformUser=userMapper.findPlatformUserConfig((String)args.get("tenantId"));
+            addPlatformSiteUser(user,configPlatformUser);
+            UserRole userRole=addPlatformRole(user,configPlatformUser);
+            addPlatformRoleRelation(userRole,configPlatformUser);
+
+            //添加用户角色关系
+
+        }
+    }
 }

+ 2 - 15
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/WarningLogServiceImpl.java

@@ -3,6 +3,7 @@ package com.bz.smart_city.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.bz.smart_city.commom.model.Pagination;
+import com.bz.smart_city.commom.util.HttpClientUtils;
 import com.bz.smart_city.commom.util.UserUtil;
 import com.bz.smart_city.dao.MeterReadRecordMapper;
 import com.bz.smart_city.dao.WarningRuleMapper;
@@ -70,7 +71,7 @@ public class WarningLogServiceImpl implements WarningLogService{
         });
         Map<String,Object>args=new HashMap<>();
         args.put("metercodes", meterCodes);
-        String result = sendApiReQuest(accountUserInfoUrl, JSONObject.toJSONString(args));
+        String result = HttpClientUtils.sendApiReQuest(accountUserInfoUrl, JSONObject.toJSONString(args));
         if(result!=null){
             JSONArray array = JSONArray.parseArray(result);
             list.forEach(warningLogDto -> {
@@ -87,21 +88,7 @@ public class WarningLogServiceImpl implements WarningLogService{
 
         return new Pagination<>(list);
     }
-    private String sendApiReQuest(String path , String args){
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_JSON);
-        HttpEntity<String> formEntity = new HttpEntity<>(args, headers);
 
-        RestTemplate restTemplate=new RestTemplate();
-        ResponseEntity<String> stringResponseEntity = restTemplate.postForEntity(path, formEntity,
-                String.class);
-        JSONObject info = JSONObject.parseObject(stringResponseEntity.getBody());
-        String result=null;
-        if(info.getInteger("status")==0){
-            result=info.getString("data");
-        }
-        return result;
-    }
 
     @Override
     public List<BuildingSelectDto> getAreaList(Integer channelId, String deviceNo, Integer warningType, String clientName, Integer feedbackStatus, LocalDateTime startDate, LocalDateTime endDate) {

+ 2 - 0
smart-city-platform/src/main/resources/application-dev.properties

@@ -191,3 +191,5 @@ platform_url=http://localhost:8321/user/getUniqId?appId={appId}&key={key}
 spring.rabbitmq.exchange=task-handler-exchange
 spring.rabbitmq.download-device-queue=download-device-queue
 spring.rabbitmq.download-install-queue=download-install-queue
+#sentry.dsn=http://2384bbf9e2134af9b765dc8c10a2c08a@192.168.174.133:8080/1
+#sentry.exception-resolver-order=2147483647

+ 6 - 1
smart-city-platform/src/main/resources/mapper/UserMapper.xml

@@ -267,7 +267,8 @@
             <if test="user.createBy!=null"> create_by,</if>
             <if test="user.updateDate!=null"> update_date,</if>
             <if test="user.updateBy!=null"> update_by,</if>
-            <if test="user.openid!=null"> openid</if>
+            <if test="user.openid!=null"> openid,</if>
+            <if test="user.uniqid!=null"> uniq_id,</if>
         </trim>
         VALUES
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -288,6 +289,7 @@
             <if test="user.updateDate!=null"> #{user.updateDate,jdbcType=TIMESTAMP},</if>
             <if test="user.updateBy!=null"> #{user.updateBy,jdbcType=VARCHAR},</if>
             <if test="user.openid!=null"> #{user.openid,jdbcType=VARCHAR},</if>
+            <if test="user.uniqid!=null"> #{user.uniqid,jdbcType=VARCHAR},</if>
         </trim>
 </insert>
 
@@ -530,6 +532,9 @@
     <select id="findUserByUniqId" resultType="com.bz.smart_city.entity.User">
         SELECT * FROM sc_user WHERE status != 0 and uniq_id = #{uniqId}
     </select>
+    <select id="findPlatformUserConfig" resultType="com.bz.smart_city.entity.ConfigPlatformUser">
+        select * from sc_config_platform_user where tenant_id=#{tenantId}
+    </select>
 
 
 </mapper>