Browse Source

增加配置角色子系统
修改推送费浦定时任务增加人脸照片

lr 2 years ago
parent
commit
5339d93cef
18 changed files with 183 additions and 80 deletions
  1. 60 0
      eladmin-common/src/main/java/me/zhengjie/utils/ImageUtil.java
  2. 2 3
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/domain/DmSystem.java
  3. 12 4
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/repository/DmSystemRepository.java
  4. 32 6
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/rest/DmSystemController.java
  5. 8 3
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/DmSystemService.java
  6. 5 1
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/dto/DmSystemDto.java
  7. 8 3
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/impl/DmSystemServiceImpl.java
  8. 1 20
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/repository/DmUserRepository.java
  9. 0 13
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/rest/DmUserController.java
  10. 0 13
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/DmUserService.java
  11. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/RoleSystemDto.java
  12. 0 12
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/impl/DmUserServiceImpl.java
  13. 5 0
      eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ZkDataPushTask.java
  14. 8 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java
  15. 11 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java
  16. 7 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java
  17. 5 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java
  18. 17 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java

+ 60 - 0
eladmin-common/src/main/java/me/zhengjie/utils/ImageUtil.java

@@ -0,0 +1,60 @@
+package me.zhengjie.utils;
+
+import sun.misc.BASE64Encoder;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+public class ImageUtil {
+
+    /**
+     * 将网络图片编码为base64
+     *
+     * @param url
+     * @return
+     * @throws Exception
+     */
+    public static String encodeImageToBase64(URL url) throws Exception {
+        //将图片文件转化为字节数组字符串,并对其进行Base64编码处理
+        System.out.println("图片的路径为:" + url.toString());
+        //打开链接
+        HttpURLConnection conn = null;
+        try {
+            conn = (HttpURLConnection) url.openConnection();
+            //设置请求方式为"GET"
+            conn.setRequestMethod("GET");
+            //超时响应时间为5秒
+            conn.setConnectTimeout(5 * 1000);
+            //通过输入流获取图片数据
+            InputStream inStream = conn.getInputStream();
+            //得到图片的二进制数据,以二进制封装得到数据,具有通用性
+            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
+            //创建一个Buffer字符串
+            byte[] buffer = new byte[1024];
+            //每次读取的字符串长度,如果为-1,代表全部读取完毕
+            int len = 0;
+            //使用一个输入流从buffer里把数据读取出来
+            while ((len = inStream.read(buffer)) != -1) {
+            //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
+                outStream.write(buffer, 0, len);
+            }
+            //关闭输入流
+            inStream.close();
+            byte[] data = outStream.toByteArray();
+            //对字节数组Base64编码
+            BASE64Encoder encoder = new BASE64Encoder();
+            String base64 = encoder.encode(data);
+            System.out.println("网络文件[{}]编码成base64字符串:[{}]"+url.toString()+base64);
+            return base64;//返回Base64编码过的字节数组字符串
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new Exception("图片解析失败,请联系客服!");
+        }
+    }
+
+}

+ 2 - 3
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/domain/DmSystem.java

@@ -60,10 +60,9 @@ public class DmSystem extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "子系统图标")
     private LocalStorage storage;
 
-    @OneToOne
-    @JoinColumn(name = "user_id")
+    @Column(name = "user_id")
     @ApiModelProperty(value = "子系统管理员")
-    private DmUser dmUser;
+    private String userId;
 
     @Column(name = "is_menu")
     @ApiModelProperty(value = "是否跳转到菜单(0.否 1.是)")

+ 12 - 4
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/repository/DmSystemRepository.java

@@ -16,6 +16,7 @@
 package me.zhengjie.modules.dm.system.repository;
 
 import me.zhengjie.modules.dm.system.domain.DmSystem;
+import me.zhengjie.modules.dm.system.service.dto.DmSystemDto;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Query;
@@ -31,12 +32,19 @@ import java.util.List;
 public interface DmSystemRepository extends JpaRepository<DmSystem, Integer>, JpaSpecificationExecutor<DmSystem> {
 
     /**
-     * 查询未绑定账户的用户
+     * 根据角色查询
      *
-     * @param userId
+     * @param roles
      * @return
      */
-    @Query(value = "select s.* from dm_system as s left join dm_user_system as us on s.id = us.system_id left join dm_user as u on us.user_id = u.id where u.id=:userId and if(:isMenu IS NULL,1=1,s.is_menu = :isMenu)", nativeQuery = true)
-    List<DmSystem> findByUserId(@Param("userId") String userId, @Param("isMenu") Long isMenu);
+    @Query(value = "select s.* from dm_system as s left join dm_role_system as rs on s.id = rs.system_id left join sys_role as r on rs.role_id = r.role_id where r.role_id in (:roleIds) and if(:isMenu IS NULL,1=1,s.is_menu = :isMenu) GROUP BY id", nativeQuery = true)
+    List<DmSystem> findByRoleId(@Param("roleIds") List<Long> roleIds, @Param("isMenu") Long isMenu);
+
+    /**
+     * 返回全部的子系统
+     * @return
+     */
+    @Query(value = "select s.* from dm_system as s", nativeQuery = true)
+    List<DmSystem> getSystems();
 
 }

+ 32 - 6
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/rest/DmSystemController.java

@@ -15,10 +15,16 @@
 */
 package me.zhengjie.modules.dm.system.rest;
 
+import com.alibaba.fastjson.JSONArray;
 import me.zhengjie.annotation.Log;
+import me.zhengjie.modules.dm.roomDevice.domain.DmRoomDevice;
 import me.zhengjie.modules.dm.system.domain.DmSystem;
 import me.zhengjie.modules.dm.system.service.DmSystemService;
+import me.zhengjie.modules.dm.system.service.dto.DmSystemDto;
 import me.zhengjie.modules.dm.system.service.dto.DmSystemQueryCriteria;
+import me.zhengjie.modules.dm.user.domain.DmUser;
+import me.zhengjie.modules.dm.user.service.DmUserService;
+import me.zhengjie.modules.dm.user.service.dto.DmUserDto;
 import org.springframework.data.domain.Pageable;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.HttpStatus;
@@ -28,6 +34,9 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import io.swagger.annotations.*;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
 /**
@@ -42,6 +51,7 @@ import javax.servlet.http.HttpServletResponse;
 public class DmSystemController {
 
     private final DmSystemService dmSystemService;
+    private final DmUserService dmUserService;
 
     @Log("导出数据")
     @ApiOperation("导出数据")
@@ -56,7 +66,17 @@ public class DmSystemController {
     @ApiOperation("查询子系统")
     @PreAuthorize("@el.check('dmSystem:list')")
     public ResponseEntity<Object> query(DmSystemQueryCriteria criteria, Pageable pageable){
-        return new ResponseEntity<>(dmSystemService.queryAll(criteria,pageable),HttpStatus.OK);
+
+        Map<String,Object> map = dmSystemService.queryAll(criteria,pageable);
+        List<DmSystemDto> array = JSONArray.parseArray(JSONArray.toJSONString(map.get("content")),DmSystemDto.class);
+        List<DmSystemDto> newArray = new ArrayList<>();
+        for(DmSystemDto dmSystemDto : array){
+            DmUserDto dmUser = dmUserService.findById(dmSystemDto.getUserId());
+            dmSystemDto.setDmUser(dmUser);
+            newArray.add(dmSystemDto);
+        }
+        map.put("content",newArray);
+        return new ResponseEntity<>(map,HttpStatus.OK);
     }
 
     @PostMapping
@@ -85,10 +105,16 @@ public class DmSystemController {
         return new ResponseEntity<>(HttpStatus.OK);
     }
 
-    @Log("根据用户查询子系统")
-    @ApiOperation("根据用户查询子系统")
-    @GetMapping(value = "/queryByUserId")
-    public ResponseEntity<Object> queryByUserId(String userId,Long isMenu){
-        return new ResponseEntity<>(dmSystemService.findByUserId(userId,isMenu),HttpStatus.OK);
+    @Log("根据角色查询子系统")
+    @ApiOperation("根据角色查询子系统")
+    @PostMapping(value = "/queryByRoleId")
+    public ResponseEntity<Object> queryByRoleId(@RequestBody List<Long> roleIds,Long isMenu){
+        return new ResponseEntity<>(dmSystemService.findByRoleId(roleIds,isMenu),HttpStatus.OK);
+    }
+
+    @ApiOperation("返回全部的子系统")
+    @GetMapping(value = "/lazy")
+    public ResponseEntity<Object> query(){
+        return new ResponseEntity<>(dmSystemService.getSystems(),HttpStatus.OK);
     }
 }

+ 8 - 3
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/DmSystemService.java

@@ -82,10 +82,15 @@ public interface DmSystemService {
     void download(List<DmSystemDto> all, HttpServletResponse response) throws IOException;
 
     /**
-     * 根据userId查询
-     * @param userId userId
+     * 根据角色查询
+     * @param roleId roleId
      * @return DmSystem
      */
-    List<DmSystem> findByUserId(String userId,Long isMenu);
+    List<DmSystem> findByRoleId(List<Long> roleIds,Long isMenu);
 
+    /**
+     * 返回全部的子系统
+     * @return DmSystem
+     */
+    List<DmSystemDto> getSystems();
 }

+ 5 - 1
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/dto/DmSystemDto.java

@@ -20,6 +20,7 @@ import me.zhengjie.base.BaseDTO;
 import me.zhengjie.domain.LocalStorage;
 import me.zhengjie.modules.dm.api.domain.DmApi;
 import me.zhengjie.modules.dm.user.domain.DmUser;
+import me.zhengjie.modules.dm.user.service.dto.DmUserDto;
 
 import java.sql.Timestamp;
 import java.io.Serializable;
@@ -47,7 +48,8 @@ public class DmSystemDto extends BaseDTO implements Serializable {
     private LocalStorage storage;
 
     /** 子系统管理员 */
-    private DmUser dmUser;
+    private String userId;
+    private DmUserDto dmUser;
 
     /** 是否跳转到菜单(0.否 1.是) */
     private Boolean isMenu;
@@ -55,5 +57,7 @@ public class DmSystemDto extends BaseDTO implements Serializable {
     /** 菜单地址 */
     private String menuPath;
 
+    private Boolean leaf = true;
+
 //    private List<DmApi> dmApis;
 }

+ 8 - 3
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/impl/DmSystemServiceImpl.java

@@ -24,6 +24,7 @@ import me.zhengjie.modules.dm.system.service.DmSystemService;
 import me.zhengjie.modules.dm.system.service.dto.DmSystemDto;
 import me.zhengjie.modules.dm.system.service.dto.DmSystemQueryCriteria;
 import me.zhengjie.modules.dm.system.service.mapstruct.DmSystemMapper;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.data.domain.Page;
@@ -99,15 +100,19 @@ public class DmSystemServiceImpl implements DmSystemService {
             map.put("子系统名称", dmSystem.getSystemName());
             map.put("子系统地址", dmSystem.getSystemUrl());
             map.put("子系统图标id", dmSystem.getStorage());
-            map.put("子系统管理员", dmSystem.getDmUser());
+            map.put("子系统管理员", dmSystem.getUserId());
             list.add(map);
         }
         FileUtil.downloadExcel(list, response);
     }
 
     @Override
-    public List<DmSystem> findByUserId(String userId, Long isMenu) {
-        return dmSystemRepository.findByUserId(userId, isMenu);
+    public List<DmSystem> findByRoleId(List<Long> roleIds,Long isMenu) {
+        return dmSystemRepository.findByRoleId(roleIds, isMenu);
     }
 
+    @Override
+    public List<DmSystemDto> getSystems() {
+        return dmSystemMapper.toDto(dmSystemRepository.getSystems());
+    }
 }

+ 1 - 20
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/repository/DmUserRepository.java

@@ -51,25 +51,6 @@ public interface DmUserRepository extends JpaRepository<DmUser, String>, JpaSpec
      */
     DmUser findByEmail(String email);
 
-    /**
-     * 根据用户id删除用户系统表数据
-     * @param userId
-     */
-    @Modifying
-    @Transactional
-    @Query(value = "delete from dm_user_system where user_id = :userId", nativeQuery = true)
-    void deleteUserSystem(@Param("userId") String userId);
-
-    /**
-     * 新增用户系统表数据
-     * @param userId
-     * @param systemId
-     */
-    @Modifying
-    @Transactional
-    @Query(value = "insert into dm_user_system(user_id,system_id) values(:userId, :systemId)", nativeQuery = true)
-    void createUserSystem(@Param("userId") String userId, @Param("systemId") Integer systemId);
-
     /**
      * 根据用户id删除用户系统表数据
      * @param userId
@@ -103,6 +84,6 @@ public interface DmUserRepository extends JpaRepository<DmUser, String>, JpaSpec
      *
      * @return
      */
-    @Query(value = "SELECT u.user_code as userCode, u.name as name,u.dept_id as deptId,u.sex as sex,u.card_id as cardId  FROM dm_user u", nativeQuery = true)
+    @Query(value = "SELECT u.user_code as userCode, u.name as name,u.dept_id as deptId,u.sex as sex,u.card_id as cardId,u.face_id as faceId FROM dm_user u", nativeQuery = true)
     List<Map<String,String>> queryAll();
 }

+ 0 - 13
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/rest/DmUserController.java

@@ -22,7 +22,6 @@ import me.zhengjie.modules.dm.user.domain.DmUser;
 import me.zhengjie.modules.dm.user.service.DmUserService;
 import me.zhengjie.modules.dm.user.service.dto.DmUserAppMenuDto;
 import me.zhengjie.modules.dm.user.service.dto.DmUserQueryCriteria;
-import me.zhengjie.modules.dm.user.service.dto.DmUserSystemDto;
 import me.zhengjie.modules.system.domain.User;
 import me.zhengjie.modules.system.service.DataService;
 import me.zhengjie.modules.system.service.DeptService;
@@ -144,18 +143,6 @@ public class DmUserController {
         return new ResponseEntity<>(dmUserService.findNotBindUser(userId),HttpStatus.OK);
     }
 
-    @Log("配置用户子系统权限")
-    @ApiOperation("配置用户子系统权限")
-    @PostMapping(value="/updateUserSystem")
-    public ResponseEntity<Object> updateUserSystem(@RequestBody DmUserSystemDto dmUserSystemDto){
-        //新增前删除之前得关联关系
-        dmUserService.deleteUserSystem(dmUserSystemDto.getUserId());
-        for(Integer id : dmUserSystemDto.getSystemIds()){
-            dmUserService.createUserSystem(dmUserSystemDto.getUserId(),id);
-        }
-        return new ResponseEntity<>(HttpStatus.OK);
-    }
-
     @Log("配置用户app菜单权限")
     @ApiOperation("配置用户app菜单权限")
     @PostMapping(value="/updateUserAppMenu")

+ 0 - 13
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/DmUserService.java

@@ -88,19 +88,6 @@ public interface DmUserService {
      */
     List<DmUser> findNotBindUser(String userId);
 
-    /**
-     * 根据用户id删除用户系统表数据
-     * @param userId /
-     */
-    void deleteUserSystem(String userId);
-
-    /**
-     * 新增用户系统数据
-     * @param userId /
-     * @param systemId
-     */
-    void createUserSystem(String userId, Integer systemId);
-
     /**
      * 根据用户id删除用户app菜单表数据
      * @param userId /

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserSystemDto.java → eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/RoleSystemDto.java

@@ -5,9 +5,9 @@ import lombok.Data;
 import java.util.List;
 
 @Data
-public class DmUserSystemDto {
+public class RoleSystemDto {
 
-    private String userId;
+    private String roleId;
 
     private List<Integer> systemIds;
 

+ 0 - 12
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/impl/DmUserServiceImpl.java

@@ -137,18 +137,6 @@ public class DmUserServiceImpl implements DmUserService {
         return dmUserRepository.findNotBindUser(param);
     }
 
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteUserSystem(String userId) {
-        dmUserRepository.deleteUserSystem(userId);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public void createUserSystem(String userId, Integer systemId) {
-        dmUserRepository.createUserSystem(userId,systemId);
-    }
-
     @Override
     public void deleteUserAppMenu(String userId) {
         dmUserRepository.deleteUserAppMenu(userId);

+ 5 - 0
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ZkDataPushTask.java

@@ -109,6 +109,11 @@ public class ZkDataPushTask {
                 param.put("sex",sex);
                 param.put("cardId",map.get("cardId"));
                 param.put("operateType",1);
+                if(map.containsKey("faceId")){
+                    if(!ObjectUtils.isEmpty(map.get("faceId"))){
+                        param.put("facePicture",map.get("faceId"));
+                    }
+                }
                 String res = HttpRequest.post(fpApi+api)
                         .form("person",param.toJSONString()).execute().body();
                 log.info("res:"+res);

+ 8 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java

@@ -20,6 +20,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 import me.zhengjie.base.BaseEntity;
+import me.zhengjie.modules.dm.system.domain.DmSystem;
 import me.zhengjie.utils.enums.DataScopeEnum;
 
 import javax.persistence.*;
@@ -59,6 +60,13 @@ public class Role extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "菜单", hidden = true)
     private Set<Menu> menus;
 
+    @ManyToMany(fetch=FetchType.EAGER)
+    @JoinTable(name = "dm_role_system",
+            joinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")},
+            inverseJoinColumns = {@JoinColumn(name = "system_id",referencedColumnName = "id")})
+    @ApiModelProperty(value = "子系统", hidden = true)
+    private Set<DmSystem> systems;
+
     @ManyToMany(fetch=FetchType.EAGER)
     @JoinTable(name = "sys_roles_depts",
             joinColumns = {@JoinColumn(name = "role_id",referencedColumnName = "role_id")},

+ 11 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java

@@ -122,6 +122,17 @@ public class RoleController {
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
+    @Log("修改角色子系统")
+    @ApiOperation("修改角色子系统")
+    @PutMapping(value = "/system")
+    @PreAuthorize("@el.check('roles:edit')")
+    public ResponseEntity<Object> updateSystem(@RequestBody Role resources){
+        RoleDto role = roleService.findById(resources.getId());
+        getLevels(role.getLevel());
+        roleService.updateSystem(resources,role);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
     @Log("删除角色")
     @ApiOperation("删除角色")
     @DeleteMapping

+ 7 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java

@@ -86,6 +86,13 @@ public interface RoleService {
      */
     void updateMenu(Role resources, RoleDto roleDTO);
 
+    /**
+     * 修改绑定的子系统
+     * @param resources /
+     * @param roleDTO /
+     */
+    void updateSystem(Role resources, RoleDto roleDTO);
+
     /**
      * 解绑菜单
      * @param id /

+ 5 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDto.java

@@ -18,6 +18,9 @@ package me.zhengjie.modules.system.service.dto;
 import lombok.Getter;
 import lombok.Setter;
 import me.zhengjie.base.BaseDTO;
+import me.zhengjie.modules.dm.system.domain.DmSystem;
+import me.zhengjie.modules.dm.system.service.dto.DmSystemDto;
+
 import java.io.Serializable;
 import java.util.Objects;
 import java.util.Set;
@@ -36,6 +39,8 @@ public class RoleDto extends BaseDTO implements Serializable {
 
     private Set<MenuDto> menus;
 
+    private Set<DmSystemDto> systems;
+
     private Set<DeptDto> depts;
 
     private String name;

+ 17 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java

@@ -142,6 +142,23 @@ public class RoleServiceImpl implements RoleService {
         roleRepository.save(role);
     }
 
+    @Override
+    public void updateSystem(Role resources, RoleDto roleDTO) {
+        Role role = roleMapper.toEntity(roleDTO);
+        List<User> users = new ArrayList<>();
+        List<Map<String,Object>> userMap = userRepository.findByRoleId2(role.getId());
+        for(Map<String,Object> map : userMap){
+            User user = new User();
+            user.setId(map.get("userId").toString());
+            user.setUsername(map.get("username").toString());
+            users.add(user);
+        }
+        // 更新菜单
+        role.setSystems(resources.getSystems());
+        delCaches(resources.getId(), users);
+        roleRepository.save(role);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void untiedMenu(String menuId) {