Browse Source

'开发会议室预约情况列表和会议预约接口'

james 1 year ago
parent
commit
b8b63a9f78
40 changed files with 1907 additions and 175 deletions
  1. 20 0
      service-meeting/service-meeting-biz/pom.xml
  2. 1 1
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java
  3. 20 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingInfoController.java
  4. 30 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingRoomController.java
  5. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysDeptController.java
  6. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysRoleController.java
  7. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysUserController.java
  8. 21 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysUserRoleController.java
  9. 25 2
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingInfo.java
  10. 2 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingRoom.java
  11. 101 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysDept.java
  12. 101 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysRole.java
  13. 143 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysUser.java
  14. 32 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysUserRole.java
  15. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysDeptMapper.java
  16. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysRoleMapper.java
  17. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysUserMapper.java
  18. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysUserRoleMapper.java
  19. 117 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/DmUserRepository.java
  20. 35 37
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingInfoRepository.java
  21. 196 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/UserRepository.java
  22. 19 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingInfoService.java
  23. 5 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingRoomService.java
  24. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysDeptService.java
  25. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysRoleService.java
  26. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysUserRoleService.java
  27. 16 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysUserService.java
  28. 130 125
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DmMeetingDto.java
  29. 11 9
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DmMeetingRoomDto.java
  30. 444 1
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java
  31. 76 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java
  32. 20 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysDeptServiceImpl.java
  33. 20 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysRoleServiceImpl.java
  34. 20 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysUserRoleServiceImpl.java
  35. 20 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysUserServiceImpl.java
  36. 17 0
      service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingRoomReservationVO.java
  37. 24 0
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysDeptMapper.xml
  38. 24 0
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysRoleMapper.xml
  39. 31 0
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysUserMapper.xml
  40. 11 0
      service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysUserRoleMapper.xml

+ 20 - 0
service-meeting/service-meeting-biz/pom.xml

@@ -27,6 +27,26 @@
             <artifactId>pagehelper-spring-boot-starter</artifactId>
             <artifactId>pagehelper-spring-boot-starter</artifactId>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-core</artifactId>
+            <version>4.5.16</version>
+        </dependency>
+
+        <!--语音依赖-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dyvmsapi</artifactId>
+            <version>1.2.2</version>
+        </dependency>
+
+        <!--短信依赖-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
+            <version>1.1.0</version>
+        </dependency>
+
         <dependency>
         <dependency>
             <groupId>com.usky</groupId>
             <groupId>com.usky</groupId>
             <artifactId>ruoyi-common-swagger</artifactId>
             <artifactId>ruoyi-common-swagger</artifactId>

+ 1 - 1
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/MybatisGenerator.java

@@ -70,7 +70,7 @@ public class MybatisGenerator {
         // strategy.setTablePrefix("t_"); // 表名前缀
         // strategy.setTablePrefix("t_"); // 表名前缀
         strategy.setEntityLombokModel(true); //使用lombok
         strategy.setEntityLombokModel(true); //使用lombok
         //修改自己想要生成的表
         //修改自己想要生成的表
-        strategy.setInclude("meeting_approve","meeting_approve_user","meeting_attendee","meeting_device","meeting_face","meeting_face_vef_log","meeting_file","meeting_floor","meeting_info","meeting_room");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+        strategy.setInclude("sys_dept","sys_role","sys_user","sys_user_role");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
         mpg.setStrategy(strategy);
         mpg.setStrategy(strategy);
 
 
         // 关闭默认 xml 生成,调整生成 至 根目录
         // 关闭默认 xml 生成,调整生成 至 根目录

+ 20 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingInfoController.java

@@ -1,6 +1,14 @@
 package com.usky.meeting.controller.web;
 package com.usky.meeting.controller.web;
 
 
 
 
+import com.usky.common.core.bean.ApiResult;
+import com.usky.common.security.annotation.InnerAuth;
+import com.usky.meeting.service.MeetingInfoService;
+import com.usky.meeting.service.dto.DmMeetingDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 
 import org.springframework.stereotype.Controller;
 import org.springframework.stereotype.Controller;
@@ -17,6 +25,18 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RestController
 @RequestMapping("/meetingInfo")
 @RequestMapping("/meetingInfo")
 public class MeetingInfoController {
 public class MeetingInfoController {
+    @Autowired
+    private MeetingInfoService meetingInfoService;
+
+    /**
+     * 新增会议
+     * @param resources
+     * @return
+     */
+    @PostMapping("add")
+    public ApiResult<DmMeetingDto> add(@Validated @RequestBody DmMeetingDto resources){
+        return ApiResult.success(meetingInfoService.add(resources));
+    }
 
 
 }
 }
 
 

+ 30 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingRoomController.java

@@ -5,11 +5,14 @@ import com.usky.common.core.bean.ApiResult;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.meeting.domain.MeetingRoom;
 import com.usky.meeting.domain.MeetingRoom;
 import com.usky.meeting.service.MeetingRoomService;
 import com.usky.meeting.service.MeetingRoomService;
+import com.usky.meeting.service.dto.DmMeetingRoomDto;
 import com.usky.meeting.service.vo.MeetingRoomRequestVO;
 import com.usky.meeting.service.vo.MeetingRoomRequestVO;
+import com.usky.meeting.service.vo.MeetingRoomReservationVO;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
+import java.text.ParseException;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -103,5 +106,32 @@ public class MeetingRoomController {
     public ApiResult<Map<String,Object>> attendee(Long meetingId, Long userId, String userName){
     public ApiResult<Map<String,Object>> attendee(Long meetingId, Long userId, String userName){
         return ApiResult.success(meetingRoomService.attendee(meetingId,userId,userName));
         return ApiResult.success(meetingRoomService.attendee(meetingId,userId,userName));
     }
     }
+
+    /**
+     * 会议室预约情况列表
+     * @param reservationVO
+     * @return
+     */
+    @PostMapping("getMeetingRoomReservationList")
+    public ApiResult<List<DmMeetingRoomDto>> getMeetingRoomReservationList(@RequestBody MeetingRoomReservationVO reservationVO)  throws ParseException {
+        return ApiResult.success(meetingRoomService.getMeetingRoomReservationList(reservationVO));
+
+    }
 }
 }
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysDeptController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 部门表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Controller
+@RequestMapping("/sysDept")
+public class SysDeptController {
+
+}
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysRoleController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 角色信息表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Controller
+@RequestMapping("/sysRole")
+public class SysRoleController {
+
+}
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysUserController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 用户信息表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Controller
+@RequestMapping("/sysUser")
+public class SysUserController {
+
+}
+

+ 21 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/SysUserRoleController.java

@@ -0,0 +1,21 @@
+package com.usky.meeting.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 用户和角色关联表 前端控制器
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Controller
+@RequestMapping("/sysUserRole")
+public class SysUserRoleController {
+
+}
+

+ 25 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingInfo.java

@@ -2,13 +2,20 @@ package com.usky.meeting.domain;
 
 
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.io.Serializable;
 import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
 
 
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.NotFound;
+import org.hibernate.annotations.NotFoundAction;
 
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import javax.persistence.*;
+import javax.xml.bind.annotation.XmlType;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -26,6 +33,7 @@ public class MeetingInfo implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
     @Id
     @Id
+    @TableId
     @JsonFormat(shape = JsonFormat.Shape.STRING)
     @JsonFormat(shape = JsonFormat.Shape.STRING)
     private Long meetingId;
     private Long meetingId;
 
 
@@ -37,6 +45,7 @@ public class MeetingInfo implements Serializable {
     /**
     /**
      * 会议室id
      * 会议室id
      */
      */
+
     @JsonFormat(shape = JsonFormat.Shape.STRING)
     @JsonFormat(shape = JsonFormat.Shape.STRING)
     private Long roomId;
     private Long roomId;
 
 
@@ -65,6 +74,20 @@ public class MeetingInfo implements Serializable {
      */
      */
     private String initiatorId;
     private String initiatorId;
 
 
+    /**
+     * 发起人信息
+     */
+    @Transient
+    @TableField(exist = false)
+    private SysUser initiatorUser;
+
+    /**
+     * 参与人信息
+     */
+    @Transient
+    @TableField(exist = false)
+    private List<SysUser> users;
+
     /**
     /**
      * 开始时间
      * 开始时间
      */
      */

+ 2 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/MeetingRoom.java

@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
 
 
 import javax.persistence.Entity;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Id;
+import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.ManyToOne;
 
 
 /**
 /**
@@ -32,6 +33,7 @@ public class MeetingRoom implements Serializable {
 
 
     @Id
     @Id
     @TableId
     @TableId
+    @JoinColumn(name = "room_id")
     @JsonFormat(shape = JsonFormat.Shape.STRING)
     @JsonFormat(shape = JsonFormat.Shape.STRING)
     private Long roomId;
     private Long roomId;
 
 

+ 101 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysDept.java

@@ -0,0 +1,101 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 部门表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysDept implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 部门id
+     */
+    @TableId(value = "dept_id", type = IdType.AUTO)
+    private Long deptId;
+
+    /**
+     * 父部门id
+     */
+    private Long parentId;
+
+    /**
+     * 祖级列表
+     */
+    private String ancestors;
+
+    /**
+     * 部门名称
+     */
+    private String deptName;
+
+    /**
+     * 显示顺序
+     */
+    private Integer orderNum;
+
+    /**
+     * 负责人
+     */
+    private String leader;
+
+    /**
+     * 联系电话
+     */
+    private String phone;
+
+    /**
+     * 邮箱
+     */
+    private String email;
+
+    /**
+     * 部门状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 101 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysRole.java

@@ -0,0 +1,101 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 角色信息表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 角色ID
+     */
+    @TableId(value = "role_id", type = IdType.AUTO)
+    private Long roleId;
+
+    /**
+     * 角色名称
+     */
+    private String roleName;
+
+    /**
+     * 角色权限字符串
+     */
+    private String roleKey;
+
+    /**
+     * 显示顺序
+     */
+    private Integer roleSort;
+
+    /**
+     * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)
+     */
+    private String dataScope;
+
+    /**
+     * 菜单树选择项是否关联显示
+     */
+    private Boolean menuCheckStrictly;
+
+    /**
+     * 部门树选择项是否关联显示
+     */
+    private Boolean deptCheckStrictly;
+
+    /**
+     * 角色状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+
+}

+ 143 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysUser.java

@@ -0,0 +1,143 @@
+package com.usky.meeting.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+import com.usky.common.core.bean.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+
+/**
+ * <p>
+ * 用户信息表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Entity
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    @Id
+    @TableId(value = "user_id", type = IdType.AUTO)
+    private Long userId;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 用户账号
+     */
+    private String userName;
+
+    /**
+     * 用户昵称
+     */
+    private String nickName;
+
+    /**
+     * 用户类型(00系统用户, 01 租户管理员)
+     */
+    private String userType;
+
+    /**
+     * 用户邮箱
+     */
+    private String email;
+
+    /**
+     * 手机号码
+     */
+    private String phonenumber;
+
+    /**
+     * 用户性别(0男 1女 2未知)
+     */
+    private String sex;
+
+    /**
+     * 姓名
+     */
+    private String fullName;
+
+    /**
+     * 头像地址
+     */
+    private String avatar;
+
+    /**
+     * 密码
+     */
+    private String password;
+
+    /**
+     * 帐号状态(0正常 1停用)
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 最后登录IP
+     */
+    private String loginIp;
+
+    /**
+     * 最后登录时间
+     */
+    private LocalDateTime loginDate;
+
+    /**
+     * 创建者
+     */
+    private String createBy;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新者
+     */
+    private String updateBy;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 租户ID
+     */
+    private Integer tenantId;
+
+    /**
+     * 地址
+     */
+    private String address;
+
+
+}

+ 32 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/domain/SysUserRole.java

@@ -0,0 +1,32 @@
+package com.usky.meeting.domain;
+
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 用户和角色关联表
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class SysUserRole implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 角色ID
+     */
+    private Long roleId;
+
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysDeptMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.SysDept;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 部门表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysDeptMapper extends CrudMapper<SysDept> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysRoleMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.SysRole;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 角色信息表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysRoleMapper extends CrudMapper<SysRole> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysUserMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.SysUser;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 用户信息表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysUserMapper extends CrudMapper<SysUser> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/mapper/SysUserRoleMapper.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.mapper;
+
+import com.usky.meeting.domain.SysUserRole;
+import com.usky.common.mybatis.core.CrudMapper;
+
+/**
+ * <p>
+ * 用户和角色关联表 Mapper 接口
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysUserRoleMapper extends CrudMapper<SysUserRole> {
+
+}

+ 117 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/DmUserRepository.java

@@ -0,0 +1,117 @@
+/*
+*  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 com.usky.meeting.repository;
+
+import com.usky.meeting.domain.SysUser;
+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 java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+* @website https://el-admin.vip
+* @author shiguangji
+* @date 2021-03-09
+**/
+public interface DmUserRepository extends JpaRepository<SysUser, String>, JpaSpecificationExecutor<SysUser> {
+
+//    /**
+//     * 查询未绑定账户的用户
+//     * @param userId
+//     * @return
+//     */
+//    @Query(value = "SELECT u.* FROM dm_user u WHERE " +
+//            "u.id not in (select dm_user_id from sys_user where dm_user_id is not null and if(:userId != '',user_id != :userId,1=1))",nativeQuery = true)
+//    List<SysUser> findNotBindUser(@Param("userId") String userId);
+//
+//    /**
+//     * 根据邮箱查询
+//     * @param email 邮箱
+//     * @return /
+//     */
+//    SysUser findByEmail(String email);
+//
+//    @Modifying
+//    @Query(value = "update dm_user set email = ?2 where id = ?1",nativeQuery = true)
+//    void updateEmail(String id, String email);
+//
+//    /**
+//     * 根据联系方式查询
+//     * @param contracts 联系方式
+//     * @return /
+//     */
+//    SysUser findByContacts(String contracts);
+//
+//    /**
+//     * 查询所有是审批者的用户id
+//     * @param isApprover
+//     * @return
+//     */
+//    @Query(value = "select id from DmUser where is_approver = :isApprover and if(:deptId != '',dept_id = :deptId,1=1)",nativeQuery = true)
+//    List<Long> findIdsByIsApprover(@Param("isApprover")Boolean isApprover,@Param("deptId") String deptId);
+//
+//    /**
+//     * 根据部门查询
+//     * @param deptIds /
+//     * @return /
+//     */
+//    @Query(value = "SELECT count(1) FROM dm_user u WHERE u.dept_id IN ?1", nativeQuery = true)
+//    int countByDepts(Set<String> deptIds);
+//
+//    /**
+//     * 根据角色查询
+//     * @param ids /
+//     * @return /
+//     */
+//    @Query(value = "SELECT count(1) FROM dm_user u, dm_users_roles r WHERE " +
+//            "u.id = r.user_id AND r.role_id in ?1", nativeQuery = true)
+//    int countByRoles(Set<Long> ids);
+//
+//    /**
+//     * 根据岗位查询
+//     * @param ids /
+//     * @return /
+//     */
+//    @Query(value = "SELECT count(1) FROM dm_user u, dm_users_jobs j WHERE u.id = j.user_id AND j.job_id IN ?1", nativeQuery = true)
+//    int countByJobs(Set<Long> ids);
+//
+//    /**
+//     * 根据部门获取用户
+//     * @param deptId
+//     * @return
+//     */
+//    @Query(value = "SELECT id,name from dm_user where dept_id=:deptId",nativeQuery = true)
+//    List<Map<String, Object>> getUserByDept(@Param("deptId") String deptId);
+//
+//    /**
+//     * 查询所有用户
+//     * @return /
+//     */
+//    @Query(value = "select du.id,du.name,du.dept_id as deptId,du.email,su.username,su.phone from dm_user as du left join sys_user as su on du.id = su.user_id where su.enabled=1",nativeQuery = true)
+//    List<Map<String,String>> getAllDmUser();
+//
+//    /**
+//     * 查询所有用户
+//     * @return /
+//     */
+//    @Query(value = "select du.id,du.name,du.dept_id as deptId,du.email,su.username,su.phone from dm_user as du left join sys_user as su on du.id = su.user_id where su.enabled=1 and du.name like CONCAT('%',:userName,'%')",nativeQuery = true)
+//    List<Map<String,String>> getAllDmUser(@Param("userName")String userName);
+}

+ 35 - 37
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingInfoRepository.java

@@ -144,31 +144,29 @@ public interface MeetingInfoRepository extends JpaRepository<MeetingInfo, Long>,
 //                                           @Param("searchDate") String searchDate,
 //                                           @Param("searchDate") String searchDate,
 //                                           @Param("roomId") Long roomId);
 //                                           @Param("roomId") Long roomId);
 //
 //
-//
-//
-//    /**
-//     * 判断预约时间是否与别的预约单冲突
-//     * @param roomId
-//     * @return
-//     */
-//    @Query(value = "select" +
-//            " a.meeting_id as meetingId," +
-//            " a.meeting_name as meetingName," +
-//            " a.room_id as roomId," +
-//            " a.meeting_describe as meetingDescribe," +
-//            " date_format(a.start_date,'%Y-%m-%d %H:%i:%s') as startDate," +
-//            " date_format(a.end_date,'%Y-%m-%d %H:%i:%s') as endDate" +
-//            " from dm_meeting as a" +
-//            " where a.room_id = :roomId" +
-//            " and ((start_date <= :startDate and end_date >= :startDate and end_date != :startDate) or (start_date <= :endDate and end_date >= :endDate and start_date != :endDate))" +
-//            " and if(:meetingId != '',a.meeting_id != :meetingId,1=1)" +
-//            " and a.is_cancel = 0 and a.meeting_status != 2 and a.approve_status != 2",nativeQuery = true)
-//    List<Map<String,String>> checkDmRoomMeetingDate(@Param("roomId") Long roomId,
-//                                           /*@Param("startDate") Timestamp startDate,
-//                                           @Param("endDate") Timestamp endDate,*/
-//                                           @Param("startDate") String startDate,
-//                                           @Param("endDate") String endDate,
-//                                           @Param("meetingId") Long meetingId);
+
+
+    /**
+     * 判断预约时间是否与别的预约单冲突
+     * @param roomId
+     * @return
+     */
+    @Query(value = "select" +
+            " a.meeting_id as meetingId," +
+            " a.meeting_name as meetingName," +
+            " a.room_id as roomId," +
+            " a.meeting_describe as meetingDescribe," +
+            " date_format(a.start_date,'%Y-%m-%d %H:%i:%s') as startDate," +
+            " date_format(a.end_date,'%Y-%m-%d %H:%i:%s') as endDate" +
+            " from meeting_info as a" +
+            " where a.room_id = :roomId" +
+            " and ((start_date <= :startDate and end_date >= :startDate and end_date != :startDate) or (start_date <= :endDate and end_date >= :endDate and start_date != :endDate))" +
+            " and if(:meetingId != '',a.meeting_id != :meetingId,1=1)" +
+            " and a.is_cancel = 0 and a.meeting_status != 2 and a.approve_status != 2",nativeQuery = true)
+    List<Map<String,String>> checkDmRoomMeetingDate(@Param("roomId") Long roomId,
+                                           @Param("startDate") String startDate,
+                                           @Param("endDate") String endDate,
+                                           @Param("meetingId") Long meetingId);
 //
 //
 //
 //
 //    /**
 //    /**
@@ -448,18 +446,18 @@ public interface MeetingInfoRepository extends JpaRepository<MeetingInfo, Long>,
 //            "left join ( select mf.meeting_id,CONCAT(\"[\",GROUP_CONCAT(CONCAT(ls.storage_id)),\"]\") as fileList from dm_meeting_file as mf left join tool_local_storage as ls on mf.storage_id = ls.storage_id where mf.meeting_id = :meetingId group by mf.meeting_id ) as file on file.meeting_id = m.meeting_id " +
 //            "left join ( select mf.meeting_id,CONCAT(\"[\",GROUP_CONCAT(CONCAT(ls.storage_id)),\"]\") as fileList from dm_meeting_file as mf left join tool_local_storage as ls on mf.storage_id = ls.storage_id where mf.meeting_id = :meetingId group by mf.meeting_id ) as file on file.meeting_id = m.meeting_id " +
 //            "where m.meeting_id = :meetingId",nativeQuery = true)
 //            "where m.meeting_id = :meetingId",nativeQuery = true)
 //    Map<String,Object> getMeetingDetails(@Param("meetingId") Long meetingId);
 //    Map<String,Object> getMeetingDetails(@Param("meetingId") Long meetingId);
-//
-//    /**
-//     * 根据会议开始时间的年和月,查询出所有数据
-//     */
-//    @Query(value = "select * from dm_meeting where (month(start_date) <= :month and month(end_date)>=:month) and (YEAR(start_date) <= :year and YEAR(end_date)>=:year) and (day(start_date) <= :day and day(end_date)>=:day) and room_id = :roomId and is_cancel = 0 and approve_status!=2",nativeQuery = true)
-//    List<DmMeeting> getDmMeetingByStartDatDay(@Param("roomId") Long roomId, @Param("year") Integer year, @Param("month") Integer month, @Param("day") Integer day);
-//
-//    /**
-//     * 根据会议开始时间的年和月,查询出所有数据
-//     */
-//    @Query(value = "select * from dm_meeting where month(start_date) = :month and YEAR(start_date) = :year and room_id = :roomId and is_cancel = 0 and approve_status!=2 ",nativeQuery = true)
-//    List<Map<String,Object>> getDmMeetingByStartDateYearAndMonth(@Param("roomId") Long roomId,@Param("year") Integer year, @Param("month") Integer month);
+
+    /**
+     * 根据会议开始时间的年和月,查询出所有数据
+     */
+    @Query(value = "select * from meeting_info where (month(start_date) <= :month and month(end_date)>=:month) and (YEAR(start_date) <= :year and YEAR(end_date)>=:year) and (day(start_date) <= :day and day(end_date)>=:day) and room_id = :roomId and is_cancel = 0 and approve_status!=2",nativeQuery = true)
+    List<MeetingInfo> getDmMeetingByStartDatDay(@Param("roomId") Long roomId, @Param("year") Integer year, @Param("month") Integer month, @Param("day") Integer day);
+
+    /**
+     * 根据会议开始时间的年和月,查询出所有数据
+     */
+    @Query(value = "select * from meeting_info where month(start_date) = :month and YEAR(start_date) = :year and room_id = :roomId and is_cancel = 0 and approve_status!=2 ",nativeQuery = true)
+    List<Map<String,Object>> getDmMeetingByStartDateYearAndMonth(@Param("roomId") Long roomId,@Param("year") Integer year, @Param("month") Integer month);
 //
 //
 //    /**
 //    /**
 //     * 提供根据会议室和会议时间查询会议发起人信息
 //     * 提供根据会议室和会议时间查询会议发起人信息

+ 196 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/UserRepository.java

@@ -0,0 +1,196 @@
+/*
+ *  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 com.usky.meeting.repository;
+
+import com.usky.meeting.domain.SysUser;
+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 java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Zheng Jie
+ * @date 2018-11-22
+ */
+public interface UserRepository extends JpaRepository<SysUser, String>, JpaSpecificationExecutor<SysUser> {
+//
+//    /**
+//     * 根据用户名查询
+//     * @param username 用户名
+//     * @return /
+//     */
+//    SysUser findByUsername(String username);
+//
+//    /**
+//     * 根据工号查询
+//     * @param userNumber 工号
+//     * @return /
+//     */
+//    SysUser findByUserNumber(String userNumber);
+//
+//    /**
+//     * 根据邮箱查询
+//     * @param email 邮箱
+//     * @return /
+//     */
+//    SysUser findByEmail(String email);
+//
+//    /**
+//     * 根据手机号查询
+//     * @param phone 手机号
+//     * @return /
+//     */
+//    SysUser findByPhone(String phone);
+//
+//    /**
+//     * 修改密码
+//     * @param username 用户名
+//     * @param pass 密码
+//     * @param lastPasswordResetTime /
+//     */
+//    @Modifying
+//    @Query(value = "update sys_user set password = ?2 , pwd_reset_time = ?3 where username = ?1",nativeQuery = true)
+//    void updatePass(String username, String pass, Date lastPasswordResetTime);
+//
+//    @Modifying
+//    @Query(value = "update sys_user set password = ?2 , pwd_reset_time = ?3, org_password = ?4, extends = ?5 where username = ?1",nativeQuery = true)
+//    void updatePass(String username, String pass, Date lastPasswordResetTime,String orgPass,String extend);
+//
+//    /**
+//     * 修改邮箱
+//     * @param username 用户名
+//     * @param email 邮箱
+//     */
+//    @Modifying
+//    @Query(value = "update sys_user set email = ?2 where username = ?1",nativeQuery = true)
+//    void updateEmail(String username, String email);
+//
+//    /**
+//     * 根据角色查询用户
+//     * @param roleId /
+//     * @return /
+//     */
+//    @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles r WHERE" +
+//            " u.user_id = r.user_id AND r.role_id = ?1", nativeQuery = true)
+//    List<SysUser> findByRoleId(Long roleId);
+//
+//    /**
+//     * 根据角色查询用户
+//     * @param roleId /
+//     * @return /
+//     */
+//    @Query(value = "SELECT u.user_id as userId,u.username FROM sys_user u, sys_users_roles r WHERE" +
+//            " u.user_id = r.user_id AND r.role_id = ?1", nativeQuery = true)
+//    List<Map<String,Object>> findByRoleId2(Long roleId);
+//
+//    /**
+//     * 根据角色中的部门查询
+//     * @param deptId /
+//     * @return /
+//     */
+//    @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles r, sys_roles_depts d WHERE " +
+//            "u.user_id = r.user_id AND r.role_id = d.role_id AND d.dept_id = ?1 group by u.user_id", nativeQuery = true)
+//    List<SysUser> findByRoleDeptId(String deptId);
+//
+//    /**
+//     * 根据菜单查询
+//     * @param id 菜单ID
+//     * @return /
+//     */
+//    @Query(value = "SELECT u.* FROM sys_user u, sys_users_roles ur, sys_roles_menus rm WHERE\n" +
+//            "u.user_id = ur.user_id AND ur.role_id = rm.role_id AND rm.menu_id = ?1 group by u.user_id", nativeQuery = true)
+//    List<SysUser> findByMenuId(Long id);
+//
+//    /**
+//     * 根据Id删除
+//     * @param ids /
+//     */
+//    void deleteAllByIdIn(Set<String> ids);
+//
+//    /**
+//     * 根据岗位查询
+//     * @param ids /
+//     * @return /
+//     */
+//    @Query(value = "SELECT count(1) FROM sys_user u, sys_users_jobs j WHERE u.user_id = j.user_id AND j.job_id IN ?1", nativeQuery = true)
+//    int countByJobs(Set<Long> ids);
+//
+//    /**
+//     * 根据部门查询
+//     * @param deptIds /
+//     * @return /
+//     */
+//    @Query(value = "SELECT count(1) FROM sys_user u WHERE u.dept_id IN ?1", nativeQuery = true)
+//    int countByDepts(Set<String> deptIds);
+//
+//    /**
+//     * 根据角色查询
+//     * @param ids /
+//     * @return /
+//     */
+//    @Query(value = "SELECT count(1) FROM sys_user u, sys_users_roles r WHERE " +
+//            "u.user_id = r.user_id AND r.role_id in ?1", nativeQuery = true)
+//    int countByRoles(Set<Long> ids);
+//
+//    @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<SysUser> findByDmUserId(@Param("dmUserId")String dmUserId, @Param("userId") String userId);
+//
+//
+//    /**
+//     * 根据单位查询
+//     * @param ids /
+//     * @return /
+//     */
+//    @Query(value = "SELECT count(1) FROM sys_user u WHERE u.company_id IN ?1", nativeQuery = true)
+//    int countByCompanies(Set<Long> ids);
+
+    /**
+     * 根据单位查询
+     * @param dmUserId /
+     * @return /
+     */
+    @Query(value = "SELECT u.* FROM sys_user u WHERE " +
+            "u.user_id = :dmUserId",nativeQuery = true)
+    SysUser getUserByDmUserId(@Param("dmUserId")String dmUserId);
+//
+//    /**
+//     * 根据会议id查询所有参会人的账号
+//     * @return /
+//     */
+//    @Query(value = "select su.username from dm_meeting_attendee as ma left join sys_user as su on ma.user_id = su.user_id where ma.meeting_id = :meetingId",nativeQuery = true)
+//    List<String> findUsernameByMeetingId(@Param("meetingId")Long meetingId);
+//
+//    /**
+//     * 根据会议id查询所有参会人的账号
+//     * @return /
+//     */
+//    @Query(value = "select su.email from dm_meeting_attendee as ma left join sys_user as su on ma.user_id = su.user_id where ma.meeting_id = :meetingId",nativeQuery = true)
+//    List<String> findEmailByMeetingId(@Param("meetingId")Long meetingId);
+//
+//    /**
+//     * 根据会议id查询所有参会人的账号
+//     * @return /
+//     */
+//    @Query(value = "select su.phone from dm_meeting_attendee as ma left join sys_user as su on ma.user_id = su.user_id where ma.meeting_id = :meetingId",nativeQuery = true)
+//    List<String> findPhoneByMeetingId(@Param("meetingId")Long meetingId);
+}

+ 19 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingInfoService.java

@@ -1,9 +1,15 @@
 package com.usky.meeting.service;
 package com.usky.meeting.service;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.usky.meeting.domain.MeetingInfo;
 import com.usky.meeting.domain.MeetingInfo;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.meeting.service.dto.DmMeetingDto;
 import org.springframework.data.repository.query.Param;
 import org.springframework.data.repository.query.Param;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestBody;
 
 
+import java.text.ParseException;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -27,4 +33,17 @@ public interface MeetingInfoService extends CrudService<MeetingInfo> {
      * @return  Map<String,Object>
      * @return  Map<String,Object>
      */
      */
     Map<String,Object> meetingSummaryByYear(String year, Integer tenantId);
     Map<String,Object> meetingSummaryByYear(String year, Integer tenantId);
+
+
+    JSONObject getMeetingRoomUsageByDayV2(Long roomId, String dayTime) throws ParseException;
+
+    /**
+     * 获取当月会议室得使用情况
+     * @param roomId 会议室id
+     * @param monthTime 获取会议室情况得日期
+     * @return  JSONArray
+     */
+    List<Integer> getMeetingRoomUsageByMonth(Long roomId, String monthTime) throws ParseException;
+
+    DmMeetingDto add(DmMeetingDto resources);
 }
 }

+ 5 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingRoomService.java

@@ -3,9 +3,12 @@ package com.usky.meeting.service;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.meeting.domain.MeetingRoom;
 import com.usky.meeting.domain.MeetingRoom;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.common.mybatis.core.CrudService;
+import com.usky.meeting.service.dto.DmMeetingRoomDto;
 import com.usky.meeting.service.vo.MeetingRoomRequestVO;
 import com.usky.meeting.service.vo.MeetingRoomRequestVO;
+import com.usky.meeting.service.vo.MeetingRoomReservationVO;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestBody;
 
 
+import java.text.ParseException;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -33,4 +36,6 @@ public interface MeetingRoomService extends CrudService<MeetingRoom> {
     void remove(Long roomId);
     void remove(Long roomId);
 
 
     Map<String,Object> attendee(Long meetingId, Long userId, String userName);
     Map<String,Object> attendee(Long meetingId, Long userId, String userName);
+
+    List<DmMeetingRoomDto> getMeetingRoomReservationList(MeetingRoomReservationVO reservationVO)  throws ParseException;
 }
 }

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysDeptService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.SysDept;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 部门表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysDeptService extends CrudService<SysDept> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysRoleService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.SysRole;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 角色信息表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysRoleService extends CrudService<SysRole> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysUserRoleService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.SysUserRole;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 用户和角色关联表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysUserRoleService extends CrudService<SysUserRole> {
+
+}

+ 16 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/SysUserService.java

@@ -0,0 +1,16 @@
+package com.usky.meeting.service;
+
+import com.usky.meeting.domain.SysUser;
+import com.usky.common.mybatis.core.CrudService;
+
+/**
+ * <p>
+ * 用户信息表 服务类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+public interface SysUserService extends CrudService<SysUser> {
+
+}

+ 130 - 125
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DmMeetingDto.java

@@ -1,125 +1,130 @@
-///*
-//*  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 com.usky.meeting.service.dto;
-//
-//import com.alibaba.fastjson.annotation.JSONField;
-//import com.alibaba.fastjson.serializer.ToStringSerializer;
-//import com.usky.meeting.service.dto.DmMeetingRoomDto;
-//import com.usky.meeting.domain.DmDevice;
-//import com.usky.meeting.domain.SysUser;
-//import com.usky.meeting.domain.ToolLocalStorage;
-//import lombok.Data;
-//
-//import java.io.Serializable;
-//import java.sql.Timestamp;
-//import java.util.Set;
-//
-///**
-//* @website https://el-admin.vip
-//* @description /
-//* @author shiguangji
-//* @date 2021-03-15
-//**/
-//@Data
-//public class DmMeetingDto implements Serializable {
-//
-//    /** 防止精度丢失 */
-//    @JSONField(serializeUsing = ToStringSerializer.class)
-//    private Long meetingId;
-//
-//    /** 会议议题 */
-//    private String meetingName;
-//
-//    /** 会议室id */
-//    private DmMeetingRoomDto room;
-//
-//    private String roomName;
-//    /** 会议介绍 */
-//    private String meetingDescribe;
-//
-//    /** 会议类型(如研讨会、部门会议等) */
-//    private String meetingType;
-//
-//    /** 参与部门 */
-//    private DeptDto dept;
-//
-//    /** 发起人id */
-//    private DmUserDto initiatorUser;
-//
-//    private Set<SysUser> users;
-//
-//    private Set<ToolLocalStorage> localStorages;
-//
-//    private Set<DmDevice> dmDevices;
-//
-//    /** 开始时间 */
-//    private Timestamp startDate;
-//
-//    /** 结束时间 */
-//    private Timestamp endDate;
-//
-//    /** 审批状态(0-审批中 1-审批通过 2-审批驳回) */
-//    private Long approveStatus;
-//
-//    /** 审批者意见 */
-//    private String approveSuggest;
-//
-//    /** 实际签到人数 */
-//    private Integer actualCount;
-//
-//    /** 应到人数/计划人数 */
-//    private Integer planCount;
-//
-//    /** 是否延期(会议是否需要延期30分钟) */
-//    private Boolean isDelay;
-//
-//    /** 备注 */
-//    private String remark;
-//
-//    /** 会议状态(未开始/进行中/已结束) */
-//    private Long meetingStatus;
-//
-//    /** 关联任务id */
-//    private String taskId;
-//
-//    /** 任务实例id */
-//    private String procInstId;
-//
-//    /** 是否取消 */
-//    private Boolean isCancel;
-//
-//    /** 通知类型(APP/Email/短信) */
-//    private String sendType;
-//
-//    /** 会议性质(1-高层会议/0-普通会议) */
-//    private String meetingProp;
-//
-//    /** 是否需要审批(0-否 1-是) */
-//    private Boolean isApprove;
-//
-//    /** 高层会议-指定用户 */
-//    private Long gcAssignUser;
-//
-//    /** 会议模式 */
-//    private String meetingMode;
-//
-//    private Set<Long> gcAssignUsers;
-//
-//    private Set<Long> approveUsers;
-//
-//    private Set<DmUserDto> userList;
-//
-//}
+/*
+*  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 com.usky.meeting.service.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.ToStringSerializer;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.usky.meeting.domain.MeetingDevice;
+import com.usky.meeting.service.dto.DmMeetingRoomDto;
+import com.usky.meeting.domain.SysUser;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.time.LocalDateTime;
+import java.util.Set;
+
+/**
+* @website https://el-admin.vip
+* @description /
+* @author shiguangji
+* @date 2021-03-15
+**/
+@Data
+public class DmMeetingDto implements Serializable {
+
+    /** 防止精度丢失 */
+    @JSONField(serializeUsing = ToStringSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
+    private Long meetingId;
+
+    /** 会议议题 */
+    private String meetingName;
+
+    /** 会议室id */
+    private DmMeetingRoomDto room;
+
+    private Long roomId;
+
+    private String roomName;
+    /** 会议介绍 */
+    private String meetingDescribe;
+
+    /** 会议类型(如研讨会、部门会议等) */
+    private String meetingType;
+
+    /** 参与部门 */
+    private DeptDto dept;
+
+    /** 发起人id */
+    private DmUserDto initiatorUser;
+
+    private Set<SysUser> users;
+
+
+    private Set<MeetingDevice> dmDevices;
+
+    /** 开始时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String startDate;
+
+    /** 结束时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private String endDate;
+
+    /** 审批状态(0-审批中 1-审批通过 2-审批驳回) */
+    private Integer approveStatus;
+
+    /** 审批者意见 */
+    private String approveSuggest;
+
+    /** 实际签到人数 */
+    private Integer actualCount;
+
+    /** 应到人数/计划人数 */
+    private Integer planCount;
+
+    /** 是否延期(会议是否需要延期30分钟)(0-否 1-是) */
+    private Integer isDelay;
+
+    /** 备注 */
+    private String remark;
+
+    /** 会议状态(0-未开始 1-进行中 2-已结束) */
+    private Integer meetingStatus;
+
+    /** 关联任务id */
+    private String taskId;
+
+    /** 任务实例id */
+    private String procInstId;
+
+    /** 是否取消(0-否 1-是) */
+    private Integer isCancel;
+
+    /** 通知类型(APP/Email/短信) */
+    private String sendType;
+
+    /** 会议性质(1-高层会议/0-普通会议) */
+    private String meetingProp;
+
+    /** 是否需要审批(0-否 1-是) */
+    private Integer isApprove;
+
+    /** 高层会议-指定用户 */
+    private Long gcAssignUser;
+
+    /** 会议模式 */
+    private Integer meetingMode;
+
+    private Set<Long> gcAssignUsers;
+
+    private Set<Long> approveUsers;
+
+    private Set<DmUserDto> userList;
+
+}

+ 11 - 9
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DmMeetingRoomDto.java

@@ -18,10 +18,12 @@ package com.usky.meeting.service.dto;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.serializer.ToStringSerializer;
 import com.alibaba.fastjson.serializer.ToStringSerializer;
+import com.usky.meeting.domain.MeetingFloor;
 import lombok.Data;
 import lombok.Data;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
 import java.sql.Timestamp;
 import java.sql.Timestamp;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -42,7 +44,7 @@ public class DmMeetingRoomDto implements Serializable {
     private String roomName;
     private String roomName;
 
 
     /** 所在楼层 */
     /** 所在楼层 */
-    private DmFloorDto dmFloor;
+    private MeetingFloor dmFloor;
 
 
 //    //    审批人
 //    //    审批人
 //    private DmUserDto dmUser;
 //    private DmUserDto dmUser;
@@ -69,23 +71,23 @@ public class DmMeetingRoomDto implements Serializable {
     /** 备注 */
     /** 备注 */
     private String remark;
     private String remark;
 
 
-    /** 会议室使用状态 */
-    private Long roomStatus;
+    /** 会议室使用状态(0-未使用 1-使用中) */
+    private Integer roomStatus;
 
 
-    /** 会议室预约状态 */
-    private Long reserveStatus;
+    /** 会议室预约状态(0-未预约 1-已预约) */
+    private Integer reserveStatus;
 
 
-    /** 会议室状态 */
-    private String status;
+    /** 会议室状态(0.启用 1.停用) */
+    private Integer status;
 
 
     /** 会议室环境 */
     /** 会议室环境 */
     private String environmental;
     private String environmental;
 
 
     /** 最近一次使用时间(正在使用的会议室,在预约时间外延后一小时开发预约) */
     /** 最近一次使用时间(正在使用的会议室,在预约时间外延后一小时开发预约) */
-    private Timestamp lastUseTime;
+    private LocalDateTime lastUseTime;
 
 
     /** 是否需要审批(0-否 1-是) */
     /** 是否需要审批(0-否 1-是) */
-    private Boolean isApprove;
+    private Integer isApprove;
 
 
     private String approver;
     private String approver;
 
 

+ 444 - 1
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java

@@ -1,15 +1,55 @@
 package com.usky.meeting.service.impl;
 package com.usky.meeting.service.impl;
 
 
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
+import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.profile.DefaultProfile;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.google.common.base.Joiner;
+import com.usky.common.core.exception.BusinessException;
+import com.usky.common.core.util.DateUtils;
+import com.usky.common.security.utils.SecurityUtils;
+import com.usky.meeting.domain.MeetingAttendee;
 import com.usky.meeting.domain.MeetingInfo;
 import com.usky.meeting.domain.MeetingInfo;
+import com.usky.meeting.domain.SysUser;
 import com.usky.meeting.mapper.MeetingInfoMapper;
 import com.usky.meeting.mapper.MeetingInfoMapper;
+import com.usky.meeting.repository.DmUserRepository;
+import com.usky.meeting.repository.MeetingAttendeeRepository;
 import com.usky.meeting.repository.MeetingInfoRepository;
 import com.usky.meeting.repository.MeetingInfoRepository;
+import com.usky.meeting.repository.UserRepository;
+import com.usky.meeting.service.MeetingAttendeeService;
 import com.usky.meeting.service.MeetingInfoService;
 import com.usky.meeting.service.MeetingInfoService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.meeting.service.SysUserService;
+import com.usky.meeting.service.dto.DmMeetingDto;
+import com.usky.meeting.service.dto.DmUserDto;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
 
-import java.util.Map;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneOffset;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -20,11 +60,20 @@ import java.util.Map;
  * @since 2024-03-08
  * @since 2024-03-08
  */
  */
 @Service
 @Service
+@Slf4j
 @RequiredArgsConstructor
 @RequiredArgsConstructor
 public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMapper, MeetingInfo> implements MeetingInfoService {
 public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMapper, MeetingInfo> implements MeetingInfoService {
 
 
     @Autowired
     @Autowired
     private MeetingInfoRepository dmMeetingRepository;
     private MeetingInfoRepository dmMeetingRepository;
+    @Autowired
+    private MeetingAttendeeRepository meetingAttendeeRepository;
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private UserRepository userRepository;
+    @Autowired
+    private MeetingAttendeeService meetingAttendeeService;
 
 
     @Override
     @Override
     public Map<String, Object> meetingSummary(Integer tenantId) {
     public Map<String, Object> meetingSummary(Integer tenantId) {
@@ -35,4 +84,398 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
     public Map<String, Object> meetingSummaryByYear(String year,Integer tenantId) {
     public Map<String, Object> meetingSummaryByYear(String year,Integer tenantId) {
         return dmMeetingRepository.meetingSummaryByYear(year,tenantId);
         return dmMeetingRepository.meetingSummaryByYear(year,tenantId);
     }
     }
+
+    @Override
+    public JSONObject getMeetingRoomUsageByDayV2(Long roomId, String dayTime) throws ParseException {
+        JSONObject jsonObject = new JSONObject();
+        JSONArray array = new JSONArray();
+        JSONArray dmMeetingList = new JSONArray();
+
+        SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = dtf.parse(dayTime);
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        //获取日期中得年
+        Integer year= cal.get(Calendar.YEAR);
+        System.out.println("year:"+year);
+        //获取日期中得月
+        Integer month= (cal.get(Calendar.MONTH) + 1);
+        System.out.println("month:"+month);
+        //获取日期中得日
+        Integer day= Integer.valueOf(String.format("%td", date));
+        List<MeetingInfo> dmMeetings = dmMeetingRepository.getDmMeetingByStartDatDay(roomId,year,month,day);
+        LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
+        sysUserQuery.eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+        List<SysUser> userList = sysUserService.list(sysUserQuery);
+        if(userList.size() <= 0){
+            throw new BusinessException("用户信息不能为空");
+        }
+
+        if(!ObjectUtil.isEmpty(dmMeetings)){
+            for(MeetingInfo dmMeeting : dmMeetings){
+                //参会人员信息
+                List<SysUser> attendeeUserList = new ArrayList<>();
+                List<MeetingAttendee> attendeeList = meetingAttendeeRepository.findMeetingAttendeeList(dmMeeting.getMeetingId(),null, SecurityUtils.getTenantId());
+                if(attendeeList.size() > 0){
+                    for (int i = 0; i < attendeeList.size(); i++) {
+                        Long uid = attendeeList.get(i).getUserId();
+                        for (int j = 0; j < userList.size(); j++) {
+                            if(uid.equals(userList.get(j).getUserId())){
+                                attendeeUserList.add(userList.get(j));
+                                break;
+                            }
+                        }
+                    }
+                }
+                dmMeeting.setUsers(attendeeUserList);
+                //发起人信息
+                for (int i = 0; i < userList.size(); i++) {
+                    if(userList.get(i).getUserId().equals(Long.valueOf(dmMeeting.getInitiatorId()))){
+                        dmMeeting.setInitiatorUser(userList.get(i));
+                        break;
+                    }
+                }
+
+                dmMeetingList.add(dmMeeting);
+                JSONArray dateArray = new JSONArray();
+                double meetingStartNumber = 0.0;
+                double meetingEndNumber = 0.0;
+                Timestamp meetingStartTimestamp = Timestamp.valueOf(dmMeeting.getStartDate());
+                Date meetingStartDate = new Date(meetingStartTimestamp.getTime());
+                Calendar meetingStartCal = Calendar.getInstance();
+                meetingStartCal.setTime(meetingStartDate);
+                if(cal.get(Calendar.YEAR) == meetingStartCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingStartCal.get(Calendar.DAY_OF_YEAR)) {
+                    int meetingStartHours = meetingStartDate.getHours();
+                    meetingStartNumber = meetingStartNumber + meetingStartHours;
+                    int meetingStartMinutes = meetingStartDate.getMinutes();
+                    if (meetingStartMinutes >= 30) {
+                        meetingStartNumber = meetingStartNumber + 0.5;
+                    }
+                    dateArray.add(meetingStartNumber);
+                } else {
+                    meetingStartNumber = 0.0;
+                    dateArray.add(meetingStartNumber);
+                }
+                Timestamp meetingEndTimestamp = Timestamp.valueOf(dmMeeting.getEndDate());
+                Date meetingEndDate = new Date(meetingEndTimestamp.getTime());
+                Calendar meetingEndCal = Calendar.getInstance();
+                meetingEndCal.setTime(meetingEndDate);
+                if(cal.get(Calendar.YEAR) == meetingEndCal.get(Calendar.YEAR) && cal.get(Calendar.DAY_OF_YEAR) == meetingEndCal.get(Calendar.DAY_OF_YEAR)) {
+                    int meetingEndHours = meetingEndDate.getHours();
+                    meetingEndNumber = meetingEndNumber + meetingEndHours;
+                    int meetingEndMinutes = meetingEndDate.getMinutes();
+                    if (meetingEndMinutes >= 30) {
+                        meetingEndNumber = meetingEndNumber + 0.5;
+                        if (meetingEndMinutes == 59) {
+                            meetingEndNumber = meetingEndNumber + 0.5;
+                        }
+                    }
+                    dateArray.add(meetingEndNumber);
+                } else {
+                    meetingEndNumber = 24.0;
+                    dateArray.add(meetingEndNumber);
+                }
+                array.add(dateArray);
+            }
+        }
+        jsonObject.put("timeRange", array);
+        jsonObject.put("dmMeeting", dmMeetingList);
+        return jsonObject;
+    }
+
+    @Override
+    public List<Integer> getMeetingRoomUsageByMonth(Long roomId, String monthTime) throws ParseException {
+        SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date date = dtf.parse(monthTime);
+        System.out.println("date:" + date);
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        //获取日期中得年
+        Integer year = cal.get(Calendar.YEAR);
+        System.out.println("year:" + year);
+        //获取日期中得月
+        Integer month = (cal.get(Calendar.MONTH) + 1);
+        System.out.println("month:" + month);
+
+        List<Map<String, Object>> dmMeetings = dmMeetingRepository.getDmMeetingByStartDateYearAndMonth(roomId, year, month);
+        if (!ObjectUtils.isEmpty(dmMeetings)) {
+            List<Integer> list = new ArrayList<>();
+            Set<Integer> set = new HashSet<>();
+            for (Map<String, Object> map : dmMeetings) {
+                Date startDate = dtf.parse(map.get("start_date").toString());
+                Date endDate = dtf.parse(map.get("end_date").toString());
+                Calendar calendar = Calendar.getInstance();
+                while (startDate.getTime() <= endDate.getTime()) {
+                    // 把日期添加到集合
+                    Integer startDay = Integer.valueOf(String.format("%td", startDate));
+                    set.add(startDay);
+                    // 设置日期
+                    calendar.setTime(startDate);
+                    //把日期增加一天
+                    calendar.add(Calendar.DATE, 1);
+                    // 获取增加后的日期
+                    startDate = calendar.getTime();
+                }
+
+            }
+            list.addAll(set);
+            return list;
+        }
+        return new ArrayList<>();
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public DmMeetingDto add(DmMeetingDto resources) {
+        String meetingMode = resources.getMeetingMode().toString();
+        SysUser user = userRepository.getUserByDmUserId(resources.getInitiatorUser().getId());
+        if (meetingMode.equals("1")) {
+
+        } else if (meetingMode.equals("0") || meetingMode.equals("2")) {
+            //判断指定会议室预约的时间是否与存在的预约单冲突
+            List<Map<String, String>> dmMeetingList = dmMeetingRepository.checkDmRoomMeetingDate(resources.getRoom().getRoomId(), resources.getStartDate(), resources.getEndDate(), resources.getMeetingId());
+            if (dmMeetingList != null && dmMeetingList.size() > 0) {
+                throw new BusinessException("预约时间段冲突,请重设预约时间");
+            }
+            if (!ObjectUtils.isEmpty(resources.getRoom())) {
+                if (resources.getRoom().getStatus().equals("1")) {
+                    throw new BusinessException("该会议室已停用");
+                }
+                resources.setRoomName(resources.getRoom().getRoomName());
+            }
+            if (resources.getRoom().getIsApprove() == 1) {
+
+            } else {
+                resources.setApproveStatus(1);
+
+                try {
+                    send(resources);
+                } catch (ClientException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        resources.setIsDelay(0);
+        resources.setIsCancel(0);
+        resources.setMeetingStatus(0);
+        MeetingInfo meeting = this.toEntity(resources);
+        this.save(meeting);
+        if (!ObjectUtils.isEmpty(resources.getUsers())) {
+            for(SysUser dmUser : resources.getUsers()){
+                MeetingAttendee meetingAttendee = new MeetingAttendee();
+                meetingAttendee.setMeetingId(meeting.getMeetingId());
+                meetingAttendee.setUserId(dmUser.getUserId());
+                meetingAttendee.setTenantId(SecurityUtils.getTenantId());
+                meetingAttendeeService.save(meetingAttendee);
+            }
+
+        }
+        return resources;
+    }
+
+    public void send(DmMeetingDto resources) throws ClientException {
+        if (StringUtils.isNotBlank(resources.getSendType())) {
+            if (resources.getSendType().equals("短信")) {
+                for (SysUser dmUser : resources.getUsers()) {
+                    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+                    String sj = resources.getStartDate();
+                    String sendContent2 = "您已受邀参加会议:" + resources.getMeetingName() + ",该会议将于" + sj + " 在" + resources.getRoomName() + "举行。请您及时准备相关参会材料,并请准时出席。";
+
+                    DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "LTAI5tH3VvRL5BUkovCokHJX", "SaaWUouNqvcA0C746gcNOH9m6SRYN4");
+                    IAcsClient client = new DefaultAcsClient(profile);
+                    SendSmsRequest request = new SendSmsRequest();
+                    request.setPhoneNumbers(dmUser.getPhonenumber());//接收短信的手机号码
+                    request.setSignName("上海永天科技股份有限公司");//短信签名名称
+                    request.setTemplateCode("SMS_463791105");//短信模板CODE
+                    request.setTemplateParam("{\"deviceName\":\""+dmUser.getNickName()+"\","+"\"time\":\""+sj+"\","+
+                            "\"alarmType\":\""+"短信"+"\","+"\"alarmContent\":\""+sendContent2+"\"}");
+                    SendSmsResponse code = client.getAcsResponse(request);
+                    if(code.getCode() != null && code.getCode().equals("OK")) {
+                        //请求成功
+                    }else {
+                        throw new BusinessException("发送短信失败");
+                    }
+                }
+
+
+            } else if (resources.getSendType().equals("Email")) {
+//                List<String> emailList = new ArrayList<>();
+//                if (!ObjectUtils.isEmpty(resources.getUserList())) {
+//                    for (DmUserDto dmUserDto : resources.getUserList()) {
+//                        if (!ObjectUtils.isEmpty(dmUserDto.getEmail()) && !StringUtils.equals(dmUserDto.getId(), resources.getInitiatorUser().getId())) {
+//                            emailList.add(dmUserDto.getEmail());
+//                        }
+//                    }
+//                } else {
+//                    for (User dmUser : resources.getUsers()) {
+//                        if (!ObjectUtils.isEmpty(dmUser.getEmail()) && !StringUtils.equals(dmUser.getId(), resources.getInitiatorUser().getId())) {
+//                            emailList.add(dmUser.getEmail());
+//                        }
+//                    }
+//                }
+//                log.info("emailList:" + emailList);
+//                SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//                String sj = sf.format(resources.getStartDate());
+//                String sendContent2 = "您已受邀参加会议:" + resources.getMeetingName() + ",该会议将于" + sj + " 在" + resources.getRoomName() + "举行。请您及时准备相关参会材料,并请准时出席。";
+//                sendEmail(user.getEmail(), emailList, "会议预约通知", sendContent2);
+            }
+        }
+    }
+
+//    //邮箱通知
+//    public void sendEmail(String recipientMailbox, List<String> recipientMailbox1, String emailSubject, String messageBody) {
+//        // 发送人的邮件和密码
+//        String myEmailAccount = EmailProperties.myEmailAccount;
+//        String myEmailPassword = EmailProperties.myEmailPassword;
+//        SendMailUtils.sendMail(myEmailAccount, myEmailPassword, recipientMailbox, recipientMailbox1, null, emailSubject, messageBody, false);
+//    }
+
+//    public JSONObject reserveMeetingData(DmMeetingDto resources) {
+//        String reserveMeetingUrl = UrlProperties.erpYyUrl + "/api-im-logic/busi/meeting/reserveMeeting";
+//        JSONObject reserveMeetingJson = new JSONObject();
+//        reserveMeetingJson.put("originatorId", resources.getInitiatorUser().getId());
+//        reserveMeetingJson.put("originatorName", resources.getInitiatorUser().getName());
+//        reserveMeetingJson.put("meetingTitle", resources.getMeetingName());
+//        reserveMeetingJson.put("meetingType", "video");
+//        reserveMeetingJson.put("meetingStartTime", resources.getStartDate().getTime());
+//        long diff = resources.getEndDate().getTime() - resources.getStartDate().getTime();
+//        long min = diff / (1000 * 60);
+//        reserveMeetingJson.put("appointmentDuration", min * 60);
+//        reserveMeetingJson.put("appointmentRemindDuration", 60);
+//        reserveMeetingJson.put("advanceTime", null);
+//        reserveMeetingJson.put("remarks", resources.getMeetingDescribe());
+//        JSONArray invitedUserList = new JSONArray();
+//        if (ObjectUtils.isEmpty(resources.getUserList())) {
+//            Set<User> userList = resources.getUsers();
+//            for (User dmUserDto : userList) {
+//                DmUserDto dmUserDto1 = dmUserService.findById(dmUserDto.getId());
+//                JSONObject invitedUser = new JSONObject();
+//                invitedUser.put("userId", dmUserDto1.getId());
+//                invitedUser.put("userName", dmUserDto1.getName());
+//                invitedUser.put("jobName", dmUserDto1.getDept().getName());
+//                invitedUser.put("mobile", dmUserDto1.getContacts());
+//                invitedUserList.add(invitedUser);
+//            }
+//        } else {
+//            Set<DmUserDto> userList = resources.getUserList();
+//            for (DmUserDto dmUserDto : userList) {
+//                DmUserDto dmUserDto1 = dmUserService.findById(dmUserDto.getId());
+//                JSONObject invitedUser = new JSONObject();
+//                invitedUser.put("userId", dmUserDto1.getId());
+//                invitedUser.put("userName", dmUserDto1.getName());
+//                invitedUser.put("jobName", dmUserDto1.getDept().getName());
+//                invitedUser.put("mobile", dmUserDto1.getContacts());
+//                invitedUserList.add(invitedUser);
+//            }
+//        }
+//        reserveMeetingJson.put("invitedUserList", invitedUserList);
+//        Map<String, String> headersMap = new HashMap<String, String>();
+//        headersMap.put("Content-Type", "application/json; charset=utf-8");
+//        headersMap.put("serviceId", "USky");
+//        headersMap.put("serviceUserId", resources.getInitiatorUser().getId());
+//        log.info("reserveMeetingJson:" + reserveMeetingJson.toJSONString());
+//        String reserveMeetingData = HttpClientUtil.sendPost(reserveMeetingUrl, "POST", headersMap, reserveMeetingJson.toString());
+//        log.info("reserveMeetingData:" + reserveMeetingData);
+//        try {
+//            JSONObject reserveMeetingDataJson = JSONObject.parseObject(reserveMeetingData);
+//            String code = reserveMeetingDataJson.getString("code");
+//            if (!StringUtils.equals(code, "0000")) {
+//                saveLog("ERP系统预约会议接口返回失败!", reserveMeetingData, reserveMeetingJson.toJSONString(), UrlProperties.erpYyUrl, "/api-im-logic/busi/meeting/reserveMeeting");
+//            }
+//            return reserveMeetingDataJson;
+//        } catch (Exception ex) {
+//            saveLog("ERP系统预约会议接口返回失败!", reserveMeetingData, reserveMeetingJson.toJSONString(), UrlProperties.erpYyUrl, "/api-im-logic/busi/meeting/reserveMeeting");
+//            throw new BadRequestException("ERP系统预约会议接口返回失败!");
+//        }
+//    }
+
+    public MeetingInfo toEntity(DmMeetingDto dto) {
+        if ( dto == null ) {
+            return null;
+        }
+
+        MeetingInfo dmMeeting = new MeetingInfo();
+
+        dmMeeting.setCreateBy(SecurityUtils.getUsername());
+        dmMeeting.setCreateTime(LocalDateTime.now());
+        dmMeeting.setTenantId(SecurityUtils.getTenantId());
+        dmMeeting.setMeetingName( dto.getMeetingName() );
+        dmMeeting.setRoomId(dto.getRoomId());
+        dmMeeting.setRoomName( dto.getRoomName() );
+        dmMeeting.setMeetingDescribe( dto.getMeetingDescribe() );
+        dmMeeting.setMeetingType( dto.getMeetingType() );
+        dmMeeting.setInitiatorId(dto.getInitiatorUser().getId());
+        dmMeeting.setStartDate(LocalDateTime.parse(dto.getStartDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) );
+        dmMeeting.setEndDate(LocalDateTime.parse(dto.getEndDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) );
+        dmMeeting.setApproveStatus( dto.getApproveStatus() );
+        dmMeeting.setApproveSuggest( dto.getApproveSuggest() );
+        dmMeeting.setActualCount( dto.getActualCount() );
+        dmMeeting.setPlanCount( dto.getPlanCount() );
+        dmMeeting.setIsDelay( dto.getIsDelay() );
+        dmMeeting.setRemark( dto.getRemark() );
+        dmMeeting.setMeetingStatus( dto.getMeetingStatus() );
+        dmMeeting.setTaskId( dto.getTaskId() );
+        dmMeeting.setProcInstId( dto.getProcInstId() );
+        dmMeeting.setIsCancel( dto.getIsCancel() );
+        dmMeeting.setSendType( dto.getSendType() );
+        dmMeeting.setIsApprove( dto.getIsApprove() );
+        dmMeeting.setMeetingMode( dto.getMeetingMode() );
+
+        return dmMeeting;
+    }
+//
+//    @Override
+//    public DmMeetingDto toDto(MeetingInfo entity) {
+//        if ( entity == null ) {
+//            return null;
+//        }
+//
+//        DmMeetingDto dmMeetingDto = new DmMeetingDto();
+//
+//        dmMeetingDto.setCreateBy( entity.getCreateBy() );
+//        dmMeetingDto.setUpdateBy( entity.getUpdateBy() );
+//        dmMeetingDto.setCreateTime( entity.getCreateTime() );
+//        dmMeetingDto.setUpdateTime( entity.getUpdateTime() );
+//        dmMeetingDto.setMeetingId( entity.getMeetingId() );
+//        dmMeetingDto.setMeetingName( entity.getMeetingName() );
+//        dmMeetingDto.setRoom( dmMeetingRoomToDmMeetingRoomDto( entity.getRoom() ) );
+//        dmMeetingDto.setRoomName( entity.getRoomName() );
+//        dmMeetingDto.setMeetingDescribe( entity.getMeetingDescribe() );
+//        dmMeetingDto.setMeetingType( entity.getMeetingType() );
+//        dmMeetingDto.setDept( deptToDeptDto( entity.getDept() ) );
+//        dmMeetingDto.setInitiatorUser( dmUserToDmUserDto( entity.getInitiatorUser() ) );
+//        Set<User> set = entity.getUsers();
+//        if ( set != null ) {
+//            dmMeetingDto.setUsers( new HashSet<User>( set ) );
+//        }
+//        Set<LocalStorage> set1 = entity.getLocalStorages();
+//        if ( set1 != null ) {
+//            dmMeetingDto.setLocalStorages( new HashSet<LocalStorage>( set1 ) );
+//        }
+//        Set<DmDevice> set2 = entity.getDmDevices();
+//        if ( set2 != null ) {
+//            dmMeetingDto.setDmDevices( new HashSet<DmDevice>( set2 ) );
+//        }
+//        dmMeetingDto.setStartDate( entity.getStartDate() );
+//        dmMeetingDto.setEndDate( entity.getEndDate() );
+//        dmMeetingDto.setApproveStatus( entity.getApproveStatus() );
+//        dmMeetingDto.setApproveSuggest( entity.getApproveSuggest() );
+//        dmMeetingDto.setActualCount( entity.getActualCount() );
+//        dmMeetingDto.setPlanCount( entity.getPlanCount() );
+//        dmMeetingDto.setIsDelay( entity.getIsDelay() );
+//        dmMeetingDto.setRemark( entity.getRemark() );
+//        dmMeetingDto.setMeetingStatus( entity.getMeetingStatus() );
+//        dmMeetingDto.setTaskId( entity.getTaskId() );
+//        dmMeetingDto.setProcInstId( entity.getProcInstId() );
+//        dmMeetingDto.setIsCancel( entity.getIsCancel() );
+//        dmMeetingDto.setSendType( entity.getSendType() );
+//        dmMeetingDto.setMeetingProp( entity.getMeetingProp() );
+//        dmMeetingDto.setIsApprove( entity.getIsApprove() );
+//        if ( entity.getGcAssignUser() != null ) {
+//            dmMeetingDto.setGcAssignUser( Long.parseLong( entity.getGcAssignUser() ) );
+//        }
+//        dmMeetingDto.setMeetingMode( entity.getMeetingMode() );
+//
+//        return dmMeetingDto;
+//    }
 }
 }

+ 76 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java

@@ -1,5 +1,7 @@
 package com.usky.meeting.service.impl;
 package com.usky.meeting.service.impl;
 
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,6 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.type.CollectionLikeType;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.security.utils.SecurityUtils;
 import com.usky.common.security.utils.SecurityUtils;
@@ -20,14 +23,20 @@ import com.usky.meeting.service.MeetingFloorService;
 import com.usky.meeting.service.MeetingInfoService;
 import com.usky.meeting.service.MeetingInfoService;
 import com.usky.meeting.service.MeetingRoomService;
 import com.usky.meeting.service.MeetingRoomService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.mybatis.core.AbstractCrudService;
+import com.usky.meeting.service.dto.DmMeetingRoomDto;
 import com.usky.meeting.service.vo.MeetingRoomRequestVO;
 import com.usky.meeting.service.vo.MeetingRoomRequestVO;
+import com.usky.meeting.service.vo.MeetingRoomReservationVO;
+import com.usky.system.domain.SysUser;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import org.apache.tomcat.jni.Local;
 import org.apache.tomcat.jni.Local;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
 
 
 import java.math.BigInteger;
 import java.math.BigInteger;
+import java.text.ParseException;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.*;
 
 
 /**
 /**
@@ -174,6 +183,73 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         return map;
         return map;
     }
     }
 
 
+    @Override
+    public List<DmMeetingRoomDto> getMeetingRoomReservationList(MeetingRoomReservationVO reservationVO)  throws ParseException {
+        List<DmMeetingRoomDto> list = new ArrayList<>();
+        List<DmMeetingRoomDto> newDmMeetingRoomDtoList = new ArrayList<>();
+        String meetingRoomName = reservationVO.getMeetingRoomName();
+        LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.like(StringUtils.isNotBlank(meetingRoomName),MeetingRoom::getRoomName,meetingRoomName);
+        List<MeetingRoom> list1 = this.list(queryWrapper);
+        List<Long> floorIdList = new ArrayList<>();
+        if(CollectionUtils.isNotEmpty(list1)){
+            for (int i = 0; i < list1.size(); i++) {
+                if(!floorIdList.contains(list1.get(i).getFloorId())){
+                    floorIdList.add(list1.get(i).getFloorId());
+                }
+            }
+            LambdaQueryWrapper<MeetingFloor> floorWrapper = Wrappers.lambdaQuery();
+            floorWrapper.in(MeetingFloor::getFloorId,floorIdList);
+            List<MeetingFloor> meetingFloorList = dmFloorService.list(floorWrapper);
+            if(CollectionUtils.isNotEmpty(meetingFloorList)){
+                for (int i = 0; i < list1.size(); i++) {
+                    DmMeetingRoomDto dmMeetingRoomDto = new DmMeetingRoomDto();
+                    dmMeetingRoomDto.setRoomId(list1.get(i).getRoomId());
+                    dmMeetingRoomDto.setRoomName(list1.get(i).getRoomName());
+                    for (int j = 0; j < meetingFloorList.size(); j++) {
+                        if(list1.get(i).getFloorId().equals(meetingFloorList.get(j).getFloorId())){
+                            dmMeetingRoomDto.setDmFloor(meetingFloorList.get(j));
+                            break;
+                        }
+                    }
+                    dmMeetingRoomDto.setDescription(list1.get(i).getDescription());
+                    dmMeetingRoomDto.setImgPath(list1.get(i).getImgPath());
+                    dmMeetingRoomDto.setCapacity(list1.get(i).getCapacity());
+                    dmMeetingRoomDto.setPosition(list1.get(i).getPosition());
+                    dmMeetingRoomDto.setMaintainer(list1.get(i).getMaintainer());
+                    dmMeetingRoomDto.setContacts(list1.get(i).getContacts());
+                    dmMeetingRoomDto.setRemark(list1.get(i).getRemark());
+                    dmMeetingRoomDto.setRoomStatus(list1.get(i).getRoomStatus());
+                    dmMeetingRoomDto.setReserveStatus(list1.get(i).getReserveStatus());
+                    dmMeetingRoomDto.setStatus(list1.get(i).getStatus());
+                    dmMeetingRoomDto.setEnvironmental(list1.get(i).getEnvironmental());
+                    dmMeetingRoomDto.setLastUseTime(list1.get(i).getLastUseTime());
+                    dmMeetingRoomDto.setIsApprove(list1.get(i).getIsApprove());
+                    list.add(dmMeetingRoomDto);
+                }
+            }
+        }
+        if(list.size() > 0){
+            for(DmMeetingRoomDto dmMeetingRoomDto : list){
+                if(ObjectUtils.isEmpty(reservationVO.getDate())){
+                    reservationVO.setDate(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                }
+                JSONObject meetingRoomUsageByDayV2 = dmMeetingService.getMeetingRoomUsageByDayV2(dmMeetingRoomDto.getRoomId(), reservationVO.getDate());
+
+                JSONArray dmMeeting = meetingRoomUsageByDayV2.getJSONArray("dmMeeting");
+                dmMeetingRoomDto.setDmMeetingList(dmMeeting);
+
+                dmMeetingRoomDto.setMeetingRoomUsage(meetingRoomUsageByDayV2.getJSONArray("timeRange"));
+                List<Integer> monthList = dmMeetingService.getMeetingRoomUsageByMonth(dmMeetingRoomDto.getRoomId(),reservationVO.getDate());
+                dmMeetingRoomDto.setMeetingRoomUsageMonth(monthList);
+
+                newDmMeetingRoomDtoList.add(dmMeetingRoomDto);
+            }
+        }
+
+        return newDmMeetingRoomDtoList;
+    }
+
     public boolean checkNameUnique(MeetingRoom meetingRoom){
     public boolean checkNameUnique(MeetingRoom meetingRoom){
         Long id = null == meetingRoom.getRoomId()?-1:meetingRoom.getRoomId();
         Long id = null == meetingRoom.getRoomId()?-1:meetingRoom.getRoomId();
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();
         LambdaQueryWrapper<MeetingRoom> queryWrapper = Wrappers.lambdaQuery();

+ 20 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysDeptServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.meeting.service.impl;
+
+import com.usky.meeting.domain.SysDept;
+import com.usky.meeting.mapper.SysDeptMapper;
+import com.usky.meeting.service.SysDeptService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 部门表 服务实现类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Service
+public class SysDeptServiceImpl extends AbstractCrudService<SysDeptMapper, SysDept> implements SysDeptService {
+
+}

+ 20 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysRoleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.meeting.service.impl;
+
+import com.usky.meeting.domain.SysRole;
+import com.usky.meeting.mapper.SysRoleMapper;
+import com.usky.meeting.service.SysRoleService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 角色信息表 服务实现类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Service
+public class SysRoleServiceImpl extends AbstractCrudService<SysRoleMapper, SysRole> implements SysRoleService {
+
+}

+ 20 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysUserRoleServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.meeting.service.impl;
+
+import com.usky.meeting.domain.SysUserRole;
+import com.usky.meeting.mapper.SysUserRoleMapper;
+import com.usky.meeting.service.SysUserRoleService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户和角色关联表 服务实现类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Service
+public class SysUserRoleServiceImpl extends AbstractCrudService<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
+
+}

+ 20 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/SysUserServiceImpl.java

@@ -0,0 +1,20 @@
+package com.usky.meeting.service.impl;
+
+import com.usky.meeting.domain.SysUser;
+import com.usky.meeting.mapper.SysUserMapper;
+import com.usky.meeting.service.SysUserService;
+import com.usky.common.mybatis.core.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户信息表 服务实现类
+ * </p>
+ *
+ * @author zyj
+ * @since 2024-03-18
+ */
+@Service
+public class SysUserServiceImpl extends AbstractCrudService<SysUserMapper, SysUser> implements SysUserService {
+
+}

+ 17 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MeetingRoomReservationVO.java

@@ -0,0 +1,17 @@
+package com.usky.meeting.service.vo;
+
+import lombok.Data;
+
+@Data
+public class MeetingRoomReservationVO {
+
+    /**
+     * 会议室名称
+     */
+    private String meetingRoomName;
+
+    /**
+     * 会议预约日期
+     */
+    private String date;
+}

+ 24 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysDeptMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.meeting.mapper.SysDeptMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.SysDept">
+        <id column="dept_id" property="deptId" />
+        <result column="parent_id" property="parentId" />
+        <result column="ancestors" property="ancestors" />
+        <result column="dept_name" property="deptName" />
+        <result column="order_num" property="orderNum" />
+        <result column="leader" property="leader" />
+        <result column="phone" property="phone" />
+        <result column="email" property="email" />
+        <result column="status" property="status" />
+        <result column="del_flag" property="delFlag" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 24 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysRoleMapper.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.meeting.mapper.SysRoleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.SysRole">
+        <id column="role_id" property="roleId" />
+        <result column="role_name" property="roleName" />
+        <result column="role_key" property="roleKey" />
+        <result column="role_sort" property="roleSort" />
+        <result column="data_scope" property="dataScope" />
+        <result column="menu_check_strictly" property="menuCheckStrictly" />
+        <result column="dept_check_strictly" property="deptCheckStrictly" />
+        <result column="status" property="status" />
+        <result column="del_flag" property="delFlag" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="remark" property="remark" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+
+</mapper>

+ 31 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysUserMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.meeting.mapper.SysUserMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.SysUser">
+        <id column="user_id" property="userId" />
+        <result column="dept_id" property="deptId" />
+        <result column="user_name" property="userName" />
+        <result column="nick_name" property="nickName" />
+        <result column="user_type" property="userType" />
+        <result column="email" property="email" />
+        <result column="phonenumber" property="phonenumber" />
+        <result column="sex" property="sex" />
+        <result column="full_name" property="fullName" />
+        <result column="avatar" property="avatar" />
+        <result column="password" property="password" />
+        <result column="status" property="status" />
+        <result column="del_flag" property="delFlag" />
+        <result column="login_ip" property="loginIp" />
+        <result column="login_date" property="loginDate" />
+        <result column="create_by" property="createBy" />
+        <result column="create_time" property="createTime" />
+        <result column="update_by" property="updateBy" />
+        <result column="update_time" property="updateTime" />
+        <result column="remark" property="remark" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="address" property="address" />
+    </resultMap>
+
+</mapper>

+ 11 - 0
service-meeting/service-meeting-biz/src/main/resources/mapper/meeting/SysUserRoleMapper.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.usky.meeting.mapper.SysUserRoleMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.usky.meeting.domain.SysUserRole">
+        <id column="user_id" property="userId" />
+        <result column="role_id" property="roleId" />
+    </resultMap>
+
+</mapper>