Ver Fonte

修改配置文件

sss há 3 anos atrás
pai
commit
940f97e5f3
40 ficheiros alterados com 1241 adições e 306 exclusões
  1. 18 16
      eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/domain/DmAnnounce.java
  2. 14 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/repository/DmAnnounceRepository.java
  3. 8 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/rest/DmAnnounceController.java
  4. 7 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/service/DmAnnounceService.java
  5. 3 1
      eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/service/dto/DmAnnounceDto.java
  6. 51 5
      eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/service/impl/DmAnnounceServiceImpl.java
  7. 34 17
      eladmin-system/src/main/java/me/zhengjie/modules/dm/api/domain/DmApi.java
  8. 12 1
      eladmin-system/src/main/java/me/zhengjie/modules/dm/api/service/dto/DmApiDto.java
  9. 77 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/domain/DmAppMenu.java
  10. 28 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/repository/DmAppMenuRepository.java
  11. 87 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/rest/DmAppMenuController.java
  12. 83 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/DmAppMenuService.java
  13. 56 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/dto/DmAppMenuDto.java
  14. 33 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/dto/DmAppMenuQueryCriteria.java
  15. 110 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/impl/DmAppMenuServiceImpl.java
  16. 32 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/mapstruct/DmAppMenuMapper.java
  17. 44 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/messageSendLog/util/SendMessageUtils.java
  18. 8 7
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/domain/DmSystem.java
  19. 14 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/repository/DmSystemRepository.java
  20. 7 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/rest/DmSystemController.java
  21. 7 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/DmSystemService.java
  22. 3 2
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/dto/DmSystemDto.java
  23. 5 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/system/service/impl/DmSystemServiceImpl.java
  24. 29 17
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/domain/DmUser.java
  25. 40 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/repository/DmUserRepository.java
  26. 36 10
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/rest/DmUserController.java
  27. 26 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/DmUserService.java
  28. 14 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserAppMenuDto.java
  29. 24 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserDto.java
  30. 14 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserSystemDto.java
  31. 22 0
      eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/impl/DmUserServiceImpl.java
  32. 62 0
      eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/AnnounceTask.java
  33. 198 196
      eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ErpDataSyncTask.java
  34. 16 13
      eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ZkDataSyncTask.java
  35. 2 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java
  36. 8 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java
  37. 2 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java
  38. 3 0
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java
  39. 3 19
      eladmin-system/src/main/java/me/zhengjie/modules/thirdparty/v1/MessageSendLogApiController.java
  40. 1 1
      eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java

+ 18 - 16
eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/domain/DmAnnounce.java

@@ -19,6 +19,8 @@ import lombok.Data;
 import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
 import cn.hutool.core.bean.copier.CopyOptions;
+import me.zhengjie.base.BaseEntity;
+
 import javax.persistence.*;
 import javax.validation.constraints.*;
 import java.sql.Timestamp;
@@ -33,7 +35,7 @@ import java.io.Serializable;
 @Entity
 @Data
 @Table(name="dm_announce")
-public class DmAnnounce implements Serializable {
+public class DmAnnounce extends BaseEntity implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -65,21 +67,21 @@ public class DmAnnounce implements Serializable {
     @ApiModelProperty(value = "发布状态(0.未发布 1.已发布)")
     private Long sendState;
 
-    @Column(name = "create_by")
-    @ApiModelProperty(value = "创建者")
-    private String createBy;
-
-    @Column(name = "update_by")
-    @ApiModelProperty(value = "更新者")
-    private String updateBy;
-
-    @Column(name = "create_time")
-    @ApiModelProperty(value = "创建时间")
-    private Timestamp createTime;
-
-    @Column(name = "update_time")
-    @ApiModelProperty(value = "更新时间")
-    private Timestamp updateTime;
+//    @Column(name = "create_by")
+//    @ApiModelProperty(value = "创建者")
+//    private String createBy;
+//
+//    @Column(name = "update_by")
+//    @ApiModelProperty(value = "更新者")
+//    private String updateBy;
+//
+//    @Column(name = "create_time")
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @Column(name = "update_time")
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
 
     public void copy(DmAnnounce source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));

+ 14 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/repository/DmAnnounceRepository.java

@@ -18,6 +18,10 @@ package me.zhengjie.modules.dm.announce.repository;
 import me.zhengjie.modules.dm.announce.domain.DmAnnounce;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
 
 /**
 * @website https://el-admin.vip
@@ -25,4 +29,14 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 * @date 2021-11-30
 **/
 public interface DmAnnounceRepository extends JpaRepository<DmAnnounce, Integer>, JpaSpecificationExecutor<DmAnnounce> {
+
+    /**
+     * 根据发送时间查询未发送未取消得公告
+
+     * @param sendTime
+     * @return
+     */
+    @Query(value = "select a.* from dm_announce as a where send_type = 1 and is_cancel = 0 and send_state =0 and send_time <= :sendTime", nativeQuery = true)
+    List<DmAnnounce> findNotSendAnnounce(@Param("sendTime") String sendTime);
+
 }

+ 8 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/rest/DmAnnounceController.java

@@ -84,4 +84,12 @@ public class DmAnnounceController {
         dmAnnounceService.deleteAll(ids);
         return new ResponseEntity<>(HttpStatus.OK);
     }
+
+    @Log("取消系统公告")
+    @ApiOperation("取消系统公告")
+    @GetMapping(value = "/cancel")
+    public ResponseEntity<Object> cancel(Integer id){
+        dmAnnounceService.cancel(id);
+        return new ResponseEntity<>(true,HttpStatus.OK);
+    }
 }

+ 7 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/service/DmAnnounceService.java

@@ -80,4 +80,11 @@ public interface DmAnnounceService {
     * @throws IOException /
     */
     void download(List<DmAnnounceDto> all, HttpServletResponse response) throws IOException;
+
+    /**
+     * 根据ID取消系统公告
+     * @param id ID
+     * @return DmAnnounceDto
+     */
+    void cancel(Integer id);
 }

+ 3 - 1
eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/service/dto/DmAnnounceDto.java

@@ -16,6 +16,8 @@
 package me.zhengjie.modules.dm.announce.service.dto;
 
 import lombok.Data;
+import me.zhengjie.base.BaseDTO;
+
 import java.sql.Timestamp;
 import java.io.Serializable;
 
@@ -26,7 +28,7 @@ import java.io.Serializable;
 * @date 2021-11-30
 **/
 @Data
-public class DmAnnounceDto implements Serializable {
+public class DmAnnounceDto extends BaseDTO implements Serializable {
 
     /** id */
     private Integer id;

+ 51 - 5
eladmin-system/src/main/java/me/zhengjie/modules/dm/announce/service/impl/DmAnnounceServiceImpl.java

@@ -15,9 +15,17 @@
 */
 package me.zhengjie.modules.dm.announce.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.base.Joiner;
+import me.zhengjie.base.BaseResponse;
+import me.zhengjie.exception.BadRequestException;
 import me.zhengjie.modules.dm.announce.domain.DmAnnounce;
-import me.zhengjie.utils.ValidationUtil;
-import me.zhengjie.utils.FileUtil;
+import me.zhengjie.modules.dm.messageSendLog.domain.DmMessageSendLog;
+import me.zhengjie.modules.dm.messageSendLog.service.DmMessageSendLogService;
+import me.zhengjie.modules.dm.messageSendLog.util.SendMessageUtils;
+import me.zhengjie.modules.system.repository.UserRepository;
+import me.zhengjie.modules.system.service.UserService;
+import me.zhengjie.utils.*;
 import lombok.RequiredArgsConstructor;
 import me.zhengjie.modules.dm.announce.repository.DmAnnounceRepository;
 import me.zhengjie.modules.dm.announce.service.DmAnnounceService;
@@ -28,8 +36,9 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
-import me.zhengjie.utils.PageUtil;
-import me.zhengjie.utils.QueryHelp;
+import java.sql.Timestamp;
+
+import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.Map;
 import java.io.IOException;
@@ -49,6 +58,9 @@ public class DmAnnounceServiceImpl implements DmAnnounceService {
 
     private final DmAnnounceRepository dmAnnounceRepository;
     private final DmAnnounceMapper dmAnnounceMapper;
+    private final DmMessageSendLogService dmMessageSendLogService;
+    private final UserService userService;
+    private final UserRepository userRepository;
 
     @Override
     public Map<String,Object> queryAll(DmAnnounceQueryCriteria criteria, Pageable pageable){
@@ -72,7 +84,33 @@ public class DmAnnounceServiceImpl implements DmAnnounceService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public DmAnnounceDto create(DmAnnounce resources) {
-        return dmAnnounceMapper.toDto(dmAnnounceRepository.save(resources));
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        resources.setIsCancel(0l);
+        if(resources.getSendType() == 0){
+            resources.setSendState(1l);
+            resources.setSendTime(new Timestamp(System.currentTimeMillis()));
+        } else {
+            resources.setSendState(0l);
+        }
+        DmAnnounceDto dmAnnounceDto = dmAnnounceMapper.toDto(dmAnnounceRepository.save(resources));
+        if(resources.getSendType() == 0){
+            DmMessageSendLog dmMessageSendLog = new DmMessageSendLog();
+            dmMessageSendLog.setSystemName("中控平台");
+            dmMessageSendLog.setSendId("dm_announce|id|"+dmAnnounceDto.getId());
+            dmMessageSendLog.setSendUserId(userService.findByName(resources.getCreateBy()).getId());
+            JSONObject sendContentJSON = new JSONObject();
+            sendContentJSON.put("text",resources.getAnnounceContent());
+            dmMessageSendLog.setSendContent(sendContentJSON);
+            dmMessageSendLog.setUsernames(Joiner.on(",").join(userRepository.getAllUsername()));
+            dmMessageSendLog.setCreateTime(simpleDateFormat.format(System.currentTimeMillis()));
+            Boolean isSuccess = SendMessageUtils.sendChatMessage(dmMessageSendLog);
+            if(isSuccess){
+                dmMessageSendLogService.create(dmMessageSendLog);
+            } else {
+                throw new BadRequestException("发送公告失败!");
+            }
+        }
+        return dmAnnounceDto;
     }
 
     @Override
@@ -110,4 +148,12 @@ public class DmAnnounceServiceImpl implements DmAnnounceService {
         }
         FileUtil.downloadExcel(list, response);
     }
+
+    @Override
+    public void cancel(Integer id){
+        DmAnnounce dmAnnounce = dmAnnounceRepository.findById(id).orElseGet(DmAnnounce::new);
+        ValidationUtil.isNull( dmAnnounce.getId(),"DmAnnounce","id",id);
+        dmAnnounce.setIsCancel(1l);
+        dmAnnounceRepository.save(dmAnnounce);
+    }
 }

+ 34 - 17
eladmin-system/src/main/java/me/zhengjie/modules/dm/api/domain/DmApi.java

@@ -19,10 +19,15 @@ import lombok.Data;
 import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
 import cn.hutool.core.bean.copier.CopyOptions;
+import me.zhengjie.base.BaseEntity;
+import me.zhengjie.domain.LocalStorage;
+import me.zhengjie.modules.dm.system.domain.DmSystem;
+
 import javax.persistence.*;
 import javax.validation.constraints.*;
 import java.sql.Timestamp;
 import java.io.Serializable;
+import java.util.List;
 
 /**
 * @website https://el-admin.vip
@@ -33,7 +38,7 @@ import java.io.Serializable;
 @Entity
 @Data
 @Table(name="dm_api")
-public class DmApi implements Serializable {
+public class DmApi extends BaseEntity implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -49,25 +54,37 @@ public class DmApi implements Serializable {
     @ApiModelProperty(value = "接口地址")
     private String apiUrl;
 
-    @Column(name = "storage_id")
-    @ApiModelProperty(value = "接口配置文件id")
-    private Long storageId;
-
-    @Column(name = "create_by")
-    @ApiModelProperty(value = "创建者")
-    private String createBy;
+    @ManyToMany
+    @ApiModelProperty(value = "子系统列表")
+    @JoinTable(name = "dm_system_api",
+            joinColumns = {@JoinColumn(name = "api_id",referencedColumnName = "id")},
+            inverseJoinColumns = {@JoinColumn(name = "system_id",referencedColumnName = "id")})
+    private List<DmSystem> dmSystems;
 
-    @Column(name = "update_by")
-    @ApiModelProperty(value = "更新者")
-    private String updateBy;
+//    @Column(name = "storage_id")
+//    @ApiModelProperty(value = "接口配置文件id")
+//    private Long storageId;
 
-    @Column(name = "create_time")
-    @ApiModelProperty(value = "创建时间")
-    private Timestamp createTime;
+    @OneToOne
+    @JoinColumn(name = "storage_id")
+    @ApiModelProperty(value = "接口配置文件")
+    private LocalStorage localStorage;
 
-    @Column(name = "update_time")
-    @ApiModelProperty(value = "更新时间")
-    private Timestamp updateTime;
+//    @Column(name = "create_by")
+//    @ApiModelProperty(value = "创建者")
+//    private String createBy;
+//
+//    @Column(name = "update_by")
+//    @ApiModelProperty(value = "更新者")
+//    private String updateBy;
+//
+//    @Column(name = "create_time")
+//    @ApiModelProperty(value = "创建时间")
+//    private Timestamp createTime;
+//
+//    @Column(name = "update_time")
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
 
     public void copy(DmApi source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));

+ 12 - 1
eladmin-system/src/main/java/me/zhengjie/modules/dm/api/service/dto/DmApiDto.java

@@ -16,8 +16,13 @@
 package me.zhengjie.modules.dm.api.service.dto;
 
 import lombok.Data;
+import me.zhengjie.base.BaseDTO;
+import me.zhengjie.domain.LocalStorage;
+import me.zhengjie.modules.dm.system.domain.DmSystem;
+
 import java.sql.Timestamp;
 import java.io.Serializable;
+import java.util.List;
 
 /**
 * @website https://el-admin.vip
@@ -26,7 +31,7 @@ import java.io.Serializable;
 * @date 2021-11-30
 **/
 @Data
-public class DmApiDto implements Serializable {
+public class DmApiDto extends BaseDTO implements Serializable {
 
     /** id */
     private Integer id;
@@ -37,6 +42,12 @@ public class DmApiDto implements Serializable {
     /** 接口地址 */
     private String apiUrl;
 
+    /** 子系统列表 */
+    private List<DmSystem> dmSystems;
+
+    /** 接口文件 */
+    private LocalStorage localStorage;
+
     /** 接口配置文件id */
     private Long storageId;
 

+ 77 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/domain/DmAppMenu.java

@@ -0,0 +1,77 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.domain;
+
+import lombok.Data;
+import cn.hutool.core.bean.BeanUtil;
+import io.swagger.annotations.ApiModelProperty;
+import cn.hutool.core.bean.copier.CopyOptions;
+import me.zhengjie.base.BaseEntity;
+
+import javax.persistence.*;
+import javax.validation.constraints.*;
+import java.sql.Timestamp;
+import java.io.Serializable;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author Li Rui
+* @date 2021-12-21
+**/
+@Entity
+@Data
+@Table(name="dm_app_menu")
+public class DmAppMenu extends BaseEntity implements Serializable {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "id")
+    @ApiModelProperty(value = "id")
+    private Integer id;
+
+    @Column(name = "name")
+    @ApiModelProperty(value = "菜单名称")
+    private String name;
+
+    @Column(name = "iocn")
+    @ApiModelProperty(value = "菜单图标")
+    private String iocn;
+
+    @Column(name = "route")
+    @ApiModelProperty(value = "菜单路由")
+    private String route;
+
+//    @Column(name = "create_by")
+//    @ApiModelProperty(value = "创建者")
+//    private String createBy;
+//
+//    @Column(name = "update_by")
+//    @ApiModelProperty(value = "更新者")
+//    private String updateBy;
+//
+//    @Column(name = "create_time")
+//    @ApiModelProperty(value = "创建日期")
+//    private Timestamp createTime;
+//
+//    @Column(name = "update_time")
+//    @ApiModelProperty(value = "更新时间")
+//    private Timestamp updateTime;
+
+    public void copy(DmAppMenu source){
+        BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));
+    }
+}

+ 28 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/repository/DmAppMenuRepository.java

@@ -0,0 +1,28 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.repository;
+
+import me.zhengjie.modules.dm.appMenu.domain.DmAppMenu;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+/**
+* @website https://el-admin.vip
+* @author Li Rui
+* @date 2021-12-21
+**/
+public interface DmAppMenuRepository extends JpaRepository<DmAppMenu, Integer>, JpaSpecificationExecutor<DmAppMenu> {
+}

+ 87 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/rest/DmAppMenuController.java

@@ -0,0 +1,87 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.rest;
+
+import me.zhengjie.annotation.Log;
+import me.zhengjie.modules.dm.appMenu.domain.DmAppMenu;
+import me.zhengjie.modules.dm.appMenu.service.DmAppMenuService;
+import me.zhengjie.modules.dm.appMenu.service.dto.DmAppMenuQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import io.swagger.annotations.*;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @author Li Rui
+* @date 2021-12-21
+**/
+@RestController
+@RequiredArgsConstructor
+@Api(tags = "app菜单管理")
+@RequestMapping("/api/dmAppMenu")
+public class DmAppMenuController {
+
+    private final DmAppMenuService dmAppMenuService;
+
+    @Log("导出数据")
+    @ApiOperation("导出数据")
+    @GetMapping(value = "/download")
+    @PreAuthorize("@el.check('dmAppMenu:list')")
+    public void download(HttpServletResponse response, DmAppMenuQueryCriteria criteria) throws IOException {
+        dmAppMenuService.download(dmAppMenuService.queryAll(criteria), response);
+    }
+
+    @GetMapping
+    @Log("查询app菜单")
+    @ApiOperation("查询app菜单")
+    @PreAuthorize("@el.check('dmAppMenu:list')")
+    public ResponseEntity<Object> query(DmAppMenuQueryCriteria criteria, Pageable pageable){
+        return new ResponseEntity<>(dmAppMenuService.queryAll(criteria,pageable),HttpStatus.OK);
+    }
+
+    @PostMapping
+    @Log("新增app菜单")
+    @ApiOperation("新增app菜单")
+    @PreAuthorize("@el.check('dmAppMenu:add')")
+    public ResponseEntity<Object> create(@Validated @RequestBody DmAppMenu resources){
+        return new ResponseEntity<>(dmAppMenuService.create(resources),HttpStatus.CREATED);
+    }
+
+    @PutMapping
+    @Log("修改app菜单")
+    @ApiOperation("修改app菜单")
+    @PreAuthorize("@el.check('dmAppMenu:edit')")
+    public ResponseEntity<Object> update(@Validated @RequestBody DmAppMenu resources){
+        dmAppMenuService.update(resources);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+    }
+
+    @Log("删除app菜单")
+    @ApiOperation("删除app菜单")
+    @PreAuthorize("@el.check('dmAppMenu:del')")
+    @DeleteMapping
+    public ResponseEntity<Object> delete(@RequestBody Integer[] ids) {
+        dmAppMenuService.deleteAll(ids);
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
+}

+ 83 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/DmAppMenuService.java

@@ -0,0 +1,83 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.service;
+
+import me.zhengjie.modules.dm.appMenu.domain.DmAppMenu;
+import me.zhengjie.modules.dm.appMenu.service.dto.DmAppMenuDto;
+import me.zhengjie.modules.dm.appMenu.service.dto.DmAppMenuQueryCriteria;
+import org.springframework.data.domain.Pageable;
+import java.util.Map;
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+* @website https://el-admin.vip
+* @description 服务接口
+* @author Li Rui
+* @date 2021-12-21
+**/
+public interface DmAppMenuService {
+
+    /**
+    * 查询数据分页
+    * @param criteria 条件
+    * @param pageable 分页参数
+    * @return Map<String,Object>
+    */
+    Map<String,Object> queryAll(DmAppMenuQueryCriteria criteria, Pageable pageable);
+
+    /**
+    * 查询所有数据不分页
+    * @param criteria 条件参数
+    * @return List<DmAppMenuDto>
+    */
+    List<DmAppMenuDto> queryAll(DmAppMenuQueryCriteria criteria);
+
+    /**
+     * 根据ID查询
+     * @param id ID
+     * @return DmAppMenuDto
+     */
+    DmAppMenuDto findById(Integer id);
+
+    /**
+    * 创建
+    * @param resources /
+    * @return DmAppMenuDto
+    */
+    DmAppMenuDto create(DmAppMenu resources);
+
+    /**
+    * 编辑
+    * @param resources /
+    */
+    void update(DmAppMenu resources);
+
+    /**
+    * 多选删除
+    * @param ids /
+    */
+    void deleteAll(Integer[] ids);
+
+    /**
+    * 导出数据
+    * @param all 待导出的数据
+    * @param response /
+    * @throws IOException /
+    */
+    void download(List<DmAppMenuDto> all, HttpServletResponse response) throws IOException;
+}

+ 56 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/dto/DmAppMenuDto.java

@@ -0,0 +1,56 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.service.dto;
+
+import lombok.Data;
+import me.zhengjie.base.BaseEntity;
+
+import java.sql.Timestamp;
+import java.io.Serializable;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author Li Rui
+* @date 2021-12-21
+**/
+@Data
+public class DmAppMenuDto extends BaseEntity implements Serializable {
+
+    /** id */
+    private Integer id;
+
+    /** 菜单名称 */
+    private String name;
+
+    /** 菜单图标 */
+    private String iocn;
+
+    /** 菜单路由 */
+    private String route;
+
+//    /** 创建者 */
+//    private String createBy;
+//
+//    /** 更新者 */
+//    private String updateBy;
+//
+//    /** 创建日期 */
+//    private Timestamp createTime;
+//
+//    /** 更新时间 */
+//    private Timestamp updateTime;
+}

+ 33 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/dto/DmAppMenuQueryCriteria.java

@@ -0,0 +1,33 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.service.dto;
+
+import lombok.Data;
+import java.util.List;
+import me.zhengjie.annotation.Query;
+
+/**
+* @website https://el-admin.vip
+* @author Li Rui
+* @date 2021-12-21
+**/
+@Data
+public class DmAppMenuQueryCriteria{
+
+    /** 模糊 */
+    @Query(type = Query.Type.INNER_LIKE)
+    private String name;
+}

+ 110 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/impl/DmAppMenuServiceImpl.java

@@ -0,0 +1,110 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.service.impl;
+
+import me.zhengjie.modules.dm.appMenu.domain.DmAppMenu;
+import me.zhengjie.utils.ValidationUtil;
+import me.zhengjie.utils.FileUtil;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.modules.dm.appMenu.repository.DmAppMenuRepository;
+import me.zhengjie.modules.dm.appMenu.service.DmAppMenuService;
+import me.zhengjie.modules.dm.appMenu.service.dto.DmAppMenuDto;
+import me.zhengjie.modules.dm.appMenu.service.dto.DmAppMenuQueryCriteria;
+import me.zhengjie.modules.dm.appMenu.service.mapstruct.DmAppMenuMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import me.zhengjie.utils.PageUtil;
+import me.zhengjie.utils.QueryHelp;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+
+/**
+* @website https://el-admin.vip
+* @description 服务实现
+* @author Li Rui
+* @date 2021-12-21
+**/
+@Service
+@RequiredArgsConstructor
+public class DmAppMenuServiceImpl implements DmAppMenuService {
+
+    private final DmAppMenuRepository dmAppMenuRepository;
+    private final DmAppMenuMapper dmAppMenuMapper;
+
+    @Override
+    public Map<String,Object> queryAll(DmAppMenuQueryCriteria criteria, Pageable pageable){
+        Page<DmAppMenu> page = dmAppMenuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder),pageable);
+        return PageUtil.toPage(page.map(dmAppMenuMapper::toDto));
+    }
+
+    @Override
+    public List<DmAppMenuDto> queryAll(DmAppMenuQueryCriteria criteria){
+        return dmAppMenuMapper.toDto(dmAppMenuRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root,criteria,criteriaBuilder)));
+    }
+
+    @Override
+    @Transactional
+    public DmAppMenuDto findById(Integer id) {
+        DmAppMenu dmAppMenu = dmAppMenuRepository.findById(id).orElseGet(DmAppMenu::new);
+        ValidationUtil.isNull(dmAppMenu.getId(),"DmAppMenu","id",id);
+        return dmAppMenuMapper.toDto(dmAppMenu);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public DmAppMenuDto create(DmAppMenu resources) {
+        return dmAppMenuMapper.toDto(dmAppMenuRepository.save(resources));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void update(DmAppMenu resources) {
+        DmAppMenu dmAppMenu = dmAppMenuRepository.findById(resources.getId()).orElseGet(DmAppMenu::new);
+        ValidationUtil.isNull( dmAppMenu.getId(),"DmAppMenu","id",resources.getId());
+        dmAppMenu.copy(resources);
+        dmAppMenuRepository.save(dmAppMenu);
+    }
+
+    @Override
+    public void deleteAll(Integer[] ids) {
+        for (Integer id : ids) {
+            dmAppMenuRepository.deleteById(id);
+        }
+    }
+
+    @Override
+    public void download(List<DmAppMenuDto> all, HttpServletResponse response) throws IOException {
+        List<Map<String, Object>> list = new ArrayList<>();
+        for (DmAppMenuDto dmAppMenu : all) {
+            Map<String,Object> map = new LinkedHashMap<>();
+            map.put("菜单名称", dmAppMenu.getName());
+            map.put("菜单图标", dmAppMenu.getIocn());
+            map.put("菜单路由", dmAppMenu.getRoute());
+//            map.put("创建者", dmAppMenu.getCreateBy());
+//            map.put("更新者", dmAppMenu.getUpdateBy());
+//            map.put("创建日期", dmAppMenu.getCreateTime());
+//            map.put("更新时间", dmAppMenu.getUpdateTime());
+            list.add(map);
+        }
+        FileUtil.downloadExcel(list, response);
+    }
+}

+ 32 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/appMenu/service/mapstruct/DmAppMenuMapper.java

@@ -0,0 +1,32 @@
+/*
+*  Copyright 2019-2020 Zheng Jie
+*
+*  Licensed under the Apache License, Version 2.0 (the "License");
+*  you may not use this file except in compliance with the License.
+*  You may obtain a copy of the License at
+*
+*  http://www.apache.org/licenses/LICENSE-2.0
+*
+*  Unless required by applicable law or agreed to in writing, software
+*  distributed under the License is distributed on an "AS IS" BASIS,
+*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*  See the License for the specific language governing permissions and
+*  limitations under the License.
+*/
+package me.zhengjie.modules.dm.appMenu.service.mapstruct;
+
+import me.zhengjie.base.BaseMapper;
+import me.zhengjie.modules.dm.appMenu.domain.DmAppMenu;
+import me.zhengjie.modules.dm.appMenu.service.dto.DmAppMenuDto;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+
+/**
+* @website https://el-admin.vip
+* @author Li Rui
+* @date 2021-12-21
+**/
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
+public interface DmAppMenuMapper extends BaseMapper<DmAppMenuDto, DmAppMenu> {
+
+}

+ 44 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/messageSendLog/util/SendMessageUtils.java

@@ -0,0 +1,44 @@
+package me.zhengjie.modules.dm.messageSendLog.util;
+
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import me.zhengjie.base.BaseResponse;
+import me.zhengjie.modules.dm.messageSendLog.domain.DmMessageSendLog;
+import me.zhengjie.modules.dm.messageSendLog.service.DmMessageSendLogService;
+import me.zhengjie.utils.StringUtils;
+
+@Slf4j
+public class SendMessageUtils {
+
+    private static String erpapiUrl = "http://222.84.157.37:25894";
+
+    /**
+     * 发送
+     */
+    public static Boolean sendChatMessage(DmMessageSendLog dmMessageSendLog){
+        String url = "/api-im-logic/busi/im/logic/c2c/sendChatMessage";
+        //组装erp发送信息接口请求参数
+        JSONObject bodyJSON = new JSONObject();
+        bodyJSON.put("clientId","yw");
+        bodyJSON.put("token","9cc3dbc9-415a-479f-a03a-cbe15412875b");
+        bodyJSON.put("payload",dmMessageSendLog.getSendContent());
+        bodyJSON.put("payloadType","text");
+        bodyJSON.put("messageFrom","usky");
+        bodyJSON.put("messageTo",dmMessageSendLog.getUsernames());
+        log.info("bodyJSON:"+bodyJSON.toJSONString());
+        String res = HttpRequest.get(erpapiUrl+url)
+                .header("serviceId", "USky")
+                .header("serviceUserId",dmMessageSendLog.getSendUserId())
+                .body(bodyJSON.toJSONString()).execute().body();
+        JSONObject json = JSONObject.parseObject(res);
+        log.info("json:"+json);
+        String code = json.getString("code");
+        if(StringUtils.equals("0000",code)){
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+}

+ 8 - 7
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/domain/DmSystem.java

@@ -19,6 +19,7 @@ import lombok.Data;
 import cn.hutool.core.bean.BeanUtil;
 import io.swagger.annotations.ApiModelProperty;
 import cn.hutool.core.bean.copier.CopyOptions;
+import me.zhengjie.base.BaseEntity;
 import me.zhengjie.domain.LocalStorage;
 import me.zhengjie.modules.dm.api.domain.DmApi;
 import me.zhengjie.modules.dm.user.domain.DmUser;
@@ -38,7 +39,7 @@ import java.util.List;
 @Entity
 @Data
 @Table(name="dm_system")
-public class DmSystem implements Serializable {
+public class DmSystem extends BaseEntity implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
@@ -64,12 +65,12 @@ public class DmSystem implements Serializable {
     @ApiModelProperty(value = "子系统管理员")
     private DmUser dmUser;
 
-    @ManyToMany
-    @ApiModelProperty(value = "子系统接口")
-    @JoinTable(name = "dm_system_api",
-            joinColumns = {@JoinColumn(name = "system_id",referencedColumnName = "id")},
-            inverseJoinColumns = {@JoinColumn(name = "api_id",referencedColumnName = "id")})
-    private List<DmApi> dmApis;
+//    @ManyToMany
+//    @ApiModelProperty(value = "子系统接口")
+//    @JoinTable(name = "dm_system_api",
+//            joinColumns = {@JoinColumn(name = "system_id",referencedColumnName = "id")},
+//            inverseJoinColumns = {@JoinColumn(name = "api_id",referencedColumnName = "id")})
+//    private List<DmApi> dmApis;
 
     public void copy(DmSystem source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));

+ 14 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/repository/DmSystemRepository.java

@@ -18,6 +18,10 @@ package me.zhengjie.modules.dm.system.repository;
 import me.zhengjie.modules.dm.system.domain.DmSystem;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
 
 /**
 * @website https://el-admin.vip
@@ -25,4 +29,14 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 * @date 2021-11-30
 **/
 public interface DmSystemRepository extends JpaRepository<DmSystem, Integer>, JpaSpecificationExecutor<DmSystem> {
+
+    /**
+     * 查询未绑定账户的用户
+     *
+     * @param userId
+     * @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", nativeQuery = true)
+    List<DmSystem> findByUserId(@Param("userId") String userId);
+
 }

+ 7 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/system/rest/DmSystemController.java

@@ -84,4 +84,11 @@ public class DmSystemController {
         dmSystemService.deleteAll(ids);
         return new ResponseEntity<>(HttpStatus.OK);
     }
+
+    @Log("根据用户查询子系统")
+    @ApiOperation("根据用户查询子系统")
+    @GetMapping(value = "/queryByUserId")
+    public ResponseEntity<Object> queryByUserId(String userId){
+        return new ResponseEntity<>(dmSystemService.findByUserId(userId),HttpStatus.OK);
+    }
 }

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

@@ -80,4 +80,11 @@ public interface DmSystemService {
     * @throws IOException /
     */
     void download(List<DmSystemDto> all, HttpServletResponse response) throws IOException;
+
+    /**
+     * 根据userId查询
+     * @param userId userId
+     * @return DmSystem
+     */
+    List<DmSystem> findByUserId(String userId);
 }

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

@@ -16,6 +16,7 @@
 package me.zhengjie.modules.dm.system.service.dto;
 
 import lombok.Data;
+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;
@@ -31,7 +32,7 @@ import java.util.List;
 * @date 2021-11-30
 **/
 @Data
-public class DmSystemDto implements Serializable {
+public class DmSystemDto extends BaseDTO implements Serializable {
 
     /** id */
     private Integer id;
@@ -48,5 +49,5 @@ public class DmSystemDto implements Serializable {
     /** 子系统管理员 */
     private DmUser dmUser;
 
-    private List<DmApi> dmApis;
+//    private List<DmApi> dmApis;
 }

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

@@ -104,4 +104,9 @@ public class DmSystemServiceImpl implements DmSystemService {
         }
         FileUtil.downloadExcel(list, response);
     }
+
+    @Override
+    public List<DmSystem> findByUserId(String userId) {
+        return dmSystemRepository.findByUserId(userId);
+    }
 }

+ 29 - 17
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/domain/DmUser.java

@@ -26,13 +26,16 @@ import javax.persistence.Entity;
 import javax.persistence.Table;
 
 import me.zhengjie.base.BaseEntity;
+import me.zhengjie.modules.dm.appMenu.domain.DmAppMenu;
 import me.zhengjie.modules.dm.plateNumber.domain.DmPlateNumber;
+import me.zhengjie.modules.dm.system.domain.DmSystem;
 import me.zhengjie.modules.system.domain.Dept;
 import me.zhengjie.modules.system.domain.Job;
 import me.zhengjie.modules.system.domain.Role;
 import org.hibernate.annotations.*;
 import java.sql.Timestamp;
 import java.io.Serializable;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -106,8 +109,21 @@ public class DmUser extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "是否是审批人")
     private Boolean isApprover = false;
 
+    @Column(name = "user_number")
+    @ApiModelProperty(value = "员工工号")
+    private String userNumber;
+
+    @Column(name = "user_code")
     @ApiModelProperty(value = "用户编号")
-    private String usercode;
+    private String userCode;
+
+    @NotNull
+    @ApiModelProperty(value = "人员状态:1启用、0禁用")
+    private Boolean status;
+
+    @Column(name = "type")
+    @ApiModelProperty(value = "人员种类(00-正式人员、01-外协单位、02-租户)")
+    private String type;
 
     @Column(name = "user_root_group_id")
     @ApiModelProperty(value = "根用户组id", hidden = true)
@@ -117,23 +133,19 @@ public class DmUser extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "根用户组名称", hidden = true)
     private String userRootGroupName;
 
-    /*@Column(name = "create_by")
-    @ApiModelProperty(value = "创建者")
-    private String createBy;
-
-    @Column(name = "update_by")
-    @ApiModelProperty(value = "更新者")
-    private String updateBy;
-
-    @Column(name = "create_time")
-    @CreationTimestamp
-    @ApiModelProperty(value = "创建日期")
-    private Timestamp createTime;
+    @ManyToMany
+    @ApiModelProperty(value = "用户系统")
+    @JoinTable(name = "dm_user_system",
+            joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "id")},
+            inverseJoinColumns = {@JoinColumn(name = "system_id",referencedColumnName = "id")})
+    private List<DmSystem> dmSystems;
 
-    @Column(name = "update_time")
-    @UpdateTimestamp
-    @ApiModelProperty(value = "更新时间")
-    private Timestamp updateTime;*/
+    @ManyToMany
+    @ApiModelProperty(value = "用户app菜单")
+    @JoinTable(name = "dm_user_menu",
+            joinColumns = {@JoinColumn(name = "user_id",referencedColumnName = "id")},
+            inverseJoinColumns = {@JoinColumn(name = "app_menu_id",referencedColumnName = "id")})
+    private List<DmAppMenu> dmAppMenus;
 
     public void copy(DmUser source){
         BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true));

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

@@ -18,9 +18,11 @@ package me.zhengjie.modules.dm.user.repository;
 import me.zhengjie.modules.dm.user.domain.DmUser;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 
+import javax.transaction.Transactional;
 import java.util.List;
 
 /**
@@ -47,4 +49,42 @@ public interface DmUserRepository extends JpaRepository<DmUser, String>, JpaSpec
      * @return /
      */
     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
+     */
+    @Modifying
+    @Transactional
+    @Query(value = "delete from dm_user_menu where user_id = :userId", nativeQuery = true)
+    void deleteUserAppMenu(@Param("userId") String userId);
+
+    /**
+     * 新增用户系统表数据
+     * @param userId
+     * @param appMenuId
+     */
+    @Modifying
+    @Transactional
+    @Query(value = "insert into dm_user_menu(user_id,app_menu_id) values(:userId, :appMenuId)", nativeQuery = true)
+    void createUserAppMenu(@Param("userId") String userId, @Param("appMenuId") Integer appMenuId);
 }

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

@@ -20,7 +20,9 @@ import me.zhengjie.annotation.Log;
 import me.zhengjie.exception.BadRequestException;
 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;
@@ -68,8 +70,8 @@ public class DmUserController {
     }
 
     @GetMapping
-    @Log("查询会议用户")
-    @ApiOperation("查询会议用户")
+    @Log("查询用户")
+    @ApiOperation("查询用户")
     @PreAuthorize("@el.check('dmUser:list')")
     public ResponseEntity<Object> query(DmUserQueryCriteria criteria, Pageable pageable){
         if (!ObjectUtils.isEmpty(criteria.getDeptId())) {
@@ -94,8 +96,8 @@ public class DmUserController {
     }
 
     @PostMapping
-    @Log("新增会议用户")
-    @ApiOperation("新增会议用户")
+    @Log("新增用户")
+    @ApiOperation("新增用户")
     @PreAuthorize("@el.check('dmUser:add')")
     public ResponseEntity<Object> create(@Validated @RequestBody DmUser resources){
         if (resources.getId() != null) {
@@ -105,8 +107,8 @@ public class DmUserController {
     }
 
     @PutMapping
-    @Log("修改会议用户")
-    @ApiOperation("修改会议用户")
+    @Log("修改用户")
+    @ApiOperation("修改用户")
     @PreAuthorize("@el.check('dmUser:edit')")
     public ResponseEntity<Object> update(@Validated @RequestBody DmUser resources) throws Exception{
         dmUserService.update(resources);
@@ -119,8 +121,8 @@ public class DmUserController {
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
-    @Log("删除会议用户")
-    @ApiOperation("删除会议用户")
+    @Log("删除用户")
+    @ApiOperation("删除用户")
     @PreAuthorize("@el.check('dmUser:del')")
     @DeleteMapping
     public ResponseEntity<Object> delete(@RequestBody String[] ids) {
@@ -136,9 +138,33 @@ public class DmUserController {
     }
 
     @GetMapping(value="/findNotBindUser")
-    @Log("查询未绑定账号的会议用户")
-    @ApiOperation("查询未绑定账号的会议用户")
+    @Log("查询未绑定账号的用户")
+    @ApiOperation("查询未绑定账号的用户")
     public ResponseEntity<Object> findNotBindUser(String userId){
         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")
+    public ResponseEntity<Object> updateUserAppMenu(@RequestBody DmUserAppMenuDto dmUserAppMenuDto){
+        //新增前删除之前得关联关系
+        dmUserService.deleteUserAppMenu(dmUserAppMenuDto.getUserId());
+        for(Integer id : dmUserAppMenuDto.getAppMenuIds()){
+            dmUserService.createUserAppMenu(dmUserAppMenuDto.getUserId(),id);
+        }
+        return new ResponseEntity<>(HttpStatus.OK);
+    }
 }

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

@@ -87,4 +87,30 @@ public interface DmUserService {
      * @return
      */
     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 /
+     */
+    void deleteUserAppMenu(String userId);
+
+    /**
+     * 新增用户app菜单数据
+     * @param userId
+     * @param appMenuId
+     */
+    void createUserAppMenu(String userId, Integer appMenuId);
 }

+ 14 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserAppMenuDto.java

@@ -0,0 +1,14 @@
+package me.zhengjie.modules.dm.user.service.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DmUserAppMenuDto {
+
+    private String userId;
+
+    private List<Integer> appMenuIds;
+
+}

+ 24 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserDto.java

@@ -17,13 +17,16 @@ package me.zhengjie.modules.dm.user.service.dto;
 
 import lombok.Data;
 import me.zhengjie.base.BaseDTO;
+import me.zhengjie.modules.dm.appMenu.domain.DmAppMenu;
 import me.zhengjie.modules.dm.plateNumber.domain.DmPlateNumber;
+import me.zhengjie.modules.dm.system.domain.DmSystem;
 import me.zhengjie.modules.system.service.dto.DeptSmallDto;
 import me.zhengjie.modules.system.service.dto.JobSmallDto;
 import me.zhengjie.modules.system.service.dto.RoleSmallDto;
 
 import java.sql.Timestamp;
 import java.io.Serializable;
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -67,9 +70,30 @@ public class DmUserDto extends BaseDTO implements Serializable {
     /** cardid */
     private String cardid;
 
+    /** 员工工号 */
+    private String userNumber;
+
+    /** 用户编号 */
+    private String userCode;
+
+    /** 人员状态:1启用、0禁用 */
+    private Boolean status;
+
+    /** 人员种类(00-正式人员、01-外协单位、02-租户) */
+    private String type;
+
+    /** 根用户组id */
     private String userRootGroupId;
 
+    /** 根用户组名称 */
     private String userRootGroupName;
 
+    /** 车牌信息 */
     private Set<DmPlateNumber> plateNumbers;
+
+    /** 用户系统 */
+    private List<DmSystem> dmSystems;
+
+    /** 用户app菜单 */
+    private List<DmAppMenu> dmAppMenus;
 }

+ 14 - 0
eladmin-system/src/main/java/me/zhengjie/modules/dm/user/service/dto/DmUserSystemDto.java

@@ -0,0 +1,14 @@
+package me.zhengjie.modules.dm.user.service.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class DmUserSystemDto {
+
+    private String userId;
+
+    private List<Integer> systemIds;
+
+}

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

@@ -136,4 +136,26 @@ 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);
+    }
+
+    @Override
+    public void createUserAppMenu(String userId, Integer appMenuId) {
+        dmUserRepository.createUserAppMenu(userId,appMenuId);
+    }
 }

+ 62 - 0
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/AnnounceTask.java

@@ -0,0 +1,62 @@
+package me.zhengjie.modules.quartz.task;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.base.Joiner;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import me.zhengjie.exception.BadRequestException;
+import me.zhengjie.modules.dm.announce.domain.DmAnnounce;
+import me.zhengjie.modules.dm.announce.repository.DmAnnounceRepository;
+import me.zhengjie.modules.dm.messageSendLog.domain.DmMessageSendLog;
+import me.zhengjie.modules.dm.messageSendLog.service.DmMessageSendLogService;
+import me.zhengjie.modules.dm.messageSendLog.util.SendMessageUtils;
+import me.zhengjie.modules.system.repository.UserRepository;
+import me.zhengjie.modules.system.service.UserService;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+/**
+ * 发送系统公告信息
+ * @author Sky
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Component
+public class AnnounceTask {
+
+    private final DmAnnounceRepository dmAnnounceRepository;
+    private final DmMessageSendLogService dmMessageSendLogService;
+    private final UserRepository userRepository;
+    private final UserService userService;
+
+    public void run(){
+        log.info("timingSendAnnounce 执行开始");
+        timingSendAnnounce();
+        log.info("timingSendAnnounce 执行结束");
+    }
+
+    public void timingSendAnnounce(){
+        //根据当前时间,获取当前时间之前未发送未取消的数据
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        List<DmAnnounce> dmAnnounceList = dmAnnounceRepository.findNotSendAnnounce(simpleDateFormat.format(System.currentTimeMillis()));
+        for(DmAnnounce dmAnnounce : dmAnnounceList){
+            DmMessageSendLog dmMessageSendLog = new DmMessageSendLog();
+            dmMessageSendLog.setSystemName("中控平台");
+            dmMessageSendLog.setSendId("dm_announce|id|"+dmAnnounce.getId());
+            dmMessageSendLog.setSendUserId(userService.findByName(dmAnnounce.getCreateBy()).getId());
+            JSONObject sendContentJSON = new JSONObject();
+            sendContentJSON.put("text",dmAnnounce.getAnnounceContent());
+            dmMessageSendLog.setSendContent(sendContentJSON);
+            dmMessageSendLog.setUsernames(Joiner.on(",").join(userRepository.getAllUsername()));
+            dmMessageSendLog.setCreateTime(simpleDateFormat.format(System.currentTimeMillis()));
+            Boolean isSuccess = SendMessageUtils.sendChatMessage(dmMessageSendLog);
+            if(isSuccess){
+                dmMessageSendLogService.create(dmMessageSendLog);
+                dmAnnounce.setSendState(1l);
+                dmAnnounceRepository.save(dmAnnounce);
+            }
+        }
+    }
+}

+ 198 - 196
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ErpDataSyncTask.java

@@ -51,200 +51,202 @@ import java.util.UUID;
 @Component
 public class ErpDataSyncTask {
 
-    private final String erpApiUrl = "http://121.31.41.88:29312";
-    private final String sign = "e34b2f59-0e9d-45ed-a32a-f4abd4381000";
-    private final String header_key = "X_AUTO_USER_INFO_HEAD";
-    private final String header_value = "{\"id\":\"anonymous\",\"tenantId\":\"caih\"}";
-
-    private final DeptService deptService;
-    private final UserService userService;
-    private final DmUserService dmUserService;
-    private final PasswordEncoder passwordEncoder;
-
-    public void run() {
-        log.info("deptsync 执行开始");
-        deptsync();
-        log.info("deptsync 执行结束");
-
-        log.info("usersync 执行开始");
-        usersync();
-        log.info("usersync 执行结束");
-    }
-
-    private JSONObject getDatas(String api, int pagenum, int pagesize) {
-        String res = HttpRequest.get(erpApiUrl + api)
-                .header(header_key, header_value)
-                .body("{\n" +
-                        "    \"formData\":{\n" +
-                        "        \"pageNum\":" + pagenum + ",\n" +
-                        "        \"pageSize\":" + pagesize + "\n" +
-                        "    },\n" +
-                        "    \"product\":\"17\",\n" +
-                        "    \"sign\":\"" + sign + "\"\n" +
-                        "}").execute().body();
-        JSONObject json = JSONObject.parseObject(res);
-        return json;
-    }
-
-    private int gettotal(String api) {
-        JSONObject json = getDatas(api, 0, 100);
-        return json.getJSONObject("page").getInteger("totalCount");
-    }
-
-    /**
-     * 部门数据同步
-     */
-    private void deptsync() {
-        String api = "/api-third-party/busi/comm/usky/queryGroup";
-
-        //计算总页数
-        int total = gettotal(api);
-        int pagesize = 100;
-        int pagetotal = (total / pagesize);
-        if (total % pagesize != 0) {
-            pagetotal++;
-        }
-
-        //按页获取
-        for (int k = 0; k < pagetotal; k++) {
-            JSONObject json = getDatas(api, k, pagesize);
-            JSONArray datas = json.getJSONArray("data");
-            JSONObject item;
-            Dept dept;
-            for (int i = 0; i < datas.size(); i++) {
-                item = datas.getJSONObject(i);
-                dept = new Dept();
-
-                if (StringUtils.isBlank(item.getString("groupId"))) {
-                    dept.setId(UUID.randomUUID().toString());
-                } else {
-                    dept.setId(item.getString("groupId"));
-                }
-                dept.setName(item.getString("groupName"));
-
-                if (item.getString("parentId").equals("~")) {
-                    dept.setPid(null);
-                } else {
-                    dept.setPid(item.getString("parentId"));
-                }
-                dept.setDeptSort(item.getInteger("sort"));
-                dept.setEnabled(item.getBoolean("groupStatus"));
-                dept.setTreeNames(item.getString("groupNamePath"));
-                dept.setTreeIds(item.getString("groupIdPath"));
-                dept.setDeptType(item.getInteger("groupType"));
-                dept.setDescription(item.getString("groupName"));
-
-                try {
-                    DeptDto deptDto = deptService.findById(item.getString("groupId"));
-                    if (deptDto != null) {
-                        deptService.update(dept);
-                    } else {
-                        deptService.create(dept);
-                    }
-                } catch (Exception ex) {
-                    System.out.println(JSONObject.toJSON(dept));
-                }
-            }
-        }
-    }
-
-    /**
-     * 人员数据同步
-     */
-    private void usersync() {
-
-        String api = "/api-third-party/busi/comm/usky/queryUser";
-
-        //计算总页数
-        int total = gettotal(api);
-        int pagesize = 100;
-        int pagetotal = (total / pagesize);
-        if (total % pagesize != 0) {
-            pagetotal++;
-        }
-
-        //按页获取
-        for (int k = 0; k < pagetotal; k++) {
-            JSONObject json = getDatas(api, k, pagesize);
-            JSONArray datas = json.getJSONArray("data");
-            JSONObject item;
-            User user;
-            UserDto userDto;
-            Dept dept;
-            DmUser dmUser;
-            DmUserDto dmUserDto;
-            for (int i = 0; i < datas.size(); i++) {
-                item = datas.getJSONObject(i);
-                user = new User();
-                user.setId(item.getString("userId"));
-                user.setUsercode(item.getString("usercode"));
-                user.setNickName(item.getString("userName"));
-                user.setUsername(item.getString("userAccount"));
-
-                if(StringUtils.isBlank(item.getString("sex"))){
-                    user.setGender("");
-                }else{
-                    user.setGender(item.getString("sex").equals("m") ? "男" : "女");
-                }
-
-                user.setEmail(item.getString("email"));
-                user.setPhone(item.getString("mobile"));
-                user.setPassword(passwordEncoder.encode("12345678"));
-                user.setEnabled(item.getInteger("userStatus") == 1);
-                user.setIsAdmin(false);
-                user.setOrgPassword("12345678");
-                dept = new Dept();
-                dept.setId(item.getString("userGroupId"));
-                if (StringUtils.isBlank(dept.getId())) {
-                    dept.setId("0001T110000000000UKL");
-                }
-                user.setDept(dept);
-
-                Set<Job> jobs = new HashSet<Job>();
-                Job job = new Job();
-                job.setId("10");
-                jobs.add(job);
-                user.setJobs(jobs);
-
-                Set<Role> roles = new HashSet<Role>();
-
-                Role role = new Role();
-                role.setId("2");//普通用户
-                roles.add(role);
-                user.setRoles(roles);
-                dmUser = new DmUser();
-                dmUser.setDept(dept);
-                dmUser.setId(user.getId());
-                dmUser.setEmail(user.getEmail());
-                dmUser.setContacts(user.getPhone());
-                dmUser.setName(user.getNickName());
-                dmUser.setSex(user.getGender());
-                dmUser.setUsercode(user.getUsercode());
-                dmUser.setJobs(jobs);
-                dmUser.setRoles(roles);
-
-                try {
-                    //1、入用户库
-                    dmUserDto = dmUserService.findById(dmUser.getId());
-
-                    if (dmUserDto != null) {
-                        dmUserService.update(dmUser);
-                    } else {
-                        dmUserService.create(dmUser);
-                    }
-                    user.setDmUser(dmUser);
-
-                    //2、入账户库并与用户库关联
-                    userDto = userService.findById(user.getId());
-                    if (userDto != null) {
-                        userService.update(user);
-                    } else {
-                        userService.create(user);
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-        }
-    }
+//    private final String erpApiUrl = "http://121.31.41.88:29312";
+//    private final String sign = "e34b2f59-0e9d-45ed-a32a-f4abd4381000";
+//    private final String header_key = "X_AUTO_USER_INFO_HEAD";
+//    private final String header_value = "{\"id\":\"anonymous\",\"tenantId\":\"caih\"}";
+//
+//    private final DeptService deptService;
+//    private final UserService userService;
+//    private final DmUserService dmUserService;
+//    private final PasswordEncoder passwordEncoder;
+//
+//    public void run() {
+//        log.info("deptsync 执行开始");
+//        deptsync();
+//        log.info("deptsync 执行结束");
+//
+//        log.info("usersync 执行开始");
+//        usersync();
+//        log.info("usersync 执行结束");
+//    }
+//
+//    private JSONObject getDatas(String api, int pagenum, int pagesize) {
+//        String res = HttpRequest.get(erpApiUrl + api)
+//                .header(header_key, header_value)
+//                .body("{\n" +
+//                        "    \"formData\":{\n" +
+//                        "        \"pageNum\":" + pagenum + ",\n" +
+//                        "        \"pageSize\":" + pagesize + "\n" +
+//                        "    },\n" +
+//                        "    \"product\":\"17\",\n" +
+//                        "    \"sign\":\"" + sign + "\"\n" +
+//                        "}").execute().body();
+//        JSONObject json = JSONObject.parseObject(res);
+//        return json;
+//    }
+//
+//    private int gettotal(String api) {
+//        JSONObject json = getDatas(api, 0, 100);
+//        return json.getJSONObject("page").getInteger("totalCount");
+//    }
+//
+//    /**
+//     * 部门数据同步
+//     */
+//    private void deptsync() {
+//        String api = "/api-third-party/busi/comm/usky/queryGroup";
+//
+//        //计算总页数
+//        int total = gettotal(api);
+//        int pagesize = 100;
+//        int pagetotal = (total / pagesize);
+//        if (total % pagesize != 0) {
+//            pagetotal++;
+//        }
+//
+//        //按页获取
+//        for (int k = 0; k < pagetotal; k++) {
+//            JSONObject json = getDatas(api, k, pagesize);
+//            JSONArray datas = json.getJSONArray("data");
+//            JSONObject item;
+//            Dept dept;
+//            for (int i = 0; i < datas.size(); i++) {
+//                item = datas.getJSONObject(i);
+//                dept = new Dept();
+//
+//                if (StringUtils.isBlank(item.getString("groupId"))) {
+//                    dept.setId(UUID.randomUUID().toString());
+//                } else {
+//                    dept.setId(item.getString("groupId"));
+//                }
+//                dept.setName(item.getString("groupName"));
+//
+//                if (item.getString("parentId").equals("~")) {
+//                    dept.setPid(null);
+//                } else {
+//                    dept.setPid(item.getString("parentId"));
+//                }
+//                dept.setDeptSort(item.getInteger("sort"));
+//                dept.setEnabled(item.getBoolean("groupStatus"));
+//                dept.setTreeNames(item.getString("groupNamePath"));
+//                dept.setTreeIds(item.getString("groupIdPath"));
+//                dept.setDeptType(item.getInteger("groupType"));
+//                dept.setDescription(item.getString("groupName"));
+//
+//                try {
+//                    DeptDto deptDto = deptService.findById(item.getString("groupId"));
+//                    if (deptDto != null) {
+//                        deptService.update(dept);
+//                    } else {
+//                        deptService.create(dept);
+//                    }
+//                } catch (Exception ex) {
+//                    System.out.println(JSONObject.toJSON(dept));
+//                }
+//            }
+//        }
+//    }
+//
+//    /**
+//     * 人员数据同步
+//     */
+//    private void usersync() {
+//
+//        String api = "/api-third-party/busi/comm/usky/queryUser";
+//
+//        //计算总页数
+//        int total = gettotal(api);
+//        int pagesize = 100;
+//        int pagetotal = (total / pagesize);
+//        if (total % pagesize != 0) {
+//            pagetotal++;
+//        }
+//
+//        //按页获取
+//        for (int k = 0; k < pagetotal; k++) {
+//            JSONObject json = getDatas(api, k, pagesize);
+//            JSONArray datas = json.getJSONArray("data");
+//            JSONObject item;
+//            User user;
+//            UserDto userDto;
+//            Dept dept;
+//            DmUser dmUser;
+//            DmUserDto dmUserDto;
+//            for (int i = 0; i < datas.size(); i++) {
+//                item = datas.getJSONObject(i);
+//                user = new User();
+//                user.setId(item.getString("userId"));
+//                user.setUsercode(item.getString("userCode"));
+//                user.setNickName(item.getString("userName"));
+//                user.setUsername(item.getString("userAccount"));
+//
+//                if(StringUtils.isBlank(item.getString("sex"))){
+//                    user.setGender("");
+//                }else{
+//                    user.setGender(item.getString("sex").equals("m") ? "男" : "女");
+//                }
+//
+//                user.setEmail(item.getString("email"));
+//                user.setPhone(item.getString("mobile"));
+//                user.setPassword(passwordEncoder.encode("12345678"));
+//                user.setEnabled(item.getInteger("userStatus") == 1);
+//                user.setIsAdmin(false);
+//                user.setOrgPassword("12345678");
+//                dept = new Dept();
+//                dept.setId(item.getString("userGroupId"));
+//                if (StringUtils.isBlank(dept.getId())) {
+//                    dept.setId("0001T110000000000UKL");
+//                }
+//                user.setDept(dept);
+//
+//                Set<Job> jobs = new HashSet<Job>();
+//                Job job = new Job();
+//                job.setId("10");
+//                jobs.add(job);
+//                user.setJobs(jobs);
+//
+//                Set<Role> roles = new HashSet<Role>();
+//
+//                Role role = new Role();
+//                role.setId("2");//普通用户
+//                roles.add(role);
+//                user.setRoles(roles);
+//                dmUser = new DmUser();
+//                dmUser.setDept(dept);
+//                dmUser.setId(user.getId());
+//                dmUser.setEmail(user.getEmail());
+//                dmUser.setContacts(user.getPhone());
+//                dmUser.setName(user.getNickName());
+//                dmUser.setSex(user.getGender());
+//                dmUser.setUserNumber(user.getUsercode());
+//                dmUser.setUsercode(user.getUsercode());
+//                dmUser.setJobs(jobs);
+//                dmUser.setRoles(roles);
+//                dmUser.setCardid(UUID.randomUUID().toString());
+//
+//                try {
+//                    //1、入用户库
+//                    dmUserDto = dmUserService.findById(dmUser.getId());
+//
+//                    if (dmUserDto != null) {
+//                        dmUserService.update(dmUser);
+//                    } else {
+//                        dmUserService.create(dmUser);
+//                    }
+//                    user.setDmUser(dmUser);
+//
+//                    //2、入账户库并与用户库关联
+//                    userDto = userService.findById(user.getId());
+//                    if (userDto != null) {
+//                        userService.update(user);
+//                    } else {
+//                        userService.create(user);
+//                    }
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+//        }
+//    }
 }

+ 16 - 13
eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/ZkDataSyncTask.java

@@ -66,16 +66,14 @@ public class ZkDataSyncTask {
     private final DmRoomDeviceRepository dmRoomDeviceRepository;
 
     public void run() {
-        log.info("deptsync 执行开始");
-        deptsync();
-        log.info("deptsync 执行结束");
+        log.info("deptSync 执行开始");
+        deptSync();
+        log.info("deptSync 执行结束");
 
-        log.info("usersync 执行开始");
-        usersync();
-        log.info("usersync 执行结束");
-    }
+        log.info("userSync 执行开始");
+        userSync();
+        log.info("userSync 执行结束");
 
-    public void run2(){
         log.info("plateNumberSync 执行开始");
         plateNumberSync();
         log.info("plateNumberSync 执行结束");
@@ -104,7 +102,7 @@ public class ZkDataSyncTask {
     /**
      * 部门数据同步
      */
-    private void deptsync() {
+    private void deptSync() {
         String api = "/api-third-party/busi/comm/usky/queryGroup";
 
         //计算总页数
@@ -161,7 +159,7 @@ public class ZkDataSyncTask {
     /**
      * 人员数据同步
      */
-    private void usersync() {
+    private void userSync() {
 
         String api = "/api-third-party/busi/comm/usky/queryUser";
 
@@ -187,7 +185,7 @@ public class ZkDataSyncTask {
                 item = datas.getJSONObject(i);
                 user = new User();
                 user.setId(item.getString("userId"));
-                user.setUsercode(item.getString("usercode"));
+                user.setUserCode(item.getString("userCode"));
                 user.setNickName(item.getString("userName"));
                 user.setUsername(item.getString("userAccount"));
 
@@ -231,7 +229,10 @@ public class ZkDataSyncTask {
                 dmUser.setContacts(user.getPhone());
                 dmUser.setName(user.getNickName());
                 dmUser.setSex(user.getGender());
-                dmUser.setUsercode(user.getUsercode());
+                dmUser.setUserNumber(user.getUserCode());
+                dmUser.setStatus(user.getEnabled());
+                dmUser.setType("00");
+                dmUser.setUserCode(user.getUserCode());
                 dmUser.setUserRootGroupId(user.getUserRootGroupId());
                 dmUser.setUserRootGroupName(user.getUserRootGroupName());
                 dmUser.setJobs(jobs);
@@ -244,11 +245,13 @@ public class ZkDataSyncTask {
                     if (dmUserDto != null) {
                         dmUserService.update(dmUser);
                     } else {
+                        dmUser.setCardid(UUID.randomUUID().toString());
                         dmUserService.create(dmUser);
                     }
                     user.setDmUser(dmUser);
 
                     //2、入账户库并与用户库关联
+                    log.info("userCode:"+user.getUserCode());
                     userDto = userService.findById(user.getId());
                     if (userDto != null) {
                         userService.update(user);
@@ -273,7 +276,7 @@ public class ZkDataSyncTask {
         param.put("nonce",newToken.get("nonce"));
         //请求车牌接口
         String res = HttpRequest.get(url)
-                .header("X_YT_ACCESS_TOKEN",newToken.get("token").toString() )
+                .header("XYTACCESSTOKEN",newToken.get("token").toString() )
                 .body(param.toJSONString()).execute().body();
         if(StringUtils.isNotEmpty(res)) {
             log.info("res:"+res);

+ 2 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java

@@ -132,8 +132,9 @@ public class User extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "扩展列", hidden = true)
     private String extendsCol;
 
+    @Column(name = "user_code")
     @ApiModelProperty(value = "用户编号")
-    private String usercode;
+    private String userCode;
 
     @Column(name = "user_root_group_id")
     @ApiModelProperty(value = "根用户组id", hidden = true)

+ 8 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java

@@ -133,4 +133,12 @@ public interface UserRepository extends JpaRepository<User, String>, JpaSpecific
     @Query(value = "SELECT u.* FROM sys_user u WHERE " +
             "u.dm_user_id = :dmUserId AND if(:userId != '',u.user_id != :userId,1=1)",nativeQuery = true)
     List<User> findByDmUserId(@Param("dmUserId")String dmUserId, @Param("userId") String userId);
+
+    /**
+     * 获取所有username
+     * @return /
+     */
+    @Query(value = "select username from sys_user",nativeQuery = true)
+    List<String> getAllUsername();
+
 }

+ 2 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDto.java

@@ -80,6 +80,8 @@ public class UserDto extends BaseDTO implements Serializable {
 
     private String remark;
 
+    private String userCode;
+
     private String userRootGroupId;
 
     private String userRootGroupName;

+ 3 - 0
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java

@@ -163,6 +163,9 @@ public class UserServiceImpl implements UserService {
         user.setErrLimit(resources.getErrLimit());
         user.setDmUser(resources.getDmUser());
         user.setDmCompany(resources.getDmCompany());
+        user.setUserRootGroupId(resources.getUserRootGroupId());
+        user.setUserRootGroupName(resources.getUserRootGroupName());
+        user.setUserCode(resources.getUserCode());
         if(StringUtils.isBlank(user.getOrgPassword())){
             user.setOrgPassword(resources.getOrgPassword());
         }

+ 3 - 19
eladmin-system/src/main/java/me/zhengjie/modules/thirdparty/v1/MessageSendLogApiController.java

@@ -12,6 +12,7 @@ import me.zhengjie.base.BaseResponse;
 import me.zhengjie.base.QueryPageParams;
 import me.zhengjie.modules.dm.messageSendLog.domain.DmMessageSendLog;
 import me.zhengjie.modules.dm.messageSendLog.service.DmMessageSendLogService;
+import me.zhengjie.modules.dm.messageSendLog.util.SendMessageUtils;
 import me.zhengjie.modules.system.service.dto.DeptQueryNoAuthCriteria;
 import me.zhengjie.utils.SecurityUtils;
 import me.zhengjie.utils.StringUtils;
@@ -31,31 +32,14 @@ public class MessageSendLogApiController {
 
     private final DmMessageSendLogService dmMessageSendLogService;
 
-    private final String erpapiUrl = "http://222.84.157.37:25894";
 
     @Log("发送IM消息")
     @ApiOperation("发送IM消息")
     @AnonymousPostMapping(value = "/sendChatMessage")
     public BaseResponse<Object> sendChatMessage(@RequestBody QueryPageParams<DmMessageSendLog> params) {
         SecurityUtils.CheckApiAuth(params);
-        String url = "/api-im-logic/busi/im/logic/c2c/sendChatMessage";
-        //组装erp发送信息接口请求参数
-        JSONObject bodyJSON = new JSONObject();
-        bodyJSON.put("clientId","yw");
-        bodyJSON.put("token","9cc3dbc9-415a-479f-a03a-cbe15412875b");
-        bodyJSON.put("payload",params.getQuery().getSendContent());
-        bodyJSON.put("payloadType","text");
-        bodyJSON.put("messageFrom","usky");
-        bodyJSON.put("messageTo",params.getQuery().getUsernames());
-        log.info("bodyJSON:"+bodyJSON.toJSONString());
-        String res = HttpRequest.get(erpapiUrl+url)
-                .header("serviceId", "USky")
-                .header("serviceUserId",params.getQuery().getSendUserId())
-                .body(bodyJSON.toJSONString()).execute().body();
-        JSONObject json = JSONObject.parseObject(res);
-        log.info("json:"+json);
-        String code = json.getString("code");
-        if(StringUtils.equals("0000",code)){
+        Boolean isSuccess = SendMessageUtils.sendChatMessage(params.getQuery());
+        if(isSuccess){
             dmMessageSendLogService.create(params.getQuery());
         } else {
             return new BaseResponse<>("发送失败",-1,"fail");

+ 1 - 1
eladmin-tools/src/main/java/me/zhengjie/service/impl/LocalStorageServiceImpl.java

@@ -75,7 +75,7 @@ public class LocalStorageServiceImpl implements LocalStorageService {
         FileUtil.checkSize(properties.getMaxSize(), multipartFile.getSize());
         String suffix = FileUtil.getExtensionName(multipartFile.getOriginalFilename());
         String type = FileUtil.getFileType(suffix);
-        File file = FileUtil.upload(multipartFile, properties.getPath().getPath() + type +  File.separator);
+        File file = FileUtil.upload(multipartFile, properties.getPath().getPath() +  File.separator);
         if(ObjectUtil.isNull(file)){
             throw new BadRequestException("上传失败");
         }