commit 10c1463a9ec851cdba76dee248ee5b61addb10b3 Author: 段云飞 <2281149242@qq.com> Date: Mon Apr 28 00:11:43 2025 +0800 多租户后台系统 diff --git a/.flattened-pom.xml b/.flattened-pom.xml new file mode 100644 index 0000000..092f7d2 --- /dev/null +++ b/.flattened-pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + org.dromara + ruoyi-vue-plus + 5.3.0 + + org.dromara + ruoyi-modules + 5.3.0 + pom + ruoyi-modules 业务模块 + + ruoyi-demo + ruoyi-generator + ruoyi-job + ruoyi-system + ruoyi-workflow + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..daff497 --- /dev/null +++ b/pom.xml @@ -0,0 +1,27 @@ + + + + ruoyi-vue-plus + org.dromara + ${revision} + + 4.0.0 + + + ruoyi-demo + ruoyi-generator + ruoyi-job + ruoyi-system + ruoyi-workflow + + + ruoyi-modules + pom + + + ruoyi-modules 业务模块 + + + diff --git a/ruoyi-demo/.flattened-pom.xml b/ruoyi-demo/.flattened-pom.xml new file mode 100644 index 0000000..48d4f3b --- /dev/null +++ b/ruoyi-demo/.flattened-pom.xml @@ -0,0 +1,84 @@ + + + 4.0.0 + + org.dromara + ruoyi-modules + 5.3.0 + + org.dromara + ruoyi-demo + 5.3.0 + demo模块 + + + org.dromara + ruoyi-common-core + + + org.dromara + ruoyi-common-doc + + + org.dromara + ruoyi-common-sms + + + org.dromara + ruoyi-common-mail + + + org.dromara + ruoyi-common-redis + + + org.dromara + ruoyi-common-idempotent + + + org.dromara + ruoyi-common-mybatis + + + org.dromara + ruoyi-common-log + + + org.dromara + ruoyi-common-excel + + + org.dromara + ruoyi-common-security + + + org.dromara + ruoyi-common-web + + + org.dromara + ruoyi-common-ratelimiter + + + org.dromara + ruoyi-common-translation + + + org.dromara + ruoyi-common-sensitive + + + org.dromara + ruoyi-common-encrypt + + + org.dromara + ruoyi-common-tenant + + + org.dromara + ruoyi-common-websocket + + + diff --git a/ruoyi-demo/pom.xml b/ruoyi-demo/pom.xml new file mode 100644 index 0000000..119fe61 --- /dev/null +++ b/ruoyi-demo/pom.xml @@ -0,0 +1,108 @@ + + + + org.dromara + ruoyi-modules + ${revision} + + 4.0.0 + + ruoyi-demo + + + demo模块 + + + + + + + org.dromara + ruoyi-common-core + + + + org.dromara + ruoyi-common-doc + + + + org.dromara + ruoyi-common-sms + + + + org.dromara + ruoyi-common-mail + + + + org.dromara + ruoyi-common-redis + + + + org.dromara + ruoyi-common-idempotent + + + + org.dromara + ruoyi-common-mybatis + + + + org.dromara + ruoyi-common-log + + + + org.dromara + ruoyi-common-excel + + + + org.dromara + ruoyi-common-security + + + + org.dromara + ruoyi-common-web + + + + org.dromara + ruoyi-common-ratelimiter + + + + org.dromara + ruoyi-common-translation + + + + org.dromara + ruoyi-common-sensitive + + + + org.dromara + ruoyi-common-encrypt + + + + org.dromara + ruoyi-common-tenant + + + + org.dromara + ruoyi-common-websocket + + + + + diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java new file mode 100644 index 0000000..369a17d --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java @@ -0,0 +1,77 @@ +package org.dromara.demo.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.mail.utils.MailUtils; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.io.File; +import java.util.Arrays; + + +/** + * 邮件发送案例 + * + * @author Michelle.Chung + */ +@SaIgnore +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/mail") +public class MailController { + @GetMapping("/sendSimpleMessage") + // 定义一个公共方法 sendSimpleMessage,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于返回操作的状态信息 + public R sendSimpleMessage(String to, String subject, String text) { + // 调用 MailUtils 工具类的 sendText 方法,用于发送简单的文本邮件 + // to 参数表示收件人的邮箱地址 + // subject 参数表示邮件的主题 + // text 参数表示邮件的正文内容 + MailUtils.sendText(to, subject, text); + // 调用 R 类的 ok 方法,将操作成功的默认信息封装成统一响应结果类 R 的对象并返回 + // 以此告知调用者邮件发送操作已成功执行 + return R.ok(); + } + + @GetMapping("/sendMessageWithAttachment") + // 定义一个公共方法 sendMessageWithAttachment,返回类型为 R。 +// R 通常是自定义的统一响应结果类,用于封装接口的响应信息, +// Void 表明该方法不返回具体的数据内容,主要用于反馈操作的结果状态 + public R sendMessageWithAttachment(String to, String subject, String text, String filePath) { + // 调用 MailUtils 工具类的 sendText 方法,用于发送带有附件的文本邮件 + // to 参数代表收件人的邮箱地址,指定邮件要发送到哪里 + // subject 参数是邮件的主题,用于简要概括邮件的主要内容 + // text 参数为邮件的正文文本,即邮件要传达的具体信息 + // new File(filePath) 创建一个 File 对象,filePath 是附件文件的路径,将该文件作为附件添加到邮件中 + MailUtils.sendText(to, subject, text, new File(filePath)); + // 调用 R 类的 ok 方法,将操作成功的默认信息封装到 R 对象中并返回 + // 以此告知调用者带有附件的邮件发送操作已成功完成 + return R.ok(); + } + + @GetMapping("/sendMessageWithAttachments") + // 定义一个公共方法 sendMessageWithAttachments,返回类型为 R。 +// R 通常是自定义的统一响应结果类,用于封装接口响应信息, +// Void 表示该方法不返回具体的数据内容,仅用于表示操作结果状态 + public R sendMessageWithAttachments(String to, String subject, String text, String[] paths) { + // 使用 Java 8 的 Stream API 对 paths 数组进行处理 + // Arrays.stream(paths) 将 paths 数组转换为流 + // .map(File::new) 对流中的每个元素(即文件路径字符串)应用 File 类的构造函数,将其转换为 File 对象 + // .toArray(File[]::new) 将流中的元素收集到一个新的 File 类型数组中 + File[] array = Arrays.stream(paths).map(File::new).toArray(File[]::new); + // 调用 MailUtils 工具类的 sendText 方法,用于发送带有多个附件的文本邮件 + // to 参数为收件人的邮箱地址 + // subject 参数是邮件的主题 + // text 参数是邮件的正文内容 + // array 是包含多个附件文件的 File 数组 + MailUtils.sendText(to, subject, text, array); + // 调用 R 类的 ok 方法,将操作成功的默认信息封装到 R 对象中并返回 + // 表示带有多个附件的邮件发送操作已成功完成 + return R.ok(); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisCacheController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisCacheController.java new file mode 100644 index 0000000..7bdca4a --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisCacheController.java @@ -0,0 +1,98 @@ +package org.dromara.demo.controller; + +import cn.hutool.core.thread.ThreadUtil; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.domain.R; +import org.dromara.common.redis.utils.RedisUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.Duration; + +/** + * spring-cache 演示案例 + * + * @author Lion Li + */ +// 类级别 缓存统一配置 +//@CacheConfig(cacheNames = CacheNames.DEMO_CACHE) +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/cache") +public class RedisCacheController { + + /** + * 测试 @Cacheable + *

+ * 表示这个方法有了缓存的功能,方法的返回值会被缓存下来 + * 下一次调用该方法前,会去检查是否缓存中已经有值 + * 如果有就直接返回,不调用方法 + * 如果没有,就调用方法,然后把结果缓存起来 + * 这个注解「一般用在查询方法上」 + *

+ * 重点说明: 缓存注解严谨与其他筛选数据功能一起使用 + * 例如: 数据权限注解 会造成 缓存击穿 与 数据不一致问题 + *

+ * cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数 + */ + @Cacheable(cacheNames = "demo:cache#60s#10m#20", key = "#key", condition = "#key != null") + @GetMapping("/test1") + public R test1(String key, String value) { + return R.ok("操作成功", value); + } + + /** + * 测试 @CachePut + *

+ * 加了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用 + * 它「通常用在新增或者实时更新方法上」 + *

+ * cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数 + */ + @CachePut(cacheNames = CacheNames.DEMO_CACHE, key = "#key", condition = "#key != null") + @GetMapping("/test2") + public R test2(String key, String value) { + return R.ok("操作成功", value); + } + + /** + * 测试 @CacheEvict + *

+ * 使用了CacheEvict注解的方法,会清空指定缓存 + * 「一般用在删除的方法上」 + *

+ * cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数 + */ + @CacheEvict(cacheNames = CacheNames.DEMO_CACHE, key = "#key", condition = "#key != null") + @GetMapping("/test3") + public R test3(String key, String value) { + return R.ok("操作成功", value); + } + + /** + * 测试设置过期时间 + * 手动设置过期时间10秒 + * 11秒后获取 判断是否相等 + */ + @GetMapping("/test6") + // 定义一个公共方法 test6,返回类型为 R,通常 R 是自定义的统一响应结果类,这里泛型指定为 Boolean 类型,表示返回的结果是布尔值 + public R test6(String key, String value) { + // 调用 RedisUtils 工具类的 setCacheObject 方法,将传入的 key 和 value 存储到 Redis 缓存中 + RedisUtils.setCacheObject(key, value); + // 调用 RedisUtils 工具类的 expire 方法,为刚刚存储到 Redis 中的 key 设置过期时间为 10 秒 + // 该方法会返回一个布尔值,表示设置过期时间是否成功 + boolean flag = RedisUtils.expire(key, Duration.ofSeconds(10)); + // 在控制台输出设置过期时间的结果,方便调试查看 + System.out.println("***********" + flag); + // 使用 ThreadUtil 工具类让当前线程休眠 11 秒,确保 Redis 中的 key 已经过期 + ThreadUtil.sleep(11 * 1000); + // 调用 RedisUtils 工具类的 getCacheObject 方法,尝试从 Redis 中获取指定 key 对应的 value + Object obj = RedisUtils.getCacheObject(key); + // 将比较结果(即传入的 value 是否和从 Redis 中获取的 obj 相等)封装到自定义的统一响应结果类 R 中并返回 + return R.ok(value.equals(obj));} +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisLockController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisLockController.java new file mode 100644 index 0000000..67f30bf --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisLockController.java @@ -0,0 +1,69 @@ +package org.dromara.demo.controller; + +import cn.hutool.core.thread.ThreadUtil; +import com.baomidou.lock.LockInfo; +import com.baomidou.lock.LockTemplate; +import com.baomidou.lock.annotation.Lock4j; +import com.baomidou.lock.executor.RedissonLockExecutor; +import org.dromara.common.core.domain.R; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalTime; + + +/** + * 测试分布式锁的样例 + * + * @author shenxinquan + */ +@Slf4j +@RestController +@RequestMapping("/demo/redisLock") +public class RedisLockController { + + @Autowired + private LockTemplate lockTemplate; + + /** + * 测试lock4j 注解 + */ + @Lock4j(keys = {"#key"}) + @GetMapping("/testLock4j") + // 定义一个公共方法 testLock4j,返回类型为 R。R 通常是自定义的统一响应结果类,泛型指定为 String 类型,表示返回的数据部分为字符串 + public R testLock4j(String key, String value) { + // 在控制台输出方法开始执行的信息,包含传入的 key 和当前的本地时间 + System.out.println("start:" + key + ",time:" + LocalTime.now()); + // 调用 ThreadUtil 工具类的 sleep 方法,让当前线程休眠 10000 毫秒(即 10 秒) + ThreadUtil.sleep(10000); + // 在控制台输出方法执行结束的信息,包含传入的 key 和当前的本地时间 + System.out.println("end :" + key + ",time:" + LocalTime.now()); + // 将操作成功的消息和传入的 value 封装到自定义的统一响应结果类 R 中并返回 + return R.ok("操作成功", value); + } + + /** + * 测试lock4j 工具 + */ + @GetMapping("/testLock4jLockTemplate") + public R testLock4jLockTemplate(String key, String value) { + final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class); + if (null == lockInfo) { + throw new RuntimeException("业务处理中,请稍后再试"); + } + // 获取锁成功,处理业务 + try { + ThreadUtil.sleep(8000); + System.out.println("执行简单方法1 , 当前线程:" + Thread.currentThread().getName()); + } finally { + //释放锁 + lockTemplate.releaseLock(lockInfo); + } + //结束 + return R.ok("操作成功", value); + } + +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisPubSubController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisPubSubController.java new file mode 100644 index 0000000..ac143c2 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisPubSubController.java @@ -0,0 +1,62 @@ +package org.dromara.demo.controller; + +import org.dromara.common.core.domain.R; +import org.dromara.common.redis.utils.RedisUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Redis 发布订阅 演示案例 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/redis/pubsub") +public class RedisPubSubController { + + /** + * 发布消息 + * + * @param key 通道Key + * @param value 发送内容 + */ + @GetMapping("/pub") + // 定义一个公共方法 pub,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于返回操作结果信息 + public R pub(String key, String value) { + // 调用 RedisUtils 工具类的 publish 方法,用于在 Redis 中进行消息发布操作 + // 该方法接收三个参数:key 表示消息发布的通道名称,value 是要发布的消息内容 + // 第三个参数是一个消费者函数,在消息发布时会执行该函数内的逻辑 + RedisUtils.publish(key, value, consumer -> { + // 当消息发布时,在控制台输出发布的通道名称和发送的消息值 + System.out.println("发布通道 => " + key + ", 发送值 => " + value); + }); + // 调用 R 类的 ok 方法,将操作成功的信息封装成统一响应结果类 R 的对象并返回 + return R.ok("操作成功"); + } + + /** + * 订阅消息 + * + * @param key 通道Key + */ + @GetMapping("/sub") + // 定义一个公共方法 sub,返回类型为 R。R 通常是自定义的封装响应结果的类, +// Void 表明该方法的响应结果不携带具体的数据,仅传达操作状态 + public R sub(String key) { + // 调用 RedisUtils 工具类的 subscribe 方法,目的是在 Redis 中订阅指定通道的消息 + // key 参数代表要订阅的通道名称 + // String.class 指定了接收到的消息的数据类型为 String + // 最后一个参数是一个 Lambda 表达式,作为消息处理的回调函数 + RedisUtils.subscribe(key, String.class, msg -> { + // 当接收到订阅通道的消息时,在控制台输出订阅的通道名称以及接收到的消息内容 + System.out.println("订阅通道 => " + key + ", 接收值 => " + msg); + }); + // 调用 R 类的 ok 方法,将 "操作成功" 这个消息封装到 R 对象中并返回, + // 以此告知调用者订阅操作已经成功完成 + return R.ok("操作成功"); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisRateLimiterController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisRateLimiterController.java new file mode 100644 index 0000000..f8adf7d --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisRateLimiterController.java @@ -0,0 +1,64 @@ +package org.dromara.demo.controller; + +import org.dromara.common.core.domain.R; +import org.dromara.common.ratelimiter.annotation.RateLimiter; +import org.dromara.common.ratelimiter.enums.LimitType; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 测试分布式限流样例 + * + * @author Lion Li + */ +@Slf4j +@RestController +@RequestMapping("/demo/rateLimiter") +public class RedisRateLimiterController { + + /** + * 测试全局限流 + * 全局影响 + */ + @RateLimiter(count = 2, time = 10) + @GetMapping("/test") + public R test(String value) { + return R.ok("操作成功", value); + } + + /** + * 测试请求IP限流 + * 同一IP请求受影响 + */ + @RateLimiter(count = 2, time = 10, limitType = LimitType.IP) + @GetMapping("/testip") + public R testip(String value) { + return R.ok("操作成功", value); + } + + /** + * 测试集群实例限流 + * 启动两个后端服务互不影响 + */ + @RateLimiter(count = 2, time = 10, limitType = LimitType.CLUSTER) + @GetMapping("/testcluster") + public R testcluster(String value) { + return R.ok("操作成功", value); + } + + /** + * 测试请求IP限流(key基于参数获取) + * 同一IP请求受影响 + * + * 简单变量获取 #变量 复杂表达式 #{#变量 != 1 ? 1 : 0} + */ + @RateLimiter(count = 2, time = 10, limitType = LimitType.IP, key = "#value") + @GetMapping("/testObj") + public R testObj(String value) { + return R.ok("操作成功", value); + } + +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java new file mode 100644 index 0000000..be36292 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java @@ -0,0 +1,101 @@ +package org.dromara.demo.controller; + +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.sms4j.api.SmsBlend; +import org.dromara.sms4j.api.entity.SmsResponse; +import org.dromara.sms4j.core.factory.SmsFactory; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.LinkedHashMap; + +/** + * 短信演示案例 + * 请先阅读文档 否则无法使用 + * + * @author Lion Li + * @version 4.2.0 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/sms") +public class SmsController { + @GetMapping("/sendAliyun") + // 定义一个公共方法 sendAliyun,返回类型为 R。R 通常是自定义的统一响应结果类, +// 泛型为 Object 表示响应中携带的数据可以是任意类型,此方法用于向外返回发送短信操作的结果 + public R sendAliyun(String phones, String templateId) { + // 创建一个初始容量为 1 的 LinkedHashMap 对象 map,用于存储短信模板所需的参数 + // LinkedHashMap 可以保证元素插入的顺序,便于维护参数顺序 + LinkedHashMap map = new LinkedHashMap<>(1); + // 向 map 中添加一个键值对,键为 "code",值为 "1234" + // 这个参数可能用于填充短信模板中的验证码字段 + map.put("code", "1234"); + // 调用 SmsFactory 类的 getSmsBlend 方法,根据配置名称 "config1" 获取一个 SmsBlend 对象 + // SmsBlend 对象封装了短信发送的相关配置和操作方法 + SmsBlend smsBlend = SmsFactory.getSmsBlend("config1"); + // 调用 smsBlend 对象的 sendMessage 方法,传入手机号码 phones、短信模板 ID templateId 以及模板参数 map + // 该方法会尝试发送短信,并返回一个 SmsResponse 对象,该对象包含了短信发送的结果信息 + SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map); + // 调用 R 类的 ok 方法,将短信发送的响应结果 smsResponse 封装到统一响应结果类 R 中并返回 + // 表示本次短信发送操作的结果可以正常返回给调用者 + return R.ok(smsResponse); + } + + @GetMapping("/sendTencent") + // 定义一个公共方法 sendTencent,返回类型为 R。R 通常是自定义的统一响应结果类, +// 泛型使用 Object 意味着响应数据可以是任意类型,此方法用于返回使用腾讯短信服务发送短信的操作结果 + public R sendTencent(String phones, String templateId) { + // 创建一个初始容量为 1 的 LinkedHashMap 对象 map,用于存储短信模板所需的参数 + // LinkedHashMap 能保证元素插入的顺序,方便维护参数顺序 + LinkedHashMap map = new LinkedHashMap<>(1); + // 这里注释掉的代码,原本是想向 map 中添加键为 "2",值为 "测试测试" 的键值对 + // 可能是在开发过程中暂时不需要这个参数,所以注释掉了 + // map.put("2", "测试测试"); + // 向 map 中添加一个键值对,键为 "1",值为 "1234" + // 这个参数可能用于填充腾讯短信模板中的特定占位符 + map.put("1", "1234"); + // 调用 SmsFactory 类的 getSmsBlend 方法,根据配置名称 "config2" 获取一个 SmsBlend 对象 + // SmsBlend 对象封装了使用腾讯短信服务进行短信发送的相关配置和操作方法 + SmsBlend smsBlend = SmsFactory.getSmsBlend("config2"); + // 调用 smsBlend 对象的 sendMessage 方法,传入手机号码 phones、短信模板 ID templateId 以及模板参数 map + // 该方法会尝试使用腾讯短信服务发送短信,并返回一个 SmsResponse 对象 + // SmsResponse 对象包含了短信发送的结果信息,如发送是否成功、错误码等 + SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map); + // 调用 R 类的 ok 方法,将短信发送的响应结果 smsResponse 封装到统一响应结果类 R 中并返回 + // 表示本次使用腾讯短信服务发送短信的操作结果可以正常返回给调用者 + return R.ok(smsResponse); + } + + @GetMapping("/addBlacklist") + // 定义一个公共方法 addBlacklist,返回类型为 R。R 通常是自定义的统一响应结果类, +// 泛型为 Object 表示响应中可携带任意类型的数据,此方法用于返回添加手机号码到黑名单操作的结果 + public R addBlacklist(String phone) { + // 调用 SmsFactory 类的 getSmsBlend 方法,根据配置名称 "config1" 获取一个 SmsBlend 对象 + // SmsBlend 对象封装了短信服务相关的配置和操作方法,这里可能是与阿里云短信服务相关的配置 + SmsBlend smsBlend = SmsFactory.getSmsBlend("config1"); + // 调用 smsBlend 对象的 joinInBlacklist 方法,将传入的手机号码 phone 添加到短信服务的黑名单中 + smsBlend.joinInBlacklist(phone); + // 调用 R 类的 ok 方法,将操作成功的默认信息封装到统一响应结果类 R 中并返回 + // 表示将手机号码添加到黑名单的操作已成功完成 + return R.ok(); + } + + @GetMapping("/removeBlacklist") + // 定义一个公共方法 removeBlacklist,返回类型为 R。 +// R 通常是自定义的统一响应结果类,泛型为 Object 表明该方法返回的响应数据可以是任意类型, +// 此方法主要用于返回从短信服务黑名单中移除指定手机号码操作的结果 + public R removeBlacklist(String phone) { + // 调用 SmsFactory 类的 getSmsBlend 方法,依据配置名称 "config1" 获取一个 SmsBlend 对象。 + // SmsBlend 对象封装了短信服务相关的配置与操作方法,这里可能关联着特定的短信服务(如阿里云)配置 + SmsBlend smsBlend = SmsFactory.getSmsBlend("config1"); + // 调用 smsBlend 对象的 removeFromBlacklist 方法,将传入的手机号码 phone 从短信服务的黑名单中移除 + smsBlend.removeFromBlacklist(phone); + // 调用 R 类的 ok 方法,把操作成功的默认信息封装到统一响应结果类 R 中并返回, + // 以此表示将手机号码从黑名单移除的操作已成功完成 + return R.ok(); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/Swagger3DemoController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/Swagger3DemoController.java new file mode 100644 index 0000000..c866d74 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/Swagger3DemoController.java @@ -0,0 +1,25 @@ +package org.dromara.demo.controller; + +import org.dromara.common.core.domain.R; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestPart; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +@RestController +@RequestMapping("/swagger/demo") +// 定义一个名为 Swagger3DemoController 的公共类,通常这是一个控制器类,用于处理 HTTP 请求 +public class Swagger3DemoController { + // 使用 @PostMapping 注解,表明该方法处理 HTTP POST 请求 + // value = "/upload" 表示该方法映射的 URL 路径为 /upload + // consumes = MediaType.MULTIPART_FORM_DATA_VALUE 表示该方法只处理 multipart/form-data 类型的请求,一般用于文件上传 + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + // 定义一个公共方法 upload,返回类型为 R。R 通常是自定义的统一响应结果类,泛型为 String 表示响应数据是字符串类型 + // @RequestPart("file") 注解用于从请求中获取名为 "file" 的部分,这里期望是一个上传的文件 + // MultipartFile 是 Spring 框架提供的用于处理文件上传的接口,file 是接收上传文件的参数 + public R upload(@RequestPart("file") MultipartFile file) { + // 调用 R 类的 ok 方法,将 "操作成功" 作为消息,文件的原始文件名作为数据封装到统一响应结果类 R 中并返回 + return R.ok("操作成功", file.getOriginalFilename()); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java new file mode 100644 index 0000000..79ec2c5 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java @@ -0,0 +1,114 @@ +package org.dromara.demo.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.dromara.common.core.domain.R; +import org.dromara.common.web.core.BaseController; +import org.dromara.demo.domain.TestDemo; +import org.dromara.demo.mapper.TestDemoMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +/** + * 测试批量方法 + * + * @author Lion Li + * @date 2021-05-30 + */ +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/batch") +public class TestBatchController extends BaseController { + private final TestDemoMapper testDemoMapper; + @PostMapping("/add") +// @DS("slave") + // 定义一个公共方法 add,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于返回操作结果信息 + public R add() { + // 创建一个用于存储 TestDemo 对象的 ArrayList 列表 + // 后续会将创建的 TestDemo 对象添加到这个列表中,以便进行批量操作 + List list = new ArrayList<>(); + // 使用 for 循环,循环 1000 次,目的是创建 1000 个 TestDemo 对象 + for (int i = 0; i < 1000; i++) { + // 实例化一个 TestDemo 对象,用于表示要添加到数据库中的数据 + TestDemo testDemo = new TestDemo(); + // 为 TestDemo 对象的 orderNum 属性设置值为 -1 + testDemo.setOrderNum(-1); + // 为 TestDemo 对象的 testKey 属性设置值为 "批量新增" + testDemo.setTestKey("批量新增"); + // 为 TestDemo 对象的 value 属性设置值为 "测试新增" + testDemo.setValue("测试新增"); + // 将创建好并设置好属性的 TestDemo 对象添加到之前创建的列表中 + list.add(testDemo); + } + // 调用 toAjax 方法,将 testDemoMapper 的 insertBatch 方法的返回结果作为参数传入 + // testDemoMapper 通常是 MyBatis 等持久层框架的 Mapper 接口实例,用于和数据库交互 + // insertBatch 方法用于将列表中的 TestDemo 对象批量插入到数据库中 + // toAjax 方法的作用可能是将数据库操作的结果封装成统一的响应格式,方便前端处理 + return toAjax(testDemoMapper.insertBatch(list)); + } + @PostMapping("/addOrUpdate") +// @DS("slave") + // 定义一个公共方法 addOrUpdate,返回类型为 R + public R addOrUpdate() { + // 创建一个用于存储 TestDemo 对象的列表 + List list = new ArrayList<>(); + // 循环 1000 次,用于批量创建 TestDemo 对象 + for (int i = 0; i < 1000; i++) { + // 创建一个新的 TestDemo 对象 + TestDemo testDemo = new TestDemo(); + // 设置 TestDemo 对象的 orderNum 属性为 -1 + testDemo.setOrderNum(-1); + // 设置 TestDemo 对象的 testKey 属性为 "批量新增" + testDemo.setTestKey("批量新增"); + // 设置 TestDemo 对象的 value 属性为 "测试新增" + testDemo.setValue("测试新增"); + // 将创建好的 TestDemo 对象添加到列表中 + list.add(testDemo); + } + // 调用 testDemoMapper 的 insertBatch 方法,将列表中的 TestDemo 对象批量插入数据库 + testDemoMapper.insertBatch(list); + // 遍历列表中的每个 TestDemo 对象 + for (int i = 0; i < list.size(); i++) { + // 从列表中获取当前索引对应的 TestDemo 对象 + TestDemo testDemo = list.get(i); + // 更新 TestDemo 对象的 testKey 属性为 "批量新增或修改" + testDemo.setTestKey("批量新增或修改"); + // 更新 TestDemo 对象的 value 属性为 "批量新增或修改" + testDemo.setValue("批量新增或修改"); + // 如果当前索引是偶数 + if (i % 2 == 0) { + // 将 TestDemo 对象的 id 属性设置为 null,可能表示这是一个新增操作 + testDemo.setId(null); + } + } + // 调用 testDemoMapper 的 insertOrUpdateBatch 方法,批量新增或更新列表中的 TestDemo 对象 + // 然后调用 toAjax 方法将操作结果封装成 R 对象并返回 + return toAjax(testDemoMapper.insertOrUpdateBatch(list)); + } + /** + * 删除批量方法 + */ + @DeleteMapping() +// @DS("slave") + // 定义一个公共方法 remove,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于返回操作结果信息 + public R remove() { + // 调用 toAjax 方法,将 testDemoMapper 的 delete 方法的返回结果作为参数传入 + // testDemoMapper 通常是 MyBatis-Plus 等持久层框架的 Mapper 接口实例,用于和数据库交互 + return toAjax(testDemoMapper.delete( + // 创建一个 LambdaQueryWrapper 对象,用于构建查询条件 + // LambdaQueryWrapper 是 MyBatis-Plus 提供的用于方便构建查询条件的工具类 + new LambdaQueryWrapper() + // 使用 eq 方法添加一个等值查询条件 + // TestDemo::getOrderNum 是 Java 8 的方法引用,用于指定要查询的字段为 orderNum + // -1L 表示要查询的 orderNum 字段的值为 -1(这里的 L 表示是长整型) + .eq(TestDemo::getOrderNum, -1L) + )); + // 这里多余的 } 应该是代码错误,需要删除 + }} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestDemoController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestDemoController.java new file mode 100644 index 0000000..448996e --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestDemoController.java @@ -0,0 +1,181 @@ +package org.dromara.demo.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.ValidatorUtils; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.core.validate.QueryGroup; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.excel.core.ExcelResult; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.demo.domain.TestDemo; +import org.dromara.demo.domain.bo.TestDemoBo; +import org.dromara.demo.domain.bo.TestDemoImportVo; +import org.dromara.demo.domain.vo.TestDemoVo; +import org.dromara.demo.service.ITestDemoService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +import java.util.*; +import java.util.concurrent.TimeUnit; + +/** + * 测试单表Controller + * + * @author Lion Li + * @date 2021-07-26 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/demo") +public class TestDemoController extends BaseController { + + private final ITestDemoService testDemoService; + + /** + * 查询测试单表列表 + */ + @SaCheckPermission("demo:demo:list") + @GetMapping("/list") + public TableDataInfo list(@Validated(QueryGroup.class) TestDemoBo bo, PageQuery pageQuery) { + return testDemoService.queryPageList(bo, pageQuery); + } + + /** + * 自定义分页查询 + */ + @SaCheckPermission("demo:demo:list") + @GetMapping("/page") + public TableDataInfo page(@Validated(QueryGroup.class) TestDemoBo bo, PageQuery pageQuery) { + return testDemoService.customPageList(bo, pageQuery); + } + + + // 使用 @Log 注解,用于记录操作日志 +// title 属性指定日志的标题为 "测试单表" +// businessType 属性指定业务类型为 IMPORT,表示这是一个导入操作 + @Log(title = "测试单表", businessType = BusinessType.IMPORT) +// 使用 @SaCheckPermission 注解,用于权限校验 +// 表示执行该方法需要具备 "demo:demo:import" 这个权限 + @SaCheckPermission("demo:demo:import") +// 使用 @PostMapping 注解,表明该方法处理 HTTP POST 请求 +// value = "/importData" 表示该方法映射的 URL 路径为 /importData +// consumes = MediaType.MULTIPART_FORM_DATA_VALUE 表示该方法只处理 multipart/form-data 类型的请求,通常用于文件上传 + @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) +// 定义一个公共方法 importData,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于返回操作结果信息 +// @RequestPart("file") 注解用于从请求中获取名为 "file" 的部分,这里期望是一个上传的文件 +// MultipartFile 是 Spring 框架提供的用于处理文件上传的接口,file 是接收上传文件的参数 +// throws Exception 表示该方法可能会抛出异常,调用者需要进行异常处理 + public R importData(@RequestPart("file") MultipartFile file) throws Exception { + // 调用 ExcelUtil 工具类的 importExcel 方法,将上传文件的输入流转换为 Excel 解析结果 + // file.getInputStream() 获取上传文件的输入流 + // TestDemoImportVo.class 指定解析结果的数据类型为 TestDemoImportVo + // true 表示是否严格模式,具体含义取决于 ExcelUtil 类的实现 + ExcelResult excelResult = ExcelUtil.importExcel(file.getInputStream(), TestDemoImportVo.class, true); + // 调用 MapstructUtils 工具类的 convert 方法,将 Excel 解析结果中的列表数据转换为 TestDemo 类型的列表 + // excelResult.getList() 获取 Excel 解析结果中的数据列表 + // TestDemo.class 指定转换的目标类型为 TestDemo + List list = MapstructUtils.convert(excelResult.getList(), TestDemo.class); + // 调用 testDemoService 的 saveBatch 方法,将转换后的 TestDemo 列表批量保存到数据库中 + // 这里的 testDemoService 是业务逻辑层的服务类,负责与数据库交互 + testDemoService.saveBatch(list); + // 调用 R 类的 ok 方法,将 Excel 解析结果中的分析信息封装到统一响应结果类 R 中并返回 + // excelResult.getAnalysis() 获取 Excel 解析结果中的分析信息 + return R.ok(excelResult.getAnalysis()); + } + + /** + * 导出测试单表列表 + */ + @SaCheckPermission("demo:demo:export") + @Log(title = "测试单表", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(@Validated TestDemoBo bo, HttpServletResponse response) { + List list = testDemoService.queryList(bo); + // 测试雪花id导出 +// for (TestDemoVo vo : list) { +// vo.setId(1234567891234567893L); +// } + ExcelUtil.exportExcel(list, "测试单表", TestDemoVo.class, response); + } + + /** + * 获取测试单表详细信息 + * + * @param id 测试ID + */ + @SaCheckPermission("demo:demo:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(testDemoService.queryById(id)); + } + + /** + * 新增测试单表 + */ + @SaCheckPermission("demo:demo:add") + @Log(title = "测试单表", businessType = BusinessType.INSERT) + @RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "{repeat.submit.message}") + @PostMapping() + public R add(@RequestBody TestDemoBo bo) { + // 使用校验工具对标 @Validated(AddGroup.class) 注解 + // 用于在非 Controller 的地方校验对象 + ValidatorUtils.validate(bo, AddGroup.class); + return toAjax(testDemoService.insertByBo(bo)); + } + + /** + * 修改测试单表 + */ + @SaCheckPermission("demo:demo:edit") + @Log(title = "测试单表", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody TestDemoBo bo) { + return toAjax(testDemoService.updateByBo(bo)); + } + + /** + * 删除测试单表 + * + * @param ids 测试ID串 + */ + @SaCheckPermission("demo:demo:remove") + @Log(title = "测试单表", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + // 定义一个公共方法 remove,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于返回操作结果信息 + public R remove( + // 使用 @NotEmpty 注解对参数进行校验,若传入的数组为空,会抛出校验异常, + // message 属性指定校验失败时的提示信息为 "主键不能为空" + @NotEmpty(message = "主键不能为空") + // 使用 @PathVariable 注解,表明该参数是从请求的路径变量中获取的, + // 这里期望从路径中获取一组 Long 类型的主键 ID + @PathVariable Long[] ids + ) { + // 调用 toAjax 方法,将 testDemoService 的 deleteWithValidByIds 方法的返回结果作为参数传入 + // testDemoService 是业务逻辑层的服务类,负责与数据库交互 + // Arrays.asList(ids) 将传入的 Long 数组转换为 List 集合 + // true 作为第二个参数传入,具体含义取决于 deleteWithValidByIds 方法的实现, + // 可能表示是否进行额外的有效性验证等 + return toAjax(testDemoService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} +// 这里多余的 } 应该是代码错误,需要删除 diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestEncryptController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestEncryptController.java new file mode 100644 index 0000000..1aef8f9 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestEncryptController.java @@ -0,0 +1,70 @@ +package org.dromara.demo.controller; + +import org.dromara.common.core.domain.R; +import org.dromara.demo.domain.TestDemoEncrypt; +import org.dromara.demo.mapper.TestDemoEncryptMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + + +/** + * 测试数据库加解密功能 + * + * @author Lion Li + */ +@Validated +@RestController +@RequestMapping("/demo/encrypt") +public class TestEncryptController { + + @Autowired + private TestDemoEncryptMapper mapper; + @Value("${mybatis-encryptor.enable}") + private Boolean encryptEnable; + + /** + * 测试数据库加解密 + * + * @param key 测试key + * @param value 测试value + */ + @GetMapping() + // 定义一个公共方法 test,返回类型为 R>。 +// R 通常是自定义的统一响应结果类,这里泛型指定为 Map, +// 表示响应结果中携带的数据是一个键为 String 类型、值为 TestDemoEncrypt 类型的映射 + public R> test(String key, String value) { + // 检查加密功能是否开启,如果 encryptEnable 为 false,说明加密功能未开启 + if (!encryptEnable) { + // 若加密功能未开启,抛出一个运行时异常,提示加密功能未开启 + throw new RuntimeException("加密功能未开启!"); + } + // 创建一个初始容量为 2 的 HashMap 对象 map,用于存储加密和解密后的 TestDemoEncrypt 对象 + Map map = new HashMap<>(2); + // 创建一个 TestDemoEncrypt 对象 demo,用于封装传入的 key 和 value + TestDemoEncrypt demo = new TestDemoEncrypt(); + // 为 demo 对象的 testKey 属性设置传入的 key 值 + demo.setTestKey(key); + // 为 demo 对象的 value 属性设置传入的 value 值 + demo.setValue(value); + // 调用 mapper 的 insert 方法,将 demo 对象插入到数据库中 + // mapper 通常是 MyBatis 等持久层框架的映射器接口实例 + mapper.insert(demo); + // 将键为 "加密",值为 demo 对象的键值对添加到 map 中 + map.put("加密", demo); + // 调用 mapper 的 selectById 方法,根据 demo 对象的 id 从数据库中查询对应的记录 + // 并将查询结果赋值给 testDemo 对象,这里可能涉及到数据的解密操作 + TestDemoEncrypt testDemo = mapper.selectById(demo.getId()); + // 将键为 "解密",值为 testDemo 对象的键值对添加到 map 中 + map.put("解密", testDemo); + // 调用 R 类的 ok 方法,将 map 对象封装到统一响应结果类 R 中并返回 + // 表示操作成功,并将加密和解密后的对象信息返回给调用者 + return R.ok(map); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java new file mode 100644 index 0000000..03ad49c --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java @@ -0,0 +1,255 @@ +package org.dromara.demo.controller; + +import cn.hutool.core.collection.CollUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import org.dromara.common.excel.core.ExcelResult; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.demo.domain.vo.ExportDemoVo; +import org.dromara.demo.listener.ExportDemoListener; +import org.dromara.demo.service.IExportExcelService; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 测试Excel功能 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/excel") +public class TestExcelController { + private final IExportExcelService exportExcelService; + + @GetMapping("/exportTemplateOne") + // 定义一个公共方法 exportTemplateOne,该方法用于导出 Excel 模板文件 +// 接收一个 HttpServletResponse 对象作为参数,用于向客户端发送响应数据 + public void exportTemplateOne(HttpServletResponse response) { + // 创建一个 HashMap 对象 map,用于存储一些配置信息或数据 + // 这里存储的键值对将用于填充 Excel 模板中的特定位置 + Map map = new HashMap<>(); + // 向 map 中添加键为 "title",值为 "单列表多数据" 的键值对 + // 这个值可能用于作为 Excel 表格的标题 + map.put("title", "单列表多数据"); + // 依次向 map 中添加其他键值对,用于填充 Excel 模板中的不同位置 + map.put("test1", "数据测试1"); + map.put("test2", "数据测试2"); + map.put("test3", "数据测试3"); + map.put("test4", "数据测试4"); + map.put("testTest", "666"); + // 创建一个 ArrayList 对象 list,用于存储 TestObj 类型的对象 + // 这些对象将作为 Excel 表格中的数据行 + List list = new ArrayList<>(); + // 创建一个 TestObj 对象,并传入相应的参数,然后将其添加到 list 中 + // 这个对象代表 Excel 表格中的一行数据 + list.add(new TestObj("单列表测试1", "列表测试1", "列表测试2", "列表测试3", "列表测试4")); + // 继续创建 TestObj 对象并添加到 list 中,增加 Excel 表格的数据行数 + list.add(new TestObj("单列表测试2", "列表测试5", "列表测试6", "列表测试7", "列表测试8")); + list.add(new TestObj("单列表测试3", "列表测试9", "列表测试10", "列表测试11", "列表测试12")); + // 调用 ExcelUtil 工具类的 exportTemplate 方法,用于导出 Excel 模板文件 + // CollUtil.newArrayList(map, list) 将 map 和 list 合并为一个新的列表,作为导出的数据 + // "单列表.xlsx" 是导出文件的文件名 + // "excel/单列表.xlsx" 是 Excel 模板文件的路径 + // response 是 HttpServletResponse 对象,用于将生成的 Excel 文件发送给客户端 + ExcelUtil.exportTemplate(CollUtil.newArrayList(map, list), "单列表.xlsx", "excel/单列表.xlsx", response); + } + + @GetMapping("/exportTemplateMuliti") + // 定义一个公共方法 exportTemplateMuliti,该方法的作用是导出一个包含多列表数据的 Excel 模板文件 +// 接收一个 HttpServletResponse 对象作为参数,用于向客户端发送生成的 Excel 文件 + public void exportTemplateMuliti(HttpServletResponse response) { + // 创建一个 HashMap 对象 map,用于存储一些配置信息,这些信息可能会用于填充 Excel 模板中的特定位置 + Map map = new HashMap<>(); + // 向 map 中添加键值对,键为 "title1",值为 "标题1",可能用于设置 Excel 中某个区域的标题 + map.put("title1", "标题1"); + // 依次添加其他标题相关的键值对 + map.put("title2", "标题2"); + map.put("title3", "标题3"); + map.put("title4", "标题4"); + // 添加作者信息,键为 "author",值为 "Lion Li" + map.put("author", "Lion Li"); + + // 创建一个存储 TestObj1 对象的列表 list1,用于存储第一组数据 + List list1 = new ArrayList<>(); + // 创建 TestObj1 对象并添加到 list1 中,每个对象代表 Excel 表格中的一行数据 + list1.add(new TestObj1("list1测试1", "list1测试2", "list1测试3")); + list1.add(new TestObj1("list1测试4", "list1测试5", "list1测试6")); + list1.add(new TestObj1("list1测试7", "list1测试8", "list1测试9")); + + // 创建第二个存储 TestObj1 对象的列表 list2,用于存储第二组数据 + List list2 = new ArrayList<>(); + // 向 list2 中添加 TestObj1 对象 + list2.add(new TestObj1("list2测试1", "list2测试2", "list2测试3")); + list2.add(new TestObj1("list2测试4", "list2测试5", "list2测试6")); + + // 创建第三个存储 TestObj1 对象的列表 list3,用于存储第三组数据 + List list3 = new ArrayList<>(); + // 向 list3 中添加 TestObj1 对象 + list3.add(new TestObj1("list3测试1", "list3测试2", "list3测试3")); + + // 创建第四个存储 TestObj1 对象的列表 list4,用于存储第四组数据 + List list4 = new ArrayList<>(); + // 向 list4 中添加多个 TestObj1 对象 + list4.add(new TestObj1("list4测试1", "list4测试2", "list4测试3")); + list4.add(new TestObj1("list4测试4", "list4测试5", "list4测试6")); + list4.add(new TestObj1("list4测试7", "list4测试8", "list4测试9")); + list4.add(new TestObj1("list4测试10", "list4测试11", "list4测试12")); + + // 创建一个新的 HashMap 对象 multiListMap,用于将前面创建的 map 和各个列表数据整合在一起 + Map multiListMap = new HashMap<>(); + // 将前面创建的 map 对象添加到 multiListMap 中,键为 "map" + multiListMap.put("map", map); + // 依次将各个列表数据添加到 multiListMap 中,分别用 "data1" 到 "data4" 作为键 + multiListMap.put("data1", list1); + multiListMap.put("data2", list2); + multiListMap.put("data3", list3); + multiListMap.put("data4", list4); + + // 调用 ExcelUtil 工具类的 exportTemplateMultiList 方法,根据整合后的数据生成 Excel 文件 + // multiListMap 是包含所有数据的映射,"多列表.xlsx" 是生成的 Excel 文件的文件名 + // "excel/多列表.xlsx" 是 Excel 模板文件的路径,response 用于将生成的文件发送给客户端 + ExcelUtil.exportTemplateMultiList(multiListMap, "多列表.xlsx", "excel/多列表.xlsx", response); + } + + /** + * 导出下拉框 + * + * @param response / + */ + @GetMapping("/exportWithOptions") + public void exportWithOptions(HttpServletResponse response) { + exportExcelService.exportWithOptions(response); + } + + /** + * 多个sheet导出 + */ + @GetMapping("/exportTemplateMultiSheet") + // 定义一个公共方法 exportTemplateMultiSheet,用于导出包含多个工作表(sheet)的 Excel 模板文件 +// 接收一个 HttpServletResponse 对象作为参数,用于将生成的 Excel 文件响应给客户端 + public void exportTemplateMultiSheet(HttpServletResponse response) { + // 创建一个存储 TestObj1 对象的列表 list1,用于存储第一个工作表的数据 + List list1 = new ArrayList<>(); + // 向 list1 中添加 TestObj1 对象,每个对象代表 Excel 表格中的一行数据 + list1.add(new TestObj1("list1测试1", "list1测试2", "list1测试3")); + list1.add(new TestObj1("list1测试4", "list1测试5", "list1测试6")); + + // 创建第二个存储 TestObj1 对象的列表 list2,用于存储第二个工作表的数据 + List list2 = new ArrayList<>(); + // 向 list2 中添加 TestObj1 对象 + list2.add(new TestObj1("list2测试1", "list2测试2", "list2测试3")); + list2.add(new TestObj1("list2测试4", "list2测试5", "list2测试6")); + + // 创建第三个存储 TestObj1 对象的列表 list3,用于存储第三个工作表的数据 + List list3 = new ArrayList<>(); + // 向 list3 中添加 TestObj1 对象 + list3.add(new TestObj1("list3测试1", "list3测试2", "list3测试3")); + list3.add(new TestObj1("list3测试4", "list3测试5", "list3测试6")); + + // 创建第四个存储 TestObj1 对象的列表 list4,用于存储第四个工作表的数据 + List list4 = new ArrayList<>(); + // 向 list4 中添加 TestObj1 对象 + list4.add(new TestObj1("list4测试1", "list4测试2", "list4测试3")); + list4.add(new TestObj1("list4测试4", "list4测试5", "list4测试6")); + + // 创建一个存储 Map 的列表 list,用于存储每个工作表的数据映射 + List> list = new ArrayList<>(); + + // 创建一个 Map 对象 sheetMap1,用于存储第一个工作表的数据 + Map sheetMap1 = new HashMap<>(); + // 将 list1 作为值,以 "data1" 为键添加到 sheetMap1 中 + sheetMap1.put("data1", list1); + + // 创建一个 Map 对象 sheetMap2,用于存储第二个工作表的数据 + Map sheetMap2 = new HashMap<>(); + // 将 list2 作为值,以 "data2" 为键添加到 sheetMap2 中 + sheetMap2.put("data2", list2); + + // 创建一个 Map 对象 sheetMap3,用于存储第三个工作表的数据 + Map sheetMap3 = new HashMap<>(); + // 将 list3 作为值,以 "data3" 为键添加到 sheetMap3 中 + sheetMap3.put("data3", list3); + + // 创建一个 Map 对象 sheetMap4,用于存储第四个工作表的数据 + Map sheetMap4 = new HashMap<>(); + // 将 list4 作为值,以 "data4" 为键添加到 sheetMap4 中 + sheetMap4.put("data4", list4); + + // 将每个工作表的数据映射依次添加到 list 中 + list.add(sheetMap1); + list.add(sheetMap2); + list.add(sheetMap3); + list.add(sheetMap4); + + // 调用 ExcelUtil 工具类的 exportTemplateMultiSheet 方法,根据整合后的数据生成包含多个工作表的 Excel 文件 + // list 是包含所有工作表数据映射的列表,"多sheet列表" 是生成的 Excel 文件的文件名 + // "excel/多sheet列表.xlsx" 是 Excel 模板文件的路径,response 用于将生成的文件发送给客户端 + ExcelUtil.exportTemplateMultiSheet(list, "多sheet列表", "excel/多sheet列表.xlsx", response); + } + + /** + * 导入表格 + */ + @PostMapping(value = "/importWithOptions", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + // 定义一个公共方法 importWithOptions,该方法用于处理文件导入操作,并返回一个 ExportDemoVo 类型的列表 +// @RequestPart("file") 注解表明该方法从 HTTP 请求里获取名为 "file" 的部分,此部分应为上传的文件 +// MultipartFile 是 Spring 框架提供的用于处理文件上传的接口,file 参数用于接收上传的文件 +// throws Exception 表示该方法可能会抛出异常,调用者需要对这些异常进行处理 + public List importWithOptions(@RequestPart("file") MultipartFile file) throws Exception { + // 这是一行注释,说明接下来的代码会处理 Excel 文件的解析结果 + // 调用 ExcelUtil 工具类的 importExcel 方法,对上传的 Excel 文件进行解析 + // file.getInputStream() 用于获取上传文件的输入流,以便后续进行读取操作 + // ExportDemoVo.class 指定了解析结果的数据类型为 ExportDemoVo,也就是解析后的数据会封装成 ExportDemoVo 对象 + // new ExportDemoListener() 是创建了一个 ExportDemoListener 类的实例,该监听器会在 Excel 文件解析过程中发挥作用, + // 例如可以在解析到特定行或单元格时执行特定操作 + // 解析结果会被存储在 ExcelResult 类型的对象 excelResult 中 + ExcelResult excelResult = ExcelUtil.importExcel(file.getInputStream(), ExportDemoVo.class, new ExportDemoListener()); + // 从 excelResult 对象里获取解析得到的 ExportDemoVo 对象列表,并将其返回 + return excelResult.getList(); + } + + @Data + // @AllArgsConstructor 是 Lombok 库提供的注解。 +// 它会自动为这个类生成一个包含所有已声明字段的构造函数。 +// 这样可以减少手动编写构造函数的工作量,提高代码的简洁性。 + @AllArgsConstructor +// 定义一个静态内部类 TestObj1。静态内部类意味着它可以在不创建外部类实例的情况下被实例化。 +// 该类主要用于封装一组相关的数据,这里包含三个字符串类型的属性。 + static class TestObj1 { + // 定义一个私有字符串类型的属性 test1。 + // 私有属性可以保证数据的封装性,外部类不能直接访问,需要通过 getter 和 setter 方法来操作。 + private String test1; + // 定义一个私有字符串类型的属性 test2。 + private String test2; + // 定义一个私有字符串类型的属性 test3。 + private String test3; + } + + @Data + @AllArgsConstructor + // 定义一个静态内部类 TestObj。静态内部类可以不依赖外部类的实例而被创建, +// 通常用于将一组相关的数据封装在一起,方便管理和使用 + static class TestObj { + // 定义一个私有字符串类型的属性 name,用于存储对象的名称信息 + // 私有属性可以保证数据的封装性,外部类不能直接访问该属性,需要通过 getter 和 setter 方法来操作 + private String name; + // 定义一个私有字符串类型的属性 list1,可用于存储相关列表中的某一项信息 + private String list1; + // 定义一个私有字符串类型的属性 list2,用途和 list1 类似,可存储列表中的另一项信息 + private String list2; + // 定义一个私有字符串类型的属性 list3,用于存储相关列表中的又一项信息 + private String list3; + // 定义一个私有字符串类型的属性 list4,同样用于存储列表中的信息 + private String list4; + } +} +// 这里多余的 } 应该是代码错误,需要删除 diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestI18nController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestI18nController.java new file mode 100644 index 0000000..5be2545 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestI18nController.java @@ -0,0 +1,86 @@ +package org.dromara.demo.controller; + +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.MessageUtils; +import lombok.Data; +import org.hibernate.validator.constraints.Range; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + + +/** + * 测试国际化 + * + * @author Lion Li + */ +@Validated +@RestController +@RequestMapping("/demo/i18n") +public class TestI18nController { + + /** + * 通过code获取国际化内容 + * code为 messages.properties 中的 key + *

+ * 测试使用 user.register.success + * + * @param code 国际化code + */ + @GetMapping() + public R get(String code) { + return R.ok(MessageUtils.message(code)); + } + + /** + * Validator 校验国际化 + * 不传值 分别查看异常返回 + *

+ * 测试使用 not.null + */ + @GetMapping("/test1") + public R test1(@NotBlank(message = "{not.null}") String str) { + return R.ok(str); + } + + /** + * Bean 校验国际化 + * 不传值 分别查看异常返回 + *

+ * 测试使用 not.null + */ + @GetMapping("/test2") + // 定义一个公共方法 test2,返回类型为 R。 +// R 通常是自定义的统一响应结果类,泛型指定为 TestI18nBo 表示响应中携带的数据类型为 TestI18nBo。 +// @Validated 注解用于开启对方法参数的校验,确保传入的参数符合指定的校验规则。 +// TestI18nBo bo 表示接收一个 TestI18nBo 类型的对象作为参数。 + public R test2(@Validated TestI18nBo bo) { + // 调用 R 类的 ok 方法,将传入的 bo 对象封装到统一响应结果类 R 中并返回。 + // 表示操作成功,并将传入的 TestI18nBo 对象原样返回给调用者。 + return R.ok(bo); + } + + // 使用 @Data 注解,这是 Lombok 提供的注解,会自动生成 getter、setter、toString、equals、hashCode 等方法。 +// 定义一个公共静态内部类 TestI18nBo,用于封装需要进行校验的数据。 + @Data + public static class TestI18nBo { + // @NotBlank 注解用于校验字符串类型的属性,确保该属性不为空字符串且不为 null。 + // message = "{not.null}" 表示当校验不通过时,会从国际化资源文件中查找键为 "not.null" 的错误信息并返回。 + // 这里的 name 属性用于存储名称信息。 + @NotBlank(message = "{not.null}") + private String name; + + // @NotNull 注解用于校验对象类型的属性,确保该属性不为 null。 + // message = "{not.null}" 同样表示校验不通过时从国际化资源文件中查找键为 "not.null" 的错误信息。 + // @Range 注解用于对数值类型的属性进行范围校验,这里要求 age 属性的值在 0 到 100 之间。 + // message = "{length.not.valid}" 表示当 age 的值不在指定范围内时,从国际化资源文件中查找键为 "length.not.valid" 的错误信息。 + // 这里的 age 属性用于存储年龄信息。 + @NotNull(message = "{not.null}") + @Range(min = 0, max = 100, message = "{length.not.valid}") + private Integer age; + }} +// 这里多余的 } 应该是代码错误,需要删除 diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestSensitiveController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestSensitiveController.java new file mode 100644 index 0000000..3049570 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestSensitiveController.java @@ -0,0 +1,86 @@ +package org.dromara.demo.controller; + +import org.dromara.common.core.domain.R; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.sensitive.annotation.Sensitive; +import org.dromara.common.sensitive.core.SensitiveStrategy; +import lombok.Data; +import org.dromara.common.sensitive.core.SensitiveService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 测试数据脱敏控制器 + *

+ * 默认管理员不过滤 + * 需自行根据业务重写实现 + * + * @author Lion Li + * @version 3.6.0 + * @see SensitiveService + */ +@RestController +@RequestMapping("/demo/sensitive") +// 定义一个公共类 TestSensitiveController,它继承自 BaseController 类。 +// 通常 BaseController 类会包含一些通用的控制器逻辑,继承它可以复用这些逻辑。 +public class TestSensitiveController extends BaseController { + // 使用 @GetMapping 注解,表明该方法处理 HTTP GET 请求。 + // "/test" 表示该方法映射的 URL 路径为 /test,当客户端发送 GET 请求到这个路径时,会调用此方法。 + @GetMapping("/test") + // 定义一个公共方法 test,返回类型为 R。 + // R 通常是自定义的统一响应结果类,泛型指定为 TestSensitive 表示响应中携带的数据类型为 TestSensitive。 + public R test() { + // 创建一个 TestSensitive 类的实例 testSensitive,用于封装敏感信息。 + TestSensitive testSensitive = new TestSensitive(); + // 调用 testSensitive 对象的 setIdCard 方法,设置身份证号属性的值。 + testSensitive.setIdCard("210397198608215431"); + // 调用 testSensitive 对象的 setPhone 方法,设置电话号码属性的值。 + testSensitive.setPhone("17640125371"); + // 调用 testSensitive 对象的 setAddress 方法,设置地址属性的值。 + testSensitive.setAddress("北京市朝阳区某某四合院1203室"); + // 调用 testSensitive 对象的 setEmail 方法,设置邮箱属性的值。 + testSensitive.setEmail("17640125371@163.com"); + // 调用 testSensitive 对象的 setBankCard 方法,设置银行卡号属性的值。 + testSensitive.setBankCard("6226456952351452853"); + // 调用 R 类的 ok 方法,将 testSensitive 对象封装到统一响应结果类 R 中并返回。 + // 表示操作成功,并将包含敏感信息的 testSensitive 对象返回给调用者。 + return R.ok(testSensitive); + } + + @Data + static class TestSensitive { + + /** + * 身份证 + */ + @Sensitive(strategy = SensitiveStrategy.ID_CARD) + private String idCard; + + /** + * 电话 + */ + @Sensitive(strategy = SensitiveStrategy.PHONE, roleKey = "common") + private String phone; + + /** + * 地址 + */ + @Sensitive(strategy = SensitiveStrategy.ADDRESS, perms = "system:user:query") + private String address; + + /** + * 邮箱 + */ + @Sensitive(strategy = SensitiveStrategy.EMAIL, roleKey = "common", perms = "system:user:query1") + private String email; + + /** + * 银行卡 + */ + @Sensitive(strategy = SensitiveStrategy.BANK_CARD, roleKey = "common1", perms = "system:user:query") + private String bankCard; + + } + +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestTreeController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestTreeController.java new file mode 100644 index 0000000..7d54a50 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestTreeController.java @@ -0,0 +1,160 @@ +package org.dromara.demo.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.core.validate.QueryGroup; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.demo.domain.bo.TestTreeBo; +import org.dromara.demo.domain.vo.TestTreeVo; +import org.dromara.demo.service.ITestTreeService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import java.util.Arrays; +import java.util.List; + +/** + * 测试树表Controller + * + * @author Lion Li + * @date 2021-07-26 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/tree") +// 定义一个公共类 TestTreeController,它继承自 BaseController 类。 +// 通常 BaseController 类会包含一些通用的控制器逻辑,继承它可以复用这些逻辑。 +public class TestTreeController extends BaseController { + // 定义一个私有且不可变的 ITestTreeService 类型的成员变量 testTreeService。 + // 使用 final 关键字修饰,意味着该变量在初始化后不能再被重新赋值。 + // 此变量用于调用 ITestTreeService 接口中定义的方法来处理业务逻辑。 + private final ITestTreeService testTreeService; + + // 使用 @SaCheckPermission 注解,用于进行权限校验。 + // "demo:tree:list" 表示执行该方法需要具备 "demo:tree:list" 这个权限,只有拥有此权限的用户才能访问该接口。 + @SaCheckPermission("demo:tree:list") + // 使用 @GetMapping 注解,表明该方法处理 HTTP GET 请求。 + // "/list" 表示该方法映射的 URL 路径为 /list,当客户端发送 GET 请求到这个路径时,会调用此方法。 + @GetMapping("/list") + // 定义一个公共方法 list,返回类型为 R>。 + // R 通常是自定义的统一响应结果类,泛型指定为 List 表示响应中携带的数据是一个 TestTreeVo 类型的列表。 + // @Validated(QueryGroup.class) 注解用于开启对方法参数的校验,并且指定使用 QueryGroup 分组的校验规则。 + // TestTreeBo bo 表示接收一个 TestTreeBo 类型的对象作为查询参数。 + public R> list(@Validated(QueryGroup.class) TestTreeBo bo) { + // 调用 testTreeService 的 queryList 方法,传入查询参数 bo,获取符合条件的 TestTreeVo 列表。 + // queryList 方法是 ITestTreeService 接口中定义的方法,具体实现由其实现类完成。 + List list = testTreeService.queryList(bo); + // 调用 R 类的 ok 方法,将查询得到的列表 list 封装到统一响应结果类 R 中并返回。 + // 表示操作成功,并将查询结果列表返回给调用者。 + return R.ok(list); + } + + /** + * 导出测试树表列表 + */ + // 使用 @SaCheckPermission 注解,该注解用于进行权限校验。 +// "demo:tree:export" 是权限标识,意味着调用此方法的用户必须拥有 "demo:tree:export" 这个权限, +// 若没有相应权限,将无法访问该接口。 + @SaCheckPermission("demo:tree:export") +// 使用 @Log 注解,该注解通常用于记录操作日志。 +// title 属性指定日志的标题为 "测试树表",businessType 属性指定业务类型为 EXPORT,即导出操作。 +// 这样在执行该方法时,会记录相关的操作日志信息。 + @Log(title = "测试树表", businessType = BusinessType.EXPORT) +// 使用 @GetMapping 注解,表明此方法处理 HTTP GET 请求。 +// "/export" 是该方法映射的 URL 路径,当客户端发送 GET 请求到这个路径时,会调用此方法。 + @GetMapping("/export") +// 定义一个公共方法 export,该方法没有返回值(void)。 +// @Validated 注解用于对传入的 TestTreeBo 对象进行数据校验,确保其符合预定义的规则。 +// TestTreeBo bo 是一个自定义的业务对象,用于封装查询条件。 +// HttpServletResponse response 是 Servlet API 中的响应对象,用于向客户端返回数据, +// 这里主要用于返回导出的 Excel 文件。 + public void export(@Validated TestTreeBo bo, HttpServletResponse response) { + // 调用 testTreeService 的 queryList 方法,传入查询条件 bo, + // 从业务逻辑层获取符合条件的 TestTreeVo 对象列表。 + // testTreeService 是一个业务逻辑服务对象,负责处理与测试树表相关的业务逻辑。 + List list = testTreeService.queryList(bo); + // 调用 ExcelUtil 工具类的 exportExcel 方法,将查询得到的列表数据导出为 Excel 文件。 + // list 是要导出的数据列表。 + // "测试树表" 是导出的 Excel 文件的名称。 + // TestTreeVo.class 指定了导出数据的类型,用于确定 Excel 文件的表头和数据格式。 + // response 用于将生成的 Excel 文件返回给客户端。 + ExcelUtil.exportExcel(list, "测试树表", TestTreeVo.class, response); + } + + // 使用 @SaCheckPermission 注解进行权限校验,只有拥有 "demo:tree:query" 权限的用户才能访问此接口 + @SaCheckPermission("demo:tree:query") +// 使用 @GetMapping 注解,表明该方法处理 HTTP GET 请求,路径中的 {id} 是一个路径变量 + @GetMapping("/{id}") +// 定义一个公共方法 getInfo,返回类型为 R,R 通常是自定义的统一响应结果类 +// @NotNull 注解对参数 id 进行非空校验,若为空会抛出校验异常,message 属性指定异常提示信息 +// @PathVariable("id") 注解表示从路径中获取名为 "id" 的变量并赋值给方法参数 id + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + // 调用 testTreeService 的 queryById 方法,根据 id 查询 TestTreeVo 对象 + // 然后将查询结果封装到统一响应结果类 R 中返回 + return R.ok(testTreeService.queryById(id)); + } + + // 使用 @SaCheckPermission 注解进行权限校验,只有拥有 "demo:tree:add" 权限的用户才能访问此接口 + @SaCheckPermission("demo:tree:add") +// 使用 @Log 注解记录操作日志,title 为 "测试树表",businessType 为 INSERT 表示插入操作 + @Log(title = "测试树表", businessType = BusinessType.INSERT) +// @RepeatSubmit 注解用于防止重复提交,避免用户在短时间内多次提交相同请求 + @RepeatSubmit +// 使用 @PostMapping 注解,表明该方法处理 HTTP POST 请求 + @PostMapping() +// 定义一个公共方法 add,返回类型为 R,表示不返回具体数据,只返回操作结果 +// @Validated(AddGroup.class) 注解对传入的 TestTreeBo 对象进行校验,使用 AddGroup 分组的校验规则 +// @RequestBody 注解表示从请求体中获取数据并反序列化为 TestTreeBo 对象 + public R add(@Validated(AddGroup.class) @RequestBody TestTreeBo bo) { + // 调用 testTreeService 的 insertByBo 方法,根据传入的 bo 对象插入数据 + // 然后调用 toAjax 方法将插入操作的结果封装到统一响应结果类 R 中返回 + return toAjax(testTreeService.insertByBo(bo)); + } + + // 使用 @SaCheckPermission 注解进行权限校验,只有拥有 "demo:tree:edit" 权限的用户才能访问此接口 + @SaCheckPermission("demo:tree:edit") +// 使用 @Log 注解记录操作日志,title 为 "测试树表",businessType 为 UPDATE 表示更新操作 + @Log(title = "测试树表", businessType = BusinessType.UPDATE) +// @RepeatSubmit 注解用于防止重复提交 + @RepeatSubmit +// 使用 @PutMapping 注解,表明该方法处理 HTTP PUT 请求 + @PutMapping() +// 定义一个公共方法 edit,返回类型为 R +// @Validated(EditGroup.class) 注解对传入的 TestTreeBo 对象进行校验,使用 EditGroup 分组的校验规则 +// @RequestBody 注解表示从请求体中获取数据并反序列化为 TestTreeBo 对象 + public R edit(@Validated(EditGroup.class) @RequestBody TestTreeBo bo) { + // 调用 testTreeService 的 updateByBo 方法,根据传入的 bo 对象更新数据 + // 然后调用 toAjax 方法将更新操作的结果封装到统一响应结果类 R 中返回 + return toAjax(testTreeService.updateByBo(bo)); + } + + // 使用 @SaCheckPermission 注解进行权限校验,只有拥有 "demo:tree:remove" 权限的用户才能访问此接口 + @SaCheckPermission("demo:tree:remove") +// 使用 @Log 注解记录操作日志,title 为 "测试树表",businessType 为 DELETE 表示删除操作 + @Log(title = "测试树表", businessType = BusinessType.DELETE) +// 使用 @DeleteMapping 注解,表明该方法处理 HTTP DELETE 请求,路径中的 {ids} 是一个路径变量 + @DeleteMapping("/{ids}") +// 定义一个公共方法 remove,返回类型为 R +// @NotEmpty 注解对参数 ids 进行非空校验,若为空会抛出校验异常,message 属性指定异常提示信息 +// @PathVariable 注解表示从路径中获取名为 "ids" 的变量并赋值给方法参数 ids + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + // 调用 Arrays.asList 方法将 Long 数组转换为 List 集合 + // 然后调用 testTreeService 的 deleteWithValidByIds 方法,根据传入的 id 列表删除数据 + // 第二个参数 true 可能表示是否进行额外的有效性验证 + // 最后调用 toAjax 方法将删除操作的结果封装到统一响应结果类 R 中返回 + return toAjax(testTreeService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/WeSocketController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/WeSocketController.java new file mode 100644 index 0000000..44474f5 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/WeSocketController.java @@ -0,0 +1,32 @@ +package org.dromara.demo.controller; + +import org.dromara.common.core.domain.R; +import org.dromara.common.websocket.dto.WebSocketMessageDto; +import org.dromara.common.websocket.utils.WebSocketUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/websocket") +@Slf4j +// 定义一个公共类 WeSocketController,它通常作为控制器类,负责处理与 WebSocket 相关的 HTTP 请求 +public class WeSocketController { + // 使用 @GetMapping 注解,表明该方法处理 HTTP GET 请求 + // "/send" 表示该方法映射的 URL 路径为 /send,当客户端发送 GET 请求到这个路径时,会调用此方法 + @GetMapping("/send") + // 定义一个公共方法 send,返回类型为 R。R 通常是自定义的统一响应结果类, + // Void 表示该方法不返回具体的数据内容,主要用于返回操作结果信息 + // WebSocketMessageDto dto 表示接收一个 WebSocketMessageDto 类型的对象作为参数,该对象封装了要发送的 WebSocket 消息相关信息 + // throws InterruptedException 表示该方法可能会抛出 InterruptedException 异常,调用者需要进行异常处理 + public R send(WebSocketMessageDto dto) throws InterruptedException { + // 调用 WebSocketUtils 工具类的 publishMessage 方法,将传入的 dto 对象作为参数, + // 该方法的作用是发布 WebSocket 消息,具体实现逻辑由 WebSocketUtils 类决定 + WebSocketUtils.publishMessage(dto); + // 调用 R 类的 ok 方法,将 "操作成功" 作为消息封装到统一响应结果类 R 中并返回, + // 表示 WebSocket 消息发布操作成功 + return R.ok("操作成功"); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/package-info.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/package-info.java new file mode 100644 index 0000000..16c30f8 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/package-info.java @@ -0,0 +1 @@ +package org.dromara.demo.controller; diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/BoundedQueueController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/BoundedQueueController.java new file mode 100644 index 0000000..15158ab --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/BoundedQueueController.java @@ -0,0 +1,94 @@ +package org.dromara.demo.controller.queue; + +import cn.dev33.satoken.annotation.SaIgnore; +import org.dromara.common.core.domain.R; +import org.dromara.common.redis.utils.QueueUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.redisson.api.RBoundedBlockingQueue; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 有界队列 演示案例 + *

+ * 轻量级队列 重量级数据量 请使用 MQ + *

+ * 集群测试通过 同一个数据只会被消费一次 做好事务补偿 + * 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条 + * + * @author Lion Li + * @version 3.6.0 + */ +@Slf4j +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/queue/bounded") +public class BoundedQueueController { + + /** + * 添加队列数据 + * + * @param queueName 队列名 + * @param capacity 容量 + */ + @GetMapping("/add") + public R add(String queueName, int capacity) { + // 用完了一定要销毁,否则会一直存在。这里先尝试销毁指定名称的有界队列 + boolean b = QueueUtils.destroyBoundedQueue(queueName); + log.info("通道: {} , 删除: {}", queueName, b); + // 初始化设置一次即可。尝试为指定队列设置容量 + if (QueueUtils.trySetBoundedQueueCapacity(queueName, capacity)) { + log.info("通道: {} , 设置容量: {}", queueName, capacity); + } else { + log.info("通道: {} , 设置容量失败", queueName); + return R.fail("操作失败"); + } + // 循环向队列中添加11条数据 + for (int i = 0; i < 11; i++) { + String data = "data-" + i; + // 尝试向指定队列添加数据 + boolean flag = QueueUtils.addBoundedQueueObject(queueName, data); + if (flag == false) { + log.info("通道: {} , 发送数据: {} 失败, 通道已满", queueName, data); + } else { + log.info("通道: {} , 发送数据: {}", queueName, data); + } + } + return R.ok("操作成功"); + } + + /** + * 删除队列数据 + * + * @param queueName 队列名 + */ + @GetMapping("/remove") + public R remove(String queueName) { + String data = "data-" + 5; + // 尝试从指定队列中删除指定数据 + if (QueueUtils.removeBoundedQueueObject(queueName, data)) { + log.info("通道: {} , 删除数据: {}", queueName, data); + } else { + return R.fail("操作失败"); + } + return R.ok("操作成功"); + } + + /** + * 获取队列数据 + * + * @param queueName 队列名 + */ + @GetMapping("/get") + public R get(String queueName) { + String data; + // 循环从队列中获取数据,直到获取到的数据为null(表示队列为空) + do { + data = QueueUtils.getBoundedQueueObject(queueName); + log.info("通道: {} , 获取数据: {}", queueName, data); + } while (data != null); + return R.ok("操作成功"); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/DelayedQueueController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/DelayedQueueController.java new file mode 100644 index 0000000..42c5a73 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/DelayedQueueController.java @@ -0,0 +1,110 @@ +package org.dromara.demo.controller.queue; + +import cn.dev33.satoken.annotation.SaIgnore; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.R; +import org.dromara.common.redis.utils.QueueUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + +/** + * 延迟队列 演示案例 + *

+ * 轻量级队列 重量级数据量 请使用 MQ + * 例如: 创建订单30分钟后过期处理 + *

+ * 集群测试通过 同一个数据只会被消费一次 做好事务补偿 + * 集群测试流程 两台集群分别开启订阅 在其中一台发送数据 观察接收消息的规律 + * + * @author Lion Li + * @version 3.6.0 + */ +@SaIgnore +@Slf4j +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/queue/delayed") +public class DelayedQueueController { + + /** + * 订阅队列 + * + * @param queueName 队列名 + */ + @GetMapping("/subscribe") + public R subscribe(String queueName) { + log.info("通道: {} 监听中......", queueName); + // 项目初始化设置一次即可 + QueueUtils.subscribeBlockingQueue(queueName, (String orderNum) -> { + // 观察接收时间 + log.info("通道: {}, 收到数据: {}", queueName, orderNum); + return CompletableFuture.runAsync(() -> { + // 异步处理数据逻辑 不要在上方处理业务逻辑 + log.info("数据处理: {}", orderNum); + }); + }, true); + return R.ok("操作成功"); + } + + /** + * 添加队列数据 + * + * @param queueName 队列名 + * @param orderNum 订单号 + * @param time 延迟时间(秒) + */ + @GetMapping("/add") + public R add(String queueName, String orderNum, Long time) { + QueueUtils.addDelayedQueueObject(queueName, orderNum, time, TimeUnit.SECONDS); + // 观察发送时间 + log.info("通道: {} , 发送数据: {}", queueName, orderNum); + return R.ok("操作成功"); + } + + /** + * 删除队列数据 + * + * @param queueName 队列名 + * @param orderNum 订单号 + */ + @GetMapping("/remove") + // 定义一个公共方法 remove,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于传达操作的结果状态 + public R remove(String queueName, String orderNum) { + // 调用 QueueUtils 工具类的 removeDelayedQueueObject 方法,尝试从指定名称的延迟队列中移除指定 orderNum 的数据 + // 该方法返回一个布尔值,表示移除操作是否成功 + if (QueueUtils.removeDelayedQueueObject(queueName, orderNum)) { + // 如果移除操作成功,使用日志记录工具(如 SLF4J)记录移除成功的信息 + // 信息中包含队列名称和被移除的数据的 orderNum + log.info("通道: {} , 删除数据: {}", queueName, orderNum); + } else { + // 如果移除操作失败,调用 R 类的 fail 方法,将 "操作失败" 信息封装成统一响应结果类 R 的对象并返回 + return R.fail("操作失败"); + } + // 如果移除操作成功,调用 R 类的 ok 方法,将 "操作成功" 信息封装成统一响应结果类 R 的对象并返回 + return R.ok("操作成功"); + } + + /** + * 销毁队列 + * + * @param queueName 队列名 + */ + @GetMapping("/destroy") + // 定义一个公共方法 destroy,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表明此方法不返回具体的数据内容,主要用于告知调用者操作的结果状态 + public R destroy(String queueName) { + // 这里给出注释提示,强调在使用完队列后必须进行销毁操作,否则队列会一直存在占用资源 + // 调用 QueueUtils 工具类的 destroyDelayedQueue 方法,传入队列名称 queueName, + // 该方法的作用是销毁指定名称的延迟队列 + QueueUtils.destroyDelayedQueue(queueName); + // 调用 R 类的 ok 方法,将 "操作成功" 这个消息封装到 R 对象中并返回, + // 以此告知调用者延迟队列销毁操作已经成功完成 + return R.ok("操作成功"); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityDemo.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityDemo.java new file mode 100644 index 0000000..38fa7ab --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityDemo.java @@ -0,0 +1,30 @@ +package org.dromara.demo.controller.queue; + +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 实体类 注意不允许使用内部类 否则会找不到类 + * + * @author Lion Li + * @version 3.6.0 + */ +@Data +@NoArgsConstructor +// 定义一个名为 PriorityDemo 的公共类,该类实现了 Comparable 接口,用于对 PriorityDemo 对象进行比较 +public class PriorityDemo implements Comparable { + // 声明一个私有字符串类型的成员变量 name,用于存储对象的名称 + private String name; + // 声明一个私有整数类型的成员变量 orderNum,用于存储对象的排序编号 + private Integer orderNum; + + // 重写 Comparable 接口中的 compareTo 方法,用于定义两个 PriorityDemo 对象的比较规则 + @Override + public int compareTo(PriorityDemo other) { + // 调用 Integer 类的 compare 方法,比较当前对象的 orderNum 和传入对象的 orderNum + // 如果当前对象的 orderNum 小于传入对象的 orderNum,返回负数 + // 如果当前对象的 orderNum 等于传入对象的 orderNum,返回 0 + // 如果当前对象的 orderNum 大于传入对象的 orderNum,返回正数 + return Integer.compare(getOrderNum(), other.getOrderNum()); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityQueueController.java b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityQueueController.java new file mode 100644 index 0000000..4ce834d --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityQueueController.java @@ -0,0 +1,124 @@ +package org.dromara.demo.controller.queue; + +import cn.hutool.core.util.RandomUtil; +import org.dromara.common.core.domain.R; +import org.dromara.common.redis.utils.QueueUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 优先队列 演示案例 + *

+ * 轻量级队列 重量级数据量 请使用 MQ + *

+ * 集群测试通过 同一个消息只会被消费一次 做好事务补偿 + * 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条 + * + * @author Lion Li + * @version 3.6.0 + */ +@Slf4j +@RequiredArgsConstructor +@RestController +@RequestMapping("/demo/queue/priority") +public class PriorityQueueController { + + /** + * 添加队列数据 + * + * @param queueName 队列名 + */ + @GetMapping("/add") + // 定义一个公共方法 add,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于告知调用者操作的结果状态 + public R add(String queueName) { + // 注释提示,强调使用完队列后需要销毁,否则队列会一直存在 + // 调用 QueueUtils 工具类的 destroyPriorityQueue 方法,尝试销毁指定名称的优先队列 + // 该方法返回一个布尔值,表示队列是否成功销毁 + boolean b = QueueUtils.destroyPriorityQueue(queueName); + // 使用日志记录工具记录队列销毁操作的结果,包含队列名称和销毁结果 + log.info("通道: {} , 删除: {}", queueName, b); + + // 循环 10 次,向优先队列中添加 10 个元素 + for (int i = 0; i < 10; i++) { + // 生成一个 0 到 9 之间的随机整数 + int randomNum = RandomUtil.randomInt(10); + // 创建一个 PriorityDemo 对象,用于表示要添加到队列中的数据 + PriorityDemo data = new PriorityDemo(); + // 设置 PriorityDemo 对象的名称属性 + data.setName("data-" + i); + // 设置 PriorityDemo 对象的排序编号属性为随机生成的整数 + data.setOrderNum(randomNum); + // 调用 QueueUtils 工具类的 addPriorityQueueObject 方法,尝试将数据添加到指定名称的优先队列中 + // 该方法返回一个布尔值,表示数据是否成功添加到队列中 + if (QueueUtils.addPriorityQueueObject(queueName, data)) { + // 如果数据添加成功,使用日志记录工具记录添加成功的信息,包含队列名称和添加的数据 + log.info("通道: {} , 发送数据: {}", queueName, data); + } else { + // 如果数据添加失败,使用日志记录工具记录添加失败的信息,包含队列名称和添加的数据 + log.info("通道: {} , 发送数据: {}, 发送失败", queueName, data); + } + } + // 调用 R 类的 ok 方法,将 "操作成功" 信息封装到统一响应结果类 R 中并返回 + return R.ok("操作成功"); + } + + /** + * 删除队列数据 + * + * @param queueName 队列名 + * @param name 对象名 + * @param orderNum 排序号 + */ + @GetMapping("/remove") + // 定义一个公共方法 remove,其返回类型为 R。这里的 R 一般是自定义的统一响应结果类, +// Void 表明该方法不返回具体的数据内容,仅用于传达操作的结果状态 + public R remove(String queueName, String name, Integer orderNum) { + // 创建一个 PriorityDemo 对象,用于封装要从队列中移除的数据信息 + PriorityDemo data = new PriorityDemo(); + // 为 PriorityDemo 对象设置名称属性,该名称由方法参数传入 + data.setName(name); + // 为 PriorityDemo 对象设置排序编号属性,该编号由方法参数传入 + data.setOrderNum(orderNum); + // 调用 QueueUtils 工具类的 removePriorityQueueObject 方法,尝试从指定名称的优先队列中移除封装好的数据对象 + // 该方法会返回一个布尔值,用于表示移除操作是否成功 + if (QueueUtils.removePriorityQueueObject(queueName, data)) { + // 若移除操作成功,使用日志记录工具记录移除成功的信息 + // 信息中包含队列名称以及被移除的数据对象 + log.info("通道: {} , 删除数据: {}", queueName, data); + } else { + // 若移除操作失败,调用 R 类的 fail 方法,将 "操作失败" 信息封装成统一响应结果类 R 的对象并返回 + return R.fail("操作失败"); + } + // 若移除操作成功,调用 R 类的 ok 方法,将 "操作成功" 信息封装成统一响应结果类 R 的对象并返回 + return R.ok("操作成功"); + } + + /** + * 获取队列数据 + * + * @param queueName 队列名 + */ + @GetMapping("/get") + // 定义一个公共方法 get,返回类型为 R。R 通常是自定义的统一响应结果类, +// Void 表示该方法不返回具体的数据内容,主要用于返回操作结果信息 + public R get(String queueName) { + // 声明一个 PriorityDemo 类型的变量 data,用于存储从优先队列中获取的数据 + PriorityDemo data; + // 使用 do-while 循环,先执行一次循环体,再判断条件是否满足 + do { + // 调用 QueueUtils 工具类的 getPriorityQueueObject 方法,从指定名称的优先队列中获取数据 + // 并将获取到的数据赋值给 data 变量 + data = QueueUtils.getPriorityQueueObject(queueName); + // 使用日志记录工具(如 SLF4J)记录从队列中获取数据的信息 + // 信息包含队列名称和获取到的数据 + log.info("通道: {} , 获取数据: {}", queueName, data); + // 当获取到的数据不为 null 时,继续循环,直到队列为空,获取到的数据为 null 时停止循环 + } while (data != null); + // 调用 R 类的 ok 方法,将 "操作成功" 信息封装成统一响应结果类 R 的对象并返回 + return R.ok("操作成功"); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java new file mode 100644 index 0000000..e477531 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java @@ -0,0 +1,66 @@ +package org.dromara.demo.domain; + +import com.baomidou.mybatisplus.annotation.*; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 测试单表对象 test_demo + * + * @author Lion Li + * @date 2021-07-26 + */ +// @Data 是 Lombok 提供的注解,它会自动为类生成 getter、setter、toString、equals、hashCode 等方法, +// 减少了样板代码,提高了代码的简洁性。 +@Data +// @EqualsAndHashCode(callSuper = true) 同样是 Lombok 注解,用于生成 equals 和 hashCode 方法。 +// callSuper = true 表示生成的 equals 和 hashCode 方法会调用父类的对应方法, +// 确保在比较对象时会考虑父类的属性。 +@EqualsAndHashCode(callSuper = true) +// @TableName("test_demo") 是 MyBatis-Plus 提供的注解,用于指定该实体类对应的数据库表名, +// 这里表明该类对应数据库中的 test_demo 表。 +@TableName("test_demo") +// 定义一个公共类 TestDemo,继承自 TenantEntity 类,通常 TenantEntity 类会包含一些与租户相关的公共属性和方法。 +public class TestDemo extends TenantEntity { + // @Serial 是 Java 17 引入的注解,用于显式指定序列化版本号。 + // serialVersionUID 是一个静态常量,用于在反序列化时验证序列化数据的版本一致性, + // 确保反序列化的对象版本与序列化时的对象版本一致。 + @Serial + private static final long serialVersionUID = 1L; + // @TableId(value = "id") 是 MyBatis-Plus 注解,用于指定该属性为数据库表的主键。 + // value = "id" 表示主键字段在数据库表中的名称为 id。 + @TableId(value = "id") + // 定义一个 Long 类型的私有属性 id,作为该实体类的主键。 + private Long id; + // 定义一个 Long 类型的私有属性 deptId,用于存储部门 ID 信息, + // 未添加特殊注解,默认对应数据库表中同名的字段。 + private Long deptId; + // 定义一个 Long 类型的私有属性 userId,用于存储用户 ID 信息, + // 未添加特殊注解,默认对应数据库表中同名的字段。 + private Long userId; + // @OrderBy(asc = false, sort = 1) 是自定义注解(假设是自定义的), + // asc = false 表示降序排序,sort = 1 可能表示排序的优先级为 1, + // 用于在查询时对该字段进行排序。 + @OrderBy(asc = false, sort = 1) + // 定义一个 Integer 类型的私有属性 orderNum,用于存储排序号信息。 + private Integer orderNum; + // 定义一个 String 类型的私有属性 testKey,用于存储测试的 key 信息, + // 未添加特殊注解,默认对应数据库表中同名的字段。 + private String testKey; + // 定义一个 String 类型的私有属性 value,用于存储值信息, + // 未添加特殊注解,默认对应数据库表中同名的字段。 + private String value; + // @Version 是 MyBatis-Plus 注解,用于实现乐观锁机制。 + // 当对数据库记录进行更新操作时,会比较版本号,若版本号不一致则更新失败。 + @Version + // 定义一个 Long 类型的私有属性 version,作为乐观锁的版本号。 + private Long version; + // @TableLogic 是 MyBatis-Plus 注解,用于实现逻辑删除功能。 + // 逻辑删除不会真正从数据库中删除记录,而是通过修改该字段的值来标记记录已删除。 + @TableLogic + // 定义一个 Long 类型的私有属性 delFlag,作为逻辑删除的标记字段。 + private Long delFlag; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemoEncrypt.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemoEncrypt.java new file mode 100644 index 0000000..c3667ff --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemoEncrypt.java @@ -0,0 +1,20 @@ +package org.dromara.demo.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.encrypt.annotation.EncryptField; +import org.dromara.common.encrypt.enumd.AlgorithmType; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("test_demo") +public class TestDemoEncrypt extends TestDemo { + // @EncryptField(algorithm=AlgorithmType.SM2, privateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgZSlOvw8FBiH+aFJWLYZP/VRjg9wjfRarTkGBZd/T3N+gCgYIKoEcz1UBgi2hRANCAAR5DGuQwJqkxnbCsP+iPSDoHWIF4RwcR5EsSvT8QPxO1wRkR2IhCkzvRb32x2CUgJFdvoqVqfApFDPZzShqzBwX", publicKey = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEeQxrkMCapMZ2wrD/oj0g6B1iBeEcHEeRLEr0/ED8TtcEZEdiIQpM70W99sdglICRXb6KlanwKRQz2c0oaswcFw==") + @EncryptField(algorithm = AlgorithmType.RSA, privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANBBEeueWlXlkkj2+WY5l+IWe42d8b5K28g+G/CFKC/yYAEHtqGlCsBOrb+YBkG9mPzmuYA/n9k0NFIc8E8yY5vZQaroyFBrTTWEzG9RY2f7Y3svVyybs6jpXSUs4xff8abo7wL1Y/wUaeatTViamxYnyTvdTmLm3d+JjRij68rxAgMBAAECgYAB0TnhXraSopwIVRfmboea1b0upl+BUdTJcmci412UjrKr5aE695ZLPkXbFXijVu7HJlyyv94NVUdaMACV7Ku/S2RuNB70M7YJm8rAjHFC3/i2ZeIM60h1Ziy4QKv0XM3pRATlDCDNhC1WUrtQCQSgU8kcp6eUUppruOqDzcY04QJBAPm9+sBP9CwDRgy3e5+V8aZtJkwDstb0lVVV/KY890cydVxiCwvX3fqVnxKMlb+x0YtH0sb9v+71xvK2lGobaRECQQDVePU6r/cCEfpc+nkWF6osAH1f8Mux3rYv2DoBGvaPzV2BGfsLed4neRfCwWNCKvGPCdW+L0xMJg8+RwaoBUPhAkAT5kViqXxFPYWJYd1h2+rDXhMdH3ZSlm6HvDBDdrwlWinr0Iwcx3iSjPV93uHXwm118aUj4fg3LDJMCKxOwBxhAkByrQXfvwOMYygBprRBf/j0plazoWFrbd6lGR0f1uI5IfNnFRPdeFw1DEINZ2Hw+6zEUF44SqRMC+4IYJNc02dBAkBCgy7RvfyV/A7N6kKXxTHauY0v6XwSSvpeKtRJkbIcRWOdIYvaHO9L7cklj3vIEdwjSUp9K4VTBYYlmAz1xh03", publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQQRHrnlpV5ZJI9vlmOZfiFnuNnfG+StvIPhvwhSgv8mABB7ahpQrATq2/mAZBvZj85rmAP5/ZNDRSHPBPMmOb2UGq6MhQa001hMxvUWNn+2N7L1csm7Oo6V0lLOMX3/Gm6O8C9WP8FGnmrU1YmpsWJ8k73U5i5t3fiY0Yo+vK8QIDAQAB") + private String testKey; + // @EncryptField // 什么也不写走默认yml配置 + // @EncryptField(algorithm = AlgorithmType.SM4, password = "10rfylhtccpuyke5") + @EncryptField(algorithm = AlgorithmType.AES, password = "10rfylhtccpuyke5") + private String value; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java new file mode 100644 index 0000000..45b3934 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java @@ -0,0 +1,65 @@ +package org.dromara.demo.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.Version; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 测试树表对象 test_tree + * + * @author Lion Li + * @date 2021-07-26 + */ +// @Data 是 Lombok 提供的注解,它会自动为类生成 getter、setter、toString、equals、hashCode 等方法, +// 减少了手动编写这些方法的工作量,提高了代码的简洁性。 +@Data +// @EqualsAndHashCode(callSuper = true) 同样是 Lombok 注解,用于生成 equals 和 hashCode 方法。 +// callSuper = true 表示生成的 equals 和 hashCode 方法会调用父类的对应方法, +// 确保在比较对象时会考虑父类的属性。 +@EqualsAndHashCode(callSuper = true) +// @TableName("test_tree") 是 MyBatis-Plus 框架提供的注解, +// 用于指定当前实体类对应的数据库表名,这里表明该类对应数据库中的 test_tree 表。 +@TableName("test_tree") +// 定义一个公共类 TestTree,继承自 TenantEntity 类。 +// 通常 TenantEntity 类会包含一些与租户相关的通用属性和方法,继承它可以复用这些内容。 +public class TestTree extends TenantEntity { + // @Serial 是 Java 17 引入的注解,用于显式指定序列化版本号。 + // serialVersionUID 是一个静态常量,用于在反序列化时验证序列化数据的版本一致性, + // 确保反序列化的对象版本与序列化时的对象版本一致。 + @Serial + private static final long serialVersionUID = 1L; + // @TableId(value = "id") 是 MyBatis-Plus 注解,用于指定该属性为数据库表的主键。 + // value = "id" 表示主键字段在数据库表中的名称是 id。 + @TableId(value = "id") + // 定义一个 Long 类型的私有属性 id,作为该实体类的主键,用于唯一标识一条记录。 + private Long id; + // 定义一个 Long 类型的私有属性 parentId,用于存储该树节点的父节点 ID。 + // 没有添加特殊注解,默认该属性对应数据库表中同名的字段。 + private Long parentId; + // 定义一个 Long 类型的私有属性 deptId,用于存储部门 ID 信息。 + // 未添加特殊注解,默认对应数据库表中同名的字段。 + private Long deptId; + // 定义一个 Long 类型的私有属性 userId,用于存储用户 ID 信息。 + // 未添加特殊注解,默认对应数据库表中同名的字段。 + private Long userId; + // 定义一个 String 类型的私有属性 treeName,用于存储树节点的名称。 + // 未添加特殊注解,默认对应数据库表中同名的字段。 + private String treeName; + // @Version 是 MyBatis-Plus 注解,用于实现乐观锁机制。 + // 当对数据库记录进行更新操作时,会比较版本号,若版本号不一致则更新失败, + // 以此保证数据的一致性。 + @Version + // 定义一个 Long 类型的私有属性 version,作为乐观锁的版本号。 + private Long version; + // @TableLogic 是 MyBatis-Plus 注解,用于实现逻辑删除功能。 + // 逻辑删除不会真正从数据库中删除记录,而是通过修改该字段的值来标记记录已删除。 + @TableLogic + // 定义一个 Long 类型的私有属性 delFlag,作为逻辑删除的标记字段。 + private Long delFlag; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java new file mode 100644 index 0000000..53ba9e2 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java @@ -0,0 +1,73 @@ +package org.dromara.demo.domain.bo; + +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.demo.domain.TestDemo; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +/** + * 测试单表业务对象 test_demo + * + * @author Lion Li + * @date 2021-07-26 + */ + +// @Data 是 Lombok 提供的注解,它会自动为类生成 getter、setter、toString、equals、hashCode 等方法, +// 减少了手动编写这些方法的工作量,提高了代码的简洁性。 +@Data +// @EqualsAndHashCode(callSuper = true) 也是 Lombok 注解,用于生成 equals 和 hashCode 方法。 +// callSuper = true 表示在生成的 equals 和 hashCode 方法中会调用父类的相应方法, +// 确保子类对象比较时会考虑父类的属性。 +@EqualsAndHashCode(callSuper = true) +// @AutoMapper 是自定义的注解,用于自动生成映射代码。 +// target = TestDemo.class 表示该类可以自动映射到 TestDemo 类, +// reverseConvertGenerate = false 表示不生成反向转换的代码,即从 TestDemo 到当前类的转换代码不会自动生成。 +@AutoMapper(target = TestDemo.class, reverseConvertGenerate = false) +// 定义一个公共类 TestDemoBo,它继承自 BaseEntity 类。 +// 通常 BaseEntity 类会包含一些通用的实体属性和方法,继承它可以复用这些内容。 +// Bo 一般代表 Business Object,即业务对象,用于封装业务逻辑中的数据。 +public class TestDemoBo extends BaseEntity { + // @NotNull 是校验注解,用于确保属性值不为 null。 + // message = "主键不能为空" 是校验失败时的提示信息, + // groups = {EditGroup.class} 表示该校验规则只在 EditGroup 分组下生效, + // 通常用于在不同的业务场景下应用不同的校验规则。 + @NotNull(message = "主键不能为空", groups = {EditGroup.class}) + // 定义一个 Long 类型的私有属性 id,用于表示主键。 + private Long id; + // @NotNull 注解,确保 deptId 属性值不为 null。 + // message = "部门id不能为空" 是校验失败时的提示信息, + // groups = {AddGroup.class, EditGroup.class} 表示该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotNull(message = "部门id不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 Long 类型的私有属性 deptId,用于表示部门 ID。 + private Long deptId; + // @NotNull 注解,确保 userId 属性值不为 null。 + // message = "用户id不能为空" 是校验失败时的提示信息, + // groups = {AddGroup.class, EditGroup.class} 表示该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotNull(message = "用户id不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 Long 类型的私有属性 userId,用于表示用户 ID。 + private Long userId; + // @NotNull 注解,确保 orderNum 属性值不为 null。 + // message = "排序号不能为空" 是校验失败时的提示信息, + // groups = {AddGroup.class, EditGroup.class} 表示该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotNull(message = "排序号不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 Integer 类型的私有属性 orderNum,用于表示排序号。 + private Integer orderNum; + // @NotBlank 注解,用于校验字符串类型的属性,确保该属性不为空字符串且不为 null。 + // message = "key键不能为空" 是校验失败时的提示信息, + // groups = {AddGroup.class, EditGroup.class} 表示该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotBlank(message = "key键不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 String 类型的私有属性 testKey,用于表示 key 键。 + private String testKey; + // @NotBlank 注解,确保 value 属性不为空字符串且不为 null。 + // message = "值不能为空" 是校验失败时的提示信息, + // groups = {AddGroup.class, EditGroup.class} 表示该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotBlank(message = "值不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 String 类型的私有属性 value,用于表示值。 + private String value; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java new file mode 100644 index 0000000..928f566 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java @@ -0,0 +1,56 @@ +package org.dromara.demo.domain.bo; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +/** + * 测试单表业务对象 test_demo + * + * @author Lion Li + * @date 2021-07-26 + */ +@Data +// 定义一个公共类 TestDemoImportVo,Vo 通常代表 View Object,即视图对象, +// 这里用于封装从 Excel 导入的数据,以便在程序中进行处理。 +public class TestDemoImportVo { + // @NotNull 是一个校验注解,用于确保该属性的值不为 null。 + // message = "部门id不能为空" 是校验失败时给出的提示信息。 + @NotNull(message = "部门id不能为空") + // @ExcelProperty 是 EasyExcel 框架提供的注解,用于指定该属性与 Excel 表格中列的对应关系。 + // value = "部门id" 表示该属性对应 Excel 表格中列名为 "部门id" 的列。 + @ExcelProperty(value = "部门id") + // 定义一个 Long 类型的私有属性 deptId,用于存储从 Excel 中导入的部门 ID 信息。 + private Long deptId; + + // @NotNull 注解,确保该属性的值不为 null,校验失败时提示 "用户id不能为空"。 + @NotNull(message = "用户id不能为空") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "用户id" 的列。 + @ExcelProperty(value = "用户id") + // 定义一个 Long 类型的私有属性 userId,用于存储从 Excel 中导入的用户 ID 信息。 + private Long userId; + + // @NotNull 注解,确保该属性的值不为 null,校验失败时提示 "排序号不能为空"。 + @NotNull(message = "排序号不能为空") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "排序号" 的列。 + @ExcelProperty(value = "排序号") + // 定义一个 Long 类型的私有属性 orderNum,用于存储从 Excel 中导入的排序号信息。 + private Long orderNum; + + // @NotBlank 是用于校验字符串类型属性的注解,确保该属性不为空字符串且不为 null。 + // 校验失败时提示 "key键不能为空"。 + @NotBlank(message = "key键不能为空") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "key键" 的列。 + @ExcelProperty(value = "key键") + // 定义一个 String 类型的私有属性 testKey,用于存储从 Excel 中导入的 key 键信息。 + private String testKey; + + // @NotBlank 注解,确保该属性不为空字符串且不为 null,校验失败时提示 "值不能为空"。 + @NotBlank(message = "值不能为空") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "值" 的列。 + @ExcelProperty(value = "值") + // 定义一个 String 类型的私有属性 value,用于存储从 Excel 中导入的值信息。 + private String value; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java new file mode 100644 index 0000000..11bf038 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java @@ -0,0 +1,61 @@ +package org.dromara.demo.domain.bo; + +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.demo.domain.TestTree; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 测试树表业务对象 test_tree + * + * @author Lion Li + * @date 2021-07-26 + */ + +// @Data 是 Lombok 库提供的注解,它会自动为类生成 getter、setter、toString、equals、hashCode 等方法, +// 可以减少样板代码,提高代码的简洁性。 +@Data +// @EqualsAndHashCode(callSuper = true) 同样是 Lombok 注解,用于生成 equals 和 hashCode 方法。 +// callSuper = true 表示生成的 equals 和 hashCode 方法会调用父类的对应方法, +// 确保在比较对象时会考虑父类的属性。 +@EqualsAndHashCode(callSuper = true) +// @AutoMapper 是自定义的注解,用于自动生成对象之间的映射代码。 +// target = TestTree.class 表示该类可以自动映射到 TestTree 类, +// reverseConvertGenerate = false 表示不生成反向转换(从 TestTree 到 TestTreeBo)的代码。 +@AutoMapper(target = TestTree.class, reverseConvertGenerate = false) +// 定义一个公共类 TestTreeBo,继承自 BaseEntity 类。 +// Bo 通常代表 Business Object,即业务对象,用于封装业务逻辑中的数据。 +// 继承 BaseEntity 可以复用一些公共的实体属性和方法。 +public class TestTreeBo extends BaseEntity { + // @NotNull 是 Bean Validation 规范中的注解,用于校验属性值不能为 null。 + // message = "主键不能为空" 是校验失败时显示的错误信息。 + // groups = {EditGroup.class} 表示该校验规则只在 EditGroup 分组下生效, + // 通常用于在不同业务场景下应用不同的校验规则。 + @NotNull(message = "主键不能为空", groups = {EditGroup.class}) + // 定义一个 Long 类型的私有属性 id,用于表示该业务对象的主键。 + private Long id; + // 定义一个 Long 类型的私有属性 parentId,用于表示该树节点的父节点 ID。 + // 没有添加校验注解,意味着该属性可以为 null。 + private Long parentId; + // @NotNull 注解,校验属性值不能为 null,校验失败时显示 "部门id不能为空"。 + // groups = {AddGroup.class, EditGroup.class} 表示该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotNull(message = "部门id不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 Long 类型的私有属性 deptId,用于表示所属部门的 ID。 + private Long deptId; + // @NotNull 注解,校验属性值不能为 null,校验失败时显示 "用户id不能为空"。 + // 该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotNull(message = "用户id不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 Long 类型的私有属性 userId,用于表示关联的用户 ID。 + private Long userId; + // @NotBlank 是 Bean Validation 规范中的注解,用于校验字符串类型的属性, + // 确保属性值不为 null 且不为空字符串(去除首尾空格后长度大于 0)。 + // 校验失败时显示 "树节点名不能为空",该校验规则在 AddGroup 和 EditGroup 分组下都生效。 + @NotBlank(message = "树节点名不能为空", groups = {AddGroup.class, EditGroup.class}) + // 定义一个 String 类型的私有属性 treeName,用于表示树节点的名称。 + private String treeName; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/package-info.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/package-info.java new file mode 100644 index 0000000..cb7d83f --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/package-info.java @@ -0,0 +1 @@ +package org.dromara.demo.domain; diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ExportDemoVo.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ExportDemoVo.java new file mode 100644 index 0000000..dad37d2 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ExportDemoVo.java @@ -0,0 +1,142 @@ +package org.dromara.demo.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.dromara.common.core.enums.UserStatus; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.annotation.ExcelEnumFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.common.excel.convert.ExcelEnumConvert; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 带有下拉选的Excel导出 + * + * @author Emil.Zhang + */ +// @Data 是 Lombok 提供的注解,会自动为类生成 getter、setter、toString、equals、hashCode 等方法, +// 减少了手动编写这些方法的工作量,提高代码的简洁性。 +@Data +// @ExcelIgnoreUnannotated 是 EasyExcel 框架的注解, +// 表示忽略类中未被 @ExcelProperty 注解标注的属性,即这些属性不会参与 Excel 的读写操作。 +@ExcelIgnoreUnannotated +// @AllArgsConstructor 是 Lombok 注解,会自动生成一个包含所有已声明字段的构造函数。 +@AllArgsConstructor +// @NoArgsConstructor 是 Lombok 注解,会自动生成一个无参构造函数。 +@NoArgsConstructor +// 定义一个公共类 ExportDemoVo,实现了 Serializable 接口, +// 表明该类的对象可以被序列化,即可以在网络传输或保存到文件中。 +public class ExportDemoVo implements Serializable { + // @Serial 是 Java 17 引入的注解,用于显式指定序列化版本号。 + // serialVersionUID 是一个静态常量,用于在反序列化时验证序列化数据的版本一致性, + // 确保反序列化的对象版本与序列化时的对象版本一致。 + @Serial + private static final long serialVersionUID = 1L; + + // @ExcelProperty 是 EasyExcel 框架的注解,用于指定该属性与 Excel 表格中列的对应关系。 + // value = "用户名" 表示该属性对应 Excel 表格中列名为 "用户名" 的列, + // index = 0 表示该列在 Excel 中的索引位置为 0(从 0 开始计数)。 + @ExcelProperty(value = "用户名", index = 0) + // @NotEmpty 是 Bean Validation 规范中的注解,用于校验字符串类型的属性, + // 确保该属性不为 null 且不为空字符串(去除首尾空格后长度大于 0)。 + // message = "用户名不能为空" 是校验失败时的提示信息, + // groups = AddGroup.class 表示该校验规则只在 AddGroup 分组下生效。 + @NotEmpty(message = "用户名不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 nickName,用于存储用户名信息。 + private String nickName; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "用户类型" 的列,索引位置为 1。 + // converter = ExcelEnumConvert.class 表示使用 ExcelEnumConvert 类进行数据转换, + // 通常用于将枚举类型的数据转换为 Excel 中合适的显示格式。 + @ExcelProperty(value = "用户类型", index = 1, converter = ExcelEnumConvert.class) + // @ExcelEnumFormat 是自定义注解,用于指定枚举类型的格式化规则。 + // enumClass = UserStatus.class 表示该属性对应的枚举类为 UserStatus, + // textField = "info" 表示使用枚举类中的 info 字段作为显示文本。 + @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info") + // @NotEmpty 注解,校验该属性不为空,校验失败时提示 "用户类型不能为空", + // 该校验规则在 AddGroup 分组下生效。 + @NotEmpty(message = "用户类型不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 userStatus,用于存储用户类型信息。 + private String userStatus; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "性别" 的列,索引位置为 2。 + // converter = ExcelDictConvert.class 表示使用 ExcelDictConvert 类进行数据转换, + // 通常用于将字典类型的数据转换为 Excel 中合适的显示格式。 + @ExcelProperty(value = "性别", index = 2, converter = ExcelDictConvert.class) + // @ExcelDictFormat 是自定义注解,用于指定字典类型的格式化规则。 + // dictType = "sys_user_sex" 表示该属性对应的字典类型为 "sys_user_sex"。 + @ExcelDictFormat(dictType = "sys_user_sex") + // @NotEmpty 注解,校验该属性不为空,校验失败时提示 "性别不能为空", + // 该校验规则在 AddGroup 分组下生效。 + @NotEmpty(message = "性别不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 gender,用于存储性别信息。 + private String gender; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "手机号" 的列,索引位置为 3。 + @ExcelProperty(value = "手机号", index = 3) + // @NotEmpty 注解,校验该属性不为空,校验失败时提示 "手机号不能为空", + // 该校验规则在 AddGroup 分组下生效。 + @NotEmpty(message = "手机号不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 phoneNumber,用于存储手机号信息。 + private String phoneNumber; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "Email" 的列,索引位置为 4。 + @ExcelProperty(value = "Email", index = 4) + // @NotEmpty 注解,校验该属性不为空,校验失败时提示 "Email不能为空", + // 该校验规则在 AddGroup 分组下生效。 + @NotEmpty(message = "Email不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 email,用于存储 Email 信息。 + private String email; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "省" 的列,索引位置为 5。 + @ExcelProperty(value = "省", index = 5) + // @NotNull 是 Bean Validation 规范中的注解,用于校验属性值不能为 null。 + // message = "省不能为空" 是校验失败时的提示信息, + // groups = AddGroup.class 表示该校验规则在 AddGroup 分组下生效。 + @NotNull(message = "省不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 province,用于存储省份信息。 + private String province; + + // @NotNull 注解,校验该属性值不能为 null,校验失败时提示 "请勿手动输入", + // 该校验规则在 EditGroup 分组下生效。 + @NotNull(message = "请勿手动输入", groups = EditGroup.class) + // 定义一个 Integer 类型的私有属性 provinceId,用于存储省份的 ID 信息。 + private Integer provinceId; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "市" 的列,索引位置为 6。 + @ExcelProperty(value = "市", index = 6) + // @NotNull 注解,校验该属性值不能为 null,校验失败时提示 "市不能为空", + // 该校验规则在 AddGroup 分组下生效。 + @NotNull(message = "市不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 city,用于存储城市信息。 + private String city; + + // @NotNull 注解,校验该属性值不能为 null,校验失败时提示 "请勿手动输入", + // 该校验规则在 EditGroup 分组下生效。 + @NotNull(message = "请勿手动输入", groups = EditGroup.class) + // 定义一个 Integer 类型的私有属性 cityId,用于存储城市的 ID 信息。 + private Integer cityId; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "县" 的列,索引位置为 7。 + @ExcelProperty(value = "县", index = 7) + // @NotNull 注解,校验该属性值不能为 null,校验失败时提示 "县不能为空", + // 该校验规则在 AddGroup 分组下生效。 + @NotNull(message = "县不能为空", groups = AddGroup.class) + // 定义一个 String 类型的私有属性 area,用于存储县的信息。 + private String area; + + // @NotNull 注解,校验该属性值不能为 null,校验失败时提示 "请勿手动输入", + // 该校验规则在 EditGroup 分组下生效。 + @NotNull(message = "请勿手动输入", groups = EditGroup.class) + // 定义一个 Integer 类型的私有属性 areaId,用于存储县的 ID 信息。 + private Integer areaId; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java new file mode 100644 index 0000000..72c00f7 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java @@ -0,0 +1,120 @@ +package org.dromara.demo.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelNotation; +import org.dromara.common.excel.annotation.ExcelRequired; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.demo.domain.TestDemo; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 测试单表视图对象 test_demo + * + * @author Lion Li + * @date 2021-07-26 + */ +// @Data 是 Lombok 提供的注解,它会自动为类生成 getter、setter、toString、equals、hashCode 等方法, +// 能减少样板代码,提高代码的简洁性。 +@Data +// @ExcelIgnoreUnannotated 是 EasyExcel 框架的注解, +// 其作用是忽略类中未被 @ExcelProperty 注解标注的属性,这些属性不会参与 Excel 的读写操作。 +@ExcelIgnoreUnannotated +// @AutoMapper 是自定义的注解,用于自动生成对象之间的映射代码。 +// target = TestDemo.class 表示该类可以自动映射到 TestDemo 类。 +@AutoMapper(target = TestDemo.class) +// 定义一个公共类 TestDemoVo,实现了 Serializable 接口, +// 这意味着该类的对象可以被序列化,可用于网络传输或保存到文件中。 +public class TestDemoVo implements Serializable { + // @Serial 是 Java 17 引入的注解,用于显式指定序列化版本号。 + // serialVersionUID 是一个静态常量,用于在反序列化时验证序列化数据的版本一致性, + // 确保反序列化的对象版本与序列化时的对象版本一致。 + @Serial + private static final long serialVersionUID = 1L; + + // @ExcelProperty 是 EasyExcel 框架的注解,用于指定该属性与 Excel 表格中列的对应关系。 + // value = "主键" 表示该属性对应 Excel 表格中列名为 "主键" 的列。 + @ExcelProperty(value = "主键") + // 定义一个 Long 类型的私有属性 id,用于存储主键信息。 + private Long id; + + // @ExcelRequired 是自定义注解,用于标记该属性在 Excel 导入时是必需的。 + @ExcelRequired + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "部门id" 的列。 + @ExcelProperty(value = "部门id") + // 定义一个 Long 类型的私有属性 deptId,用于存储部门 ID 信息。 + private Long deptId; + + // @ExcelRequired 注解,表明该属性在 Excel 导入时是必需的。 + @ExcelRequired + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "用户id" 的列。 + @ExcelProperty(value = "用户id") + // 定义一个 Long 类型的私有属性 userId,用于存储用户 ID 信息。 + private Long userId; + + // @ExcelRequired 注解,标记该属性在 Excel 导入时是必需的。 + @ExcelRequired + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "排序号" 的列。 + @ExcelProperty(value = "排序号") + // 定义一个 Integer 类型的私有属性 orderNum,用于存储排序号信息。 + private Integer orderNum; + + // @ExcelNotation 是自定义注解,value = "测试key" 可能用于添加额外的注释或说明。 + @ExcelNotation(value = "测试key") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "key键" 的列。 + @ExcelProperty(value = "key键") + // 定义一个 String 类型的私有属性 testKey,用于存储 key 键信息。 + private String testKey; + + // @ExcelNotation 注解,value = "测试value" 可能用于添加额外的注释或说明。 + @ExcelNotation(value = "测试value") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "值" 的列。 + @ExcelProperty(value = "值") + // 定义一个 String 类型的私有属性 value,用于存储值信息。 + private String value; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "创建时间" 的列。 + @ExcelProperty(value = "创建时间") + // 定义一个 Date 类型的私有属性 createTime,用于存储创建时间信息。 + private Date createTime; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "创建人" 的列。 + @ExcelProperty(value = "创建人") + // 定义一个 Long 类型的私有属性 createBy,用于存储创建人的 ID 信息。 + private Long createBy; + + // @Translation 是自定义注解,用于数据翻译。 + // type = TransConstant.USER_ID_TO_NAME 表示翻译类型是将用户 ID 转换为用户名, + // mapper = "createBy" 表示根据 createBy 属性的值进行翻译。 + @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "创建人账号" 的列。 + @ExcelProperty(value = "创建人账号") + // 定义一个 String 类型的私有属性 createByName,用于存储创建人的账号信息。 + private String createByName; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "更新时间" 的列。 + @ExcelProperty(value = "更新时间") + // 定义一个 Date 类型的私有属性 updateTime,用于存储更新时间信息。 + private Date updateTime; + + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "更新人" 的列。 + @ExcelProperty(value = "更新人") + // 定义一个 Long 类型的私有属性 updateBy,用于存储更新人的 ID 信息。 + private Long updateBy; + + // @Translation 注解,用于数据翻译。 + // type = TransConstant.USER_ID_TO_NAME 表示翻译类型是将用户 ID 转换为用户名, + // mapper = "updateBy" 表示根据 updateBy 属性的值进行翻译。 + @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "updateBy") + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "更新人账号" 的列。 + @ExcelProperty(value = "更新人账号") + // 定义一个 String 类型的私有属性 updateByName,用于存储更新人的账号信息。 + private String updateByName; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java b/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java new file mode 100644 index 0000000..417735d --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java @@ -0,0 +1,61 @@ +package org.dromara.demo.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.demo.domain.TestTree; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 测试树表视图对象 test_tree + * + * @author Lion Li + * @date 2021-07-26 + */ +// @Data 是 Lombok 库提供的注解,它会自动为类生成 getter、setter、toString、equals、hashCode 等方法, +// 减少了样板代码,提高了代码的简洁性。 +@Data +// @ExcelIgnoreUnannotated 是 EasyExcel 框架中的注解, +// 它的作用是在进行 Excel 读写操作时,忽略类中没有被 @ExcelProperty 注解标注的属性。 +@ExcelIgnoreUnannotated +// @AutoMapper 是自定义的注解,用于自动生成对象映射代码。 +// target = TestTree.class 表明该类可以自动映射到 TestTree 类,方便对象之间的数据转换。 +@AutoMapper(target = TestTree.class) +// 定义一个公共类 TestTreeVo,实现了 Serializable 接口, +// 这意味着该类的对象可以被序列化,能在网络传输或者文件存储中使用。 +public class TestTreeVo implements Serializable { + // @Serial 是 Java 17 引入的注解,用于显式指定序列化版本号。 + // serialVersionUID 是一个静态常量,在反序列化时用于验证序列化数据的版本一致性, + // 保证反序列化的对象版本和序列化时的对象版本一致。 + @Serial + private static final long serialVersionUID = 1L; + // 定义一个 Long 类型的私有属性 id,通常用于作为对象的唯一标识,这里未添加 @ExcelProperty 注解, + // 根据 @ExcelIgnoreUnannotated 注解,该属性不会参与 Excel 的读写操作。 + private Long id; + // @ExcelProperty 是 EasyExcel 框架的注解,用于指定属性和 Excel 表格列的对应关系。 + // value = "父id" 表示该属性对应 Excel 表格中列名为 "父id" 的列。 + @ExcelProperty(value = "父id") + // 定义一个 Long 类型的私有属性 parentId,用于存储树节点的父节点 ID。 + private Long parentId; + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "部门id" 的列。 + @ExcelProperty(value = "部门id") + // 定义一个 Long 类型的私有属性 deptId,用于存储部门的 ID。 + private Long deptId; + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "用户id" 的列。 + @ExcelProperty(value = "用户id") + // 定义一个 Long 类型的私有属性 userId,用于存储用户的 ID。 + private Long userId; + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "树节点名" 的列。 + @ExcelProperty(value = "树节点名") + // 定义一个 String 类型的私有属性 treeName,用于存储树节点的名称。 + private String treeName; + // @ExcelProperty 注解,指定该属性对应 Excel 表格中列名为 "创建时间" 的列。 + @ExcelProperty(value = "创建时间") + // 定义一个 Date 类型的私有属性 createTime,用于存储树节点的创建时间。 + private Date createTime; +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/listener/ExportDemoListener.java b/ruoyi-demo/src/main/java/org/dromara/demo/listener/ExportDemoListener.java new file mode 100644 index 0000000..b2cd98a --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/listener/ExportDemoListener.java @@ -0,0 +1,99 @@ +package org.dromara.demo.listener; + +import cn.hutool.core.util.NumberUtil; +import com.alibaba.excel.context.AnalysisContext; +import org.dromara.common.core.utils.ValidatorUtils; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.core.DefaultExcelListener; +import org.dromara.common.excel.core.DropDownOptions; +import org.dromara.demo.domain.vo.ExportDemoVo; + +import java.util.List; + +/** + * Excel带下拉框的解析处理器 + * + * @author Emil.Zhang + */ +// 定义一个公共类 ExportDemoListener,它继承自 DefaultExcelListener 类,并且指定泛型为 ExportDemoVo。 +// DefaultExcelListener 通常是 EasyExcel 框架提供的用于处理 Excel 数据读取的监听器基类, +// 这里表示该监听器用于处理 ExportDemoVo 类型的数据。 +public class ExportDemoListener extends DefaultExcelListener { + // 定义类的构造函数,在创建 ExportDemoListener 对象时会调用此构造函数。 + public ExportDemoListener() { + // 调用父类 DefaultExcelListener 的构造函数,并传入 true 作为参数。 + // 这里的 true 可能表示某种初始化配置,比如是否开启某些特定的处理逻辑等。 + super(true); + } + + // 重写父类的 invoke 方法,该方法会在 EasyExcel 读取到每一行数据时被调用。 + // data 参数表示当前读取到的一行数据,其类型为 ExportDemoVo。 + // context 参数是 AnalysisContext 类型,它包含了 Excel 解析过程中的上下文信息。 + @Override + public void invoke(ExportDemoVo data, AnalysisContext context) { + // 调用 ValidatorUtils 工具类的 validate 方法,对当前读取到的数据 data 进行校验。 + // AddGroup.class 表示使用 AddGroup 分组的校验规则,确保数据符合添加操作的要求。 + ValidatorUtils.validate(data, AddGroup.class); + + // 从当前读取到的数据 data 中获取省份信息,并将其赋值给 province 变量。 + String province = data.getProvince(); + // 从当前读取到的数据 data 中获取城市信息,并将其赋值给 city 变量。 + String city = data.getCity(); + // 从当前读取到的数据 data 中获取县区信息,并将其赋值给 area 变量。 + String area = data.getArea(); + + // 调用 DropDownOptions 工具类的 analyzeOptionValue 方法,对省份信息进行解析, + // 得到一个包含解析结果的列表,并将其赋值给 thisRowSelectedProvinceOption 变量。 + List thisRowSelectedProvinceOption = DropDownOptions.analyzeOptionValue(province); + // 判断解析省份信息得到的列表的长度是否为 2。 + if (thisRowSelectedProvinceOption.size() == 2) { + // 如果列表长度为 2,从列表中获取第二个元素(索引为 1),即省份 ID 的字符串表示, + // 并将其赋值给 provinceIdStr 变量。 + String provinceIdStr = thisRowSelectedProvinceOption.get(1); + // 调用 NumberUtil 工具类的 isNumber 方法,判断省份 ID 的字符串表示是否为有效的数字。 + if (NumberUtil.isNumber(provinceIdStr)) { + // 如果是有效的数字,将其转换为 Integer 类型,并设置到当前读取到的数据 data 的 provinceId 属性中。 + data.setProvinceId(Integer.parseInt(provinceIdStr)); + } + } + + // 调用 DropDownOptions 工具类的 analyzeOptionValue 方法,对城市信息进行解析, + // 得到一个包含解析结果的列表,并将其赋值给 thisRowSelectedCityOption 变量。 + List thisRowSelectedCityOption = DropDownOptions.analyzeOptionValue(city); + // 判断解析城市信息得到的列表的长度是否为 2。 + if (thisRowSelectedCityOption.size() == 2) { + // 如果列表长度为 2,从列表中获取第二个元素(索引为 1),即城市 ID 的字符串表示, + // 并将其赋值给 cityIdStr 变量。 + String cityIdStr = thisRowSelectedCityOption.get(1); + // 调用 NumberUtil 工具类的 isNumber 方法,判断城市 ID 的字符串表示是否为有效的数字。 + if (NumberUtil.isNumber(cityIdStr)) { + // 如果是有效的数字,将其转换为 Integer 类型,并设置到当前读取到的数据 data 的 cityId 属性中。 + data.setCityId(Integer.parseInt(cityIdStr)); + } + } + + // 调用 DropDownOptions 工具类的 analyzeOptionValue 方法,对县区信息进行解析, + // 得到一个包含解析结果的列表,并将其赋值给 thisRowSelectedAreaOption 变量。 + List thisRowSelectedAreaOption = DropDownOptions.analyzeOptionValue(area); + // 判断解析县区信息得到的列表的长度是否为 2。 + if (thisRowSelectedAreaOption.size() == 2) { + // 如果列表长度为 2,从列表中获取第二个元素(索引为 1),即县区 ID 的字符串表示, + // 并将其赋值给 areaIdStr 变量。 + String areaIdStr = thisRowSelectedAreaOption.get(1); + // 调用 NumberUtil 工具类的 isNumber 方法,判断县区 ID 的字符串表示是否为有效的数字。 + if (NumberUtil.isNumber(areaIdStr)) { + // 如果是有效的数字,将其转换为 Integer 类型,并设置到当前读取到的数据 data 的 areaId 属性中。 + data.setAreaId(Integer.parseInt(areaIdStr)); + } + } + + // 再次调用 ValidatorUtils 工具类的 validate 方法,对当前读取到的数据 data 进行校验。 + // EditGroup.class 表示使用 EditGroup 分组的校验规则,确保数据符合编辑操作的要求。 + ValidatorUtils.validate(data, EditGroup.class); + + // 调用 getExcelResult 方法获取 Excel 解析结果对象,再调用该对象的 getList 方法获取结果列表, + // 最后将当前读取并处理好的数据 data 添加到结果列表中。 + getExcelResult().getList().add(data); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoEncryptMapper.java b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoEncryptMapper.java new file mode 100644 index 0000000..601f97a --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoEncryptMapper.java @@ -0,0 +1,13 @@ +package org.dromara.demo.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.demo.domain.TestDemoEncrypt; + +/** + * 测试加密功能 + * + * @author Lion Li + */ +public interface TestDemoEncryptMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoMapper.java b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoMapper.java new file mode 100644 index 0000000..19b2d52 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoMapper.java @@ -0,0 +1,64 @@ +package org.dromara.demo.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.demo.domain.TestDemo; +import org.dromara.demo.domain.vo.TestDemoVo; + +import java.io.Serializable; +import java.util.Collection; +import java.util.List; + +/** + * 测试单表Mapper接口 + * + * @author Lion Li + * @date 2021-07-26 + */ +public interface TestDemoMapper extends BaseMapperPlus { + + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + Page customPageList(@Param("page") Page page, @Param("ew") Wrapper wrapper); + + @Override + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + default

> P selectVoPage(IPage page, Wrapper wrapper) { + return selectVoPage(page, wrapper, this.currentVoClass()); + } + + @Override + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + default List selectVoList(Wrapper wrapper) { + return selectVoList(wrapper, this.currentVoClass()); + } + + @Override + @DataPermission(value = { + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }, joinStr = "AND") + List selectByIds(@Param(Constants.COLL) Collection idList); + + @Override + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + int updateById(@Param(Constants.ENTITY) TestDemo entity); + +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestTreeMapper.java b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestTreeMapper.java new file mode 100644 index 0000000..e5f4c44 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestTreeMapper.java @@ -0,0 +1,21 @@ +package org.dromara.demo.mapper; + +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.demo.domain.TestTree; +import org.dromara.demo.domain.vo.TestTreeVo; + +/** + * 测试树表Mapper接口 + * + * @author Lion Li + * @date 2021-07-26 + */ +@DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") +}) +public interface TestTreeMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/mapper/package-info.java b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/package-info.java new file mode 100644 index 0000000..ff1c4df --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/mapper/package-info.java @@ -0,0 +1 @@ +package org.dromara.demo.mapper; diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java new file mode 100644 index 0000000..4dfa5ef --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java @@ -0,0 +1,18 @@ +package org.dromara.demo.service; + +import jakarta.servlet.http.HttpServletResponse; + +/** + * 导出下拉框Excel示例 + * + * @author Emil.Zhang + */ +public interface IExportExcelService { + + /** + * 导出下拉框 + * + * @param response / + */ + void exportWithOptions(HttpServletResponse response); +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestDemoService.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestDemoService.java new file mode 100644 index 0000000..bca4192 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestDemoService.java @@ -0,0 +1,71 @@ +package org.dromara.demo.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.demo.domain.TestDemo; +import org.dromara.demo.domain.bo.TestDemoBo; +import org.dromara.demo.domain.vo.TestDemoVo; + +import java.util.Collection; +import java.util.List; + +/** + * 测试单表Service接口 + * + * @author Lion Li + * @date 2021-07-26 + */ +public interface ITestDemoService { + + /** + * 查询单个 + * + * @return + */ + TestDemoVo queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(TestDemoBo bo, PageQuery pageQuery); + + /** + * 自定义分页查询 + */ + TableDataInfo customPageList(TestDemoBo bo, PageQuery pageQuery); + + /** + * 查询列表 + */ + List queryList(TestDemoBo bo); + + /** + * 根据新增业务对象插入测试单表 + * + * @param bo 测试单表新增业务对象 + * @return + */ + Boolean insertByBo(TestDemoBo bo); + + /** + * 根据编辑业务对象修改测试单表 + * + * @param bo 测试单表编辑业务对象 + * @return + */ + Boolean updateByBo(TestDemoBo bo); + + /** + * 校验并删除数据 + * + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 批量保存 + */ + Boolean saveBatch(List list); +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestTreeService.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestTreeService.java new file mode 100644 index 0000000..9155201 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestTreeService.java @@ -0,0 +1,52 @@ +package org.dromara.demo.service; + +import org.dromara.demo.domain.bo.TestTreeBo; +import org.dromara.demo.domain.vo.TestTreeVo; + +import java.util.Collection; +import java.util.List; + +/** + * 测试树表Service接口 + * + * @author Lion Li + * @date 2021-07-26 + */ +public interface ITestTreeService { + /** + * 查询单个 + * + * @return + */ + TestTreeVo queryById(Long id); + + /** + * 查询列表 + */ + List queryList(TestTreeBo bo); + + /** + * 根据新增业务对象插入测试树表 + * + * @param bo 测试树表新增业务对象 + * @return + */ + Boolean insertByBo(TestTreeBo bo); + + /** + * 根据编辑业务对象修改测试树表 + * + * @param bo 测试树表编辑业务对象 + * @return + */ + Boolean updateByBo(TestTreeBo bo); + + /** + * 校验并删除数据 + * + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java new file mode 100644 index 0000000..69cf0a8 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java @@ -0,0 +1,236 @@ +package org.dromara.demo.service.impl; + +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.excel.core.DropDownOptions; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.demo.domain.vo.ExportDemoVo; +import org.dromara.demo.service.IExportExcelService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 导出下拉框Excel示例 + * + * @author Emil.Zhang + */ +@Service +@RequiredArgsConstructor +public class ExportExcelServiceImpl implements IExportExcelService { + + @Override + public void exportWithOptions(HttpServletResponse response) { + // 创建表格数据,业务中一般通过数据库查询 + List excelDataList = new ArrayList<>(); + for (int i = 0; i < 3; i++) { + // 模拟数据库中的一条数据 + ExportDemoVo everyRowData = new ExportDemoVo(); + everyRowData.setNickName("用户-" + i); + everyRowData.setUserStatus(SystemConstants.NORMAL); + everyRowData.setGender("1"); + everyRowData.setPhoneNumber(String.format("175%08d", i)); + everyRowData.setEmail(String.format("175%08d", i) + "@163.com"); + everyRowData.setProvinceId(i); + everyRowData.setCityId(i); + everyRowData.setAreaId(i); + excelDataList.add(everyRowData); + } + + // 通过@ExcelIgnoreUnannotated配合@ExcelProperty合理显示需要的列 + // 并通过@DropDown注解指定下拉值,或者通过创建ExcelOptions来指定下拉框 + // 使用ExcelOptions时建议指定列index,防止出现下拉列解析不对齐 + + // 首先从数据库中查询下拉框内的可选项 + // 这里模拟查询结果 + List provinceList = getProvinceList(), + cityList = getCityList(provinceList), + areaList = getAreaList(cityList); + int provinceIndex = 5, cityIndex = 6, areaIndex = 7; + + DropDownOptions provinceToCity = DropDownOptions.buildLinkedOptions( + provinceList, + provinceIndex, + cityList, + cityIndex, + DemoCityData::getId, + DemoCityData::getPid, + everyOptions -> DropDownOptions.createOptionValue( + everyOptions.getName(), + everyOptions.getId() + ) + ); + + DropDownOptions cityToArea = DropDownOptions.buildLinkedOptions( + cityList, + cityIndex, + areaList, + areaIndex, + DemoCityData::getId, + DemoCityData::getPid, + everyOptions -> DropDownOptions.createOptionValue( + everyOptions.getName(), + everyOptions.getId() + ) + ); + + // 把所有的下拉框存储 + List options = new ArrayList<>(); + options.add(provinceToCity); + options.add(cityToArea); + + // 到此为止所有的下拉框可选项已全部配置完毕 + + // 接下来需要将Excel中的展示数据转换为对应的下拉选 + List outList = StreamUtils.toList(excelDataList, everyRowData -> { + // 只需要处理没有使用@ExcelDictFormat注解的下拉框 + // 一般来说,可以直接在数据库查询即查询出省市县信息,这里通过模拟操作赋值 + everyRowData.setProvince(buildOptions(provinceList, everyRowData.getProvinceId())); + everyRowData.setCity(buildOptions(cityList, everyRowData.getCityId())); + everyRowData.setArea(buildOptions(areaList, everyRowData.getAreaId())); + return everyRowData; + }); + + ExcelUtil.exportExcel(outList, "下拉框示例", ExportDemoVo.class, response, options); + } + + private String buildOptions(List cityDataList, Integer id) { + Map> groupByIdMap = + cityDataList.stream().collect(Collectors.groupingBy(DemoCityData::getId)); + if (groupByIdMap.containsKey(id)) { + DemoCityData demoCityData = groupByIdMap.get(id).get(0); + return DropDownOptions.createOptionValue(demoCityData.getName(), demoCityData.getId()); + } else { + return StrUtil.EMPTY; + } + } + + /** + * 模拟查询数据库操作 + * + * @return / + */ + private List getProvinceList() { + List provinceList = new ArrayList<>(); + + // 实际业务中一般采用数据库读取的形式,这里直接拼接创建 + provinceList.add(new DemoCityData(0, null, "P100000")); + provinceList.add(new DemoCityData(1, null, "P200000")); + provinceList.add(new DemoCityData(2, null, "P300000")); + + return provinceList; + } + + /** + * 模拟查找数据库操作,需要连带查询出省的数据 + * + * @param provinceList 模拟的父省数据 + * @return / + */ + private List getCityList(List provinceList) { + List cityList = new ArrayList<>(); + + // 实际业务中一般采用数据库读取的形式,这里直接拼接创建 + cityList.add(new DemoCityData(0, 0, "C110000")); + cityList.add(new DemoCityData(1, 0, "C120000")); + cityList.add(new DemoCityData(2, 1, "C210000")); + cityList.add(new DemoCityData(3, 1, "C220000")); + cityList.add(new DemoCityData(4, 1, "C230000")); + + selectParentData(provinceList, cityList); + + return cityList; + } + + /** + * 模拟查找数据库操作,需要连带查询出市的数据 + * + * @param cityList 模拟的父市数据 + * @return / + */ + private List getAreaList(List cityList) { + List areaList = new ArrayList<>(); + + int minCount = 500; + int maxCount = 10000; + + // 实际业务中一般采用数据库读取的形式,这里直接拼接创建 + for (int i = 0; i < RandomUtil.randomInt(minCount, maxCount); i++) { + areaList.add(new DemoCityData(areaList.size(), 0, String.format("A11%04d", i))); + } + + for (int i = 0; i < RandomUtil.randomInt(minCount, maxCount); i++) { + areaList.add(new DemoCityData(areaList.size(), 1, String.format("A12%04d", i))); + } + + for (int i = 0; i < RandomUtil.randomInt(minCount, maxCount); i++) { + areaList.add(new DemoCityData(areaList.size(), 2, String.format("A21%04d", i))); + } + + for (int i = 0; i < RandomUtil.randomInt(minCount, maxCount); i++) { + areaList.add(new DemoCityData(areaList.size(), 3, String.format("A22%04d", i))); + } + + for (int i = 0; i < RandomUtil.randomInt(minCount, maxCount); i++) { + areaList.add(new DemoCityData(areaList.size(), 4, String.format("A23%04d", i))); + } + + selectParentData(cityList, areaList); + + return areaList; + } + + /** + * 模拟数据库的查询父数据操作 + * + * @param parentList / + * @param sonList / + */ + private void selectParentData(List parentList, List sonList) { + Map> parentGroupByIdMap = + parentList.stream().collect(Collectors.groupingBy(DemoCityData::getId)); + + sonList.forEach(everySon -> { + if (parentGroupByIdMap.containsKey(everySon.getPid())) { + everySon.setPData(parentGroupByIdMap.get(everySon.getPid()).get(0)); + } + }); + } + + /** + * 模拟的数据库省市县 + */ + @Data + private static class DemoCityData { + /** + * 数据库id字段 + */ + private Integer id; + /** + * 数据库pid字段 + */ + private Integer pid; + /** + * 数据库name字段 + */ + private String name; + /** + * MyBatisPlus连带查询父数据 + */ + private DemoCityData pData; + + public DemoCityData(Integer id, Integer pid, String name) { + this.id = id; + this.pid = pid; + this.name = name; + } + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestDemoServiceImpl.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestDemoServiceImpl.java new file mode 100644 index 0000000..ced141e --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestDemoServiceImpl.java @@ -0,0 +1,116 @@ +package org.dromara.demo.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.demo.domain.TestDemo; +import org.dromara.demo.domain.bo.TestDemoBo; +import org.dromara.demo.domain.vo.TestDemoVo; +import org.dromara.demo.mapper.TestDemoMapper; +import org.dromara.demo.service.ITestDemoService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 测试单表Service业务层处理 + * + * @author Lion Li + * @date 2021-07-26 + */ +@RequiredArgsConstructor +@Service +public class TestDemoServiceImpl implements ITestDemoService { + + private final TestDemoMapper baseMapper; + + @Override + public TestDemoVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + @Override + public TableDataInfo queryPageList(TestDemoBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 自定义分页查询 + */ + @Override + public TableDataInfo customPageList(TestDemoBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.customPageList(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List queryList(TestDemoBo bo) { + return baseMapper.selectVoList(buildQueryWrapper(bo)); + } + + private LambdaQueryWrapper buildQueryWrapper(TestDemoBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey()); + lqw.eq(StringUtils.isNotBlank(bo.getValue()), TestDemo::getValue, bo.getValue()); + lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, + TestDemo::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); + lqw.orderByAsc(TestDemo::getId); + return lqw; + } + + @Override + public Boolean insertByBo(TestDemoBo bo) { + TestDemo add = MapstructUtils.convert(bo, TestDemo.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(TestDemoBo bo) { + TestDemo update = MapstructUtils.convert(bo, TestDemo.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(TestDemo entity) { + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // 做一些业务上的校验,判断是否需要校验 + List list = baseMapper.selectByIds(ids); + if (list.size() != ids.size()) { + throw new ServiceException("您没有删除权限!"); + } + } + return baseMapper.deleteByIds(ids) > 0; + } + + @Override + public Boolean saveBatch(List list) { + return baseMapper.insertBatch(list); + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestTreeServiceImpl.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestTreeServiceImpl.java new file mode 100644 index 0000000..e4e548b --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestTreeServiceImpl.java @@ -0,0 +1,88 @@ +package org.dromara.demo.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.demo.domain.TestTree; +import org.dromara.demo.domain.bo.TestTreeBo; +import org.dromara.demo.domain.vo.TestTreeVo; +import org.dromara.demo.mapper.TestTreeMapper; +import org.dromara.demo.service.ITestTreeService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 测试树表Service业务层处理 + * + * @author Lion Li + * @date 2021-07-26 + */ +// @DS("slave") // 切换从库查询 +@RequiredArgsConstructor +@Service +public class TestTreeServiceImpl implements ITestTreeService { + + private final TestTreeMapper baseMapper; + + @Override + public TestTreeVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + // @DS("slave") // 切换从库查询 + @Override + public List queryList(TestTreeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(TestTreeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getTreeName()), TestTree::getTreeName, bo.getTreeName()); + lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, + TestTree::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); + lqw.orderByAsc(TestTree::getId); + return lqw; + } + + @Override + public Boolean insertByBo(TestTreeBo bo) { + TestTree add = MapstructUtils.convert(bo, TestTree.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + @Override + public Boolean updateByBo(TestTreeBo bo) { + TestTree update = MapstructUtils.convert(bo, TestTree.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(TestTree entity) { + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/package-info.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/package-info.java new file mode 100644 index 0000000..7011984 --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/package-info.java @@ -0,0 +1 @@ +package org.dromara.demo.service.impl; diff --git a/ruoyi-demo/src/main/java/org/dromara/demo/service/package-info.java b/ruoyi-demo/src/main/java/org/dromara/demo/service/package-info.java new file mode 100644 index 0000000..16727ff --- /dev/null +++ b/ruoyi-demo/src/main/java/org/dromara/demo/service/package-info.java @@ -0,0 +1 @@ +package org.dromara.demo.service; diff --git a/ruoyi-demo/src/main/resources/excel/单列表.xlsx b/ruoyi-demo/src/main/resources/excel/单列表.xlsx new file mode 100644 index 0000000..0f7347d Binary files /dev/null and b/ruoyi-demo/src/main/resources/excel/单列表.xlsx differ diff --git a/ruoyi-demo/src/main/resources/excel/多sheet列表.xlsx b/ruoyi-demo/src/main/resources/excel/多sheet列表.xlsx new file mode 100644 index 0000000..5277f2e Binary files /dev/null and b/ruoyi-demo/src/main/resources/excel/多sheet列表.xlsx differ diff --git a/ruoyi-demo/src/main/resources/excel/多列表.xlsx b/ruoyi-demo/src/main/resources/excel/多列表.xlsx new file mode 100644 index 0000000..c7d11dc Binary files /dev/null and b/ruoyi-demo/src/main/resources/excel/多列表.xlsx differ diff --git a/ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml b/ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml new file mode 100644 index 0000000..dbf89a3 --- /dev/null +++ b/ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml b/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml new file mode 100644 index 0000000..d7975ec --- /dev/null +++ b/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-demo/src/main/resources/mapper/package-info.md b/ruoyi-demo/src/main/resources/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-demo/src/main/resources/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-demo/target/classes/META-INF/mps/autoMapper b/ruoyi-demo/target/classes/META-INF/mps/autoMapper new file mode 100644 index 0000000..a89b6b4 --- /dev/null +++ b/ruoyi-demo/target/classes/META-INF/mps/autoMapper @@ -0,0 +1,4 @@ +org.dromara.demo.domain.vo.TestTreeVo +org.dromara.demo.domain.bo.TestTreeBo +org.dromara.demo.domain.vo.TestDemoVo +org.dromara.demo.domain.bo.TestDemoBo \ No newline at end of file diff --git a/ruoyi-demo/target/classes/excel/单列表.xlsx b/ruoyi-demo/target/classes/excel/单列表.xlsx new file mode 100644 index 0000000..0f7347d Binary files /dev/null and b/ruoyi-demo/target/classes/excel/单列表.xlsx differ diff --git a/ruoyi-demo/target/classes/excel/多sheet列表.xlsx b/ruoyi-demo/target/classes/excel/多sheet列表.xlsx new file mode 100644 index 0000000..5277f2e Binary files /dev/null and b/ruoyi-demo/target/classes/excel/多sheet列表.xlsx differ diff --git a/ruoyi-demo/target/classes/excel/多列表.xlsx b/ruoyi-demo/target/classes/excel/多列表.xlsx new file mode 100644 index 0000000..c7d11dc Binary files /dev/null and b/ruoyi-demo/target/classes/excel/多列表.xlsx differ diff --git a/ruoyi-demo/target/classes/io/github/linpeilie/AutoMapperConfig__0.class b/ruoyi-demo/target/classes/io/github/linpeilie/AutoMapperConfig__0.class new file mode 100644 index 0000000..07768bf Binary files /dev/null and b/ruoyi-demo/target/classes/io/github/linpeilie/AutoMapperConfig__0.class differ diff --git a/ruoyi-demo/target/classes/io/github/linpeilie/ConverterMapperAdapter__0.class b/ruoyi-demo/target/classes/io/github/linpeilie/ConverterMapperAdapter__0.class new file mode 100644 index 0000000..c01c298 Binary files /dev/null and b/ruoyi-demo/target/classes/io/github/linpeilie/ConverterMapperAdapter__0.class differ diff --git a/ruoyi-demo/target/classes/mapper/demo/TestDemoMapper.xml b/ruoyi-demo/target/classes/mapper/demo/TestDemoMapper.xml new file mode 100644 index 0000000..dbf89a3 --- /dev/null +++ b/ruoyi-demo/target/classes/mapper/demo/TestDemoMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/ruoyi-demo/target/classes/mapper/demo/TestTreeMapper.xml b/ruoyi-demo/target/classes/mapper/demo/TestTreeMapper.xml new file mode 100644 index 0000000..d7975ec --- /dev/null +++ b/ruoyi-demo/target/classes/mapper/demo/TestTreeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-demo/target/classes/mapper/package-info.md b/ruoyi-demo/target/classes/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-demo/target/classes/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/MailController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/MailController.class new file mode 100644 index 0000000..9a44e64 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/MailController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/MailController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/MailController__Javadoc.json new file mode 100644 index 0000000..057542c --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/MailController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 邮件发送案例\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[{"name":"sendSimpleMessage","paramTypes":["java.lang.String","java.lang.String","java.lang.String"],"doc":" 发送邮件\n\n @param to 接收人\n @param subject 标题\n @param text 内容\n"},{"name":"sendMessageWithAttachment","paramTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String"],"doc":" 发送邮件(带附件)\n\n @param to 接收人\n @param subject 标题\n @param text 内容\n @param filePath 附件路径\n"},{"name":"sendMessageWithAttachments","paramTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String[]"],"doc":" 发送邮件(多附件)\n\n @param to 接收人\n @param subject 标题\n @param text 内容\n @param paths 附件路径\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisCacheController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisCacheController.class new file mode 100644 index 0000000..f2ab710 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisCacheController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisCacheController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisCacheController__Javadoc.json new file mode 100644 index 0000000..98d8c48 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisCacheController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" spring-cache 演示案例\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"test1","paramTypes":["java.lang.String","java.lang.String"],"doc":" 测试 @Cacheable\n

\n 表示这个方法有了缓存的功能,方法的返回值会被缓存下来\n 下一次调用该方法前,会去检查是否缓存中已经有值\n 如果有就直接返回,不调用方法\n 如果没有,就调用方法,然后把结果缓存起来\n 这个注解「一般用在查询方法上」\n

\n 重点说明: 缓存注解严谨与其他筛选数据功能一起使用\n 例如: 数据权限注解 会造成 缓存击穿 与 数据不一致问题\n

\n cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数\n"},{"name":"test2","paramTypes":["java.lang.String","java.lang.String"],"doc":" 测试 @CachePut\n

\n 加了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用\n 它「通常用在新增或者实时更新方法上」\n

\n cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数\n"},{"name":"test3","paramTypes":["java.lang.String","java.lang.String"],"doc":" 测试 @CacheEvict\n

\n 使用了CacheEvict注解的方法,会清空指定缓存\n 「一般用在删除的方法上」\n

\n cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数\n"},{"name":"test6","paramTypes":["java.lang.String","java.lang.String"],"doc":" 测试设置过期时间\n 手动设置过期时间10秒\n 11秒后获取 判断是否相等\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisLockController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisLockController.class new file mode 100644 index 0000000..8e8000e Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisLockController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisLockController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisLockController__Javadoc.json new file mode 100644 index 0000000..9df9473 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisLockController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试分布式锁的样例\n\n @author shenxinquan\n","fields":[],"enumConstants":[],"methods":[{"name":"testLock4j","paramTypes":["java.lang.String","java.lang.String"],"doc":" 测试lock4j 注解\n"},{"name":"testLock4jLockTemplate","paramTypes":["java.lang.String","java.lang.String"],"doc":" 测试lock4j 工具\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisPubSubController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisPubSubController.class new file mode 100644 index 0000000..fee1a7e Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisPubSubController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisPubSubController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisPubSubController__Javadoc.json new file mode 100644 index 0000000..97df317 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisPubSubController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" Redis 发布订阅 演示案例\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"pub","paramTypes":["java.lang.String","java.lang.String"],"doc":" 发布消息\n\n @param key 通道Key\n @param value 发送内容\n"},{"name":"sub","paramTypes":["java.lang.String"],"doc":" 订阅消息\n\n @param key 通道Key\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisRateLimiterController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisRateLimiterController.class new file mode 100644 index 0000000..898d4ab Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisRateLimiterController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisRateLimiterController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisRateLimiterController__Javadoc.json new file mode 100644 index 0000000..cc9f8d9 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/RedisRateLimiterController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试分布式限流样例\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"test","paramTypes":["java.lang.String"],"doc":" 测试全局限流\n 全局影响\n"},{"name":"testip","paramTypes":["java.lang.String"],"doc":" 测试请求IP限流\n 同一IP请求受影响\n"},{"name":"testcluster","paramTypes":["java.lang.String"],"doc":" 测试集群实例限流\n 启动两个后端服务互不影响\n"},{"name":"testObj","paramTypes":["java.lang.String"],"doc":" 测试请求IP限流(key基于参数获取)\n 同一IP请求受影响\n\n 简单变量获取 #变量 复杂表达式 #{#变量 != 1 ? 1 : 0}\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/SmsController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/SmsController.class new file mode 100644 index 0000000..7dac3a6 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/SmsController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/SmsController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/SmsController__Javadoc.json new file mode 100644 index 0000000..2967975 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/SmsController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 短信演示案例\n 请先阅读文档 否则无法使用\n\n @author Lion Li\n @version 4.2.0\n","fields":[],"enumConstants":[],"methods":[{"name":"sendAliyun","paramTypes":["java.lang.String","java.lang.String"],"doc":" 发送短信Aliyun\n\n @param phones 电话号\n @param templateId 模板ID\n"},{"name":"sendTencent","paramTypes":["java.lang.String","java.lang.String"],"doc":" 发送短信Tencent\n\n @param phones 电话号\n @param templateId 模板ID\n"},{"name":"addBlacklist","paramTypes":["java.lang.String"],"doc":" 添加黑名单\n\n @param phone 手机号\n"},{"name":"removeBlacklist","paramTypes":["java.lang.String"],"doc":" 移除黑名单\n\n @param phone 手机号\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/Swagger3DemoController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/Swagger3DemoController.class new file mode 100644 index 0000000..1cddb00 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/Swagger3DemoController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/Swagger3DemoController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/Swagger3DemoController__Javadoc.json new file mode 100644 index 0000000..04d375f --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/Swagger3DemoController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" swagger3 用法示例\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"upload","paramTypes":["org.springframework.web.multipart.MultipartFile"],"doc":" 上传请求\n 必须使用 @RequestPart 注解标注为文件\n\n @param file 文件\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestBatchController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestBatchController.class new file mode 100644 index 0000000..2253c22 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestBatchController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestBatchController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestBatchController__Javadoc.json new file mode 100644 index 0000000..5de5bdb --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestBatchController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试批量方法\n\n @author Lion Li\n @date 2021-05-30\n","fields":[{"name":"testDemoMapper","doc":" 为了便于测试 直接引入mapper\n"}],"enumConstants":[],"methods":[{"name":"add","paramTypes":[],"doc":" 新增批量方法 可完美替代 saveBatch 秒级插入上万数据 (对mysql负荷较大)\n

\n 3.5.0 版本 增加 rewriteBatchedStatements=true 批处理参数 使 MP 原生批处理可以达到同样的速度\n"},{"name":"addOrUpdate","paramTypes":[],"doc":" 新增或更新 可完美替代 saveOrUpdateBatch 高性能\n

\n 3.5.0 版本 增加 rewriteBatchedStatements=true 批处理参数 使 MP 原生批处理可以达到同样的速度\n"},{"name":"remove","paramTypes":[],"doc":" 删除批量方法\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestDemoController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestDemoController.class new file mode 100644 index 0000000..cb613d8 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestDemoController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestDemoController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestDemoController__Javadoc.json new file mode 100644 index 0000000..6817bbb --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestDemoController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表Controller\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询测试单表列表\n"},{"name":"page","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 自定义分页查询\n"},{"name":"importData","paramTypes":["org.springframework.web.multipart.MultipartFile"],"doc":" 导入数据\n\n @param file 导入文件\n"},{"name":"export","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出测试单表列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取测试单表详细信息\n\n @param id 测试ID\n"},{"name":"add","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo"],"doc":" 新增测试单表\n"},{"name":"edit","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo"],"doc":" 修改测试单表\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除测试单表\n\n @param ids 测试ID串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestEncryptController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestEncryptController.class new file mode 100644 index 0000000..a3de5dd Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestEncryptController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestEncryptController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestEncryptController__Javadoc.json new file mode 100644 index 0000000..c6d3f58 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestEncryptController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试数据库加解密功能\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"test","paramTypes":["java.lang.String","java.lang.String"],"doc":" 测试数据库加解密\n\n @param key 测试key\n @param value 测试value\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController$TestObj.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController$TestObj.class new file mode 100644 index 0000000..a7c0328 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController$TestObj.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController$TestObj1.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController$TestObj1.class new file mode 100644 index 0000000..b28d773 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController$TestObj1.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController.class new file mode 100644 index 0000000..15d00fc Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController__Javadoc.json new file mode 100644 index 0000000..bb96b6c --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestExcelController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试Excel功能\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"exportTemplateOne","paramTypes":["jakarta.servlet.http.HttpServletResponse"],"doc":" 单列表多数据\n"},{"name":"exportTemplateMuliti","paramTypes":["jakarta.servlet.http.HttpServletResponse"],"doc":" 多列表多数据\n"},{"name":"exportWithOptions","paramTypes":["jakarta.servlet.http.HttpServletResponse"],"doc":" 导出下拉框\n\n @param response /\n"},{"name":"exportTemplateMultiSheet","paramTypes":["jakarta.servlet.http.HttpServletResponse"],"doc":" 多个sheet导出\n"},{"name":"importWithOptions","paramTypes":["org.springframework.web.multipart.MultipartFile"],"doc":" 导入表格\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController$TestI18nBo.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController$TestI18nBo.class new file mode 100644 index 0000000..3545d50 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController$TestI18nBo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController.class new file mode 100644 index 0000000..6647c06 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController__Javadoc.json new file mode 100644 index 0000000..84150bb --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestI18nController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试国际化\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"get","paramTypes":["java.lang.String"],"doc":" 通过code获取国际化内容\n code为 messages.properties 中的 key\n

\n 测试使用 user.register.success\n\n @param code 国际化code\n"},{"name":"test1","paramTypes":["java.lang.String"],"doc":" Validator 校验国际化\n 不传值 分别查看异常返回\n

\n 测试使用 not.null\n"},{"name":"test2","paramTypes":["org.dromara.demo.controller.TestI18nController.TestI18nBo"],"doc":" Bean 校验国际化\n 不传值 分别查看异常返回\n

\n 测试使用 not.null\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController$TestSensitive.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController$TestSensitive.class new file mode 100644 index 0000000..fa98a28 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController$TestSensitive.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController$TestSensitive__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController$TestSensitive__Javadoc.json new file mode 100644 index 0000000..0972a2a --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController$TestSensitive__Javadoc.json @@ -0,0 +1 @@ +{"doc":"","fields":[{"name":"idCard","doc":" 身份证\n"},{"name":"phone","doc":" 电话\n"},{"name":"address","doc":" 地址\n"},{"name":"email","doc":" 邮箱\n"},{"name":"bankCard","doc":" 银行卡\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController.class new file mode 100644 index 0000000..85289fc Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController__Javadoc.json new file mode 100644 index 0000000..5ca7883 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestSensitiveController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试数据脱敏控制器\n

\n 默认管理员不过滤\n 需自行根据业务重写实现\n\n @author Lion Li\n @version 3.6.0\n @see SensitiveService\n","fields":[],"enumConstants":[],"methods":[{"name":"test","paramTypes":[],"doc":" 测试数据脱敏\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestTreeController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestTreeController.class new file mode 100644 index 0000000..1a0cabe Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestTreeController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/TestTreeController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestTreeController__Javadoc.json new file mode 100644 index 0000000..43eec0d --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/TestTreeController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试树表Controller\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.demo.domain.bo.TestTreeBo"],"doc":" 查询测试树表列表\n"},{"name":"export","paramTypes":["org.dromara.demo.domain.bo.TestTreeBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出测试树表列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取测试树表详细信息\n\n @param id 测试树ID\n"},{"name":"add","paramTypes":["org.dromara.demo.domain.bo.TestTreeBo"],"doc":" 新增测试树表\n"},{"name":"edit","paramTypes":["org.dromara.demo.domain.bo.TestTreeBo"],"doc":" 修改测试树表\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除测试树表\n\n @param ids 测试树ID串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/WeSocketController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/WeSocketController.class new file mode 100644 index 0000000..558821f Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/WeSocketController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/WeSocketController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/WeSocketController__Javadoc.json new file mode 100644 index 0000000..cc9eb58 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/WeSocketController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" WebSocket 演示案例\n\n @author zendwang\n","fields":[],"enumConstants":[],"methods":[{"name":"send","paramTypes":["org.dromara.common.websocket.dto.WebSocketMessageDto"],"doc":" 发布消息\n\n @param dto 发送内容\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/BoundedQueueController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/BoundedQueueController.class new file mode 100644 index 0000000..4176d86 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/BoundedQueueController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/BoundedQueueController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/BoundedQueueController__Javadoc.json new file mode 100644 index 0000000..5211f3e --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/BoundedQueueController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 有界队列 演示案例\n

\n 轻量级队列 重量级数据量 请使用 MQ\n

\n 集群测试通过 同一个数据只会被消费一次 做好事务补偿\n 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条\n\n @author Lion Li\n @version 3.6.0\n","fields":[],"enumConstants":[],"methods":[{"name":"add","paramTypes":["java.lang.String","int"],"doc":" 添加队列数据\n\n @param queueName 队列名\n @param capacity 容量\n"},{"name":"remove","paramTypes":["java.lang.String"],"doc":" 删除队列数据\n\n @param queueName 队列名\n"},{"name":"get","paramTypes":["java.lang.String"],"doc":" 获取队列数据\n\n @param queueName 队列名\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/DelayedQueueController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/DelayedQueueController.class new file mode 100644 index 0000000..3ca118e Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/DelayedQueueController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/DelayedQueueController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/DelayedQueueController__Javadoc.json new file mode 100644 index 0000000..3b7aced --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/DelayedQueueController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 延迟队列 演示案例\n

\n 轻量级队列 重量级数据量 请使用 MQ\n 例如: 创建订单30分钟后过期处理\n

\n 集群测试通过 同一个数据只会被消费一次 做好事务补偿\n 集群测试流程 两台集群分别开启订阅 在其中一台发送数据 观察接收消息的规律\n\n @author Lion Li\n @version 3.6.0\n","fields":[],"enumConstants":[],"methods":[{"name":"subscribe","paramTypes":["java.lang.String"],"doc":" 订阅队列\n\n @param queueName 队列名\n"},{"name":"add","paramTypes":["java.lang.String","java.lang.String","java.lang.Long"],"doc":" 添加队列数据\n\n @param queueName 队列名\n @param orderNum 订单号\n @param time 延迟时间(秒)\n"},{"name":"remove","paramTypes":["java.lang.String","java.lang.String"],"doc":" 删除队列数据\n\n @param queueName 队列名\n @param orderNum 订单号\n"},{"name":"destroy","paramTypes":["java.lang.String"],"doc":" 销毁队列\n\n @param queueName 队列名\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityDemo.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityDemo.class new file mode 100644 index 0000000..4063733 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityDemo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityDemo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityDemo__Javadoc.json new file mode 100644 index 0000000..9108285 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityDemo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 实体类 注意不允许使用内部类 否则会找不到类\n\n @author Lion Li\n @version 3.6.0\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityQueueController.class b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityQueueController.class new file mode 100644 index 0000000..1894912 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityQueueController.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityQueueController__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityQueueController__Javadoc.json new file mode 100644 index 0000000..8d56472 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/controller/queue/PriorityQueueController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 优先队列 演示案例\n

\n 轻量级队列 重量级数据量 请使用 MQ\n

\n 集群测试通过 同一个消息只会被消费一次 做好事务补偿\n 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条\n\n @author Lion Li\n @version 3.6.0\n","fields":[],"enumConstants":[],"methods":[{"name":"add","paramTypes":["java.lang.String"],"doc":" 添加队列数据\n\n @param queueName 队列名\n"},{"name":"remove","paramTypes":["java.lang.String","java.lang.String","java.lang.Integer"],"doc":" 删除队列数据\n\n @param queueName 队列名\n @param name 对象名\n @param orderNum 排序号\n"},{"name":"get","paramTypes":["java.lang.String"],"doc":" 获取队列数据\n\n @param queueName 队列名\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemo.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemo.class new file mode 100644 index 0000000..b9ffc5e Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoEncrypt.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoEncrypt.class new file mode 100644 index 0000000..3d5f757 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoEncrypt.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoEncrypt__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoEncrypt__Javadoc.json new file mode 100644 index 0000000..8e72b40 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoEncrypt__Javadoc.json @@ -0,0 +1 @@ +{"doc":"","fields":[{"name":"testKey","doc":" key键\n"},{"name":"value","doc":" 值\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoToTestDemoVoMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoToTestDemoVoMapper.class new file mode 100644 index 0000000..b849099 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoToTestDemoVoMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoToTestDemoVoMapperImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoToTestDemoVoMapperImpl.class new file mode 100644 index 0000000..c4659c8 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemoToTestDemoVoMapperImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemo__Javadoc.json new file mode 100644 index 0000000..46726d8 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestDemo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表对象 test_demo\n\n @author Lion Li\n @date 2021-07-26\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"userId","doc":" 用户id\n"},{"name":"orderNum","doc":" 排序号\n"},{"name":"testKey","doc":" key键\n"},{"name":"value","doc":" 值\n"},{"name":"version","doc":" 版本\n"},{"name":"delFlag","doc":" 删除标志\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTree.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTree.class new file mode 100644 index 0000000..ff4d17c Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTree.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTreeToTestTreeVoMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTreeToTestTreeVoMapper.class new file mode 100644 index 0000000..58e57e2 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTreeToTestTreeVoMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTreeToTestTreeVoMapperImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTreeToTestTreeVoMapperImpl.class new file mode 100644 index 0000000..4b2ec4f Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTreeToTestTreeVoMapperImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTree__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTree__Javadoc.json new file mode 100644 index 0000000..2e26aa4 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/TestTree__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试树表对象 test_tree\n\n @author Lion Li\n @date 2021-07-26\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"parentId","doc":" 父ID\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"userId","doc":" 用户id\n"},{"name":"treeName","doc":" 树节点名\n"},{"name":"version","doc":" 版本\n"},{"name":"delFlag","doc":" 删除标志\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBo.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBo.class new file mode 100644 index 0000000..85b0e11 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapper.class new file mode 100644 index 0000000..333e1a8 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapperImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapperImpl.class new file mode 100644 index 0000000..961f05c Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapperImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBo__Javadoc.json new file mode 100644 index 0000000..45823ed --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表业务对象 test_demo\n\n @author Lion Li\n @date 2021-07-26\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"userId","doc":" 用户id\n"},{"name":"orderNum","doc":" 排序号\n"},{"name":"testKey","doc":" key键\n"},{"name":"value","doc":" 值\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoImportVo.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoImportVo.class new file mode 100644 index 0000000..6195790 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoImportVo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoImportVo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoImportVo__Javadoc.json new file mode 100644 index 0000000..ca8fc42 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestDemoImportVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表业务对象 test_demo\n\n @author Lion Li\n @date 2021-07-26\n","fields":[{"name":"deptId","doc":" 部门id\n"},{"name":"userId","doc":" 用户id\n"},{"name":"orderNum","doc":" 排序号\n"},{"name":"testKey","doc":" key键\n"},{"name":"value","doc":" 值\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBo.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBo.class new file mode 100644 index 0000000..1dc38f9 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapper.class new file mode 100644 index 0000000..883c427 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapperImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapperImpl.class new file mode 100644 index 0000000..a3ff267 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapperImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBo__Javadoc.json new file mode 100644 index 0000000..b52493c --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/bo/TestTreeBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试树表业务对象 test_tree\n\n @author Lion Li\n @date 2021-07-26\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"parentId","doc":" 父ID\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"userId","doc":" 用户id\n"},{"name":"treeName","doc":" 树节点名\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/ExportDemoVo.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/ExportDemoVo.class new file mode 100644 index 0000000..15b7958 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/ExportDemoVo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/ExportDemoVo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/ExportDemoVo__Javadoc.json new file mode 100644 index 0000000..f493150 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/ExportDemoVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 带有下拉选的Excel导出\n\n @author Emil.Zhang\n","fields":[{"name":"nickName","doc":" 用户昵称\n"},{"name":"userStatus","doc":" 用户类型\n

\n 使用ExcelEnumFormat注解需要进行下拉选的部分\n"},{"name":"gender","doc":" 性别\n

\n 使用ExcelDictFormat注解需要进行下拉选的部分\n"},{"name":"phoneNumber","doc":" 手机号\n"},{"name":"email","doc":" Email\n"},{"name":"province","doc":" 省\n

\n 级联下拉,仅判断是否选了\n"},{"name":"provinceId","doc":" 数据库中的省ID\n

\n 处理完毕后再判断是否市正确的值\n"},{"name":"city","doc":" 市\n

\n 级联下拉\n"},{"name":"cityId","doc":" 数据库中的市ID\n"},{"name":"area","doc":" 县\n

\n 级联下拉\n"},{"name":"areaId","doc":" 数据库中的县ID\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVo.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVo.class new file mode 100644 index 0000000..af187aa Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapper.class new file mode 100644 index 0000000..e32a600 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapperImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapperImpl.class new file mode 100644 index 0000000..abffacd Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapperImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVo__Javadoc.json new file mode 100644 index 0000000..88a5d27 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestDemoVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表视图对象 test_demo\n\n @author Lion Li\n @date 2021-07-26\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"userId","doc":" 用户id\n"},{"name":"orderNum","doc":" 排序号\n"},{"name":"testKey","doc":" key键\n"},{"name":"value","doc":" 值\n"},{"name":"createTime","doc":" 创建时间\n"},{"name":"createBy","doc":" 创建人\n"},{"name":"createByName","doc":" 创建人账号\n"},{"name":"updateTime","doc":" 更新时间\n"},{"name":"updateBy","doc":" 更新人\n"},{"name":"updateByName","doc":" 更新人账号\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVo.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVo.class new file mode 100644 index 0000000..8a79dc8 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVo.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapper.class new file mode 100644 index 0000000..7b02ee7 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapperImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapperImpl.class new file mode 100644 index 0000000..477cdeb Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapperImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVo__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVo__Javadoc.json new file mode 100644 index 0000000..6a59c2d --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/domain/vo/TestTreeVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试树表视图对象 test_tree\n\n @author Lion Li\n @date 2021-07-26\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"parentId","doc":" 父id\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"userId","doc":" 用户id\n"},{"name":"treeName","doc":" 树节点名\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/listener/ExportDemoListener.class b/ruoyi-demo/target/classes/org/dromara/demo/listener/ExportDemoListener.class new file mode 100644 index 0000000..447e787 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/listener/ExportDemoListener.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/listener/ExportDemoListener__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/listener/ExportDemoListener__Javadoc.json new file mode 100644 index 0000000..4e468d1 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/listener/ExportDemoListener__Javadoc.json @@ -0,0 +1 @@ +{"doc":" Excel带下拉框的解析处理器\n\n @author Emil.Zhang\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoEncryptMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoEncryptMapper.class new file mode 100644 index 0000000..b317329 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoEncryptMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoEncryptMapper__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoEncryptMapper__Javadoc.json new file mode 100644 index 0000000..8b1e94a --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoEncryptMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试加密功能\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoMapper.class new file mode 100644 index 0000000..b39369b Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoMapper__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoMapper__Javadoc.json new file mode 100644 index 0000000..1857af3 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestDemoMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表Mapper接口\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestTreeMapper.class b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestTreeMapper.class new file mode 100644 index 0000000..887065b Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestTreeMapper.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestTreeMapper__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestTreeMapper__Javadoc.json new file mode 100644 index 0000000..7e5d3fd --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/mapper/TestTreeMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试树表Mapper接口\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/IExportExcelService.class b/ruoyi-demo/target/classes/org/dromara/demo/service/IExportExcelService.class new file mode 100644 index 0000000..c08ad17 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/service/IExportExcelService.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/IExportExcelService__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/service/IExportExcelService__Javadoc.json new file mode 100644 index 0000000..68fbaa5 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/service/IExportExcelService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 导出下拉框Excel示例\n\n @author Emil.Zhang\n","fields":[],"enumConstants":[],"methods":[{"name":"exportWithOptions","paramTypes":["jakarta.servlet.http.HttpServletResponse"],"doc":" 导出下拉框\n\n @param response /\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/ITestDemoService.class b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestDemoService.class new file mode 100644 index 0000000..7dc88b4 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestDemoService.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/ITestDemoService__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestDemoService__Javadoc.json new file mode 100644 index 0000000..4554420 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestDemoService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表Service接口\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询单个\n\n @return\n"},{"name":"queryPageList","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询列表\n"},{"name":"customPageList","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 自定义分页查询\n"},{"name":"queryList","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo"],"doc":" 查询列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo"],"doc":" 根据新增业务对象插入测试单表\n\n @param bo 测试单表新增业务对象\n @return\n"},{"name":"updateByBo","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo"],"doc":" 根据编辑业务对象修改测试单表\n\n @param bo 测试单表编辑业务对象\n @return\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 校验并删除数据\n\n @param ids 主键集合\n @param isValid 是否校验,true-删除前校验,false-不校验\n @return\n"},{"name":"saveBatch","paramTypes":["java.util.List"],"doc":" 批量保存\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/ITestTreeService.class b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestTreeService.class new file mode 100644 index 0000000..6b5c656 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestTreeService.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/ITestTreeService__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestTreeService__Javadoc.json new file mode 100644 index 0000000..35b5a5f --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/service/ITestTreeService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试树表Service接口\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询单个\n\n @return\n"},{"name":"queryList","paramTypes":["org.dromara.demo.domain.bo.TestTreeBo"],"doc":" 查询列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.demo.domain.bo.TestTreeBo"],"doc":" 根据新增业务对象插入测试树表\n\n @param bo 测试树表新增业务对象\n @return\n"},{"name":"updateByBo","paramTypes":["org.dromara.demo.domain.bo.TestTreeBo"],"doc":" 根据编辑业务对象修改测试树表\n\n @param bo 测试树表编辑业务对象\n @return\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 校验并删除数据\n\n @param ids 主键集合\n @param isValid 是否校验,true-删除前校验,false-不校验\n @return\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl$DemoCityData.class b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl$DemoCityData.class new file mode 100644 index 0000000..d5e9d60 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl$DemoCityData.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl$DemoCityData__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl$DemoCityData__Javadoc.json new file mode 100644 index 0000000..a0b0a72 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl$DemoCityData__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 模拟的数据库省市县\n","fields":[{"name":"id","doc":" 数据库id字段\n"},{"name":"pid","doc":" 数据库pid字段\n"},{"name":"name","doc":" 数据库name字段\n"},{"name":"pData","doc":" MyBatisPlus连带查询父数据\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl.class new file mode 100644 index 0000000..3b8c012 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl__Javadoc.json new file mode 100644 index 0000000..f0ad188 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/ExportExcelServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 导出下拉框Excel示例\n\n @author Emil.Zhang\n","fields":[],"enumConstants":[],"methods":[{"name":"getProvinceList","paramTypes":[],"doc":" 模拟查询数据库操作\n\n @return /\n"},{"name":"getCityList","paramTypes":["java.util.List"],"doc":" 模拟查找数据库操作,需要连带查询出省的数据\n\n @param provinceList 模拟的父省数据\n @return /\n"},{"name":"getAreaList","paramTypes":["java.util.List"],"doc":" 模拟查找数据库操作,需要连带查询出市的数据\n\n @param cityList 模拟的父市数据\n @return /\n"},{"name":"selectParentData","paramTypes":["java.util.List","java.util.List"],"doc":" 模拟数据库的查询父数据操作\n\n @param parentList /\n @param sonList /\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestDemoServiceImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestDemoServiceImpl.class new file mode 100644 index 0000000..b097b16 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestDemoServiceImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestDemoServiceImpl__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestDemoServiceImpl__Javadoc.json new file mode 100644 index 0000000..c4a8fb3 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestDemoServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试单表Service业务层处理\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[{"name":"customPageList","paramTypes":["org.dromara.demo.domain.bo.TestDemoBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 自定义分页查询\n"},{"name":"validEntityBeforeSave","paramTypes":["org.dromara.demo.domain.TestDemo"],"doc":" 保存前的数据校验\n\n @param entity 实体类数据\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestTreeServiceImpl.class b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestTreeServiceImpl.class new file mode 100644 index 0000000..e63bd85 Binary files /dev/null and b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestTreeServiceImpl.class differ diff --git a/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestTreeServiceImpl__Javadoc.json b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestTreeServiceImpl__Javadoc.json new file mode 100644 index 0000000..d867339 --- /dev/null +++ b/ruoyi-demo/target/classes/org/dromara/demo/service/impl/TestTreeServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 测试树表Service业务层处理\n\n @author Lion Li\n @date 2021-07-26\n","fields":[],"enumConstants":[],"methods":[{"name":"validEntityBeforeSave","paramTypes":["org.dromara.demo.domain.TestTree"],"doc":" 保存前的数据校验\n\n @param entity 实体类数据\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-demo/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__0.java b/ruoyi-demo/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__0.java new file mode 100644 index 0000000..887f428 --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__0.java @@ -0,0 +1,14 @@ +package io.github.linpeilie; + +import org.mapstruct.Builder; +import org.mapstruct.MapperConfig; +import org.mapstruct.ReportingPolicy; + +@MapperConfig( + componentModel = "spring-lazy", + uses = {ConverterMapperAdapter__0.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE, + builder = @Builder(buildMethod = "build", disableBuilder = true) +) +public interface AutoMapperConfig__0 { +} diff --git a/ruoyi-demo/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__0.java b/ruoyi-demo/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__0.java new file mode 100644 index 0000000..bcf538c --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__0.java @@ -0,0 +1,10 @@ +package io.github.linpeilie; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ConverterMapperAdapter__0 { + @Autowired + private Converter converter; +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestDemoToTestDemoVoMapper.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestDemoToTestDemoVoMapper.java new file mode 100644 index 0000000..6440f1f --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestDemoToTestDemoVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.demo.domain; + +import io.github.linpeilie.AutoMapperConfig__0; +import io.github.linpeilie.BaseMapper; +import org.dromara.demo.domain.bo.TestDemoBoToTestDemoMapper; +import org.dromara.demo.domain.vo.TestDemoVo; +import org.dromara.demo.domain.vo.TestDemoVoToTestDemoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__0.class, + uses = {TestDemoVoToTestDemoMapper.class,TestDemoBoToTestDemoMapper.class}, + imports = {} +) +public interface TestDemoToTestDemoVoMapper extends BaseMapper { +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestDemoToTestDemoVoMapperImpl.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestDemoToTestDemoVoMapperImpl.java new file mode 100644 index 0000000..f3ccd18 --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestDemoToTestDemoVoMapperImpl.java @@ -0,0 +1,56 @@ +package org.dromara.demo.domain; + +import javax.annotation.processing.Generated; +import org.dromara.demo.domain.vo.TestDemoVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestDemoToTestDemoVoMapperImpl implements TestDemoToTestDemoVoMapper { + + @Override + public TestDemoVo convert(TestDemo arg0) { + if ( arg0 == null ) { + return null; + } + + TestDemoVo testDemoVo = new TestDemoVo(); + + testDemoVo.setId( arg0.getId() ); + testDemoVo.setDeptId( arg0.getDeptId() ); + testDemoVo.setUserId( arg0.getUserId() ); + testDemoVo.setOrderNum( arg0.getOrderNum() ); + testDemoVo.setTestKey( arg0.getTestKey() ); + testDemoVo.setValue( arg0.getValue() ); + testDemoVo.setCreateTime( arg0.getCreateTime() ); + testDemoVo.setCreateBy( arg0.getCreateBy() ); + testDemoVo.setUpdateTime( arg0.getUpdateTime() ); + testDemoVo.setUpdateBy( arg0.getUpdateBy() ); + + return testDemoVo; + } + + @Override + public TestDemoVo convert(TestDemo arg0, TestDemoVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setTestKey( arg0.getTestKey() ); + arg1.setValue( arg0.getValue() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + + return arg1; + } +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestTreeToTestTreeVoMapper.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestTreeToTestTreeVoMapper.java new file mode 100644 index 0000000..64b2855 --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestTreeToTestTreeVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.demo.domain; + +import io.github.linpeilie.AutoMapperConfig__0; +import io.github.linpeilie.BaseMapper; +import org.dromara.demo.domain.bo.TestTreeBoToTestTreeMapper; +import org.dromara.demo.domain.vo.TestTreeVo; +import org.dromara.demo.domain.vo.TestTreeVoToTestTreeMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__0.class, + uses = {TestTreeVoToTestTreeMapper.class,TestTreeBoToTestTreeMapper.class}, + imports = {} +) +public interface TestTreeToTestTreeVoMapper extends BaseMapper { +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestTreeToTestTreeVoMapperImpl.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestTreeToTestTreeVoMapperImpl.java new file mode 100644 index 0000000..9b4661d --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/TestTreeToTestTreeVoMapperImpl.java @@ -0,0 +1,48 @@ +package org.dromara.demo.domain; + +import javax.annotation.processing.Generated; +import org.dromara.demo.domain.vo.TestTreeVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestTreeToTestTreeVoMapperImpl implements TestTreeToTestTreeVoMapper { + + @Override + public TestTreeVo convert(TestTree arg0) { + if ( arg0 == null ) { + return null; + } + + TestTreeVo testTreeVo = new TestTreeVo(); + + testTreeVo.setId( arg0.getId() ); + testTreeVo.setParentId( arg0.getParentId() ); + testTreeVo.setDeptId( arg0.getDeptId() ); + testTreeVo.setUserId( arg0.getUserId() ); + testTreeVo.setTreeName( arg0.getTreeName() ); + testTreeVo.setCreateTime( arg0.getCreateTime() ); + + return testTreeVo; + } + + @Override + public TestTreeVo convert(TestTree arg0, TestTreeVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setTreeName( arg0.getTreeName() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapper.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapper.java new file mode 100644 index 0000000..6e7571a --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapper.java @@ -0,0 +1,14 @@ +package org.dromara.demo.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__0; +import io.github.linpeilie.BaseMapper; +import org.dromara.demo.domain.TestDemo; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__0.class, + uses = {}, + imports = {} +) +public interface TestDemoBoToTestDemoMapper extends BaseMapper { +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapperImpl.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapperImpl.java new file mode 100644 index 0000000..a280f02 --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestDemoBoToTestDemoMapperImpl.java @@ -0,0 +1,82 @@ +package org.dromara.demo.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.demo.domain.TestDemo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestDemoBoToTestDemoMapperImpl implements TestDemoBoToTestDemoMapper { + + @Override + public TestDemo convert(TestDemoBo arg0) { + if ( arg0 == null ) { + return null; + } + + TestDemo testDemo = new TestDemo(); + + testDemo.setSearchValue( arg0.getSearchValue() ); + testDemo.setCreateDept( arg0.getCreateDept() ); + testDemo.setCreateBy( arg0.getCreateBy() ); + testDemo.setCreateTime( arg0.getCreateTime() ); + testDemo.setUpdateBy( arg0.getUpdateBy() ); + testDemo.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + testDemo.setParams( new LinkedHashMap( map ) ); + } + testDemo.setId( arg0.getId() ); + testDemo.setDeptId( arg0.getDeptId() ); + testDemo.setUserId( arg0.getUserId() ); + testDemo.setOrderNum( arg0.getOrderNum() ); + testDemo.setTestKey( arg0.getTestKey() ); + testDemo.setValue( arg0.getValue() ); + + return testDemo; + } + + @Override + public TestDemo convert(TestDemoBo arg0, TestDemo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setId( arg0.getId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setTestKey( arg0.getTestKey() ); + arg1.setValue( arg0.getValue() ); + + return arg1; + } +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapper.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapper.java new file mode 100644 index 0000000..cd14f11 --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapper.java @@ -0,0 +1,14 @@ +package org.dromara.demo.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__0; +import io.github.linpeilie.BaseMapper; +import org.dromara.demo.domain.TestTree; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__0.class, + uses = {}, + imports = {} +) +public interface TestTreeBoToTestTreeMapper extends BaseMapper { +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapperImpl.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapperImpl.java new file mode 100644 index 0000000..8a4d7ab --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/bo/TestTreeBoToTestTreeMapperImpl.java @@ -0,0 +1,80 @@ +package org.dromara.demo.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.demo.domain.TestTree; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestTreeBoToTestTreeMapperImpl implements TestTreeBoToTestTreeMapper { + + @Override + public TestTree convert(TestTreeBo arg0) { + if ( arg0 == null ) { + return null; + } + + TestTree testTree = new TestTree(); + + testTree.setSearchValue( arg0.getSearchValue() ); + testTree.setCreateDept( arg0.getCreateDept() ); + testTree.setCreateBy( arg0.getCreateBy() ); + testTree.setCreateTime( arg0.getCreateTime() ); + testTree.setUpdateBy( arg0.getUpdateBy() ); + testTree.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + testTree.setParams( new LinkedHashMap( map ) ); + } + testTree.setId( arg0.getId() ); + testTree.setParentId( arg0.getParentId() ); + testTree.setDeptId( arg0.getDeptId() ); + testTree.setUserId( arg0.getUserId() ); + testTree.setTreeName( arg0.getTreeName() ); + + return testTree; + } + + @Override + public TestTree convert(TestTreeBo arg0, TestTree arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setId( arg0.getId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setTreeName( arg0.getTreeName() ); + + return arg1; + } +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapper.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapper.java new file mode 100644 index 0000000..45a15ba --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapper.java @@ -0,0 +1,15 @@ +package org.dromara.demo.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__0; +import io.github.linpeilie.BaseMapper; +import org.dromara.demo.domain.TestDemo; +import org.dromara.demo.domain.TestDemoToTestDemoVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__0.class, + uses = {TestDemoToTestDemoVoMapper.class}, + imports = {} +) +public interface TestDemoVoToTestDemoMapper extends BaseMapper { +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapperImpl.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapperImpl.java new file mode 100644 index 0000000..161bf93 --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestDemoVoToTestDemoMapperImpl.java @@ -0,0 +1,56 @@ +package org.dromara.demo.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.demo.domain.TestDemo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestDemoVoToTestDemoMapperImpl implements TestDemoVoToTestDemoMapper { + + @Override + public TestDemo convert(TestDemoVo arg0) { + if ( arg0 == null ) { + return null; + } + + TestDemo testDemo = new TestDemo(); + + testDemo.setCreateBy( arg0.getCreateBy() ); + testDemo.setCreateTime( arg0.getCreateTime() ); + testDemo.setUpdateBy( arg0.getUpdateBy() ); + testDemo.setUpdateTime( arg0.getUpdateTime() ); + testDemo.setId( arg0.getId() ); + testDemo.setDeptId( arg0.getDeptId() ); + testDemo.setUserId( arg0.getUserId() ); + testDemo.setOrderNum( arg0.getOrderNum() ); + testDemo.setTestKey( arg0.getTestKey() ); + testDemo.setValue( arg0.getValue() ); + + return testDemo; + } + + @Override + public TestDemo convert(TestDemoVo arg0, TestDemo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + arg1.setId( arg0.getId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setTestKey( arg0.getTestKey() ); + arg1.setValue( arg0.getValue() ); + + return arg1; + } +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapper.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapper.java new file mode 100644 index 0000000..f93a73e --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.demo.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__0; +import io.github.linpeilie.BaseMapper; +import org.dromara.demo.domain.TestTree; +import org.dromara.demo.domain.TestTreeToTestTreeVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__0.class, + uses = {TestTreeToTestTreeVoMapper.class}, + imports = {} +) +public interface TestTreeVoToTestTreeMapper extends BaseMapper { +} diff --git a/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapperImpl.java b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapperImpl.java new file mode 100644 index 0000000..7d08d12 --- /dev/null +++ b/ruoyi-demo/target/generated-sources/annotations/org/dromara/demo/domain/vo/TestTreeVoToTestTreeMapperImpl.java @@ -0,0 +1,48 @@ +package org.dromara.demo.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.demo.domain.TestTree; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestTreeVoToTestTreeMapperImpl implements TestTreeVoToTestTreeMapper { + + @Override + public TestTree convert(TestTreeVo arg0) { + if ( arg0 == null ) { + return null; + } + + TestTree testTree = new TestTree(); + + testTree.setCreateTime( arg0.getCreateTime() ); + testTree.setId( arg0.getId() ); + testTree.setParentId( arg0.getParentId() ); + testTree.setDeptId( arg0.getDeptId() ); + testTree.setUserId( arg0.getUserId() ); + testTree.setTreeName( arg0.getTreeName() ); + + return testTree; + } + + @Override + public TestTree convert(TestTreeVo arg0, TestTree arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setId( arg0.getId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setTreeName( arg0.getTreeName() ); + + return arg1; + } +} diff --git a/ruoyi-generator/.flattened-pom.xml b/ruoyi-generator/.flattened-pom.xml new file mode 100644 index 0000000..3034454 --- /dev/null +++ b/ruoyi-generator/.flattened-pom.xml @@ -0,0 +1,50 @@ + + + 4.0.0 + + org.dromara + ruoyi-modules + 5.3.0 + + org.dromara + ruoyi-generator + 5.3.0 + generator 代码生成 + + + org.dromara + ruoyi-common-core + + + org.dromara + ruoyi-common-doc + + + org.dromara + ruoyi-common-mybatis + + + org.dromara + ruoyi-common-web + + + org.dromara + ruoyi-common-log + + + org.apache.velocity + velocity-engine-core + + + org.anyline + anyline-environment-spring-data-jdbc + ${anyline.version} + + + org.anyline + anyline-data-jdbc-mysql + ${anyline.version} + + + diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml new file mode 100644 index 0000000..4906029 --- /dev/null +++ b/ruoyi-generator/pom.xml @@ -0,0 +1,84 @@ + + + + org.dromara + ruoyi-modules + ${revision} + + 4.0.0 + + ruoyi-generator + + + generator 代码生成 + + + + + + org.dromara + ruoyi-common-core + + + + org.dromara + ruoyi-common-doc + + + + org.dromara + ruoyi-common-mybatis + + + + org.dromara + ruoyi-common-web + + + + org.dromara + ruoyi-common-log + + + + + org.apache.velocity + velocity-engine-core + + + + org.anyline + anyline-environment-spring-data-jdbc + ${anyline.version} + + + + org.anyline + anyline-data-jdbc-mysql + ${anyline.version} + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/config/GenConfig.java b/ruoyi-generator/src/main/java/org/dromara/generator/config/GenConfig.java new file mode 100644 index 0000000..3dade3c --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/config/GenConfig.java @@ -0,0 +1,86 @@ +package org.dromara.generator.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; +import org.springframework.stereotype.Component; + +/** + * 读取代码生成相关配置 + * + * @author ruoyi + */ +// @Component 是 Spring 框架的注解,用于将该类标记为一个组件, +// 这样 Spring 容器会自动扫描并将其纳入管理,使其成为 Spring 应用上下文的一部分。 +@Component +// @ConfigurationProperties(prefix = "gen") 是 Spring Boot 提供的注解, +// 它会将配置文件中以 "gen" 为前缀的属性值绑定到该类的对应属性上。 +@ConfigurationProperties(prefix = "gen") +// @PropertySource 注解用于指定要加载的配置文件。 +// value = {"classpath:generator.yml"} 表示从类路径下加载 generator.yml 配置文件, +// encoding = "UTF-8" 指定了文件的编码格式为 UTF-8。 +@PropertySource(value = {"classpath:generator.yml"}, encoding = "UTF-8") +// 定义一个公共类 GenConfig,用于存储和管理代码生成器的配置信息。 +public class GenConfig { + // 定义一个静态的 String 类型的成员变量 author,用于存储代码生成的作者信息。 + public static String author; + // 定义一个静态的 String 类型的成员变量 packageName,用于存储生成代码的包名信息。 + public static String packageName; + // 定义一个静态的 boolean 类型的成员变量 autoRemovePre, + // 用于表示是否自动移除表前缀的配置信息。 + public static boolean autoRemovePre; + // 定义一个静态的 String 类型的成员变量 tablePrefix,用于存储表前缀信息。 + public static String tablePrefix; + + // 定义一个静态的 getter 方法 getAuthor,用于获取 author 成员变量的值。 + public static String getAuthor() { + return author; + } + + // @Value("${author}") 注解用于从配置文件中获取名为 "author" 的属性值, + // 并将其注入到方法的参数 author 中。 + // 该方法是一个 setter 方法,用于设置 GenConfig 类的静态成员变量 author 的值。 + @Value("${author}") + public void setAuthor(String author) { + GenConfig.author = author; + } + + // 定义一个静态的 getter 方法 getPackageName,用于获取 packageName 成员变量的值。 + public static String getPackageName() { + return packageName; + } + + // @Value("${packageName}") 注解用于从配置文件中获取名为 "packageName" 的属性值, + // 并将其注入到方法的参数 packageName 中。 + // 该方法是一个 setter 方法,用于设置 GenConfig 类的静态成员变量 packageName 的值。 + @Value("${packageName}") + public void setPackageName(String packageName) { + GenConfig.packageName = packageName; + } + + // 定义一个静态的 getter 方法 getAutoRemovePre,用于获取 autoRemovePre 成员变量的值。 + public static boolean getAutoRemovePre() { + return autoRemovePre; + } + + // @Value("${autoRemovePre}") 注解用于从配置文件中获取名为 "autoRemovePre" 的属性值, + // 并将其注入到方法的参数 autoRemovePre 中。 + // 该方法是一个 setter 方法,用于设置 GenConfig 类的静态成员变量 autoRemovePre 的值。 + @Value("${autoRemovePre}") + public void setAutoRemovePre(boolean autoRemovePre) { + GenConfig.autoRemovePre = autoRemovePre; + } + + // 定义一个静态的 getter 方法 getTablePrefix,用于获取 tablePrefix 成员变量的值。 + public static String getTablePrefix() { + return tablePrefix; + } + + // @Value("${tablePrefix}") 注解用于从配置文件中获取名为 "tablePrefix" 的属性值, + // 并将其注入到方法的参数 tablePrefix 中。 + // 该方法是一个 setter 方法,用于设置 GenConfig 类的静态成员变量 tablePrefix 的值。 + @Value("${tablePrefix}") + public void setTablePrefix(String tablePrefix) { + GenConfig.tablePrefix = tablePrefix; + } +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java b/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java new file mode 100644 index 0000000..21bff40 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/config/MyBatisDataSourceMonitor.java @@ -0,0 +1,136 @@ +package org.dromara.generator.config; + +import com.baomidou.dynamic.datasource.DynamicRoutingDataSource; +import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; +import lombok.extern.slf4j.Slf4j; +import org.anyline.data.datasource.DataSourceMonitor; +import org.anyline.data.runtime.DataRuntime; +import org.anyline.util.ConfigTable; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.datasource.DataSourceUtils; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.util.HashMap; +import java.util.Map; + +/** + * anyline 适配 动态数据源改造 + * + * @author Lion Li + */ +@Slf4j +@Component +public class MyBatisDataSourceMonitor implements DataSourceMonitor { + public MyBatisDataSourceMonitor() { + // 调整执行模式为自定义 + ConfigTable.KEEP_ADAPTER = 2; + // 禁用缓存 + ConfigTable.METADATA_CACHE_SCOPE = 0; + } + + // 定义一个私有且不可变的 Map 类型的成员变量 features,使用 HashMap 实现。 +// 该 Map 用于存储数据源的特征信息,键为数据源的标识(字符串类型),值为对应的特征信息(字符串类型)。 + private final Map features = new HashMap<>(); + + /** + * 该方法用于获取数据源的特征信息。 + * + * @param runtime 数据运行时上下文对象,包含运行时的相关信息。 + * @param datasource 数据源对象,类型为 Object,可传入不同类型的数据源。 + * @return 返回数据源的特征信息,如果无法获取则返回 null。 + */ + @Override + public String feature(DataRuntime runtime, Object datasource) { + // 初始化特征信息变量为 null。 + String feature = null; + // 判断传入的数据源对象是否为 JdbcTemplate 类型。 + if (datasource instanceof JdbcTemplate jdbc) { + // 如果是 JdbcTemplate 类型,通过 getDataSource 方法获取其关联的 DataSource 对象。 + DataSource ds = jdbc.getDataSource(); + // 判断获取的 DataSource 对象是否为 DynamicRoutingDataSource 类型。 + if (ds instanceof DynamicRoutingDataSource) { + // 如果是 DynamicRoutingDataSource 类型,使用 DynamicDataSourceContextHolder 的 peek 方法获取当前数据源的标识。 + String key = DynamicDataSourceContextHolder.peek(); + // 从 features Map 中根据数据源标识获取对应的特征信息。 + feature = features.get(key); + // 如果没有找到对应的特征信息。 + if (null == feature) { + // 初始化数据库连接对象为 null。 + Connection con = null; + try { + // 通过 DataSourceUtils 的 getConnection 方法从数据源中获取数据库连接。 + con = DataSourceUtils.getConnection(ds); + // 通过数据库连接对象获取数据库的元数据信息。 + DatabaseMetaData meta = con.getMetaData(); + // 从元数据中获取数据库的连接 URL。 + String url = meta.getURL(); + // 构建特征信息,将数据库产品名称转换为小写并去除空格,然后拼接上数据库连接 URL。 + feature = meta.getDatabaseProductName().toLowerCase().replace(" ", "") + "_" + url; + // 将数据源标识和对应的特征信息存入 features Map 中。 + features.put(key, feature); + } catch (Exception e) { + // 如果在获取特征信息的过程中出现异常,使用日志记录异常信息。 + log.error(e.getMessage(), e); + } finally { + // 在 finally 块中确保数据库连接被正确释放。 + // 判断数据库连接对象不为 null 且该连接不是事务性连接。 + if (null != con && !DataSourceUtils.isConnectionTransactional(con, ds)) { + // 使用 DataSourceUtils 的 releaseConnection 方法释放数据库连接。 + DataSourceUtils.releaseConnection(con, ds); + } + } + } + } + } + // 返回获取到的特征信息,如果没有获取到则返回 null。 + return feature; + } + + /** + * 该方法用于获取数据源的标识。 + * + * @param runtime 数据运行时上下文对象,包含运行时的相关信息。 + * @param datasource 数据源对象,类型为 Object,可传入不同类型的数据源。 + * @return 返回数据源的标识。 + */ + @Override + public String key(DataRuntime runtime, Object datasource) { + // 判断传入的数据源对象是否为 JdbcTemplate 类型。 + if (datasource instanceof JdbcTemplate jdbc) { + // 如果是 JdbcTemplate 类型,通过 getDataSource 方法获取其关联的 DataSource 对象。 + DataSource ds = jdbc.getDataSource(); + // 判断获取的 DataSource 对象是否为 DynamicRoutingDataSource 类型。 + if (ds instanceof DynamicRoutingDataSource) { + // 如果是 DynamicRoutingDataSource 类型,使用 DynamicDataSourceContextHolder 的 peek 方法获取当前数据源的标识并返回。 + return DynamicDataSourceContextHolder.peek(); + } + } + // 如果数据源不是 JdbcTemplate 类型或者其关联的 DataSource 不是 DynamicRoutingDataSource 类型, + // 则返回数据运行时上下文对象的标识。 + return runtime.getKey(); + } + + /** + * 该方法用于判断是否保留适配器。 + * + * @param runtime 数据运行时上下文对象,包含运行时的相关信息。 + * @param datasource 数据源对象,类型为 Object,可传入不同类型的数据源。 + * @return 如果需要保留适配器则返回 true,否则返回 false。 + */ + @Override + public boolean keepAdapter(DataRuntime runtime, Object datasource) { + // 判断传入的数据源对象是否为 JdbcTemplate 类型。 + if (datasource instanceof JdbcTemplate jdbc) { + // 如果是 JdbcTemplate 类型,通过 getDataSource 方法获取其关联的 DataSource 对象。 + DataSource ds = jdbc.getDataSource(); + // 判断获取的 DataSource 对象是否不是 DynamicRoutingDataSource 类型, + // 如果不是则返回 true,表示保留适配器;否则返回 false。 + return !(ds instanceof DynamicRoutingDataSource); + } + // 如果数据源不是 JdbcTemplate 类型,默认返回 true,表示保留适配器。 + return true; + } +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/constant/GenConstants.java b/ruoyi-generator/src/main/java/org/dromara/generator/constant/GenConstants.java new file mode 100644 index 0000000..b9888fb --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/constant/GenConstants.java @@ -0,0 +1,186 @@ +package org.dromara.generator.constant; + +/** + * 代码生成通用常量 + * + * @author ruoyi + */ +public interface GenConstants { + /** + * 单表(增删改查) + */ + String TPL_CRUD = "crud"; + + /** + * 树表(增删改查) + */ + String TPL_TREE = "tree"; + + /** + * 树编码字段 + */ + String TREE_CODE = "treeCode"; + + /** + * 树父编码字段 + */ + String TREE_PARENT_CODE = "treeParentCode"; + + /** + * 树名称字段 + */ + String TREE_NAME = "treeName"; + + /** + * 上级菜单ID字段 + */ + String PARENT_MENU_ID = "parentMenuId"; + + /** + * 上级菜单名称字段 + */ + String PARENT_MENU_NAME = "parentMenuName"; + + /** + * 数据库字符串类型 + */ + String[] COLUMNTYPE_STR = {"char", "varchar", "enum", "set", "nchar", "nvarchar", "varchar2", "nvarchar2"}; + + /** + * 数据库文本类型 + */ + String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext", "binary", "varbinary", "blob", + "ntext", "image", "bytea"}; + + /** + * 数据库时间类型 + */ + String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp", "year", "interval", + "smalldatetime", "datetime2", "datetimeoffset", "timestamptz"}; + + /** + * 数据库数字类型 + */ + String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "int2", "int4", "int8", "number", "integer", + "bit", "bigint", "float", "float4", "float8", "double", "decimal", "numeric", "real", "double precision", + "smallserial", "serial", "bigserial", "money", "smallmoney"}; + + /** + * BO对象 不需要添加字段 + */ + String[] COLUMNNAME_NOT_ADD = {"create_dept", "create_by", "create_time", "del_flag", "update_by", + "update_time", "version", "tenant_id"}; + + /** + * BO对象 不需要编辑字段 + */ + String[] COLUMNNAME_NOT_EDIT = {"create_dept", "create_by", "create_time", "del_flag", "update_by", + "update_time", "version", "tenant_id"}; + + /** + * VO对象 不需要返回字段 + */ + String[] COLUMNNAME_NOT_LIST = {"create_dept", "create_by", "create_time", "del_flag", "update_by", + "update_time", "version", "tenant_id"}; + + /** + * BO对象 不需要查询字段 + */ + String[] COLUMNNAME_NOT_QUERY = {"id", "create_dept", "create_by", "create_time", "del_flag", "update_by", + "update_time", "remark", "version", "tenant_id"}; + + /** + * Entity基类字段 + */ + String[] BASE_ENTITY = {"createDept", "createBy", "createTime", "updateBy", "updateTime", "tenantId"}; + + /** + * 文本框 + */ + String HTML_INPUT = "input"; + + /** + * 文本域 + */ + String HTML_TEXTAREA = "textarea"; + + /** + * 下拉框 + */ + String HTML_SELECT = "select"; + + /** + * 单选框 + */ + String HTML_RADIO = "radio"; + + /** + * 复选框 + */ + String HTML_CHECKBOX = "checkbox"; + + /** + * 日期控件 + */ + String HTML_DATETIME = "datetime"; + + /** + * 图片上传控件 + */ + String HTML_IMAGE_UPLOAD = "imageUpload"; + + /** + * 文件上传控件 + */ + String HTML_FILE_UPLOAD = "fileUpload"; + + /** + * 富文本控件 + */ + String HTML_EDITOR = "editor"; + + /** + * 字符串类型 + */ + String TYPE_STRING = "String"; + + /** + * 整型 + */ + String TYPE_INTEGER = "Integer"; + + /** + * 长整型 + */ + String TYPE_LONG = "Long"; + + /** + * 浮点型 + */ + String TYPE_DOUBLE = "Double"; + + /** + * 高精度计算类型 + */ + String TYPE_BIGDECIMAL = "BigDecimal"; + + /** + * 时间类型 + */ + String TYPE_DATE = "Date"; + + /** + * 模糊查询 + */ + String QUERY_LIKE = "LIKE"; + + /** + * 相等查询 + */ + String QUERY_EQ = "EQ"; + + /** + * 需要 + */ + String REQUIRE = "1"; +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/controller/GenController.java b/ruoyi-generator/src/main/java/org/dromara/generator/controller/GenController.java new file mode 100644 index 0000000..9b025aa --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/controller/GenController.java @@ -0,0 +1,324 @@ +package org.dromara.generator.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.io.IoUtil; +import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.generator.domain.GenTable; +import org.dromara.generator.domain.GenTableColumn; +import org.dromara.generator.service.IGenTableService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成 操作处理 + * + * @author Lion Li + */ +// @Validated 注解用于对方法参数进行验证,结合 Spring 的验证机制,确保传入的参数符合特定的约束条件。 +@Validated +// @RequiredArgsConstructor 是 Lombok 注解,它会自动生成一个包含所有 `final` 字段的构造函数, +// 方便依赖注入,这里用于注入 `genTableService`。 +@RequiredArgsConstructor +// @RestController 是 Spring 注解,表明这是一个 RESTful 风格的控制器,会将方法的返回值自动转换为 JSON 格式。 +@RestController +// @RequestMapping("/tool/gen") 注解指定了该控制器处理的请求路径前缀,所有请求路径都以 `/tool/gen` 开头。 +@RequestMapping("/tool/gen") +// 定义一个公共类 GenController,继承自 BaseController,用于处理代码生成相关的请求。 +public class GenController extends BaseController { + + // 定义一个 `final` 类型的私有成员变量 `genTableService`,用于调用代码生成表相关的业务逻辑。 + private final IGenTableService genTableService; + + /** + * 查询代码生成表列表 + * + * @param genTable 代码生成表实体,用于封装查询条件 + * @param pageQuery 分页查询对象,用于指定分页信息 + * @return 包含代码生成表列表的分页数据信息 + */ + // @SaCheckPermission("tool:gen:list") 是权限检查注解,确保只有拥有 `tool:gen:list` 权限的用户才能访问该接口。 + @SaCheckPermission("tool:gen:list") + // @GetMapping("/list") 注解指定该方法处理 `GET` 请求,请求路径为 `/tool/gen/list`。 + @GetMapping("/list") + public TableDataInfo genList(GenTable genTable, PageQuery pageQuery) { + // 调用 `genTableService` 的 `selectPageGenTableList` 方法,根据查询条件和分页信息查询代码生成表列表。 + return genTableService.selectPageGenTableList(genTable, pageQuery); + } + + /** + * 获取代码生成表详细信息 + * + * @param tableId 代码生成表的 ID + * @return 包含代码生成表信息、相关列信息和所有表信息的响应对象 + */ + // @SaCheckPermission("tool:gen:query") 注解进行权限检查,只有拥有 `tool:gen:query` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:query") + // @GetMapping(value = "/{tableId}") 注解处理 `GET` 请求,路径中的 `{tableId}` 是路径变量,用于传递代码生成表的 ID。 + @GetMapping(value = "/{tableId}") + public R> getInfo(@PathVariable Long tableId) { + // 根据表 ID 查询代码生成表信息。 + GenTable table = genTableService.selectGenTableById(tableId); + // 查询所有代码生成表信息。 + List tables = genTableService.selectGenTableAll(); + // 根据表 ID 查询代码生成表的列信息。 + List list = genTableService.selectGenTableColumnListByTableId(tableId); + // 创建一个 `Map` 对象,用于存储查询结果。 + Map map = new HashMap<>(3); + map.put("info", table); + map.put("rows", list); + map.put("tables", tables); + // 返回包含查询结果的响应对象。 + return R.ok(map); + } + + /** + * 查询数据库表列表 + * + * @param genTable 代码生成表实体,用于封装查询条件 + * @param pageQuery 分页查询对象,用于指定分页信息 + * @return 包含数据库表列表的分页数据信息 + */ + // 权限检查,只有拥有 `tool:gen:list` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:list") + // 处理 `GET` 请求,路径为 `/tool/gen/db/list`。 + @GetMapping("/db/list") + public TableDataInfo dataList(GenTable genTable, PageQuery pageQuery) { + // 调用 `genTableService` 的 `selectPageDbTableList` 方法,根据查询条件和分页信息查询数据库表列表。 + return genTableService.selectPageDbTableList(genTable, pageQuery); + } + + /** + * 查询代码生成表列列表 + * + * @param tableId 代码生成表的 ID + * @return 包含代码生成表列列表的分页数据信息 + */ + // 权限检查,只有拥有 `tool:gen:list` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:list") + // 处理 `GET` 请求,路径中的 `{tableId}` 是路径变量,用于传递代码生成表的 ID。 + @GetMapping(value = "/column/{tableId}") + public TableDataInfo columnList(@PathVariable("tableId") Long tableId) { + // 创建一个 `TableDataInfo` 对象,用于存储列列表信息。 + TableDataInfo dataInfo = new TableDataInfo<>(); + // 根据表 ID 查询代码生成表的列信息。 + List list = genTableService.selectGenTableColumnListByTableId(tableId); + dataInfo.setRows(list); + dataInfo.setTotal(list.size()); + // 返回包含列列表信息的分页数据信息。 + return dataInfo; + } + + /** + * 导入表结构 + * + * @param tables 表名列表,多个表名用逗号分隔 + * @param dataName 数据源名称 + * @return 操作结果响应对象 + */ + // 权限检查,只有拥有 `tool:gen:import` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:import") + // @Log 注解用于记录操作日志,这里记录的是代码生成相关的导入操作。 + @Log(title = "代码生成", businessType = BusinessType.IMPORT) + // 处理 `POST` 请求,路径为 `/tool/gen/importTable`。 + @PostMapping("/importTable") + public R importTableSave(String tables, String dataName) { + // 将表名列表字符串转换为字符串数组。 + String[] tableNames = Convert.toStrArray(tables); + // 根据表名和数据源名称查询表信息。 + List tableList = genTableService.selectDbTableListByNames(tableNames, dataName); + // 导入代码生成表信息。 + genTableService.importGenTable(tableList, dataName); + // 返回操作成功的响应对象。 + return R.ok(); + } + + /** + * 修改代码生成表 + * + * @param genTable 代码生成表实体,包含修改后的信息 + * @return 操作结果响应对象 + */ + // 权限检查,只有拥有 `tool:gen:edit` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:edit") + // 记录操作日志,这里记录的是代码生成相关的更新操作。 + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + // 处理 `PUT` 请求,路径为 `/tool/gen`。 + @PutMapping + public R editSave(@Validated @RequestBody GenTable genTable) { + // 验证修改信息的合法性。 + genTableService.validateEdit(genTable); + // 更新代码生成表信息。 + genTableService.updateGenTable(genTable); + // 返回操作成功的响应对象。 + return R.ok(); + } + + /** + * 删除代码生成表 + * + * @param tableIds 代码生成表的 ID 数组 + * @return 操作结果响应对象 + */ + // 权限检查,只有拥有 `tool:gen:remove` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:remove") + // 记录操作日志,这里记录的是代码生成相关的删除操作。 + @Log(title = "代码生成", businessType = BusinessType.DELETE) + // 处理 `DELETE` 请求,路径中的 `{tableIds}` 是路径变量,用于传递多个表 ID。 + @DeleteMapping("/{tableIds}") + public R remove(@PathVariable Long[] tableIds) { + // 根据表 ID 数组删除代码生成表信息。 + genTableService.deleteGenTableByIds(tableIds); + // 返回操作成功的响应对象。 + return R.ok(); + } + + /** + * 预览代码生成结果 + * + * @param tableId 代码生成表的 ID + * @return 包含代码生成预览结果的响应对象 + * @throws IOException 可能抛出的输入输出异常 + */ + // 权限检查,只有拥有 `tool:gen:preview` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:preview") + // 处理 `GET` 请求,路径中的 `{tableId}` 是路径变量,用于传递代码生成表的 ID。 + @GetMapping("/preview/{tableId}") + public R> preview(@PathVariable("tableId") Long tableId) throws IOException { + // 根据表 ID 预览代码生成结果。 + Map dataMap = genTableService.previewCode(tableId); + // 返回包含预览结果的响应对象。 + return R.ok(dataMap); + } + + /** + * 下载代码生成文件 + * + * @param response 响应对象,用于返回文件流 + * @param tableId 代码生成表的 ID + * @throws IOException 可能抛出的输入输出异常 + */ + // 权限检查,只有拥有 `tool:gen:code` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:code") + // 记录操作日志,这里记录的是代码生成相关的代码下载操作。 + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + // 处理 `GET` 请求,路径中的 `{tableId}` 是路径变量,用于传递代码生成表的 ID。 + @GetMapping("/download/{tableId}") + public void download(HttpServletResponse response, @PathVariable("tableId") Long tableId) throws IOException { + // 根据表 ID 下载代码生成文件的字节数据。 + byte[] data = genTableService.downloadCode(tableId); + // 调用 `genCode` 方法处理文件下载响应。 + genCode(response, data); + } + + /** + * 生成代码 + * + * @param tableId 代码生成表的 ID + * @return 操作结果响应对象 + */ + // 权限检查,只有拥有 `tool:gen:code` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:code") + // 记录操作日志,这里记录的是代码生成相关的代码生成操作。 + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + // 处理 `GET` 请求,路径中的 `{tableId}` 是路径变量,用于传递代码生成表的 ID。 + @GetMapping("/genCode/{tableId}") + public R genCode(@PathVariable("tableId") Long tableId) { + // 根据表 ID 生成代码。 + genTableService.generatorCode(tableId); + // 返回操作成功的响应对象。 + return R.ok(); + } + + /** + * 同步数据库表结构 + * + * @param tableId 代码生成表的 ID + * @return 操作结果响应对象 + */ + // 权限检查,只有拥有 `tool:gen:edit` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:edit") + // 记录操作日志,这里记录的是代码生成相关的同步数据库操作。 + @Log(title = "代码生成", businessType = BusinessType.UPDATE) + // 处理 `GET` 请求,路径中的 `{tableId}` 是路径变量,用于传递代码生成表的 ID。 + @GetMapping("/synchDb/{tableId}") + public R synchDb(@PathVariable("tableId") Long tableId) { + // 根据表 ID 同步数据库表结构。 + genTableService.synchDb(tableId); + // 返回操作成功的响应对象。 + return R.ok(); + } + + /** + * 批量生成代码 + * + * @param response 响应对象,用于返回文件流 + * @param tableIdStr 表 ID 字符串,多个表 ID 用逗号分隔 + * @throws IOException 可能抛出的输入输出异常 + */ + // 权限检查,只有拥有 `tool:gen:code` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:code") + // 记录操作日志,这里记录的是代码生成相关的批量代码生成操作。 + @Log(title = "代码生成", businessType = BusinessType.GENCODE) + // 处理 `GET` 请求,路径为 `/tool/gen/batchGenCode`。 + @GetMapping("/batchGenCode") + public void batchGenCode(HttpServletResponse response, String tableIdStr) throws IOException { + // 将表 ID 字符串转换为字符串数组。 + String[] tableIds = Convert.toStrArray(tableIdStr); + // 根据表 ID 数组下载代码生成文件的字节数据。 + byte[] data = genTableService.downloadCode(tableIds); + // 调用 `genCode` 方法处理文件下载响应。 + genCode(response, data); + } + + /** + * 处理代码下载响应 + * + * @param response 响应对象,用于返回文件流 + * @param data 代码生成文件的字节数据 + * @throws IOException 可能抛出的输入输出异常 + */ + private void genCode(HttpServletResponse response, byte[] data) throws IOException { + // 重置响应对象的状态。 + response.reset(); + // 添加跨域请求头,允许所有来源访问。 + response.addHeader("Access-Control-Allow-Origin", "*"); + // 暴露 `Content-Disposition` 头,允许客户端访问。 + response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); + // 设置响应头,指定文件下载的文件名。 + response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); + // 添加响应头,指定文件的长度。 + response.addHeader("Content-Length", "" + data.length); + // 设置响应内容类型为二进制流。 + response.setContentType("application/octet-stream; charset=UTF-8"); + // 将字节数据写入响应输出流。 + IoUtil.write(response.getOutputStream(), false, data); + } + + /** + * 获取当前数据源名称列表 + * + * @return 包含数据源名称列表的响应对象 + */ + // 权限检查,只有拥有 `tool:gen:list` 权限的用户才能访问。 + @SaCheckPermission("tool:gen:list") + // 处理 `GET` 请求,路径为 `/tool/gen/getDataNames`。 + @GetMapping(value = "/getDataNames") + public R getCurrentDataSourceNameList() { + // 调用 `DataBaseHelper` 的 `getDataSourceNameList` 方法获取数据源名称列表。 + return R.ok(DataBaseHelper.getDataSourceNameList()); + } +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTable.java b/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTable.java new file mode 100644 index 0000000..65af058 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTable.java @@ -0,0 +1,215 @@ +package org.dromara.generator.domain; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.generator.constant.GenConstants; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * 业务表 gen_table + * + * @author Lion Li + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("gen_table") +public class GenTable extends BaseEntity { + + /** + * 编号 + */ + @TableId(value = "table_id") + private Long tableId; + + /** + * 数据源名称 + */ + @NotBlank(message = "数据源名称不能为空") + private String dataName; + + /** + * 表名称 + */ + @NotBlank(message = "表名称不能为空") + private String tableName; + + /** + * 表描述 + */ + @NotBlank(message = "表描述不能为空") + private String tableComment; + + /** + * 关联父表的表名 + */ + private String subTableName; + + /** + * 本表关联父表的外键名 + */ + private String subTableFkName; + + /** + * 实体类名称(首字母大写) + */ + @NotBlank(message = "实体类名称不能为空") + private String className; + + /** + * 使用的模板(crud单表操作 tree树表操作 sub主子表操作) + */ + private String tplCategory; + + /** + * 生成包路径 + */ + @NotBlank(message = "生成包路径不能为空") + private String packageName; + + /** + * 生成模块名 + */ + @NotBlank(message = "生成模块名不能为空") + private String moduleName; + + /** + * 生成业务名 + */ + @NotBlank(message = "生成业务名不能为空") + private String businessName; + + /** + * 生成功能名 + */ + @NotBlank(message = "生成功能名不能为空") + private String functionName; + + /** + * 生成作者 + */ + @NotBlank(message = "作者不能为空") + private String functionAuthor; + + /** + * 生成代码方式(0zip压缩包 1自定义路径) + */ + private String genType; + + /** + * 生成路径(不填默认项目路径) + */ + @TableField(updateStrategy = FieldStrategy.NOT_EMPTY) + private String genPath; + + /** + * 主键信息 + */ + @TableField(exist = false) + private GenTableColumn pkColumn; + + /** + * 表列信息 + */ + @Valid + @TableField(exist = false) + private List columns; + + /** + * 其它生成选项 + */ + private String options; + + /** + * 备注 + */ + private String remark; + + /** + * 树编码字段 + */ + @TableField(exist = false) + private String treeCode; + + /** + * 树父编码字段 + */ + @TableField(exist = false) + private String treeParentCode; + + /** + * 树名称字段 + */ + @TableField(exist = false) + private String treeName; + + /* + * 菜单id列表 + */ + @TableField(exist = false) + private List menuIds; + + /** + * 上级菜单ID字段 + */ + @TableField(exist = false) + private Long parentMenuId; + + /** + * 上级菜单名称字段 + */ + // @TableField(exist = false) 是 MyBatis-Plus 框架的注解, +// 表示该属性在数据库表中不存在,不会与数据库表中的字段进行映射。 +// 这里定义了一个 String 类型的私有属性 parentMenuName,用于存储父菜单名称, +// 它不对应数据库表中的字段。 + @TableField(exist = false) + private String parentMenuName; + + // 定义一个公共方法 isTree,用于判断当前对象是否属于树类型。 +// 该方法调用了另一个静态的 isTree 方法,并传入当前对象的 tplCategory 属性值。 + public boolean isTree() { + return isTree(this.tplCategory); + } + + // 定义一个静态的公共方法 isTree,用于判断给定的 tplCategory 是否表示树类型。 +// tplCategory 是一个字符串参数,代表模板类别。 +// 该方法通过判断 tplCategory 是否不为 null 且与 GenConstants.TPL_TREE 相等来确定是否为树类型。 + public static boolean isTree(String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); + } + + // 定义一个公共方法 isCrud,用于判断当前对象是否属于 CRUD 类型。 +// 该方法调用了另一个静态的 isCrud 方法,并传入当前对象的 tplCategory 属性值。 + public boolean isCrud() { + return isCrud(this.tplCategory); + } + + // 定义一个静态的公共方法 isCrud,用于判断给定的 tplCategory 是否表示 CRUD 类型。 +// tplCategory 是一个字符串参数,代表模板类别。 +// 该方法通过判断 tplCategory 是否不为 null 且与 GenConstants.TPL_CRUD 相等来确定是否为 CRUD 类型。 + public static boolean isCrud(String tplCategory) { + return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); + } + + // 定义一个公共方法 isSuperColumn,用于判断给定的 javaField 是否为超级列。 +// 该方法调用了另一个静态的 isSuperColumn 方法,并传入当前对象的 tplCategory 属性值和 javaField 参数。 + public boolean isSuperColumn(String javaField) { + return isSuperColumn(this.tplCategory, javaField); + } + + // 定义一个静态的公共方法 isSuperColumn,用于判断给定的 tplCategory 和 javaField 是否表示超级列。 +// tplCategory 是一个字符串参数,代表模板类别;javaField 是一个字符串参数,代表 Java 字段名。 +// 该方法通过判断 javaField 是否忽略大小写地等于 GenConstants.BASE_ENTITY 来确定是否为超级列。 + public static boolean isSuperColumn(String tplCategory, String javaField) { + return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); + } +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTableColumn.java b/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTableColumn.java new file mode 100644 index 0000000..040fd04 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/domain/GenTableColumn.java @@ -0,0 +1,276 @@ +package org.dromara.generator.domain; + +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.ibatis.type.JdbcType; + +import jakarta.validation.constraints.NotBlank; + +/** + * 代码生成业务字段表 gen_table_column + * + * @author Lion Li + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("gen_table_column") +public class GenTableColumn extends BaseEntity { + + /** + * 编号 + */ + @TableId(value = "column_id") + private Long columnId; + + /** + * 归属表编号 + */ + private Long tableId; + + /** + * 列名称 + */ + private String columnName; + + /** + * 列描述 + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String columnComment; + + /** + * 列类型 + */ + private String columnType; + + /** + * JAVA类型 + */ + private String javaType; + + /** + * JAVA字段名 + */ + @NotBlank(message = "Java属性不能为空") + private String javaField; + + /** + * 是否主键(1是) + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String isPk; + + /** + * 是否自增(1是) + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String isIncrement; + + /** + * 是否必填(1是) + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String isRequired; + + /** + * 是否为插入字段(1是) + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String isInsert; + + /** + * 是否编辑字段(1是) + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String isEdit; + + /** + * 是否列表字段(1是) + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String isList; + + /** + * 是否查询字段(1是) + */ + @TableField(updateStrategy = FieldStrategy.ALWAYS, jdbcType = JdbcType.VARCHAR) + private String isQuery; + + /** + * 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) + */ + private String queryType; + + /** + * 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) + */ + private String htmlType; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 排序 + */ + // 定义一个 Integer 类型的私有属性 sort,用于存储排序信息。 +// 具体用途可能是在某些业务逻辑中对相关数据进行排序,这里没有更多上下文,仅作为一个属性存在。 + private Integer sort; + + // 定义一个公共方法 getCapJavaField,用于获取首字母大写的 Java 字段名。 +// 该方法调用了工具类 StringUtils 的 capitalize 方法,将实例的 javaField 属性值的首字母转换为大写后返回。 +// 假设 javaField 是该类的另一个属性,存储着 Java 字段名。 + public String getCapJavaField() { + return StringUtils.capitalize(javaField); + } + + // 定义一个公共方法 isPk,用于判断当前对象的属性是否为主键。 +// 该方法调用了另一个重载的 isPk 方法,并传入当前对象的 isPk 属性值,以进行具体的判断逻辑。 +// 这里存在一定的代码逻辑问题,方法名和属性名相同,可能会造成混淆。 + public boolean isPk() { + return isPk(this.isPk); + } + + // 定义一个重载的公共方法 isPk,用于判断给定的字符串参数 isPk 是否表示主键。 +// 该方法通过判断 isPk 是否不为 null 且等于字符串 "1" 来确定是否为主键,返回相应的布尔值。 + public boolean isPk(String isPk) { + return isPk != null && StringUtils.equals("1", isPk); + } + + // 定义一个公共方法 isIncrement,用于判断当前对象的属性是否为自增属性。 +// 该方法调用了另一个重载的 isIncrement 方法,并传入当前对象的 isIncrement 属性值,以进行具体的判断逻辑。 +// 同样存在方法名和属性名相同的问题,可能导致混淆。 + public boolean isIncrement() { + return isIncrement(this.isIncrement); + } + + // 定义一个重载的公共方法 isIncrement,用于判断给定的字符串参数 isIncrement 是否表示自增属性。 +// 该方法通过判断 isIncrement 是否不为 null 且等于字符串 "1" 来确定是否为自增属性,返回相应的布尔值。 + public boolean isIncrement(String isIncrement) { + return isIncrement != null && StringUtils.equals("1", isIncrement); + } + + // 定义一个公共方法 isRequired,用于判断当前对象的属性是否为必填属性。 +// 该方法调用了另一个重载的 isRequired 方法,并传入当前对象的 isRequired 属性值,以进行具体的判断逻辑。 +// 存在与前面类似的方法名和属性名相同的问题。 + public boolean isRequired() { + return isRequired(this.isRequired); + } + + // 定义一个重载的公共方法 isRequired,用于判断给定的字符串参数 isRequired 是否表示必填属性。 +// 该方法通过判断 isRequired 是否不为 null 且等于字符串 "1" 来确定是否为必填属性,返回相应的布尔值。 + public boolean isRequired(String isRequired) { + return isRequired != null && StringUtils.equals("1", isRequired); + } + + // 定义一个公共方法 isInsert,用于判断当前对象的属性是否可用于插入操作。 +// 该方法调用了另一个重载的 isInsert 方法,并传入当前对象的 isInsert 属性值,以进行具体的判断逻辑。 +// 存在方法名和属性名相同的问题。 + public boolean isInsert() { + return isInsert(this.isInsert); + } + + // 定义一个重载的公共方法 isInsert,用于判断给定的字符串参数 isInsert 是否表示可用于插入操作。 +// 该方法通过判断 isInsert 是否不为 null 且等于字符串 "1" 来确定是否可用于插入操作,返回相应的布尔值。 + public boolean isInsert(String isInsert) { + return isInsert != null && StringUtils.equals("1", isInsert); + } + + // 定义一个公共方法 isEdit,用于判断当前对象的属性是否可用于编辑操作。 +// 该方法调用了另一个重载的 isEdit 方法,并传入当前对象的 isEdit 属性值,以进行具体的判断逻辑。 +// 存在方法名和属性名相同的问题。 + public boolean isEdit() { + return isEdit(this.isEdit); + } + + // 定义一个重载的公共方法 isEdit,用于判断给定的字符串参数 isEdit 是否表示可用于编辑操作。 +// 该方法通过判断 isEdit 是否不为 null 且等于字符串 "1" 来确定是否可用于编辑操作,返回相应的布尔值。 + public boolean isEdit(String isEdit) { + return isEdit != null && StringUtils.equals("1", isEdit); + } + + // 定义一个公共方法 isList,用于判断当前对象的属性是否可用于列表展示操作。 +// 该方法调用了另一个重载的 isList 方法,并传入当前对象的 isList 属性值,以进行具体的判断逻辑。 +// 存在方法名和属性名相同的问题。 + public boolean isList() { + return isList(this.isList); + } + + // 定义一个重载的公共方法 isList,用于判断给定的字符串参数 isList 是否表示可用于列表展示操作。 +// 该方法通过判断 isList 是否不为 null 且等于字符串 "1" 来确定是否可用于列表展示操作,返回相应的布尔值。 + public boolean isList(String isList) { + return isList != null && StringUtils.equals("1", isList); + } + + // 定义一个公共方法 isQuery,用于判断当前对象的属性是否可用于查询操作。 +// 该方法调用了另一个重载的 isQuery 方法,并传入当前对象的 isQuery 属性值,以进行具体的判断逻辑。 +// 存在方法名和属性名相同的问题。 + public boolean isQuery() { + return isQuery(this.isQuery); + } + + // 定义一个重载的公共方法 isQuery,用于判断给定的字符串参数 isQuery 是否表示可用于查询操作。 +// 该方法通过判断 isQuery 是否不为 null 且等于字符串 "1" 来确定是否可用于查询操作,返回相应的布尔值。 + public boolean isQuery(String isQuery) { + return isQuery != null && StringUtils.equals("1", isQuery); + } + + // 定义一个公共方法 isSuperColumn,用于判断当前对象的属性是否为超级列。 +// 该方法调用了另一个静态的 isSuperColumn 方法,并传入当前对象的 javaField 属性值,以进行具体的判断逻辑。 + public boolean isSuperColumn() { + return isSuperColumn(this.javaField); + } + + // 定义一个静态的公共方法 isSuperColumn,用于判断给定的 Java 字段名 javaField 是否为超级列。 +// 该方法通过调用 StringUtils 的 equalsAnyIgnoreCase 方法,判断 javaField 是否忽略大小写地等于指定的一些字段名(来自 BaseEntity 和 TreeEntity 的部分字段),返回相应的布尔值。 + public static boolean isSuperColumn(String javaField) { + return StringUtils.equalsAnyIgnoreCase(javaField, + // BaseEntity + "createBy", "createTime", "updateBy", "updateTime", + // TreeEntity + "parentName", "parentId"); + } + + // 定义一个公共方法 isUsableColumn,用于判断当前对象的属性是否为可用列。 +// 该方法调用了另一个静态的 isUsableColumn 方法,并传入当前对象的 javaField 属性值,以进行具体的判断逻辑。 + public boolean isUsableColumn() { + return isUsableColumn(javaField); + } + + // 定义一个静态的公共方法 isUsableColumn,用于判断给定的 Java 字段名 javaField 是否为可用列。 +// 该方法通过调用 StringUtils 的 equalsAnyIgnoreCase 方法,判断 javaField 是否忽略大小写地等于指定的一些字段名("parentId", "orderNum", "remark"),返回相应的布尔值。 +// 注释中提到这些字段是在生成页面时需要用到且不能忽略的字段,作为白名单存在。 + public static boolean isUsableColumn(String javaField) { + // isSuperColumn()中的名单用于避免生成多余Domain属性,若某些属性在生成页面时需要用到不能忽略,则放在此处白名单 + return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); + } + + // 定义一个公共方法 readConverterExp,用于从列注释中读取转换表达式。 +// 该方法首先使用 StringUtils 的 substringBetween 方法从 columnComment 属性值中提取括号内的内容作为备注 remarks。 +// 然后创建一个 StringBuffer 对象 sb,若 remarks 不为空,则将 remarks 按空格分割后,对每个值进行处理, +// 将值的第一个字符和剩余字符分别提取出来,组成键值对的形式添加到 sb 中,最后删除 sb 末尾的分隔符并返回结果。 +// 若 remarks 为空,则直接返回 columnComment 属性值。 + public String readConverterExp() { + String remarks = StringUtils.substringBetween(this.columnComment, "(", ")"); + StringBuffer sb = new StringBuffer(); + if (StringUtils.isNotEmpty(remarks)) { + for (String value : remarks.split(" ")) { + if (StringUtils.isNotEmpty(value)) { + Object startStr = value.subSequence(0, 1); + String endStr = value.substring(1); + sb.append(StringUtils.EMPTY).append(startStr).append("=").append(endStr).append(StringUtils.SEPARATOR); + } + } + return sb.deleteCharAt(sb.length() - 1).toString(); + } else { + return this.columnComment; + } + } +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java b/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java new file mode 100644 index 0000000..ed8ed20 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableColumnMapper.java @@ -0,0 +1,15 @@ +package org.dromara.generator.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.generator.domain.GenTableColumn; + +/** + * 业务字段 数据层 + * + * @author Lion Li + */ +@InterceptorIgnore(dataPermission = "true", tenantLine = "true") +public interface GenTableColumnMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableMapper.java b/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableMapper.java new file mode 100644 index 0000000..1798b4b --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/mapper/GenTableMapper.java @@ -0,0 +1,51 @@ +package org.dromara.generator.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.generator.domain.GenTable; + +import java.util.List; + +/** + * 业务 数据层 + * + * @author Lion Li + */ +@InterceptorIgnore(dataPermission = "true", tenantLine = "true") +public interface GenTableMapper extends BaseMapperPlus { + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + List selectGenTableAll(); + + /** + * 查询表ID业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + GenTable selectGenTableById(Long id); + + /** + * 查询表名称业务信息 + * + * @param tableName 表名称 + * @return 业务信息 + */ + GenTable selectGenTableByName(String tableName); + + /** + * 查询指定数据源下的所有表名列表 + * + * @param dataName 数据源名称,用于选择不同的数据源 + * @return 当前数据库中的表名列表 + * + * @DS("") 使用默认数据源执行查询操作 + */ + @DS("") + List selectTableNameList(String dataName); +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java new file mode 100644 index 0000000..6ccb2be --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/service/GenTableServiceImpl.java @@ -0,0 +1,431 @@ +package org.dromara.generator.service; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.dynamic.datasource.annotation.DSTransactional; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.anyline.metadata.Column; +import org.anyline.metadata.Table; +import org.anyline.proxy.ServiceProxy; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import org.dromara.common.core.constant.Constants; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.file.FileUtils; +import org.dromara.common.json.utils.JsonUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.generator.constant.GenConstants; +import org.dromara.generator.domain.GenTable; +import org.dromara.generator.domain.GenTableColumn; +import org.dromara.generator.mapper.GenTableColumnMapper; +import org.dromara.generator.mapper.GenTableMapper; +import org.dromara.generator.util.GenUtils; +import org.dromara.generator.util.VelocityInitializer; +import org.dromara.generator.util.VelocityUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.nio.charset.StandardCharsets; +import java.util.*; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * 业务 服务层实现 + * + * @author Lion Li + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class GenTableServiceImpl implements IGenTableService { + private final GenTableMapper baseMapper; + /** + * + */ + private final GenTableColumnMapper genTableColumnMapper; + private final IdentifierGenerator identifierGenerator; + private static final String[] TABLE_IGNORE = new String[]{"sj_", "flow_", "gen_"}; + @Override + public List selectGenTableColumnListByTableId(Long tableId) { + return genTableColumnMapper.selectList(new LambdaQueryWrapper() + .eq(GenTableColumn::getTableId, tableId) + .orderByAsc(GenTableColumn::getSort)); + } + @Override + public GenTable selectGenTableById(Long id) { + GenTable genTable = baseMapper.selectGenTableById(id); + setTableFromOptions(genTable); + return genTable; + } + @Override + public TableDataInfo selectPageGenTableList(GenTable genTable, PageQuery pageQuery) { + Page page = baseMapper.selectPage(pageQuery.build(), this.buildGenTableQueryWrapper(genTable)); + return TableDataInfo.build(page); + } + private QueryWrapper buildGenTableQueryWrapper(GenTable genTable) { + Map params = genTable.getParams(); + QueryWrapper wrapper = Wrappers.query(); + wrapper + .eq(StringUtils.isNotEmpty(genTable.getDataName()), "data_name", genTable.getDataName()) + .like(StringUtils.isNotBlank(genTable.getTableName()), "lower(table_name)", StringUtils.lowerCase(genTable.getTableName())) + .like(StringUtils.isNotBlank(genTable.getTableComment()), "lower(table_comment)", StringUtils.lowerCase(genTable.getTableComment())) + .between(params.get("beginTime") != null && params.get("endTime") != null, + "create_time", params.get("beginTime"), params.get("endTime")) + .orderByDesc("update_time"); + return wrapper; + } + @DS("#genTable.dataName") + @Override + public TableDataInfo selectPageDbTableList(GenTable genTable, PageQuery pageQuery) { + String tableName = genTable.getTableName(); + String tableComment = genTable.getTableComment(); + LinkedHashMap> tablesMap = ServiceProxy.metadata().tables(); + if (CollUtil.isEmpty(tablesMap)) { + return TableDataInfo.build(); + } + List tableNames = baseMapper.selectTableNameList(genTable.getDataName()); + String[] tableArrays; + if (CollUtil.isNotEmpty(tableNames)) { + tableArrays = tableNames.toArray(new String[0]); + } else { + tableArrays = new String[0]; + } + List tables = tablesMap.values().stream() + .filter(x -> !StringUtils.startWithAnyIgnoreCase(x.getName(), TABLE_IGNORE)) + .filter(x -> { + if (CollUtil.isEmpty(tableNames)) { + return true; + } + return !StringUtils.equalsAnyIgnoreCase(x.getName(), tableArrays); + }) + .filter(x -> { + boolean nameMatches = true; + boolean commentMatches = true; + if (StringUtils.isNotBlank(tableName)) { + nameMatches = StringUtils.containsIgnoreCase(x.getName(), tableName); + } + if (StringUtils.isNotBlank(tableComment)) { + commentMatches = StringUtils.containsIgnoreCase(x.getComment(), tableComment); + } + return nameMatches && commentMatches; + }) + .map(x -> { + GenTable gen = new GenTable(); + gen.setTableName(x.getName()); + gen.setTableComment(x.getComment()); + gen.setCreateTime(ObjectUtil.defaultIfNull(x.getCreateTime(), new Date())); + gen.setUpdateTime(x.getUpdateTime()); + return gen; + }).sorted(Comparator.comparing(GenTable::getCreateTime).reversed()) + .toList(); + IPage page = pageQuery.build(); + page.setTotal(tables.size()); + page.setRecords(CollUtil.page((int) page.getCurrent() - 1, (int) page.getSize(), tables)); + return TableDataInfo.build(page); + } + @DS("#dataName") + @Override + public List selectDbTableListByNames(String[] tableNames, String dataName) { + Set tableNameSet = new HashSet<>(List.of(tableNames)); + LinkedHashMap> tablesMap = ServiceProxy.metadata().tables(); + if (CollUtil.isEmpty(tablesMap)) { + return new ArrayList<>(); + } + List> tableList = tablesMap.values().stream() + .filter(x -> !StringUtils.startWithAnyIgnoreCase(x.getName(), TABLE_IGNORE)) + .filter(x -> tableNameSet.contains(x.getName())).toList(); + if (CollUtil.isEmpty(tableList)) { + return new ArrayList<>(); + } + return tableList.stream().map(x -> { + GenTable gen = new GenTable(); + gen.setDataName(dataName); + gen.setTableName(x.getName()); + gen.setTableComment(x.getComment()); + gen.setCreateTime(x.getCreateTime()); + gen.setUpdateTime(x.getUpdateTime()); + return gen; + }).toList(); + } + @Override + public List selectGenTableAll() { + return baseMapper.selectGenTableAll(); + } + @Transactional(rollbackFor = Exception.class) + @Override + public void updateGenTable(GenTable genTable) { + String options = JsonUtils.toJsonString(genTable.getParams()); + genTable.setOptions(options); + int row = baseMapper.updateById(genTable); + if (row > 0) { + for (GenTableColumn cenTableColumn : genTable.getColumns()) { + genTableColumnMapper.updateById(cenTableColumn); + } + } + } + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteGenTableByIds(Long[] tableIds) { + List ids = Arrays.asList(tableIds); + baseMapper.deleteByIds(ids); + genTableColumnMapper.delete(new LambdaQueryWrapper().in(GenTableColumn::getTableId, ids)); + } + @DSTransactional + @Override + public void importGenTable(List tableList, String dataName) { + try { + for (GenTable table : tableList) { + String tableName = table.getTableName(); + GenUtils.initTable(table); + table.setDataName(dataName); + int row = baseMapper.insert(table); + if (row > 0) { + List genTableColumns = SpringUtils.getAopProxy(this).selectDbTableColumnsByName(tableName, dataName); + List saveColumns = new ArrayList<>(); + for (GenTableColumn column : genTableColumns) { + GenUtils.initColumnField(column, table); + saveColumns.add(column); + } + if (CollUtil.isNotEmpty(saveColumns)) { + genTableColumnMapper.insertBatch(saveColumns); + } + } + } + } catch (Exception e) { + throw new ServiceException("导入失败:" + e.getMessage()); + } + } + @DS("#dataName") + @Override + public List selectDbTableColumnsByName(String tableName, String dataName) { + Table table = ServiceProxy.metadata().table(tableName); + if (ObjectUtil.isNull(table)) { + return new ArrayList<>(); + } + LinkedHashMap columns = table.getColumns(); + List tableColumns = new ArrayList<>(); + columns.forEach((columnName, column) -> { + GenTableColumn tableColumn = new GenTableColumn(); + tableColumn.setIsPk(String.valueOf(column.isPrimaryKey())); + tableColumn.setColumnName(column.getName()); + tableColumn.setColumnComment(column.getComment()); + tableColumn.setColumnType(column.getOriginType().toLowerCase()); + tableColumn.setSort(column.getPosition()); + tableColumn.setIsRequired(column.isNullable() == 0 ? "1" : "0"); + tableColumn.setIsIncrement(column.isAutoIncrement() == -1 ? "0" : "1"); + tableColumns.add(tableColumn); + }); + return tableColumns; + } + @Override + public Map previewCode(Long tableId) { + Map dataMap = new LinkedHashMap<>(); + GenTable table = baseMapper.selectGenTableById(tableId); + List menuIds = new ArrayList<>(); + for (int i = 0; i < 6; i++) { + menuIds.add(identifierGenerator.nextId(null).longValue()); + } + table.setMenuIds(menuIds); + setPkColumn(table); + VelocityInitializer.initVelocity(); + VelocityContext context = VelocityUtils.prepareContext(table); + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) { + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + dataMap.put(template, sw.toString()); + } + return dataMap; + } + @Override + public byte[] downloadCode(Long tableId) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + generatorCode(tableId, zip); + IoUtil.close(zip); + return outputStream.toByteArray(); + } + @Override + public void generatorCode(Long tableId) { + GenTable table = baseMapper.selectGenTableById(tableId); + setPkColumn(table); + VelocityInitializer.initVelocity(); + VelocityContext context = VelocityUtils.prepareContext(table); + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) { + if (!StringUtils.containsAny(template, "sql.vm", "api.ts.vm", "types.ts.vm", "index.vue.vm", "index-tree.vue.vm")) { + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try { + String path = getGenPath(table, template); + FileUtils.writeUtf8String(sw.toString(), path); + } catch (Exception e) { + throw new ServiceException("渲染模板失败,表名:" + table.getTableName()); + } + } + } + } + @DSTransactional + @Override + public void synchDb(Long tableId) { + GenTable table = baseMapper.selectGenTableById(tableId); + List tableColumns = table.getColumns(); + Map tableColumnMap = StreamUtils.toIdentityMap(tableColumns, GenTableColumn::getColumnName); + List dbTableColumns = SpringUtils.getAopProxy(this).selectDbTableColumnsByName(table.getTableName(), table.getDataName()); + if (CollUtil.isEmpty(dbTableColumns)) { + throw new ServiceException("同步数据失败,原表结构不存在"); + } + List dbTableColumnNames = StreamUtils.toList(dbTableColumns, GenTableColumn::getColumnName); + List saveColumns = new ArrayList<>(); + dbTableColumns.forEach(column -> { + GenUtils.initColumnField(column, table); + if (tableColumnMap.containsKey(column.getColumnName())) { + GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); + column.setColumnId(prevColumn.getColumnId()); + if (column.isList()) { + column.setDictType(prevColumn.getDictType()); + column.setQueryType(prevColumn.getQueryType()); + } + if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() + && (column.isInsert() || column.isEdit()) + && ((column.isUsableColumn()) || (!column.isSuperColumn()))) { + column.setIsRequired(prevColumn.getIsRequired()); + column.setHtmlType(prevColumn.getHtmlType()); + } + } + saveColumns.add(column); + }); + if (CollUtil.isNotEmpty(saveColumns)) { + genTableColumnMapper.insertOrUpdateBatch(saveColumns); + } + List delColumns = StreamUtils.filter(tableColumns, column -> !dbTableColumnNames.contains(column.getColumnName())); + if (CollUtil.isNotEmpty(delColumns)) { + List ids = StreamUtils.toList(delColumns, GenTableColumn::getColumnId); + if (CollUtil.isNotEmpty(ids)) { + genTableColumnMapper.deleteByIds(ids); + } + } + } + @Override + public byte[] downloadCode(String[] tableIds) { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(outputStream); + for (String tableId : tableIds) { + generatorCode(Long.parseLong(tableId), zip); + } + IoUtil.close(zip); + return outputStream.toByteArray(); + } + private void generatorCode(Long tableId, ZipOutputStream zip) { + GenTable table = baseMapper.selectGenTableById(tableId); + List menuIds = new ArrayList<>(); + for (int i = 0; i < 6; i++) { + menuIds.add(identifierGenerator.nextId(null).longValue()); + } + table.setMenuIds(menuIds); + setPkColumn(table); + VelocityInitializer.initVelocity(); + VelocityContext context = VelocityUtils.prepareContext(table); + List templates = VelocityUtils.getTemplateList(table.getTplCategory()); + for (String template : templates) { + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, Constants.UTF8); + tpl.merge(context, sw); + try { + zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); + IoUtil.write(zip, StandardCharsets.UTF_8, false, sw.toString()); + IoUtil.close(sw); + zip.flush(); + zip.closeEntry(); + } catch (IOException e) { + log.error("渲染模板失败,表名:" + table.getTableName(), e); + } + } + } + @Override + public void validateEdit(GenTable genTable) { + if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) { + String options = JsonUtils.toJsonString(genTable.getParams()); + Dict paramsObj = JsonUtils.parseMap(options); + if (StringUtils.isEmpty(paramsObj.getStr(GenConstants.TREE_CODE))) { + throw new ServiceException("树编码字段不能为空"); + } else if (StringUtils.isEmpty(paramsObj.getStr(GenConstants.TREE_PARENT_CODE))) { + throw new ServiceException("树父编码字段不能为空"); + } else if (StringUtils.isEmpty(paramsObj.getStr(GenConstants.TREE_NAME))) { + throw new ServiceException("树名称字段不能为空"); + } + } + } + public void setPkColumn(GenTable table) { + for (GenTableColumn column : table.getColumns()) { + if (column.isPk()) { + table.setPkColumn(column); + break; + } + } + if (ObjectUtil.isNull(table.getPkColumn())) { + table.setPkColumn(table.getColumns().get(0)); + } + + } + + /** + * 设置代码生成其他选项值 + * + * @param genTable 设置后的生成对象 + */ + public void setTableFromOptions(GenTable genTable) { + Dict paramsObj = JsonUtils.parseMap(genTable.getOptions()); + if (ObjectUtil.isNotNull(paramsObj)) { + String treeCode = paramsObj.getStr(GenConstants.TREE_CODE); + String treeParentCode = paramsObj.getStr(GenConstants.TREE_PARENT_CODE); + String treeName = paramsObj.getStr(GenConstants.TREE_NAME); + Long parentMenuId = paramsObj.getLong(GenConstants.PARENT_MENU_ID); + String parentMenuName = paramsObj.getStr(GenConstants.PARENT_MENU_NAME); + + genTable.setTreeCode(treeCode); + genTable.setTreeParentCode(treeParentCode); + genTable.setTreeName(treeName); + genTable.setParentMenuId(parentMenuId); + genTable.setParentMenuName(parentMenuName); + } + } + + /** + * 获取代码生成地址 + * + * @param table 业务表信息 + * @param template 模板文件路径 + * @return 生成地址 + */ + public static String getGenPath(GenTable table, String template) { + String genPath = table.getGenPath(); + if (StringUtils.equals(genPath, "/")) { + return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); + } + return genPath + File.separator + VelocityUtils.getFileName(template, table); + } +} + diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/service/IGenTableService.java b/ruoyi-generator/src/main/java/org/dromara/generator/service/IGenTableService.java new file mode 100644 index 0000000..b2c20c5 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/service/IGenTableService.java @@ -0,0 +1,141 @@ +package org.dromara.generator.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.generator.domain.GenTable; +import org.dromara.generator.domain.GenTableColumn; + +import java.util.List; +import java.util.Map; + +/** + * 业务 服务层 + * + * @author Lion Li + */ +public interface IGenTableService { + + /** + * 查询业务字段列表 + * + * @param tableId 业务字段编号 + * @return 业务字段集合 + */ + List selectGenTableColumnListByTableId(Long tableId); + + /** + * 查询业务列表 + * + * @param genTable 业务信息 + * @return 业务集合 + */ + TableDataInfo selectPageGenTableList(GenTable genTable, PageQuery pageQuery); + + /** + * 查询据库列表 + * + * @param genTable 业务信息 + * @return 数据库表集合 + */ + TableDataInfo selectPageDbTableList(GenTable genTable, PageQuery pageQuery); + + /** + * 查询据库列表 + * + * @param tableNames 表名称组 + * @param dataName 数据源名称 + * @return 数据库表集合 + */ + List selectDbTableListByNames(String[] tableNames, String dataName); + + /** + * 查询所有表信息 + * + * @return 表信息集合 + */ + List selectGenTableAll(); + + /** + * 查询业务信息 + * + * @param id 业务ID + * @return 业务信息 + */ + GenTable selectGenTableById(Long id); + + /** + * 修改业务 + * + * @param genTable 业务信息 + */ + void updateGenTable(GenTable genTable); + + /** + * 删除业务信息 + * + * @param tableIds 需要删除的表数据ID + */ + void deleteGenTableByIds(Long[] tableIds); + + /** + * 导入表结构 + * + * @param tableList 导入表列表 + * @param dataName 数据源名称 + */ + void importGenTable(List tableList, String dataName); + + /** + * 根据表名称查询列信息 + * + * @param tableName 表名称 + * @param dataName 数据源名称 + * @return 列信息 + */ + List selectDbTableColumnsByName(String tableName, String dataName); + + /** + * 预览代码 + * + * @param tableId 表编号 + * @return 预览数据列表 + */ + Map previewCode(Long tableId); + + /** + * 生成代码(下载方式) + * + * @param tableId 表名称 + * @return 数据 + */ + byte[] downloadCode(Long tableId); + + /** + * 生成代码(自定义路径) + * + * @param tableId 表名称 + */ + void generatorCode(Long tableId); + + /** + * 同步数据库 + * + * @param tableId 表名称 + */ + void synchDb(Long tableId); + + /** + * 批量生成代码(下载方式) + * + * @param tableIds 表ID数组 + * @return 数据 + */ + byte[] downloadCode(String[] tableIds); + + /** + * 修改保存参数校验 + * + * @param genTable 业务信息 + */ + void validateEdit(GenTable genTable); +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java b/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java new file mode 100644 index 0000000..39ce122 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/util/GenUtils.java @@ -0,0 +1,268 @@ +package org.dromara.generator.util; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.apache.commons.lang3.RegExUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.generator.config.GenConfig; +import org.dromara.generator.constant.GenConstants; +import org.dromara.generator.domain.GenTable; +import org.dromara.generator.domain.GenTableColumn; + +import java.util.Arrays; + +/** + * 代码生成器 工具类 + * + * @author ruoyi + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +// 定义一个公共类 GenUtils,该类包含了一系列用于代码生成的工具方法 +public class GenUtils { + + /** + * 初始化代码生成表的基本信息 + * + * @param genTable 代码生成表对象 + */ + public static void initTable(GenTable genTable) { + // 根据表名转换生成对应的 Java 类名,并设置到 GenTable 对象中 + genTable.setClassName(convertClassName(genTable.getTableName())); + // 从 GenConfig 中获取包名,并设置到 GenTable 对象中 + genTable.setPackageName(GenConfig.getPackageName()); + // 从包名中提取模块名,并设置到 GenTable 对象中 + genTable.setModuleName(getModuleName(GenConfig.getPackageName())); + // 从表名中提取业务名,并设置到 GenTable 对象中 + genTable.setBusinessName(getBusinessName(genTable.getTableName())); + // 对表注释进行文本替换处理,并设置到 GenTable 对象中作为功能名 + genTable.setFunctionName(replaceText(genTable.getTableComment())); + // 从 GenConfig 中获取作者信息,并设置到 GenTable 对象中 + genTable.setFunctionAuthor(GenConfig.getAuthor()); + // 将创建时间和更新时间设置为 null + genTable.setCreateTime(null); + genTable.setUpdateTime(null); + } + + /** + * 初始化代码生成表列的基本信息 + * + * @param column 代码生成表列对象 + * @param table 所属的代码生成表对象 + */ + public static void initColumnField(GenTableColumn column, GenTable table) { + // 从列类型中提取数据库类型 + String dataType = getDbType(column.getColumnType()); + // 将列名转换为小写 + String columnName = column.getColumnName().toLowerCase(); + // 设置列所属的表 ID + column.setTableId(table.getTableId()); + // 将创建时间和更新时间设置为 null + column.setCreateTime(null); + column.setUpdateTime(null); + // 将列名转换为驼峰命名法,并设置为 Java 字段名 + column.setJavaField(StringUtils.toCamelCase(columnName)); + // 默认设置 Java 类型为字符串 + column.setJavaType(GenConstants.TYPE_STRING); + // 默认设置查询类型为相等查询 + column.setQueryType(GenConstants.QUERY_EQ); + + // 如果列类型属于字符串类型或文本类型 + if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { + // 获取列的长度 + Integer columnLength = getColumnLength(column.getColumnType()); + // 根据列长度或列类型判断 HTML 类型 + String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; + column.setHtmlType(htmlType); + } + // 如果列类型属于时间类型 + else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) { + // 设置 Java 类型为日期类型 + column.setJavaType(GenConstants.TYPE_DATE); + // 设置 HTML 类型为日期时间选择器 + column.setHtmlType(GenConstants.HTML_DATETIME); + } + // 如果列类型属于数字类型 + else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) { + // 设置 HTML 类型为输入框 + column.setHtmlType(GenConstants.HTML_INPUT); + // 设置 Java 类型为长整型 + column.setJavaType(GenConstants.TYPE_LONG); + } + + // 如果列名不在不允许添加的列名列表中,并且不是主键列,则设置为可插入 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_ADD, columnName) && !column.isPk()) { + column.setIsInsert(GenConstants.REQUIRE); + } + // 如果列名不在不允许编辑的列名列表中,则设置为可编辑 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName)) { + column.setIsEdit(GenConstants.REQUIRE); + } + // 如果列名不在不允许列表显示的列名列表中,则设置为可在列表显示 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName)) { + column.setIsList(GenConstants.REQUIRE); + } + // 如果列名不在不允许查询的列名列表中,并且不是主键列,则设置为可查询 + if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) { + column.setIsQuery(GenConstants.REQUIRE); + } + + // 如果列名以 "name" 结尾,设置查询类型为模糊查询 + if (StringUtils.endsWithIgnoreCase(columnName, "name")) { + column.setQueryType(GenConstants.QUERY_LIKE); + } + // 如果列名以 "status" 结尾,设置 HTML 类型为单选框 + if (StringUtils.endsWithIgnoreCase(columnName, "status")) { + column.setHtmlType(GenConstants.HTML_RADIO); + } + // 如果列名以 "type" 或 "sex" 结尾,设置 HTML 类型为下拉选择框 + else if (StringUtils.endsWithIgnoreCase(columnName, "type") + || StringUtils.endsWithIgnoreCase(columnName, "sex")) { + column.setHtmlType(GenConstants.HTML_SELECT); + } + // 如果列名以 "image" 结尾,设置 HTML 类型为图片上传框 + else if (StringUtils.endsWithIgnoreCase(columnName, "image")) { + column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); + } + // 如果列名以 "file" 结尾,设置 HTML 类型为文件上传框 + else if (StringUtils.endsWithIgnoreCase(columnName, "file")) { + column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); + } + // 如果列名以 "content" 结尾,设置 HTML 类型为富文本编辑器 + else if (StringUtils.endsWithIgnoreCase(columnName, "content")) { + column.setHtmlType(GenConstants.HTML_EDITOR); + } + } + + /** + * 判断数组中是否包含指定的值 + * + * @param arr 数组 + * @param targetValue 目标值 + * @return 如果包含返回 true,否则返回 false + */ + public static boolean arraysContains(String[] arr, String targetValue) { + // 将数组转换为列表,然后使用 contains 方法判断是否包含目标值 + return Arrays.asList(arr).contains(targetValue); + } + + /** + * 从包名中提取模块名 + * + * @param packageName 包名 + * @return 模块名 + */ + public static String getModuleName(String packageName) { + // 获取包名中最后一个点的索引 + int lastIndex = packageName.lastIndexOf("."); + // 获取包名的长度 + int nameLength = packageName.length(); + // 从最后一个点之后的部分作为模块名 + return StringUtils.substring(packageName, lastIndex + 1, nameLength); + } + + /** + * 从表名中提取业务名 + * + * @param tableName 表名 + * @return 业务名 + */ + public static String getBusinessName(String tableName) { + // 获取表名中第一个下划线的索引 + int firstIndex = tableName.indexOf("_"); + // 获取表名的长度 + int nameLength = tableName.length(); + // 从第一个下划线之后的部分作为业务名,并转换为驼峰命名法 + String businessName = StringUtils.substring(tableName, firstIndex + 1, nameLength); + businessName = StringUtils.toCamelCase(businessName); + return businessName; + } + + /** + * 将表名转换为 Java 类名 + * + * @param tableName 表名 + * @return Java 类名 + */ + public static String convertClassName(String tableName) { + // 获取是否自动移除前缀的配置 + boolean autoRemovePre = GenConfig.getAutoRemovePre(); + // 获取表前缀的配置 + String tablePrefix = GenConfig.getTablePrefix(); + // 如果配置了自动移除前缀且表前缀不为空 + if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) { + // 将表前缀按分隔符分割成数组 + String[] searchList = StringUtils.split(tablePrefix, StringUtils.SEPARATOR); + // 替换表名中第一个匹配的前缀 + tableName = replaceFirst(tableName, searchList); + } + // 将表名转换为驼峰命名法 + return StringUtils.convertToCamelCase(tableName); + } + + /** + * 替换字符串中第一个匹配的搜索字符串 + * + * @param replacementm 要替换的字符串 + * @param searchList 搜索字符串数组 + * @return 替换后的字符串 + */ + public static String replaceFirst(String replacementm, String[] searchList) { + String text = replacementm; + // 遍历搜索字符串数组 + for (String searchString : searchList) { + // 如果要替换的字符串以搜索字符串开头 + if (replacementm.startsWith(searchString)) { + // 替换第一个匹配的搜索字符串为空字符串 + text = replacementm.replaceFirst(searchString, StringUtils.EMPTY); + break; + } + } + return text; + } + + /** + * 替换文本中的特定字符 + * + * @param text 要处理的文本 + * @return 处理后的文本 + */ + public static String replaceText(String text) { + // 使用正则表达式替换文本中的 "表" 或 "若依" 为空字符串 + return RegExUtils.replaceAll(text, "(?:表|若依)", ""); + } + + /** + * 从列类型中提取数据库类型 + * + * @param columnType 列类型 + * @return 数据库类型 + */ + public static String getDbType(String columnType) { + // 如果列类型中包含左括号 + if (StringUtils.indexOf(columnType, "(") > 0) { + // 截取左括号之前的部分作为数据库类型 + return StringUtils.substringBefore(columnType, "("); + } else { + // 否则直接返回列类型 + return columnType; + } + } + + /** + * 从列类型中提取列的长度 + * + * @param columnType 列类型 + * @return 列的长度,如果没有则返回 0 + */ + public static Integer getColumnLength(String columnType) { + // 如果列类型中包含左括号 + if (StringUtils.indexOf(columnType, "(") > 0) { + // 截取括号内的部分作为列的长度,并转换为整数 + String length = StringUtils.substringBetween(columnType, "(", ")"); + return Integer.valueOf(length); + } else { + // 否则返回 0 + return 0; + } + } +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityInitializer.java b/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityInitializer.java new file mode 100644 index 0000000..09e0121 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityInitializer.java @@ -0,0 +1,35 @@ +package org.dromara.generator.util; + +import org.dromara.common.core.constant.Constants; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.apache.velocity.app.Velocity; + +import java.util.Properties; + +/** + * VelocityEngine工厂 + * + * @author ruoyi + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class VelocityInitializer { + + /** + * 初始化vm方法 + */ + public static void initVelocity() { + Properties p = new Properties(); + try { + // 加载classpath目录下的vm文件 + p.setProperty("resource.loader.file.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); + // 定义字符集 + p.setProperty(Velocity.INPUT_ENCODING, Constants.UTF8); + // 初始化Velocity引擎,指定配置Properties + Velocity.init(p); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityUtils.java b/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityUtils.java new file mode 100644 index 0000000..b10a2b6 --- /dev/null +++ b/ruoyi-generator/src/main/java/org/dromara/generator/util/VelocityUtils.java @@ -0,0 +1,466 @@ +package org.dromara.generator.util; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; +import org.dromara.generator.constant.GenConstants; +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.generator.domain.GenTable; +import org.dromara.generator.domain.GenTableColumn; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.apache.velocity.VelocityContext; + +import java.util.*; + +/** + * 模板处理工具类 + * + * @author ruoyi + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +// 定义一个公共类 VelocityUtils,该类是用于 Velocity 模板引擎相关的工具类 +public class VelocityUtils { + + // 定义常量 PROJECT_PATH,表示 Java 项目的主代码路径,值为 "main/java" + private static final String PROJECT_PATH = "main/java"; + // 定义常量 MYBATIS_PATH,表示 MyBatis 映射文件的路径,值为 "main/resources/mapper" + private static final String MYBATIS_PATH = "main/resources/mapper"; + // 定义常量 DEFAULT_PARENT_MENU_ID,表示默认的父菜单 ID,值为 "3" + private static final String DEFAULT_PARENT_MENU_ID = "3"; + + /** + * 准备 Velocity 模板引擎的上下文信息 + * + * @param genTable 代码生成表对象 + * @return Velocity 上下文对象 + */ + public static VelocityContext prepareContext(GenTable genTable) { + // 获取代码生成表的模块名 + String moduleName = genTable.getModuleName(); + // 获取代码生成表的业务名 + String businessName = genTable.getBusinessName(); + // 获取代码生成表的包名 + String packageName = genTable.getPackageName(); + // 获取代码生成表的模板类别 + String tplCategory = genTable.getTplCategory(); + // 获取代码生成表的功能名 + String functionName = genTable.getFunctionName(); + + // 创建一个 Velocity 上下文对象 + VelocityContext velocityContext = new VelocityContext(); + + // 将模板类别放入上下文 + velocityContext.put("tplCategory", genTable.getTplCategory()); + // 将表名放入上下文 + velocityContext.put("tableName", genTable.getTableName()); + // 将功能名放入上下文,如果功能名为空则设置为默认值 "【请填写功能名称】" + velocityContext.put("functionName", StringUtils.isNotEmpty(functionName)? functionName : "【请填写功能名称】"); + // 将类名(首字母大写)放入上下文 + velocityContext.put("ClassName", genTable.getClassName()); + // 将类名(首字母小写)放入上下文 + velocityContext.put("className", StringUtils.uncapitalize(genTable.getClassName())); + // 将模块名放入上下文 + velocityContext.put("moduleName", genTable.getModuleName()); + // 将业务名(首字母大写)放入上下文 + velocityContext.put("BusinessName", StringUtils.capitalize(genTable.getBusinessName())); + // 将业务名(原始)放入上下文 + velocityContext.put("businessName", genTable.getBusinessName()); + // 将包名前缀放入上下文 + velocityContext.put("basePackage", getPackagePrefix(packageName)); + // 将包名放入上下文 + velocityContext.put("packageName", packageName); + // 将作者信息放入上下文 + velocityContext.put("author", genTable.getFunctionAuthor()); + // 将当前日期时间放入上下文 + velocityContext.put("datetime", DateUtils.getDate()); + // 将主键列信息放入上下文 + velocityContext.put("pkColumn", genTable.getPkColumn()); + // 将需要导入的类列表放入上下文 + velocityContext.put("importList", getImportList(genTable)); + // 将权限前缀放入上下文 + velocityContext.put("permissionPrefix", getPermissionPrefix(moduleName, businessName)); + // 将列信息列表放入上下文 + velocityContext.put("columns", genTable.getColumns()); + // 将代码生成表对象放入上下文 + velocityContext.put("table", genTable); + // 将字典类型列表放入上下文 + velocityContext.put("dicts", getDicts(genTable)); + + // 设置菜单相关的 Velocity 上下文信息 + setMenuVelocityContext(velocityContext, genTable); + + // 如果模板类别为树类型(TPL_TREE),设置树相关的 Velocity 上下文信息 + if (GenConstants.TPL_TREE.equals(tplCategory)) { + setTreeVelocityContext(velocityContext, genTable); + } + + // 返回准备好的 Velocity 上下文对象 + return velocityContext; + } + + /** + * 设置菜单相关的 Velocity 上下文信息 + * + * @param context Velocity 上下文对象 + * @param genTable 代码生成表对象 + */ + public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) { + // 获取代码生成表的选项信息 + String options = genTable.getOptions(); + // 将选项信息解析为 Dict 对象 + Dict paramsObj = JsonUtils.parseMap(options); + // 获取父菜单 ID + String parentMenuId = getParentMenuId(paramsObj); + // 将父菜单 ID 放入上下文 + context.put("parentMenuId", parentMenuId); + } + + /** + * 设置树相关的 Velocity 上下文信息 + * + * @param context Velocity 上下文对象 + * @param genTable 代码生成表对象 + */ + public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) { + // 获取代码生成表的选项信息 + String options = genTable.getOptions(); + // 将选项信息解析为 Dict 对象 + Dict paramsObj = JsonUtils.parseMap(options); + + // 获取树编码 + String treeCode = getTreecode(paramsObj); + // 获取树父编码 + String treeParentCode = getTreeParentCode(paramsObj); + // 获取树名称 + String treeName = getTreeName(paramsObj); + + // 将树编码放入上下文 + context.put("treeCode", treeCode); + // 将树父编码放入上下文 + context.put("treeParentCode", treeParentCode); + // 将树名称放入上下文 + context.put("treeName", treeName); + // 将展开列的索引放入上下文 + context.put("expandColumn", getExpandColumn(genTable)); + + // 如果参数对象中包含树父编码,将其放入上下文 + if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + context.put("tree_parent_code", paramsObj.get(GenConstants.TREE_PARENT_CODE)); + } + // 如果参数对象中包含树名称,将其放入上下文 + if (paramsObj.containsKey(GenConstants.TREE_NAME)) { + context.put("tree_name", paramsObj.get(GenConstants.TREE_NAME)); + } + } + + /** + * 获取模板文件列表 + * + * @param tplCategory 模板类别 + * @return 模板文件路径列表 + */ + public static List getTemplateList(String tplCategory) { + // 创建一个用于存储模板文件路径的列表 + List templates = new ArrayList<>(); + + // 添加 Java 领域模型模板文件路径 + templates.add("vm/java/domain.java.vm"); + // 添加 Java 值对象模板文件路径 + templates.add("vm/java/vo.java.vm"); + // 添加 Java 业务对象模板文件路径 + templates.add("vm/java/bo.java.vm"); + // 添加 Java MyBatis Mapper 接口模板文件路径 + templates.add("vm/java/mapper.java.vm"); + // 添加 Java 服务接口模板文件路径 + templates.add("vm/java/service.java.vm"); + // 添加 Java 服务实现类模板文件路径 + templates.add("vm/java/serviceImpl.java.vm"); + // 添加 Java 控制器类模板文件路径 + templates.add("vm/java/controller.java.vm"); + // 添加 MyBatis XML 映射文件模板文件路径 + templates.add("vm/xml/mapper.xml.vm"); + + // 根据数据库类型添加相应的 SQL 模板文件路径 + if (DataBaseHelper.isOracle()) { + templates.add("vm/sql/oracle/sql.vm"); + } else if (DataBaseHelper.isPostgerSql()) { + templates.add("vm/sql/postgres/sql.vm"); + } else if (DataBaseHelper.isSqlServer()) { + templates.add("vm/sql/sqlserver/sql.vm"); + } else { + templates.add("vm/sql/sql.vm"); + } + + // 添加 TypeScript API 模板文件路径 + templates.add("vm/ts/api.ts.vm"); + // 添加 TypeScript 类型定义模板文件路径 + templates.add("vm/ts/types.ts.vm"); + + // 根据模板类别添加相应的 Vue 页面模板文件路径 + if (GenConstants.TPL_CRUD.equals(tplCategory)) { + templates.add("vm/vue/index.vue.vm"); + } else if (GenConstants.TPL_TREE.equals(tplCategory)) { + templates.add("vm/vue/index-tree.vue.vm"); + } + + // 返回模板文件路径列表 + return templates; + } + + /** + * 根据模板和代码生成表信息获取生成文件的文件名 + * + * @param template 模板文件路径 + * @param genTable 代码生成表对象 + * @return 生成文件的文件名 + */ + public static String getFileName(String template, GenTable genTable) { + // 初始化文件名 + String fileName = ""; + // 获取代码生成表的包名 + String packageName = genTable.getPackageName(); + // 获取代码生成表的模块名 + String moduleName = genTable.getModuleName(); + // 获取代码生成表的类名 + String className = genTable.getClassName(); + // 获取代码生成表的业务名 + String businessName = genTable.getBusinessName(); + + // 构建 Java 代码路径 + String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); + // 构建 MyBatis 映射文件路径 + String mybatisPath = MYBATIS_PATH + "/" + moduleName; + // 定义 Vue 路径 + String vuePath = "vue"; + + // 根据模板文件路径判断生成文件的文件名 + if (template.contains("domain.java.vm")) { + fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); + } + if (template.contains("vo.java.vm")) { + fileName = StringUtils.format("{}/domain/vo/{}Vo.java", javaPath, className); + } + if (template.contains("bo.java.vm")) { + fileName = StringUtils.format("{}/domain/bo/{}Bo.java", javaPath, className); + } + if (template.contains("mapper.java.vm")) { + fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); + } else if (template.contains("service.java.vm")) { + fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className); + } else if (template.contains("serviceImpl.java.vm")) { + fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); + } else if (template.contains("controller.java.vm")) { + fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); + } else if (template.contains("mapper.xml.vm")) { + fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); + } else if (template.contains("sql.vm")) { + fileName = businessName + "Menu.sql"; + } else if (template.contains("api.ts.vm")) { + fileName = StringUtils.format("{}/api/{}/{}/index.ts", vuePath, moduleName, businessName); + } else if (template.contains("types.ts.vm")) { + fileName = StringUtils.format("{}/api/{}/{}/types.ts", vuePath, moduleName, businessName); + } else if (template.contains("index.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } else if (template.contains("index-tree.vue.vm")) { + fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); + } + + // 返回生成文件的文件名 + return fileName; + } + + /** + * 获取包名的前缀部分 + * + * @param packageName 包名 + * @return 包名前缀 + */ + public static String getPackagePrefix(String packageName) { + // 获取包名中最后一个点的索引 + int lastIndex = packageName.lastIndexOf("."); + // 截取包名从开始到最后一个点的部分作为前缀 + return StringUtils.substring(packageName, 0, lastIndex); + } + + /** + * 获取需要导入的类列表 + * + * @param genTable 代码生成表对象 + * @return 需要导入的类的 HashSet 集合 + */ + public static HashSet getImportList(GenTable genTable) { + // 获取代码生成表的列信息列表 + List columns = genTable.getColumns(); + // 创建一个用于存储需要导入的类的 HashSet 集合 + HashSet importList = new HashSet<>(); + + // 遍历列信息列表,根据列的类型和 HTML 类型添加需要导入的类 + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) { + importList.add("java.util.Date"); + importList.add("com.fasterxml.jackson.annotation.JsonFormat"); + } else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) { + importList.add("java.math.BigDecimal"); + } else if (!column.isSuperColumn() && "imageUpload".equals(column.getHtmlType())) { + importList.add("org.dromara.common.translation.annotation.Translation"); + importList.add("org.dromara.common.translation.constant.TransConstant"); + } + } + + // 返回需要导入的类的 HashSet 集合 + return importList; + } + + /** + * 获取字典类型列表字符串 + * + * @param genTable 代码生成表对象 + * @return 字典类型列表字符串,以逗号分隔 + */ + public static String getDicts(GenTable genTable) { + // 获取代码生成表的列信息列表 + List columns = genTable.getColumns(); + // 创建一个用于存储字典类型的 Set 集合 + Set dicts = new HashSet<>(); + // 添加字典类型到集合中 + addDicts(dicts, columns); + // 将字典类型集合转换为字符串,以逗号分隔 + return StringUtils.join(dicts, ", "); + } + + /** + * 向字典类型集合中添加字典类型 + * + * @param dicts 字典类型集合 + * @param columns 代码生成表的列信息列表 + */ + public static void addDicts(Set dicts, List columns) { + // 遍历列信息列表,根据列的条件添加字典类型到集合中 + for (GenTableColumn column : columns) { + if (!column.isSuperColumn() && StringUtils.isNotEmpty(column.getDictType()) && StringUtils.equalsAny( + column.getHtmlType(), + new String[] { GenConstants.HTML_SELECT, GenConstants.HTML_RADIO, GenConstants.HTML_CHECKBOX })) { + dicts.add("'" + column.getDictType() + "'"); + } + } + } + + /** + * 获取权限前缀 + * + * @param moduleName 模块名 + * @param businessName 业务名 + * @return 权限前缀字符串 + */ + public static String getPermissionPrefix(String moduleName, String businessName) { + // 格式化模块名和业务名,生成权限前缀字符串 + return StringUtils.format("{}:{}", moduleName, businessName); + } + + /** + * 获取父菜单 ID + * + * @param paramsObj 参数对象 + * @return 父菜单 ID 字符串 + */ + public static String getParentMenuId(Dict paramsObj) { + // 如果参数对象不为空,且包含父菜单 ID 且父菜单 ID 不为空 + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID) + && StringUtils.isNotEmpty(paramsObj.getStr(GenConstants.PARENT_MENU_ID))) { + // 返回参数对象中的父菜单 ID + return paramsObj.getStr(GenConstants.PARENT_MENU_ID); + } + // 否则返回默认的父菜单 ID + return DEFAULT_PARENT_MENU_ID; + } + + /** + * 获取树编码 + * + * @param paramsObj 参数对象 + * @return 树编码字符串 + */ + public static String getTreecode(Map paramsObj) { + // 如果参数对象不为空,且包含树编码 + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_CODE)) { + // 将树编码转换为驼峰命名法并返回 + return StringUtils.toCamelCase(Convert.toStr(paramsObj.get(GenConstants.TREE_CODE))); + } + // 否则返回空字符串 + return StringUtils.EMPTY; + } + + /** + * 获取树父编码 + * + * @param paramsObj 参数对象 + * @return 树父编码字符串 + */ + public static String getTreeParentCode(Dict paramsObj) { + // 如果参数对象不为空,且包含树父编码 + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) { + // 将树父编码转换为驼峰命名法并返回 + return StringUtils.toCamelCase(paramsObj.getStr(GenConstants.TREE_PARENT_CODE)); + } + // 否则返回空字符串 + return StringUtils.EMPTY; + } + + /** + * 获取树名称 + * + * @param paramsObj 参数对象 + * @return 树 + /** + * 获取树名称 + * + * @param paramsObj 参数对象 + * @return 树名称字符串 + */ + public static String getTreeName(Dict paramsObj) { + // 如果参数对象不为空,且包含树名称 + if (CollUtil.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.TREE_NAME)) { + // 将树名称转换为驼峰命名法并返回 + return StringUtils.toCamelCase(paramsObj.getStr(GenConstants.TREE_NAME)); + } + // 否则返回空字符串 + return StringUtils.EMPTY; + } + + /** + * 获取展开列的索引 + * + * @param genTable 代码生成表对象 + * @return 展开列的索引值 + */ + public static int getExpandColumn(GenTable genTable) { + // 获取代码生成表的选项信息 + String options = genTable.getOptions(); + // 将选项信息解析为 Dict 对象 + Dict paramsObj = JsonUtils.parseMap(options); + // 从参数对象中获取树名称 + String treeName = paramsObj.getStr(GenConstants.TREE_NAME); + // 初始化索引值为 0 + int num = 0; + // 遍历代码生成表的列信息列表 + for (GenTableColumn column : genTable.getColumns()) { + // 如果列在列表中显示 + if (column.isList()) { + // 索引值加 1 + num++; + // 获取列名 + String columnName = column.getColumnName(); + // 如果列名与树名称相等,跳出循环 + if (columnName.equals(treeName)) { + break; + } + } + } + // 返回展开列的索引值 + return num; + } +} diff --git a/ruoyi-generator/src/main/resources/generator.yml b/ruoyi-generator/src/main/resources/generator.yml new file mode 100644 index 0000000..d779d97 --- /dev/null +++ b/ruoyi-generator/src/main/resources/generator.yml @@ -0,0 +1,10 @@ +# 代码生成 +gen: + # 作者 + author: Lion Li + # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool + packageName: org.dromara.system + # 自动去除表前缀,默认是false + autoRemovePre: false + # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) + tablePrefix: sys_ diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml new file mode 100644 index 0000000..fc1c610 --- /dev/null +++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml new file mode 100644 index 0000000..78aa852 --- /dev/null +++ b/ruoyi-generator/src/main/resources/mapper/generator/GenTableMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + SELECT t.table_id, t.data_name, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort + FROM gen_table t + LEFT JOIN gen_table_column c ON t.table_id = c.table_id + + + + + + + + + + diff --git a/ruoyi-generator/src/main/resources/mapper/package-info.md b/ruoyi-generator/src/main/resources/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-generator/src/main/resources/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-generator/src/main/resources/vm/java/bo.java.vm b/ruoyi-generator/src/main/resources/vm/java/bo.java.vm new file mode 100644 index 0000000..511d37c --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/bo.java.vm @@ -0,0 +1,50 @@ +package ${packageName}.domain.bo; + +import ${packageName}.domain.${ClassName}; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +#foreach ($import in $importList) +import ${import}; +#end + +/** + * ${functionName}业务对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ${ClassName}.class, reverseConvertGenerate = false) +public class ${ClassName}Bo extends BaseEntity { + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField) && ($column.query || $column.insert || $column.edit)) + /** + * $column.columnComment + */ +#if($column.insert && $column.edit) +#set($Group="AddGroup.class, EditGroup.class") +#elseif($column.insert) +#set($Group="AddGroup.class") +#elseif($column.edit) +#set($Group="EditGroup.class") +#end +#if($column.required) +#if($column.javaType == 'String') + @NotBlank(message = "$column.columnComment不能为空", groups = { $Group }) +#else + @NotNull(message = "$column.columnComment不能为空", groups = { $Group }) +#end +#end + private $column.javaType $column.javaField; + +#end +#end + +} diff --git a/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm new file mode 100644 index 0000000..6438971 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/controller.java.vm @@ -0,0 +1,115 @@ +package ${packageName}.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import ${packageName}.domain.vo.${ClassName}Vo; +import ${packageName}.domain.bo.${ClassName}Bo; +import ${packageName}.service.I${ClassName}Service; +#if($table.crud) +import org.dromara.common.mybatis.core.page.TableDataInfo; +#elseif($table.tree) +#end + +/** + * ${functionName} + * + * @author ${author} + * @date ${datetime} + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/${moduleName}/${businessName}") +public class ${ClassName}Controller extends BaseController { + + private final I${ClassName}Service ${className}Service; + + /** + * 查询${functionName}列表 + */ + @SaCheckPermission("${permissionPrefix}:list") + @GetMapping("/list") +#if($table.crud) + public TableDataInfo<${ClassName}Vo> list(${ClassName}Bo bo, PageQuery pageQuery) { + return ${className}Service.queryPageList(bo, pageQuery); + } +#elseif($table.tree) + public R> list(${ClassName}Bo bo) { + List<${ClassName}Vo> list = ${className}Service.queryList(bo); + return R.ok(list); + } +#end + + /** + * 导出${functionName}列表 + */ + @SaCheckPermission("${permissionPrefix}:export") + @Log(title = "${functionName}", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(${ClassName}Bo bo, HttpServletResponse response) { + List<${ClassName}Vo> list = ${className}Service.queryList(bo); + ExcelUtil.exportExcel(list, "${functionName}", ${ClassName}Vo.class, response); + } + + /** + * 获取${functionName}详细信息 + * + * @param ${pkColumn.javaField} 主键 + */ + @SaCheckPermission("${permissionPrefix}:query") + @GetMapping("/{${pkColumn.javaField}}") + public R<${ClassName}Vo> getInfo(@NotNull(message = "主键不能为空") + @PathVariable ${pkColumn.javaType} ${pkColumn.javaField}) { + return R.ok(${className}Service.queryById(${pkColumn.javaField})); + } + + /** + * 新增${functionName} + */ + @SaCheckPermission("${permissionPrefix}:add") + @Log(title = "${functionName}", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ${ClassName}Bo bo) { + return toAjax(${className}Service.insertByBo(bo)); + } + + /** + * 修改${functionName} + */ + @SaCheckPermission("${permissionPrefix}:edit") + @Log(title = "${functionName}", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ${ClassName}Bo bo) { + return toAjax(${className}Service.updateByBo(bo)); + } + + /** + * 删除${functionName} + * + * @param ${pkColumn.javaField}s 主键串 + */ + @SaCheckPermission("${permissionPrefix}:remove") + @Log(title = "${functionName}", businessType = BusinessType.DELETE) + @DeleteMapping("/{${pkColumn.javaField}s}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { + return toAjax(${className}Service.deleteWithValidByIds(List.of(${pkColumn.javaField}s), true)); + } +} diff --git a/ruoyi-generator/src/main/resources/vm/java/domain.java.vm b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm new file mode 100644 index 0000000..205fb73 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/domain.java.vm @@ -0,0 +1,60 @@ +package ${packageName}.domain; + +#foreach ($column in $columns) +#if($column.javaField=='tenantId') +#set($IsTenant=1) +#end +#end +#if($IsTenant==1) +import org.dromara.common.tenant.core.TenantEntity; +#else +import org.dromara.common.mybatis.core.domain.BaseEntity; +#end +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +#foreach ($import in $importList) +import ${import}; +#end + +import java.io.Serial; + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($IsTenant==1) +#set($Entity="TenantEntity") +#else +#set($Entity="BaseEntity") +#end +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("${tableName}") +public class ${ClassName} extends ${Entity} { + + @Serial + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) + /** + * $column.columnComment + */ +#if($column.javaField=='delFlag') + @TableLogic +#end +#if($column.javaField=='version') + @Version +#end +#if($column.isPk==1) + @TableId(value = "$column.columnName") +#end + private $column.javaType $column.javaField; + +#end +#end + +} diff --git a/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm b/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm new file mode 100644 index 0000000..0922401 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm @@ -0,0 +1,15 @@ +package ${packageName}.mapper; + +import ${packageName}.domain.${ClassName}; +import ${packageName}.domain.vo.${ClassName}Vo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * ${functionName}Mapper接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}, ${ClassName}Vo> { + +} diff --git a/ruoyi-generator/src/main/resources/vm/java/service.java.vm b/ruoyi-generator/src/main/resources/vm/java/service.java.vm new file mode 100644 index 0000000..4db9030 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/service.java.vm @@ -0,0 +1,72 @@ +package ${packageName}.service; + +import ${packageName}.domain.vo.${ClassName}Vo; +import ${packageName}.domain.bo.${ClassName}Bo; +#if($table.crud) +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +#end + +import java.util.Collection; +import java.util.List; + +/** + * ${functionName}Service接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface I${ClassName}Service { + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} 主键 + * @return ${functionName} + */ + ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}); + +#if($table.crud) + /** + * 分页查询${functionName}列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return ${functionName}分页列表 + */ + TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery); +#end + + /** + * 查询符合条件的${functionName}列表 + * + * @param bo 查询条件 + * @return ${functionName}列表 + */ + List<${ClassName}Vo> queryList(${ClassName}Bo bo); + + /** + * 新增${functionName} + * + * @param bo ${functionName} + * @return 是否新增成功 + */ + Boolean insertByBo(${ClassName}Bo bo); + + /** + * 修改${functionName} + * + * @param bo ${functionName} + * @return 是否修改成功 + */ + Boolean updateByBo(${ClassName}Bo bo); + + /** + * 校验并批量删除${functionName}信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid); +} diff --git a/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm new file mode 100644 index 0000000..48cc8b1 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm @@ -0,0 +1,158 @@ +package ${packageName}.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +#if($table.crud) +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +#end +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ${packageName}.domain.bo.${ClassName}Bo; +import ${packageName}.domain.vo.${ClassName}Vo; +import ${packageName}.domain.${ClassName}; +import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.service.I${ClassName}Service; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * ${functionName}Service业务层处理 + * + * @author ${author} + * @date ${datetime} + */ +@RequiredArgsConstructor +@Service +public class ${ClassName}ServiceImpl implements I${ClassName}Service { + + private final ${ClassName}Mapper baseMapper; + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} 主键 + * @return ${functionName} + */ + @Override + public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){ + return baseMapper.selectVoById(${pkColumn.javaField}); + } + +#if($table.crud) + /** + * 分页查询${functionName}列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return ${functionName}分页列表 + */ + @Override + public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) { + LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); + Page<${ClassName}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } +#end + + /** + * 查询符合条件的${functionName}列表 + * + * @param bo 查询条件 + * @return ${functionName}列表 + */ + @Override + public List<${ClassName}Vo> queryList(${ClassName}Bo bo) { + LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery(); +#foreach($column in $columns) +#if($column.query) +#set($queryType=$column.queryType) +#set($javaField=$column.javaField) +#set($javaType=$column.javaType) +#set($columnName=$column.columnName) +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#set($mpMethod=$column.queryType.toLowerCase()) +#if($queryType != 'BETWEEN') +#if($javaType == 'String') +#set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())') +#else +#set($condition='bo.get'+$AttrName+'() != null') +#end + lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()); +#else + lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null, + ${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName")); +#end +#end +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#if($column.isPk==1) + lqw.orderByAsc(${ClassName}::get$AttrName); +#end +#end + return lqw; + } + + /** + * 新增${functionName} + * + * @param bo ${functionName} + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(${ClassName}Bo bo) { + ${ClassName} add = MapstructUtils.convert(bo, ${ClassName}.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; +#set($pk=$pkColumn.javaField.substring(0,1).toUpperCase() + ${pkColumn.javaField.substring(1)}) + if (flag) { + bo.set$pk(add.get$pk()); + } + return flag; + } + + /** + * 修改${functionName} + * + * @param bo ${functionName} + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(${ClassName}Bo bo) { + ${ClassName} update = MapstructUtils.convert(bo, ${ClassName}.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(${ClassName} entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除${functionName}信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-generator/src/main/resources/vm/java/vo.java.vm b/ruoyi-generator/src/main/resources/vm/java/vo.java.vm new file mode 100644 index 0000000..5591f97 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/java/vo.java.vm @@ -0,0 +1,66 @@ +package ${packageName}.domain.vo; + +#foreach ($import in $importList) +import ${import}; +#end +import ${packageName}.domain.${ClassName}; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * ${functionName}视图对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ${ClassName}.class) +public class ${ClassName}Vo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if($column.list) + /** + * $column.columnComment + */ +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if(${column.dictType} && ${column.dictType} != '') + @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "${column.dictType}") +#elseif($parentheseIndex != -1) + @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "$column.readConverterExp()") +#else + @ExcelProperty(value = "${comment}") +#end + private $column.javaType $column.javaField; + +#if($column.htmlType == "imageUpload") + /** + * ${column.columnComment}Url + */ + @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "${column.javaField}") + private String ${column.javaField}Url; +#end +#end +#end + +} diff --git a/ruoyi-generator/src/main/resources/vm/sql/oracle/sql.vm b/ruoyi-generator/src/main/resources/vm/sql/oracle/sql.vm new file mode 100644 index 0000000..f6638be --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/sql/oracle/sql.vm @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, sysdate, null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, sysdate, null, null, ''); diff --git a/ruoyi-generator/src/main/resources/vm/sql/postgres/sql.vm b/ruoyi-generator/src/main/resources/vm/sql/postgres/sql.vm new file mode 100644 index 0000000..0923392 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/sql/postgres/sql.vm @@ -0,0 +1,20 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, now(), null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, now(), null, null, ''); + diff --git a/ruoyi-generator/src/main/resources/vm/sql/sql.vm b/ruoyi-generator/src/main/resources/vm/sql/sql.vm new file mode 100644 index 0000000..01824c2 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/sql/sql.vm @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, sysdate(), null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, sysdate(), null, null, ''); diff --git a/ruoyi-generator/src/main/resources/vm/sql/sqlserver/sql.vm b/ruoyi-generator/src/main/resources/vm/sql/sqlserver/sql.vm new file mode 100644 index 0000000..bdf166e --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/sql/sqlserver/sql.vm @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, getdate(), null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, getdate(), null, null, ''); diff --git a/ruoyi-generator/src/main/resources/vm/ts/api.ts.vm b/ruoyi-generator/src/main/resources/vm/ts/api.ts.vm new file mode 100644 index 0000000..3aa4a5f --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/ts/api.ts.vm @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { ${BusinessName}VO, ${BusinessName}Form, ${BusinessName}Query } from '@/api/${moduleName}/${businessName}/types'; + +/** + * 查询${functionName}列表 + * @param query + * @returns {*} + */ + +export const list${BusinessName} = (query?: ${BusinessName}Query): AxiosPromise<${BusinessName}VO[]> => { + return request({ + url: '/${moduleName}/${businessName}/list', + method: 'get', + params: query + }); +}; + +/** + * 查询${functionName}详细 + * @param ${pkColumn.javaField} + */ +export const get${BusinessName} = (${pkColumn.javaField}: string | number): AxiosPromise<${BusinessName}VO> => { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'get' + }); +}; + +/** + * 新增${functionName} + * @param data + */ +export const add${BusinessName} = (data: ${BusinessName}Form) => { + return request({ + url: '/${moduleName}/${businessName}', + method: 'post', + data: data + }); +}; + +/** + * 修改${functionName} + * @param data + */ +export const update${BusinessName} = (data: ${BusinessName}Form) => { + return request({ + url: '/${moduleName}/${businessName}', + method: 'put', + data: data + }); +}; + +/** + * 删除${functionName} + * @param ${pkColumn.javaField} + */ +export const del${BusinessName} = (${pkColumn.javaField}: string | number | Array) => { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'delete' + }); +}; diff --git a/ruoyi-generator/src/main/resources/vm/ts/types.ts.vm b/ruoyi-generator/src/main/resources/vm/ts/types.ts.vm new file mode 100644 index 0000000..35a468e --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/ts/types.ts.vm @@ -0,0 +1,64 @@ +export interface ${BusinessName}VO { +#foreach ($column in $columns) +#if($column.list) + /** + * $column.columnComment + */ + $column.javaField:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#if($column.htmlType == "imageUpload") + /** + * ${column.columnComment}Url + */ + ${column.javaField}Url: string; +#end +#end +#end +#if ($table.tree) + /** + * 子对象 + */ + children: ${BusinessName}VO[]; +#end +} + +export interface ${BusinessName}Form extends BaseEntity { +#foreach ($column in $columns) +#if($column.insert || $column.edit) + /** + * $column.columnComment + */ + $column.javaField?:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#end +#end +} + +export interface ${BusinessName}Query #if(!${treeCode})extends PageQuery #end{ + +#foreach ($column in $columns) +#if($column.query) + /** + * $column.columnComment + */ + $column.javaField?:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#end +#end + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm new file mode 100644 index 0000000..caf3472 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm @@ -0,0 +1,498 @@ + + + diff --git a/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm new file mode 100644 index 0000000..a92d19a --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm @@ -0,0 +1,459 @@ + + + diff --git a/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm new file mode 100644 index 0000000..9fb48d9 --- /dev/null +++ b/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-generator/target/classes/META-INF/spring-configuration-metadata.json b/ruoyi-generator/target/classes/META-INF/spring-configuration-metadata.json new file mode 100644 index 0000000..113930a --- /dev/null +++ b/ruoyi-generator/target/classes/META-INF/spring-configuration-metadata.json @@ -0,0 +1,11 @@ +{ + "groups": [ + { + "name": "gen", + "type": "org.dromara.generator.config.GenConfig", + "sourceType": "org.dromara.generator.config.GenConfig" + } + ], + "properties": [], + "hints": [] +} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/generator.yml b/ruoyi-generator/target/classes/generator.yml new file mode 100644 index 0000000..d779d97 --- /dev/null +++ b/ruoyi-generator/target/classes/generator.yml @@ -0,0 +1,10 @@ +# 代码生成 +gen: + # 作者 + author: Lion Li + # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool + packageName: org.dromara.system + # 自动去除表前缀,默认是false + autoRemovePre: false + # 表前缀(生成类名不会包含表前缀,多个用逗号分隔) + tablePrefix: sys_ diff --git a/ruoyi-generator/target/classes/mapper/generator/GenTableColumnMapper.xml b/ruoyi-generator/target/classes/mapper/generator/GenTableColumnMapper.xml new file mode 100644 index 0000000..fc1c610 --- /dev/null +++ b/ruoyi-generator/target/classes/mapper/generator/GenTableColumnMapper.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/ruoyi-generator/target/classes/mapper/generator/GenTableMapper.xml b/ruoyi-generator/target/classes/mapper/generator/GenTableMapper.xml new file mode 100644 index 0000000..78aa852 --- /dev/null +++ b/ruoyi-generator/target/classes/mapper/generator/GenTableMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + SELECT t.table_id, t.data_name, t.table_name, t.table_comment, t.sub_table_name, t.sub_table_fk_name, t.class_name, t.tpl_category, t.package_name, t.module_name, t.business_name, t.function_name, t.function_author, t.gen_type, t.gen_path, t.options, t.remark, + c.column_id, c.column_name, c.column_comment, c.column_type, c.java_type, c.java_field, c.is_pk, c.is_increment, c.is_required, c.is_insert, c.is_edit, c.is_list, c.is_query, c.query_type, c.html_type, c.dict_type, c.sort + FROM gen_table t + LEFT JOIN gen_table_column c ON t.table_id = c.table_id + + + + + + + + + + diff --git a/ruoyi-generator/target/classes/mapper/package-info.md b/ruoyi-generator/target/classes/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-generator/target/classes/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/config/GenConfig.class b/ruoyi-generator/target/classes/org/dromara/generator/config/GenConfig.class new file mode 100644 index 0000000..9f49bc6 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/config/GenConfig.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/config/GenConfig__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/config/GenConfig__Javadoc.json new file mode 100644 index 0000000..9037e15 --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/config/GenConfig__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 读取代码生成相关配置\n\n @author ruoyi\n","fields":[{"name":"author","doc":" 作者\n"},{"name":"packageName","doc":" 生成包路径\n"},{"name":"autoRemovePre","doc":" 自动去除表前缀,默认是false\n"},{"name":"tablePrefix","doc":" 表前缀(类名不会包含表前缀)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/config/MyBatisDataSourceMonitor.class b/ruoyi-generator/target/classes/org/dromara/generator/config/MyBatisDataSourceMonitor.class new file mode 100644 index 0000000..b7243a7 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/config/MyBatisDataSourceMonitor.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/config/MyBatisDataSourceMonitor__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/config/MyBatisDataSourceMonitor__Javadoc.json new file mode 100644 index 0000000..3d8fbed --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/config/MyBatisDataSourceMonitor__Javadoc.json @@ -0,0 +1 @@ +{"doc":" anyline 适配 动态数据源改造\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"feature","paramTypes":["org.anyline.data.runtime.DataRuntime","java.lang.Object"],"doc":" 数据源特征 用来定准 adapter 包含数据库或JDBC协议关键字
\n 一般会通过 产品名_url 合成 如果返回null 上层方法会通过driver_产品名_url合成\n\n @param datasource 数据源\n @return String 返回null由上层自动提取\n"},{"name":"key","paramTypes":["org.anyline.data.runtime.DataRuntime","java.lang.Object"],"doc":" 数据源唯一标识 如果不实现则默认feature\n @param datasource 数据源\n @return String 返回null由上层自动提取\n"},{"name":"keepAdapter","paramTypes":["org.anyline.data.runtime.DataRuntime","java.lang.Object"],"doc":" ConfigTable.KEEP_ADAPTER=2 : 根据当前接口判断是否保持同一个数据源绑定同一个adapter
\n DynamicRoutingDataSource类型的返回false,因为同一个DynamicRoutingDataSource可能对应多类数据库, 如果项目中只有一种数据库 应该直接返回true\n\n @param datasource 数据源\n @return boolean\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/constant/GenConstants.class b/ruoyi-generator/target/classes/org/dromara/generator/constant/GenConstants.class new file mode 100644 index 0000000..e7d1c01 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/constant/GenConstants.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/constant/GenConstants__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/constant/GenConstants__Javadoc.json new file mode 100644 index 0000000..7fe40f9 --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/constant/GenConstants__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 代码生成通用常量\n\n @author ruoyi\n","fields":[{"name":"TPL_CRUD","doc":" 单表(增删改查)\n"},{"name":"TPL_TREE","doc":" 树表(增删改查)\n"},{"name":"TREE_CODE","doc":" 树编码字段\n"},{"name":"TREE_PARENT_CODE","doc":" 树父编码字段\n"},{"name":"TREE_NAME","doc":" 树名称字段\n"},{"name":"PARENT_MENU_ID","doc":" 上级菜单ID字段\n"},{"name":"PARENT_MENU_NAME","doc":" 上级菜单名称字段\n"},{"name":"COLUMNTYPE_STR","doc":" 数据库字符串类型\n"},{"name":"COLUMNTYPE_TEXT","doc":" 数据库文本类型\n"},{"name":"COLUMNTYPE_TIME","doc":" 数据库时间类型\n"},{"name":"COLUMNTYPE_NUMBER","doc":" 数据库数字类型\n"},{"name":"COLUMNNAME_NOT_ADD","doc":" BO对象 不需要添加字段\n"},{"name":"COLUMNNAME_NOT_EDIT","doc":" BO对象 不需要编辑字段\n"},{"name":"COLUMNNAME_NOT_LIST","doc":" VO对象 不需要返回字段\n"},{"name":"COLUMNNAME_NOT_QUERY","doc":" BO对象 不需要查询字段\n"},{"name":"BASE_ENTITY","doc":" Entity基类字段\n"},{"name":"HTML_INPUT","doc":" 文本框\n"},{"name":"HTML_TEXTAREA","doc":" 文本域\n"},{"name":"HTML_SELECT","doc":" 下拉框\n"},{"name":"HTML_RADIO","doc":" 单选框\n"},{"name":"HTML_CHECKBOX","doc":" 复选框\n"},{"name":"HTML_DATETIME","doc":" 日期控件\n"},{"name":"HTML_IMAGE_UPLOAD","doc":" 图片上传控件\n"},{"name":"HTML_FILE_UPLOAD","doc":" 文件上传控件\n"},{"name":"HTML_EDITOR","doc":" 富文本控件\n"},{"name":"TYPE_STRING","doc":" 字符串类型\n"},{"name":"TYPE_INTEGER","doc":" 整型\n"},{"name":"TYPE_LONG","doc":" 长整型\n"},{"name":"TYPE_DOUBLE","doc":" 浮点型\n"},{"name":"TYPE_BIGDECIMAL","doc":" 高精度计算类型\n"},{"name":"TYPE_DATE","doc":" 时间类型\n"},{"name":"QUERY_LIKE","doc":" 模糊查询\n"},{"name":"QUERY_EQ","doc":" 相等查询\n"},{"name":"REQUIRE","doc":" 需要\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/controller/GenController.class b/ruoyi-generator/target/classes/org/dromara/generator/controller/GenController.class new file mode 100644 index 0000000..0a60725 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/controller/GenController.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/controller/GenController__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/controller/GenController__Javadoc.json new file mode 100644 index 0000000..925527b --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/controller/GenController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 代码生成 操作处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"genList","paramTypes":["org.dromara.generator.domain.GenTable","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询代码生成列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 修改代码生成业务\n\n @param tableId 表ID\n"},{"name":"dataList","paramTypes":["org.dromara.generator.domain.GenTable","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询数据库列表\n"},{"name":"columnList","paramTypes":["java.lang.Long"],"doc":" 查询数据表字段列表\n\n @param tableId 表ID\n"},{"name":"importTableSave","paramTypes":["java.lang.String","java.lang.String"],"doc":" 导入表结构(保存)\n\n @param tables 表名串\n"},{"name":"editSave","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 修改保存代码生成业务\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除代码生成\n\n @param tableIds 表ID串\n"},{"name":"preview","paramTypes":["java.lang.Long"],"doc":" 预览代码\n\n @param tableId 表ID\n"},{"name":"download","paramTypes":["jakarta.servlet.http.HttpServletResponse","java.lang.Long"],"doc":" 生成代码(下载方式)\n\n @param tableId 表ID\n"},{"name":"genCode","paramTypes":["java.lang.Long"],"doc":" 生成代码(自定义路径)\n\n @param tableId 表ID\n"},{"name":"synchDb","paramTypes":["java.lang.Long"],"doc":" 同步数据库\n\n @param tableId 表ID\n"},{"name":"batchGenCode","paramTypes":["jakarta.servlet.http.HttpServletResponse","java.lang.String"],"doc":" 批量生成代码\n\n @param tableIdStr 表ID串\n"},{"name":"genCode","paramTypes":["jakarta.servlet.http.HttpServletResponse","byte[]"],"doc":" 生成zip文件\n"},{"name":"getCurrentDataSourceNameList","paramTypes":[],"doc":" 查询数据源名称列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTable.class b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTable.class new file mode 100644 index 0000000..1df995b Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTable.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTableColumn.class b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTableColumn.class new file mode 100644 index 0000000..0f0546a Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTableColumn.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTableColumn__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTableColumn__Javadoc.json new file mode 100644 index 0000000..d286d96 --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTableColumn__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 代码生成业务字段表 gen_table_column\n\n @author Lion Li\n","fields":[{"name":"columnId","doc":" 编号\n"},{"name":"tableId","doc":" 归属表编号\n"},{"name":"columnName","doc":" 列名称\n"},{"name":"columnComment","doc":" 列描述\n"},{"name":"columnType","doc":" 列类型\n"},{"name":"javaType","doc":" JAVA类型\n"},{"name":"javaField","doc":" JAVA字段名\n"},{"name":"isPk","doc":" 是否主键(1是)\n"},{"name":"isIncrement","doc":" 是否自增(1是)\n"},{"name":"isRequired","doc":" 是否必填(1是)\n"},{"name":"isInsert","doc":" 是否为插入字段(1是)\n"},{"name":"isEdit","doc":" 是否编辑字段(1是)\n"},{"name":"isList","doc":" 是否列表字段(1是)\n"},{"name":"isQuery","doc":" 是否查询字段(1是)\n"},{"name":"queryType","doc":" 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围)\n"},{"name":"htmlType","doc":" 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件)\n"},{"name":"dictType","doc":" 字典类型\n"},{"name":"sort","doc":" 排序\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTable__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTable__Javadoc.json new file mode 100644 index 0000000..574013c --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/domain/GenTable__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 业务表 gen_table\n\n @author Lion Li\n","fields":[{"name":"tableId","doc":" 编号\n"},{"name":"dataName","doc":" 数据源名称\n"},{"name":"tableName","doc":" 表名称\n"},{"name":"tableComment","doc":" 表描述\n"},{"name":"subTableName","doc":" 关联父表的表名\n"},{"name":"subTableFkName","doc":" 本表关联父表的外键名\n"},{"name":"className","doc":" 实体类名称(首字母大写)\n"},{"name":"tplCategory","doc":" 使用的模板(crud单表操作 tree树表操作 sub主子表操作)\n"},{"name":"packageName","doc":" 生成包路径\n"},{"name":"moduleName","doc":" 生成模块名\n"},{"name":"businessName","doc":" 生成业务名\n"},{"name":"functionName","doc":" 生成功能名\n"},{"name":"functionAuthor","doc":" 生成作者\n"},{"name":"genType","doc":" 生成代码方式(0zip压缩包 1自定义路径)\n"},{"name":"genPath","doc":" 生成路径(不填默认项目路径)\n"},{"name":"pkColumn","doc":" 主键信息\n"},{"name":"columns","doc":" 表列信息\n"},{"name":"options","doc":" 其它生成选项\n"},{"name":"remark","doc":" 备注\n"},{"name":"treeCode","doc":" 树编码字段\n"},{"name":"treeParentCode","doc":" 树父编码字段\n"},{"name":"treeName","doc":" 树名称字段\n"},{"name":"parentMenuId","doc":" 上级菜单ID字段\n"},{"name":"parentMenuName","doc":" 上级菜单名称字段\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableColumnMapper.class b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableColumnMapper.class new file mode 100644 index 0000000..5dadfe1 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableColumnMapper.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableColumnMapper__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableColumnMapper__Javadoc.json new file mode 100644 index 0000000..c61e2f4 --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableColumnMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 业务字段 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableMapper.class b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableMapper.class new file mode 100644 index 0000000..9d843a3 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableMapper.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableMapper__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableMapper__Javadoc.json new file mode 100644 index 0000000..7a0e4dd --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/mapper/GenTableMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 业务 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectGenTableAll","paramTypes":[],"doc":" 查询所有表信息\n\n @return 表信息集合\n"},{"name":"selectGenTableById","paramTypes":["java.lang.Long"],"doc":" 查询表ID业务信息\n\n @param id 业务ID\n @return 业务信息\n"},{"name":"selectGenTableByName","paramTypes":["java.lang.String"],"doc":" 查询表名称业务信息\n\n @param tableName 表名称\n @return 业务信息\n"},{"name":"selectTableNameList","paramTypes":["java.lang.String"],"doc":" 查询指定数据源下的所有表名列表\n\n @param dataName 数据源名称,用于选择不同的数据源\n @return 当前数据库中的表名列表\n\n @DS(\"\") 使用默认数据源执行查询操作\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/service/GenTableServiceImpl.class b/ruoyi-generator/target/classes/org/dromara/generator/service/GenTableServiceImpl.class new file mode 100644 index 0000000..ad7483c Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/service/GenTableServiceImpl.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/service/GenTableServiceImpl__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/service/GenTableServiceImpl__Javadoc.json new file mode 100644 index 0000000..84973a0 --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/service/GenTableServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 业务 服务层实现\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectGenTableColumnListByTableId","paramTypes":["java.lang.Long"],"doc":" 查询业务字段列表\n\n @param tableId 业务字段编号\n @return 业务字段集合\n"},{"name":"selectGenTableById","paramTypes":["java.lang.Long"],"doc":" 查询业务信息\n\n @param id 业务ID\n @return 业务信息\n"},{"name":"selectPageDbTableList","paramTypes":["org.dromara.generator.domain.GenTable","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询数据库列表\n\n @param genTable 包含查询条件的GenTable对象\n @param pageQuery 包含分页信息的PageQuery对象\n @return 包含分页结果的TableDataInfo对象\n"},{"name":"selectDbTableListByNames","paramTypes":["java.lang.String[]","java.lang.String"],"doc":" 查询据库列表\n\n @param tableNames 表名称组\n @param dataName 数据源名称\n @return 数据库表集合\n"},{"name":"selectGenTableAll","paramTypes":[],"doc":" 查询所有表信息\n\n @return 表信息集合\n"},{"name":"updateGenTable","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 修改业务\n\n @param genTable 业务信息\n"},{"name":"deleteGenTableByIds","paramTypes":["java.lang.Long[]"],"doc":" 删除业务对象\n\n @param tableIds 需要删除的数据ID\n"},{"name":"importGenTable","paramTypes":["java.util.List","java.lang.String"],"doc":" 导入表结构\n\n @param tableList 导入表列表\n @param dataName 数据源名称\n"},{"name":"selectDbTableColumnsByName","paramTypes":["java.lang.String","java.lang.String"],"doc":" 根据表名称查询列信息\n\n @param tableName 表名称\n @param dataName 数据源名称\n @return 列信息\n"},{"name":"previewCode","paramTypes":["java.lang.Long"],"doc":" 预览代码\n\n @param tableId 表编号\n @return 预览数据列表\n"},{"name":"downloadCode","paramTypes":["java.lang.Long"],"doc":" 生成代码(下载方式)\n\n @param tableId 表名称\n @return 数据\n"},{"name":"generatorCode","paramTypes":["java.lang.Long"],"doc":" 生成代码(自定义路径)\n\n @param tableId 表名称\n"},{"name":"synchDb","paramTypes":["java.lang.Long"],"doc":" 同步数据库\n\n @param tableId 表名称\n"},{"name":"downloadCode","paramTypes":["java.lang.String[]"],"doc":" 批量生成代码(下载方式)\n\n @param tableIds 表ID数组\n @return 数据\n"},{"name":"generatorCode","paramTypes":["java.lang.Long","java.util.zip.ZipOutputStream"],"doc":" 查询表信息并生成代码\n"},{"name":"validateEdit","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 修改保存参数校验\n\n @param genTable 业务信息\n"},{"name":"setPkColumn","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 设置主键列信息\n\n @param table 业务表信息\n"},{"name":"setTableFromOptions","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 设置代码生成其他选项值\n\n @param genTable 设置后的生成对象\n"},{"name":"getGenPath","paramTypes":["org.dromara.generator.domain.GenTable","java.lang.String"],"doc":" 获取代码生成地址\n\n @param table 业务表信息\n @param template 模板文件路径\n @return 生成地址\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/service/IGenTableService.class b/ruoyi-generator/target/classes/org/dromara/generator/service/IGenTableService.class new file mode 100644 index 0000000..c9eadaf Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/service/IGenTableService.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/service/IGenTableService__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/service/IGenTableService__Javadoc.json new file mode 100644 index 0000000..1005aa7 --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/service/IGenTableService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 业务 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectGenTableColumnListByTableId","paramTypes":["java.lang.Long"],"doc":" 查询业务字段列表\n\n @param tableId 业务字段编号\n @return 业务字段集合\n"},{"name":"selectPageGenTableList","paramTypes":["org.dromara.generator.domain.GenTable","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询业务列表\n\n @param genTable 业务信息\n @return 业务集合\n"},{"name":"selectPageDbTableList","paramTypes":["org.dromara.generator.domain.GenTable","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询据库列表\n\n @param genTable 业务信息\n @return 数据库表集合\n"},{"name":"selectDbTableListByNames","paramTypes":["java.lang.String[]","java.lang.String"],"doc":" 查询据库列表\n\n @param tableNames 表名称组\n @param dataName 数据源名称\n @return 数据库表集合\n"},{"name":"selectGenTableAll","paramTypes":[],"doc":" 查询所有表信息\n\n @return 表信息集合\n"},{"name":"selectGenTableById","paramTypes":["java.lang.Long"],"doc":" 查询业务信息\n\n @param id 业务ID\n @return 业务信息\n"},{"name":"updateGenTable","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 修改业务\n\n @param genTable 业务信息\n"},{"name":"deleteGenTableByIds","paramTypes":["java.lang.Long[]"],"doc":" 删除业务信息\n\n @param tableIds 需要删除的表数据ID\n"},{"name":"importGenTable","paramTypes":["java.util.List","java.lang.String"],"doc":" 导入表结构\n\n @param tableList 导入表列表\n @param dataName 数据源名称\n"},{"name":"selectDbTableColumnsByName","paramTypes":["java.lang.String","java.lang.String"],"doc":" 根据表名称查询列信息\n\n @param tableName 表名称\n @param dataName 数据源名称\n @return 列信息\n"},{"name":"previewCode","paramTypes":["java.lang.Long"],"doc":" 预览代码\n\n @param tableId 表编号\n @return 预览数据列表\n"},{"name":"downloadCode","paramTypes":["java.lang.Long"],"doc":" 生成代码(下载方式)\n\n @param tableId 表名称\n @return 数据\n"},{"name":"generatorCode","paramTypes":["java.lang.Long"],"doc":" 生成代码(自定义路径)\n\n @param tableId 表名称\n"},{"name":"synchDb","paramTypes":["java.lang.Long"],"doc":" 同步数据库\n\n @param tableId 表名称\n"},{"name":"downloadCode","paramTypes":["java.lang.String[]"],"doc":" 批量生成代码(下载方式)\n\n @param tableIds 表ID数组\n @return 数据\n"},{"name":"validateEdit","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 修改保存参数校验\n\n @param genTable 业务信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/util/GenUtils.class b/ruoyi-generator/target/classes/org/dromara/generator/util/GenUtils.class new file mode 100644 index 0000000..df6f7fb Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/util/GenUtils.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/util/GenUtils__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/util/GenUtils__Javadoc.json new file mode 100644 index 0000000..5d6bd6a --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/util/GenUtils__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 代码生成器 工具类\n\n @author ruoyi\n","fields":[],"enumConstants":[],"methods":[{"name":"initTable","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 初始化表信息\n"},{"name":"initColumnField","paramTypes":["org.dromara.generator.domain.GenTableColumn","org.dromara.generator.domain.GenTable"],"doc":" 初始化列属性字段\n"},{"name":"arraysContains","paramTypes":["java.lang.String[]","java.lang.String"],"doc":" 校验数组是否包含指定值\n\n @param arr 数组\n @param targetValue 值\n @return 是否包含\n"},{"name":"getModuleName","paramTypes":["java.lang.String"],"doc":" 获取模块名\n\n @param packageName 包名\n @return 模块名\n"},{"name":"getBusinessName","paramTypes":["java.lang.String"],"doc":" 获取业务名\n\n @param tableName 表名\n @return 业务名\n"},{"name":"convertClassName","paramTypes":["java.lang.String"],"doc":" 表名转换成Java类名\n\n @param tableName 表名称\n @return 类名\n"},{"name":"replaceFirst","paramTypes":["java.lang.String","java.lang.String[]"],"doc":" 批量替换前缀\n\n @param replacementm 替换值\n @param searchList 替换列表\n"},{"name":"replaceText","paramTypes":["java.lang.String"],"doc":" 关键字替换\n\n @param text 需要被替换的名字\n @return 替换后的名字\n"},{"name":"getDbType","paramTypes":["java.lang.String"],"doc":" 获取数据库类型字段\n\n @param columnType 列类型\n @return 截取后的列类型\n"},{"name":"getColumnLength","paramTypes":["java.lang.String"],"doc":" 获取字段长度\n\n @param columnType 列类型\n @return 截取后的列类型\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityInitializer.class b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityInitializer.class new file mode 100644 index 0000000..1a57ea3 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityInitializer.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityInitializer__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityInitializer__Javadoc.json new file mode 100644 index 0000000..fc3b11e --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityInitializer__Javadoc.json @@ -0,0 +1 @@ +{"doc":" VelocityEngine工厂\n\n @author ruoyi\n","fields":[],"enumConstants":[],"methods":[{"name":"initVelocity","paramTypes":[],"doc":" 初始化vm方法\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityUtils.class b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityUtils.class new file mode 100644 index 0000000..3a46b56 Binary files /dev/null and b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityUtils.class differ diff --git a/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityUtils__Javadoc.json b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityUtils__Javadoc.json new file mode 100644 index 0000000..fa42751 --- /dev/null +++ b/ruoyi-generator/target/classes/org/dromara/generator/util/VelocityUtils__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 模板处理工具类\n\n @author ruoyi\n","fields":[{"name":"PROJECT_PATH","doc":" 项目空间路径\n"},{"name":"MYBATIS_PATH","doc":" mybatis空间路径\n"},{"name":"DEFAULT_PARENT_MENU_ID","doc":" 默认上级菜单,系统工具\n"}],"enumConstants":[],"methods":[{"name":"prepareContext","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 设置模板变量信息\n\n @return 模板列表\n"},{"name":"getTemplateList","paramTypes":["java.lang.String"],"doc":" 获取模板信息\n\n @return 模板列表\n"},{"name":"getFileName","paramTypes":["java.lang.String","org.dromara.generator.domain.GenTable"],"doc":" 获取文件名\n"},{"name":"getPackagePrefix","paramTypes":["java.lang.String"],"doc":" 获取包前缀\n\n @param packageName 包名称\n @return 包前缀名称\n"},{"name":"getImportList","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 根据列类型获取导入包\n\n @param genTable 业务表对象\n @return 返回需要导入的包列表\n"},{"name":"getDicts","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 根据列类型获取字典组\n\n @param genTable 业务表对象\n @return 返回字典组\n"},{"name":"addDicts","paramTypes":["java.util.Set","java.util.List"],"doc":" 添加字典列表\n\n @param dicts 字典列表\n @param columns 列集合\n"},{"name":"getPermissionPrefix","paramTypes":["java.lang.String","java.lang.String"],"doc":" 获取权限前缀\n\n @param moduleName 模块名称\n @param businessName 业务名称\n @return 返回权限前缀\n"},{"name":"getParentMenuId","paramTypes":["cn.hutool.core.lang.Dict"],"doc":" 获取上级菜单ID字段\n\n @param paramsObj 生成其他选项\n @return 上级菜单ID字段\n"},{"name":"getTreecode","paramTypes":["java.util.Map"],"doc":" 获取树编码\n\n @param paramsObj 生成其他选项\n @return 树编码\n"},{"name":"getTreeParentCode","paramTypes":["cn.hutool.core.lang.Dict"],"doc":" 获取树父编码\n\n @param paramsObj 生成其他选项\n @return 树父编码\n"},{"name":"getTreeName","paramTypes":["cn.hutool.core.lang.Dict"],"doc":" 获取树名称\n\n @param paramsObj 生成其他选项\n @return 树名称\n"},{"name":"getExpandColumn","paramTypes":["org.dromara.generator.domain.GenTable"],"doc":" 获取需要在哪一列上面显示展开按钮\n\n @param genTable 业务表对象\n @return 展开按钮列序号\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-generator/target/classes/vm/java/bo.java.vm b/ruoyi-generator/target/classes/vm/java/bo.java.vm new file mode 100644 index 0000000..511d37c --- /dev/null +++ b/ruoyi-generator/target/classes/vm/java/bo.java.vm @@ -0,0 +1,50 @@ +package ${packageName}.domain.bo; + +import ${packageName}.domain.${ClassName}; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +#foreach ($import in $importList) +import ${import}; +#end + +/** + * ${functionName}业务对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = ${ClassName}.class, reverseConvertGenerate = false) +public class ${ClassName}Bo extends BaseEntity { + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField) && ($column.query || $column.insert || $column.edit)) + /** + * $column.columnComment + */ +#if($column.insert && $column.edit) +#set($Group="AddGroup.class, EditGroup.class") +#elseif($column.insert) +#set($Group="AddGroup.class") +#elseif($column.edit) +#set($Group="EditGroup.class") +#end +#if($column.required) +#if($column.javaType == 'String') + @NotBlank(message = "$column.columnComment不能为空", groups = { $Group }) +#else + @NotNull(message = "$column.columnComment不能为空", groups = { $Group }) +#end +#end + private $column.javaType $column.javaField; + +#end +#end + +} diff --git a/ruoyi-generator/target/classes/vm/java/controller.java.vm b/ruoyi-generator/target/classes/vm/java/controller.java.vm new file mode 100644 index 0000000..6438971 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/java/controller.java.vm @@ -0,0 +1,115 @@ +package ${packageName}.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import ${packageName}.domain.vo.${ClassName}Vo; +import ${packageName}.domain.bo.${ClassName}Bo; +import ${packageName}.service.I${ClassName}Service; +#if($table.crud) +import org.dromara.common.mybatis.core.page.TableDataInfo; +#elseif($table.tree) +#end + +/** + * ${functionName} + * + * @author ${author} + * @date ${datetime} + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/${moduleName}/${businessName}") +public class ${ClassName}Controller extends BaseController { + + private final I${ClassName}Service ${className}Service; + + /** + * 查询${functionName}列表 + */ + @SaCheckPermission("${permissionPrefix}:list") + @GetMapping("/list") +#if($table.crud) + public TableDataInfo<${ClassName}Vo> list(${ClassName}Bo bo, PageQuery pageQuery) { + return ${className}Service.queryPageList(bo, pageQuery); + } +#elseif($table.tree) + public R> list(${ClassName}Bo bo) { + List<${ClassName}Vo> list = ${className}Service.queryList(bo); + return R.ok(list); + } +#end + + /** + * 导出${functionName}列表 + */ + @SaCheckPermission("${permissionPrefix}:export") + @Log(title = "${functionName}", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(${ClassName}Bo bo, HttpServletResponse response) { + List<${ClassName}Vo> list = ${className}Service.queryList(bo); + ExcelUtil.exportExcel(list, "${functionName}", ${ClassName}Vo.class, response); + } + + /** + * 获取${functionName}详细信息 + * + * @param ${pkColumn.javaField} 主键 + */ + @SaCheckPermission("${permissionPrefix}:query") + @GetMapping("/{${pkColumn.javaField}}") + public R<${ClassName}Vo> getInfo(@NotNull(message = "主键不能为空") + @PathVariable ${pkColumn.javaType} ${pkColumn.javaField}) { + return R.ok(${className}Service.queryById(${pkColumn.javaField})); + } + + /** + * 新增${functionName} + */ + @SaCheckPermission("${permissionPrefix}:add") + @Log(title = "${functionName}", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody ${ClassName}Bo bo) { + return toAjax(${className}Service.insertByBo(bo)); + } + + /** + * 修改${functionName} + */ + @SaCheckPermission("${permissionPrefix}:edit") + @Log(title = "${functionName}", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody ${ClassName}Bo bo) { + return toAjax(${className}Service.updateByBo(bo)); + } + + /** + * 删除${functionName} + * + * @param ${pkColumn.javaField}s 主键串 + */ + @SaCheckPermission("${permissionPrefix}:remove") + @Log(title = "${functionName}", businessType = BusinessType.DELETE) + @DeleteMapping("/{${pkColumn.javaField}s}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { + return toAjax(${className}Service.deleteWithValidByIds(List.of(${pkColumn.javaField}s), true)); + } +} diff --git a/ruoyi-generator/target/classes/vm/java/domain.java.vm b/ruoyi-generator/target/classes/vm/java/domain.java.vm new file mode 100644 index 0000000..205fb73 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/java/domain.java.vm @@ -0,0 +1,60 @@ +package ${packageName}.domain; + +#foreach ($column in $columns) +#if($column.javaField=='tenantId') +#set($IsTenant=1) +#end +#end +#if($IsTenant==1) +import org.dromara.common.tenant.core.TenantEntity; +#else +import org.dromara.common.mybatis.core.domain.BaseEntity; +#end +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +#foreach ($import in $importList) +import ${import}; +#end + +import java.io.Serial; + +/** + * ${functionName}对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +#if($IsTenant==1) +#set($Entity="TenantEntity") +#else +#set($Entity="BaseEntity") +#end +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("${tableName}") +public class ${ClassName} extends ${Entity} { + + @Serial + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if(!$table.isSuperColumn($column.javaField)) + /** + * $column.columnComment + */ +#if($column.javaField=='delFlag') + @TableLogic +#end +#if($column.javaField=='version') + @Version +#end +#if($column.isPk==1) + @TableId(value = "$column.columnName") +#end + private $column.javaType $column.javaField; + +#end +#end + +} diff --git a/ruoyi-generator/target/classes/vm/java/mapper.java.vm b/ruoyi-generator/target/classes/vm/java/mapper.java.vm new file mode 100644 index 0000000..0922401 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/java/mapper.java.vm @@ -0,0 +1,15 @@ +package ${packageName}.mapper; + +import ${packageName}.domain.${ClassName}; +import ${packageName}.domain.vo.${ClassName}Vo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * ${functionName}Mapper接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}, ${ClassName}Vo> { + +} diff --git a/ruoyi-generator/target/classes/vm/java/service.java.vm b/ruoyi-generator/target/classes/vm/java/service.java.vm new file mode 100644 index 0000000..4db9030 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/java/service.java.vm @@ -0,0 +1,72 @@ +package ${packageName}.service; + +import ${packageName}.domain.vo.${ClassName}Vo; +import ${packageName}.domain.bo.${ClassName}Bo; +#if($table.crud) +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +#end + +import java.util.Collection; +import java.util.List; + +/** + * ${functionName}Service接口 + * + * @author ${author} + * @date ${datetime} + */ +public interface I${ClassName}Service { + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} 主键 + * @return ${functionName} + */ + ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}); + +#if($table.crud) + /** + * 分页查询${functionName}列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return ${functionName}分页列表 + */ + TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery); +#end + + /** + * 查询符合条件的${functionName}列表 + * + * @param bo 查询条件 + * @return ${functionName}列表 + */ + List<${ClassName}Vo> queryList(${ClassName}Bo bo); + + /** + * 新增${functionName} + * + * @param bo ${functionName} + * @return 是否新增成功 + */ + Boolean insertByBo(${ClassName}Bo bo); + + /** + * 修改${functionName} + * + * @param bo ${functionName} + * @return 是否修改成功 + */ + Boolean updateByBo(${ClassName}Bo bo); + + /** + * 校验并批量删除${functionName}信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid); +} diff --git a/ruoyi-generator/target/classes/vm/java/serviceImpl.java.vm b/ruoyi-generator/target/classes/vm/java/serviceImpl.java.vm new file mode 100644 index 0000000..48cc8b1 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/java/serviceImpl.java.vm @@ -0,0 +1,158 @@ +package ${packageName}.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +#if($table.crud) +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +#end +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ${packageName}.domain.bo.${ClassName}Bo; +import ${packageName}.domain.vo.${ClassName}Vo; +import ${packageName}.domain.${ClassName}; +import ${packageName}.mapper.${ClassName}Mapper; +import ${packageName}.service.I${ClassName}Service; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * ${functionName}Service业务层处理 + * + * @author ${author} + * @date ${datetime} + */ +@RequiredArgsConstructor +@Service +public class ${ClassName}ServiceImpl implements I${ClassName}Service { + + private final ${ClassName}Mapper baseMapper; + + /** + * 查询${functionName} + * + * @param ${pkColumn.javaField} 主键 + * @return ${functionName} + */ + @Override + public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){ + return baseMapper.selectVoById(${pkColumn.javaField}); + } + +#if($table.crud) + /** + * 分页查询${functionName}列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return ${functionName}分页列表 + */ + @Override + public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) { + LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); + Page<${ClassName}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } +#end + + /** + * 查询符合条件的${functionName}列表 + * + * @param bo 查询条件 + * @return ${functionName}列表 + */ + @Override + public List<${ClassName}Vo> queryList(${ClassName}Bo bo) { + LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper<${ClassName}> lqw = Wrappers.lambdaQuery(); +#foreach($column in $columns) +#if($column.query) +#set($queryType=$column.queryType) +#set($javaField=$column.javaField) +#set($javaType=$column.javaType) +#set($columnName=$column.columnName) +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#set($mpMethod=$column.queryType.toLowerCase()) +#if($queryType != 'BETWEEN') +#if($javaType == 'String') +#set($condition='StringUtils.isNotBlank(bo.get'+$AttrName+'())') +#else +#set($condition='bo.get'+$AttrName+'() != null') +#end + lqw.$mpMethod($condition, ${ClassName}::get$AttrName, bo.get$AttrName()); +#else + lqw.between(params.get("begin$AttrName") != null && params.get("end$AttrName") != null, + ${ClassName}::get$AttrName ,params.get("begin$AttrName"), params.get("end$AttrName")); +#end +#end +#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) +#if($column.isPk==1) + lqw.orderByAsc(${ClassName}::get$AttrName); +#end +#end + return lqw; + } + + /** + * 新增${functionName} + * + * @param bo ${functionName} + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(${ClassName}Bo bo) { + ${ClassName} add = MapstructUtils.convert(bo, ${ClassName}.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; +#set($pk=$pkColumn.javaField.substring(0,1).toUpperCase() + ${pkColumn.javaField.substring(1)}) + if (flag) { + bo.set$pk(add.get$pk()); + } + return flag; + } + + /** + * 修改${functionName} + * + * @param bo ${functionName} + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(${ClassName}Bo bo) { + ${ClassName} update = MapstructUtils.convert(bo, ${ClassName}.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(${ClassName} entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除${functionName}信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection<${pkColumn.javaType}> ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-generator/target/classes/vm/java/vo.java.vm b/ruoyi-generator/target/classes/vm/java/vo.java.vm new file mode 100644 index 0000000..5591f97 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/java/vo.java.vm @@ -0,0 +1,66 @@ +package ${packageName}.domain.vo; + +#foreach ($import in $importList) +import ${import}; +#end +import ${packageName}.domain.${ClassName}; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * ${functionName}视图对象 ${tableName} + * + * @author ${author} + * @date ${datetime} + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = ${ClassName}.class) +public class ${ClassName}Vo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if($column.list) + /** + * $column.columnComment + */ +#set($parentheseIndex=$column.columnComment.indexOf("(")) +#if($parentheseIndex != -1) +#set($comment=$column.columnComment.substring(0, $parentheseIndex)) +#else +#set($comment=$column.columnComment) +#end +#if(${column.dictType} && ${column.dictType} != '') + @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "${column.dictType}") +#elseif($parentheseIndex != -1) + @ExcelProperty(value = "${comment}", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "$column.readConverterExp()") +#else + @ExcelProperty(value = "${comment}") +#end + private $column.javaType $column.javaField; + +#if($column.htmlType == "imageUpload") + /** + * ${column.columnComment}Url + */ + @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "${column.javaField}") + private String ${column.javaField}Url; +#end +#end +#end + +} diff --git a/ruoyi-generator/target/classes/vm/sql/oracle/sql.vm b/ruoyi-generator/target/classes/vm/sql/oracle/sql.vm new file mode 100644 index 0000000..f6638be --- /dev/null +++ b/ruoyi-generator/target/classes/vm/sql/oracle/sql.vm @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, sysdate, null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, sysdate, null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, sysdate, null, null, ''); diff --git a/ruoyi-generator/target/classes/vm/sql/postgres/sql.vm b/ruoyi-generator/target/classes/vm/sql/postgres/sql.vm new file mode 100644 index 0000000..0923392 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/sql/postgres/sql.vm @@ -0,0 +1,20 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, now(), null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, now(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, now(), null, null, ''); + diff --git a/ruoyi-generator/target/classes/vm/sql/sql.vm b/ruoyi-generator/target/classes/vm/sql/sql.vm new file mode 100644 index 0000000..01824c2 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/sql/sql.vm @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, sysdate(), null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, sysdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, sysdate(), null, null, ''); diff --git a/ruoyi-generator/target/classes/vm/sql/sqlserver/sql.vm b/ruoyi-generator/target/classes/vm/sql/sqlserver/sql.vm new file mode 100644 index 0000000..bdf166e --- /dev/null +++ b/ruoyi-generator/target/classes/vm/sql/sqlserver/sql.vm @@ -0,0 +1,19 @@ +-- 菜单 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[0]}, '${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 103, 1, getdate(), null, null, '${functionName}菜单'); + +-- 按钮 SQL +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[1]}, '${functionName}查询', ${table.menuIds[0]}, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[2]}, '${functionName}新增', ${table.menuIds[0]}, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[3]}, '${functionName}修改', ${table.menuIds[0]}, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[4]}, '${functionName}删除', ${table.menuIds[0]}, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 103, 1, getdate(), null, null, ''); + +insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) +values(${table.menuIds[5]}, '${functionName}导出', ${table.menuIds[0]}, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 103, 1, getdate(), null, null, ''); diff --git a/ruoyi-generator/target/classes/vm/ts/api.ts.vm b/ruoyi-generator/target/classes/vm/ts/api.ts.vm new file mode 100644 index 0000000..3aa4a5f --- /dev/null +++ b/ruoyi-generator/target/classes/vm/ts/api.ts.vm @@ -0,0 +1,63 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { ${BusinessName}VO, ${BusinessName}Form, ${BusinessName}Query } from '@/api/${moduleName}/${businessName}/types'; + +/** + * 查询${functionName}列表 + * @param query + * @returns {*} + */ + +export const list${BusinessName} = (query?: ${BusinessName}Query): AxiosPromise<${BusinessName}VO[]> => { + return request({ + url: '/${moduleName}/${businessName}/list', + method: 'get', + params: query + }); +}; + +/** + * 查询${functionName}详细 + * @param ${pkColumn.javaField} + */ +export const get${BusinessName} = (${pkColumn.javaField}: string | number): AxiosPromise<${BusinessName}VO> => { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'get' + }); +}; + +/** + * 新增${functionName} + * @param data + */ +export const add${BusinessName} = (data: ${BusinessName}Form) => { + return request({ + url: '/${moduleName}/${businessName}', + method: 'post', + data: data + }); +}; + +/** + * 修改${functionName} + * @param data + */ +export const update${BusinessName} = (data: ${BusinessName}Form) => { + return request({ + url: '/${moduleName}/${businessName}', + method: 'put', + data: data + }); +}; + +/** + * 删除${functionName} + * @param ${pkColumn.javaField} + */ +export const del${BusinessName} = (${pkColumn.javaField}: string | number | Array) => { + return request({ + url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, + method: 'delete' + }); +}; diff --git a/ruoyi-generator/target/classes/vm/ts/types.ts.vm b/ruoyi-generator/target/classes/vm/ts/types.ts.vm new file mode 100644 index 0000000..35a468e --- /dev/null +++ b/ruoyi-generator/target/classes/vm/ts/types.ts.vm @@ -0,0 +1,64 @@ +export interface ${BusinessName}VO { +#foreach ($column in $columns) +#if($column.list) + /** + * $column.columnComment + */ + $column.javaField:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#if($column.htmlType == "imageUpload") + /** + * ${column.columnComment}Url + */ + ${column.javaField}Url: string; +#end +#end +#end +#if ($table.tree) + /** + * 子对象 + */ + children: ${BusinessName}VO[]; +#end +} + +export interface ${BusinessName}Form extends BaseEntity { +#foreach ($column in $columns) +#if($column.insert || $column.edit) + /** + * $column.columnComment + */ + $column.javaField?:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#end +#end +} + +export interface ${BusinessName}Query #if(!${treeCode})extends PageQuery #end{ + +#foreach ($column in $columns) +#if($column.query) + /** + * $column.columnComment + */ + $column.javaField?:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) string | number; + #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; + #elseif($column.javaType == 'Boolean') boolean; + #else string; + #end +#end +#end + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/ruoyi-generator/target/classes/vm/vue/index-tree.vue.vm b/ruoyi-generator/target/classes/vm/vue/index-tree.vue.vm new file mode 100644 index 0000000..caf3472 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/vue/index-tree.vue.vm @@ -0,0 +1,498 @@ + + + diff --git a/ruoyi-generator/target/classes/vm/vue/index.vue.vm b/ruoyi-generator/target/classes/vm/vue/index.vue.vm new file mode 100644 index 0000000..a92d19a --- /dev/null +++ b/ruoyi-generator/target/classes/vm/vue/index.vue.vm @@ -0,0 +1,459 @@ + + + diff --git a/ruoyi-generator/target/classes/vm/xml/mapper.xml.vm b/ruoyi-generator/target/classes/vm/xml/mapper.xml.vm new file mode 100644 index 0000000..9fb48d9 --- /dev/null +++ b/ruoyi-generator/target/classes/vm/xml/mapper.xml.vm @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-job/.flattened-pom.xml b/ruoyi-job/.flattened-pom.xml new file mode 100644 index 0000000..a2d0988 --- /dev/null +++ b/ruoyi-job/.flattened-pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.dromara + ruoyi-modules + 5.3.0 + + org.dromara + ruoyi-job + 5.3.0 + 任务调度 + + + org.dromara + ruoyi-common-json + + + org.dromara + ruoyi-common-job + + + diff --git a/ruoyi-job/pom.xml b/ruoyi-job/pom.xml new file mode 100644 index 0000000..2431a1c --- /dev/null +++ b/ruoyi-job/pom.xml @@ -0,0 +1,34 @@ + + + + org.dromara + ruoyi-modules + ${revision} + + 4.0.0 + jar + ruoyi-job + + + 任务调度 + + + + + + + org.dromara + ruoyi-common-json + + + + org.dromara + ruoyi-common-job + + + + + + diff --git a/ruoyi-job/src/main/java/org/dromara/job/package-info.java b/ruoyi-job/src/main/java/org/dromara/job/package-info.java new file mode 100644 index 0000000..2f118b0 --- /dev/null +++ b/ruoyi-job/src/main/java/org/dromara/job/package-info.java @@ -0,0 +1 @@ +package org.dromara.job; diff --git a/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java b/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java new file mode 100644 index 0000000..bee074a --- /dev/null +++ b/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestAnnoJobExecutor.java @@ -0,0 +1,36 @@ +package org.dromara.job.snailjob; + +import com.aizuda.snailjob.client.job.core.annotation.JobExecutor; +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.model.ExecuteResult; +import com.aizuda.snailjob.common.core.util.JsonUtil; +import com.aizuda.snailjob.common.log.SnailJobLog; +import org.springframework.stereotype.Component; + +/** + * @author opensnail + * @date 2024-05-17 + */ +@Component +@JobExecutor(name = "testJobExecutor") +// 定义一个公共类 TestAnnoJobExecutor,该类可能用于执行与任务相关的操作 +public class TestAnnoJobExecutor { + + /** + * 执行任务的方法 + * + * @param jobArgs 任务参数对象,包含了任务执行所需的参数信息 + * @return ExecuteResult 类型的对象,表示任务执行的结果 + */ + public ExecuteResult jobExecute(JobArgs jobArgs) { + // 使用 SnailJobLog 的 LOCAL 记录器记录本地日志,输出任务参数信息 + // 将任务参数对象转换为 JSON 字符串后进行输出,方便查看任务参数的具体内容 + SnailJobLog.LOCAL.info("testJobExecutor. jobArgs:{}", JsonUtil.toJsonString(jobArgs)); + // 使用 SnailJobLog 的 REMOTE 记录器记录远程日志,同样输出任务参数信息 + // 转换为 JSON 字符串输出,便于在远程端查看任务参数情况 + SnailJobLog.REMOTE.info("testJobExecutor. jobArgs:{}", JsonUtil.toJsonString(jobArgs)); + + // 返回一个表示任务执行成功的 ExecuteResult 对象,并附带提示信息“测试成功” + return ExecuteResult.success("测试成功"); + } +} diff --git a/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java b/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java new file mode 100644 index 0000000..b54a4e8 --- /dev/null +++ b/ruoyi-job/src/main/java/org/dromara/job/snailjob/TestClassJobExecutor.java @@ -0,0 +1,30 @@ +package org.dromara.job.snailjob; + +import com.aizuda.snailjob.client.job.core.dto.JobArgs; +import com.aizuda.snailjob.client.job.core.executor.AbstractJobExecutor; +import com.aizuda.snailjob.client.model.ExecuteResult; +import org.springframework.stereotype.Component; + +/** + * @author opensnail + * @date 2024-05-17 + */ +@Component +// 定义一个公共类 TestClassJobExecutor,该类继承自 AbstractJobExecutor 类, +// 表示它是一个具体的任务执行器,可能用于实现特定的任务执行逻辑 +public class TestClassJobExecutor extends AbstractJobExecutor { + + /** + * 重写父类 AbstractJobExecutor 中的 doJobExecute 方法, + * 该方法用于具体执行任务,是任务执行的核心逻辑部分 + * + * @param jobArgs 任务参数对象,包含了任务执行所需的参数信息 + * @return ExecuteResult 类型的对象,表示任务执行的结果 + */ + @Override + protected ExecuteResult doJobExecute(JobArgs jobArgs) { + // 返回一个表示任务执行成功的 ExecuteResult 对象, + // 并附带提示信息“TestJobExecutor测试成功”,表明任务执行的状态和结果描述 + return ExecuteResult.success("TestJobExecutor测试成功"); + } +} diff --git a/ruoyi-job/target/classes/org/dromara/job/snailjob/TestAnnoJobExecutor.class b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestAnnoJobExecutor.class new file mode 100644 index 0000000..5f4eedb Binary files /dev/null and b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestAnnoJobExecutor.class differ diff --git a/ruoyi-job/target/classes/org/dromara/job/snailjob/TestAnnoJobExecutor__Javadoc.json b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestAnnoJobExecutor__Javadoc.json new file mode 100644 index 0000000..fef21e7 --- /dev/null +++ b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestAnnoJobExecutor__Javadoc.json @@ -0,0 +1 @@ +{"doc":" @author opensnail\n @date 2024-05-17\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-job/target/classes/org/dromara/job/snailjob/TestClassJobExecutor.class b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestClassJobExecutor.class new file mode 100644 index 0000000..e6dda81 Binary files /dev/null and b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestClassJobExecutor.class differ diff --git a/ruoyi-job/target/classes/org/dromara/job/snailjob/TestClassJobExecutor__Javadoc.json b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestClassJobExecutor__Javadoc.json new file mode 100644 index 0000000..fef21e7 --- /dev/null +++ b/ruoyi-job/target/classes/org/dromara/job/snailjob/TestClassJobExecutor__Javadoc.json @@ -0,0 +1 @@ +{"doc":" @author opensnail\n @date 2024-05-17\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/.flattened-pom.xml b/ruoyi-system/.flattened-pom.xml new file mode 100644 index 0000000..0afe776 --- /dev/null +++ b/ruoyi-system/.flattened-pom.xml @@ -0,0 +1,80 @@ + + + 4.0.0 + + org.dromara + ruoyi-modules + 5.3.0 + + org.dromara + ruoyi-system + 5.3.0 + system系统模块 + + + org.dromara + ruoyi-common-core + + + org.dromara + ruoyi-common-doc + + + org.dromara + ruoyi-common-mybatis + + + org.dromara + ruoyi-common-translation + + + org.dromara + ruoyi-common-oss + + + org.dromara + ruoyi-common-log + + + org.dromara + ruoyi-common-excel + + + org.dromara + ruoyi-common-sms + + + org.dromara + ruoyi-common-tenant + + + org.dromara + ruoyi-common-security + + + org.dromara + ruoyi-common-web + + + org.dromara + ruoyi-common-idempotent + + + org.dromara + ruoyi-common-sensitive + + + org.dromara + ruoyi-common-encrypt + + + org.dromara + ruoyi-common-websocket + + + org.dromara + ruoyi-common-sse + + + diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml new file mode 100644 index 0000000..0fc6d55 --- /dev/null +++ b/ruoyi-system/pom.xml @@ -0,0 +1,105 @@ + + + + org.dromara + ruoyi-modules + ${revision} + + 4.0.0 + + ruoyi-system + + + system系统模块 + + + + + + org.dromara + ruoyi-common-core + + + + org.dromara + ruoyi-common-doc + + + + org.dromara + ruoyi-common-mybatis + + + + org.dromara + ruoyi-common-translation + + + + + org.dromara + ruoyi-common-oss + + + + org.dromara + ruoyi-common-log + + + + + org.dromara + ruoyi-common-excel + + + + + org.dromara + ruoyi-common-sms + + + + org.dromara + ruoyi-common-tenant + + + + org.dromara + ruoyi-common-security + + + + org.dromara + ruoyi-common-web + + + + org.dromara + ruoyi-common-idempotent + + + + org.dromara + ruoyi-common-sensitive + + + + org.dromara + ruoyi-common-encrypt + + + + org.dromara + ruoyi-common-websocket + + + + org.dromara + ruoyi-common-sse + + + + + diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java new file mode 100644 index 0000000..314664b --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java @@ -0,0 +1,81 @@ +package org.dromara.system.controller.monitor; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.system.domain.vo.CacheListInfoVo; +import lombok.RequiredArgsConstructor; +import org.redisson.spring.data.connection.RedissonConnectionFactory; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.*; + +/** + * 缓存监控 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/cache") +// 定义一个公共类 CacheController,该类可能是用于处理与缓存相关的控制器类 +// 通常在 Web 应用中,控制器负责接收客户端请求并返回响应数据 +public class CacheController { + + // 定义一个 final 类型的私有成员变量 connectionFactory, + // 用于获取 Redisson 连接工厂,这里 Redisson 是一个在 Java 中用于 Redis 操作的库 + // 该变量被 final 修饰,意味着在对象初始化后不能再被重新赋值 + private final RedissonConnectionFactory connectionFactory; + + // @SaCheckPermission 是一个自定义注解,用于权限检查, + // 这里表示只有拥有 "monitor:cache:list" 权限的用户才能访问该方法 + // @GetMapping 是 Spring 框架的注解,用于将 HTTP GET 请求映射到该方法上, + // 即当客户端发送 GET 请求到对应的路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:cache:list") + @GetMapping() + public R getInfo() throws Exception { + // 通过 connectionFactory 获取 Redis 连接对象, + // 后续对 Redis 的操作都将通过这个连接对象来完成 + RedisConnection connection = connectionFactory.getConnection(); + // 调用连接对象的 commands().info("commandstats") 方法, + // 获取 Redis 命令统计信息,并将其存储在 Properties 对象中 + Properties commandStats = connection.commands().info("commandstats"); + // 创建一个用于存储饼图数据的列表,每个元素是一个 Map, + // 这里用于后续处理 Redis 命令统计信息,以特定格式存储数据 + List> pieList = new ArrayList<>(); + // 如果获取到的命令统计信息不为空 + if (commandStats != null) { + // 遍历命令统计信息中的所有属性名 + commandStats.stringPropertyNames().forEach(key -> { + // 创建一个新的 HashMap 用于存储当前命令的统计数据 + Map data = new HashMap<>(2); + // 获取当前命令属性的值 + String property = commandStats.getProperty(key); + // 从属性名中移除 "cmdstat_" 前缀,并将处理后的名称存储到 data 的 "name" 键中 + data.put("name", StringUtils.removeStart(key, "cmdstat_")); + // 从属性值中截取 "calls=" 和 ",usec" 之间的部分, + // 并将其存储到 data 的 "value" 键中,获取命令的调用次数 + data.put("value", StringUtils.substringBetween(property, "calls=", ",usec")); + // 将当前命令的统计数据添加到 pieList 列表中 + pieList.add(data); + }); + } + // 创建一个 CacheListInfoVo 对象,用于封装要返回的缓存信息 + CacheListInfoVo infoVo = new CacheListInfoVo(); + // 获取 Redis 的全面信息(可能包含各种统计和配置信息), + // 并将其设置到 infoVo 对象的 info 属性中 + infoVo.setInfo(connection.commands().info()); + // 获取 Redis 数据库的大小(即键的数量), + // 并将其设置到 infoVo 对象的 dbSize 属性中 + infoVo.setDbSize(connection.commands().dbSize()); + // 将处理后的命令统计信息列表(pieList)设置到 infoVo 对象的 commandStats 属性中 + infoVo.setCommandStats(pieList); + // 返回一个包含缓存信息对象 infoVo 的 R 类型对象, + // R 可能是自定义的用于封装响应结果的类,ok 方法表示操作成功, + // 并将 infoVo 作为响应数据返回给客户端 + return R.ok(infoVo); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java new file mode 100644 index 0000000..26fd258 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLogininforController.java @@ -0,0 +1,130 @@ +package org.dromara.system.controller.monitor; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysLogininforBo; +import org.dromara.system.domain.vo.SysLogininforVo; +import org.dromara.system.service.ISysLogininforService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 系统访问记录 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/logininfor") +// 定义一个公共类 SysLogininforController,该类继承自 BaseController 类, +// 通常用于处理与系统登录信息相关的业务逻辑,是 Web 应用中控制器层的一部分 +public class SysLogininforController extends BaseController { + + // 定义一个 final 类型的私有成员变量 logininforService, + // 用于处理系统登录信息的业务逻辑,通过依赖注入的方式进行初始化, + // 该变量被 final 修饰,意味着在对象初始化后不能再被重新赋值 + private final ISysLogininforService logininforService; + + // @SaCheckPermission 是一个自定义注解,用于权限检查, + // 这里表示只有拥有 "monitor:logininfor:list" 权限的用户才能访问该方法 + // @GetMapping 是 Spring 框架的注解,用于将 HTTP GET 请求映射到该方法上, + // 路径为 "/list",即当客户端发送 GET 请求到 "/list" 路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:logininfor:list") + @GetMapping("/list") + // 定义一个方法 list,用于获取系统登录信息的分页列表 + // @param logininfor 封装了查询条件的 SysLogininforBo 对象 + // @param pageQuery 封装了分页信息的 PageQuery 对象 + // @return TableDataInfo 类型的对象,包含了分页的系统登录信息 + public TableDataInfo list(SysLogininforBo logininfor, PageQuery pageQuery) { + // 调用 logininforService 的 selectPageLogininforList 方法, + // 获取分页的系统登录信息,并返回结果 + return logininforService.selectPageLogininforList(logininfor, pageQuery); + } + + // @Log 是一个自定义注解,用于记录操作日志,这里记录操作的标题为 "登录日志",业务类型为导出 + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:logininfor:export" 权限的用户才能访问该方法 + // @PostMapping 是 Spring 框架的注解,用于将 HTTP POST 请求映射到该方法上, + // 路径为 "/export",即当客户端发送 POST 请求到 "/export" 路径时,会调用这个方法进行处理 + @Log(title = "登录日志", businessType = BusinessType.EXPORT) + @SaCheckPermission("monitor:logininfor:export") + @PostMapping("/export") + // 定义一个方法 export,用于导出系统登录信息 + // @param logininfor 封装了查询条件的 SysLogininforBo 对象 + // @param response HttpServletResponse 对象,用于设置响应内容并返回给客户端 + public void export(SysLogininforBo logininfor, HttpServletResponse response) { + // 调用 logininforService 的 selectLogininforList 方法, + // 获取系统登录信息列表 + List list = logininforService.selectLogininforList(logininfor); + // 调用 ExcelUtil 的 exportExcel 方法,将系统登录信息列表导出为 Excel 文件, + // 并通过 response 返回给客户端 + ExcelUtil.exportExcel(list, "登录日志", SysLogininforVo.class, response); + } + + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:logininfor:remove" 权限的用户才能访问该方法 + // @Log 用于记录操作日志,操作标题为 "登录日志",业务类型为删除 + // @DeleteMapping 是 Spring 框架的注解,用于将 HTTP DELETE 请求映射到该方法上, + // 路径为 "/{infoIds}",其中 {infoIds} 是一个路径参数,即当客户端发送 DELETE 请求到包含 infoIds 的路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:logininfor:remove") + @Log(title = "登录日志", businessType = BusinessType.DELETE) + @DeleteMapping("/{infoIds}") + // 定义一个方法 remove,用于删除系统登录信息 + // @param infoIds 要删除的系统登录信息的 ID 数组,通过 @PathVariable 注解获取路径参数 + // @return R 类型的对象,用于封装响应结果,这里表示删除操作的结果 + public R remove(@PathVariable Long[] infoIds) { + // 调用 logininforService 的 deleteLogininforByIds 方法, + // 根据 ID 数组删除系统登录信息,并通过 toAjax 方法将结果封装为 R 对象返回 + return toAjax(logininforService.deleteLogininforByIds(infoIds)); + } + + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:logininfor:remove" 权限的用户才能访问该方法 + // @Log 用于记录操作日志,操作标题为 "登录日志",业务类型为清理 + // @DeleteMapping 是 Spring 框架的注解,用于将 HTTP DELETE 请求映射到该方法上, + // 路径为 "/clean",即当客户端发送 DELETE 请求到 "/clean" 路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:logininfor:remove") + @Log(title = "登录日志", businessType = BusinessType.CLEAN) + @DeleteMapping("/clean") + // 定义一个方法 clean,用于清理系统登录信息 + // @return R 类型的对象,用于封装响应结果,这里表示清理操作的结果 + public R clean() { + // 调用 logininforService 的 cleanLogininfor 方法,清理系统登录信息 + logininforService.cleanLogininfor(); + // 返回表示操作成功的 R 对象 + return R.ok(); + } + + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:logininfor:unlock" 权限的用户才能访问该方法 + // @Log 用于记录操作日志,操作标题为 "账户解锁",业务类型为其他 + // @GetMapping 是 Spring 框架的注解,用于将 HTTP GET 请求映射到该方法上, + // 路径为 "/unlock/{userName}",其中 {userName} 是一个路径参数, + // 即当客户端发送 GET 请求到包含 userName 的路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:logininfor:unlock") + @Log(title = "账户解锁", businessType = BusinessType.OTHER) + @GetMapping("/unlock/{userName}") + // 定义一个方法 unlock,用于解锁账户 + // @param userName 要解锁的账户的用户名,通过 @PathVariable 注解获取路径参数 + // @return R 类型的对象,用于封装响应结果,这里表示解锁操作的结果 + public R unlock(@PathVariable("userName") String userName) { + // 构建缓存键,格式为 CacheConstants.PWD_ERR_CNT_KEY + userName + String loginName = CacheConstants.PWD_ERR_CNT_KEY + userName; + // 检查缓存中是否存在该键 + if (RedisUtils.hasKey(loginName)) { + // 如果存在,删除该缓存键,实现账户解锁 + RedisUtils.deleteObject(loginName); + } + // 返回表示操作成功的 R 对象 + return R.ok(); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java new file mode 100644 index 0000000..3b55859 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysOperlogController.java @@ -0,0 +1,105 @@ +package org.dromara.system.controller.monitor; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.system.domain.bo.SysOperLogBo; +import org.dromara.system.domain.vo.SysOperLogVo; +import org.dromara.system.service.ISysOperLogService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 操作日志记录 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/operlog") +// 定义一个公共类 SysOperlogController,该类继承自 BaseController 类, +// 用于处理与系统操作日志相关的业务逻辑,是 Web 应用中控制器层的一部分 +public class SysOperlogController extends BaseController { + + // 定义一个 final 类型的私有成员变量 operLogService, + // 用于处理系统操作日志的业务逻辑,通过依赖注入的方式进行初始化, + // 该变量被 final 修饰,意味着在对象初始化后不能再被重新赋值 + private final ISysOperLogService operLogService; + + // @SaCheckPermission 是一个自定义注解,用于权限检查, + // 这里表示只有拥有 "monitor:operlog:list" 权限的用户才能访问该方法 + // @GetMapping 是 Spring 框架的注解,用于将 HTTP GET 请求映射到该方法上, + // 路径为 "/list",即当客户端发送 GET 请求到 "/list" 路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:operlog:list") + @GetMapping("/list") + // 定义一个方法 list,用于获取系统操作日志的分页列表 + // @param operLog 封装了查询条件的 SysOperLogBo 对象 + // @param pageQuery 封装了分页信息的 PageQuery 对象 + // @return TableDataInfo 类型的对象,包含了分页的系统操作日志信息 + public TableDataInfo list(SysOperLogBo operLog, PageQuery pageQuery) { + // 调用 operLogService 的 selectPageOperLogList 方法, + // 获取分页的系统操作日志信息,并返回结果 + return operLogService.selectPageOperLogList(operLog, pageQuery); + } + + // @Log 是一个自定义注解,用于记录操作日志,这里记录操作的标题为 "操作日志",业务类型为导出 + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:operlog:export" 权限的用户才能访问该方法 + // @PostMapping 是 Spring 框架的注解,用于将 HTTP POST 请求映射到该方法上, + // 路径为 "/export",即当客户端发送 POST 请求到 "/export" 路径时,会调用这个方法进行处理 + @Log(title = "操作日志", businessType = BusinessType.EXPORT) + @SaCheckPermission("monitor:operlog:export") + @PostMapping("/export") + // 定义一个方法 export,用于导出系统操作日志 + // @param operLog 封装了查询条件的 SysOperLogBo 对象 + // @param response HttpServletResponse 对象,用于设置响应内容并返回给客户端 + public void export(SysOperLogBo operLog, HttpServletResponse response) { + // 调用 operLogService 的 selectOperLogList 方法, + // 获取系统操作日志列表 + List list = operLogService.selectOperLogList(operLog); + // 调用 ExcelUtil 的 exportExcel 方法,将系统操作日志列表导出为 Excel 文件, + // 并通过 response 返回给客户端 + ExcelUtil.exportExcel(list, "操作日志", SysOperLogVo.class, response); + } + + // @Log 用于记录操作日志,操作标题为 "操作日志",业务类型为删除 + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:operlog:remove" 权限的用户才能访问该方法 + // @DeleteMapping 是 Spring 框架的注解,用于将 HTTP DELETE 请求映射到该方法上, + // 路径为 "/{operIds}",其中 {operIds} 是一个路径参数,即当客户端发送 DELETE 请求到包含 operIds 的路径时,会调用这个方法进行处理 + @Log(title = "操作日志", businessType = BusinessType.DELETE) + @SaCheckPermission("monitor:operlog:remove") + @DeleteMapping("/{operIds}") + // 定义一个方法 remove,用于删除系统操作日志 + // @param operIds 要删除的系统操作日志的 ID 数组,通过 @PathVariable 注解获取路径参数 + // @return R 类型的对象,用于封装响应结果,这里表示删除操作的结果 + public R remove(@PathVariable Long[] operIds) { + // 调用 operLogService 的 deleteOperLogByIds 方法, + // 根据 ID 数组删除系统操作日志,并通过 toAjax 方法将结果封装为 R 对象返回 + return toAjax(operLogService.deleteOperLogByIds(operIds)); + } + + // @Log 用于记录操作日志,操作标题为 "操作日志",业务类型为清理 + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:operlog:remove" 权限的用户才能访问该方法 + // @DeleteMapping 是 Spring 框架的注解,用于将 HTTP DELETE 请求映射到该方法上, + // 路径为 "/clean",即当客户端发送 DELETE 请求到 "/clean" 路径时,会调用这个方法进行处理 + @Log(title = "操作日志", businessType = BusinessType.CLEAN) + @SaCheckPermission("monitor:operlog:remove") + @DeleteMapping("/clean") + // 定义一个方法 clean,用于清理系统操作日志 + // @return R 类型的对象,用于封装响应结果,这里表示清理操作的结果 + public R clean() { + // 调用 operLogService 的 cleanOperLog 方法,清理系统操作日志 + operLogService.cleanOperLog(); + // 返回表示操作成功的 R 对象 + return R.ok(); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java new file mode 100644 index 0000000..9bb72a6 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java @@ -0,0 +1,171 @@ +package org.dromara.system.controller.monitor; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.bean.BeanUtil; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.domain.dto.UserOnlineDTO; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.SysUserOnline; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 在线用户监控 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@RestController +@RequestMapping("/monitor/online") +// 定义一个公共类 SysUserOnlineController,该类继承自 BaseController 类, +// 用于处理与系统在线用户相关的业务逻辑,是 Web 应用中控制器层的一部分 +public class SysUserOnlineController extends BaseController { + + // @SaCheckPermission 是一个自定义注解,用于权限检查, + // 这里表示只有拥有 "monitor:online:list" 权限的用户才能访问该方法 + // @GetMapping 是 Spring 框架的注解,用于将 HTTP GET 请求映射到该方法上, + // 路径为 "/list",即当客户端发送 GET 请求到 "/list" 路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:online:list") + @GetMapping("/list") + // 定义一个方法 list,用于获取系统在线用户的列表 + // @param ipaddr 客户端的 IP 地址,用于筛选在线用户(可选参数) + // @param userName 用户名,用于筛选在线用户(可选参数) + // @return TableDataInfo 类型的对象,包含了系统在线用户信息 + public TableDataInfo list(String ipaddr, String userName) { + // 从 Redis 中获取所有符合特定键模式(CacheConstants.ONLINE_TOKEN_KEY + "*")的键集合, + // 这些键与在线用户的 token 相关 + Collection keys = RedisUtils.keys(CacheConstants.ONLINE_TOKEN_KEY + "*"); + // 创建一个用于存储用户在线数据传输对象(UserOnlineDTO)的列表 + List userOnlineDTOList = new ArrayList<>(); + // 遍历获取到的键集合 + for (String key : keys) { + // 从键中提取出 token,即键的最后一部分 + String token = StringUtils.substringAfterLast(key, ":"); + // 通过 StpUtil 获取该 token 的有效超时时间,如果小于 -1 表示该 token 无效,跳过该 token + if (StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) < -1) { + continue; + } + // 从 Redis 中获取与该 token 对应的用户在线数据传输对象,并添加到列表中 + userOnlineDTOList.add(RedisUtils.getCacheObject(CacheConstants.ONLINE_TOKEN_KEY + token)); + } + // 如果同时传入了 ipaddr 和 userName 参数 + if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { + // 使用 StreamUtils 对用户在线数据传输对象列表进行筛选, + // 只保留 IP 地址和用户名都匹配的对象 + userOnlineDTOList = StreamUtils.filter(userOnlineDTOList, userOnline -> + StringUtils.equals(ipaddr, userOnline.getIpaddr()) && + StringUtils.equals(userName, userOnline.getUserName()) + ); + } + // 如果只传入了 ipaddr 参数 + else if (StringUtils.isNotEmpty(ipaddr)) { + // 使用 StreamUtils 对用户在线数据传输对象列表进行筛选, + // 只保留 IP 地址匹配的对象 + userOnlineDTOList = StreamUtils.filter(userOnlineDTOList, userOnline -> + StringUtils.equals(ipaddr, userOnline.getIpaddr()) + ); + } + // 如果只传入了 userName 参数 + else if (StringUtils.isNotEmpty(userName)) { + // 使用 StreamUtils 对用户在线数据传输对象列表进行筛选, + // 只保留用户名匹配的对象 + userOnlineDTOList = StreamUtils.filter(userOnlineDTOList, userOnline -> + StringUtils.equals(userName, userOnline.getUserName()) + ); + } + // 将用户在线数据传输对象列表进行反转 + Collections.reverse(userOnlineDTOList); + // 从列表中移除所有值为 null 的元素 + userOnlineDTOList.removeAll(Collections.singleton(null)); + // 将用户在线数据传输对象列表转换为 SysUserOnline 对象列表 + List userOnlineList = BeanUtil.copyToList(userOnlineDTOList, SysUserOnline.class); + // 使用 TableDataInfo 的 build 方法构建包含在线用户列表的 TableDataInfo 对象并返回 + return TableDataInfo.build(userOnlineList); + } + + // @SaCheckPermission 用于权限检查,只有拥有 "monitor:online:forceLogout" 权限的用户才能访问该方法 + // @Log 是一个自定义注解,用于记录操作日志,这里记录操作的标题为 "在线用户",业务类型为强制操作 + // @DeleteMapping 是 Spring 框架的注解,用于将 HTTP DELETE 请求映射到该方法上, + // 路径为 "/{tokenId}",其中 {tokenId} 是一个路径参数,即当客户端发送 DELETE 请求到包含 tokenId 的路径时,会调用这个方法进行处理 + @SaCheckPermission("monitor:online:forceLogout") + @Log(title = "在线用户", businessType = BusinessType.FORCE) + @DeleteMapping("/{tokenId}") + // 定义一个方法 forceLogout,用于强制注销指定 tokenId 的用户 + // @param tokenId 要强制注销的用户的 tokenId,通过 @PathVariable 注解获取路径参数 + // @return R 类型的对象,用于封装响应结果,这里表示强制注销操作的结果 + public R forceLogout(@PathVariable String tokenId) { + try { + // 使用 StpUtil 的 kickoutByTokenValue 方法,根据 tokenId 强制踢出用户 + StpUtil.kickoutByTokenValue(tokenId); + } catch (NotLoginException ignored) { + // 如果捕获到 NotLoginException 异常,不进行任何处理(忽略该异常) + } + // 返回表示操作成功的 R 对象 + return R.ok(); + } + + // @GetMapping 是 Spring 框架的注解,用于将 HTTP GET 请求映射到该方法上, + // 这里没有指定路径,可能是映射到根路径,即当客户端发送 GET 请求到该控制器的根路径时,会调用这个方法进行处理 + @GetMapping() + // 定义一个方法 getInfo,用于获取当前登录用户的在线设备信息 + // @return TableDataInfo 类型的对象,包含了当前登录用户的在线设备信息 + public TableDataInfo getInfo() { + // 获取当前登录用户的账号 id 对应的 token 集合 + List tokenIds = StpUtil.getTokenValueListByLoginId(StpUtil.getLoginIdAsString()); + // 对 token 集合进行处理,筛选出有效 token(有效超时时间大于等于 -1), + // 并从 Redis 中获取对应的用户在线数据传输对象,然后收集到列表中 + List userOnlineDTOList = tokenIds.stream() + .filter(token -> StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) >= -1) + .map(token -> (UserOnlineDTO) RedisUtils.getCacheObject(CacheConstants.ONLINE_TOKEN_KEY + token)) + .collect(Collectors.toList()); + // 将用户在线数据传输对象列表进行反转 + Collections.reverse(userOnlineDTOList); + // 从列表中移除所有值为 null 的元素 + userOnlineDTOList.removeAll(Collections.singleton(null)); + // 将用户在线数据传输对象列表转换为 SysUserOnline 对象列表 + List userOnlineList = BeanUtil.copyToList(userOnlineDTOList, SysUserOnline.class); + // 使用 TableDataInfo 的 build 方法构建包含当前登录用户在线设备列表的 TableDataInfo 对象并返回 + return TableDataInfo.build(userOnlineList); + } + + // @Log 用于记录操作日志,操作标题为 "在线设备",业务类型为强制操作 + // @DeleteMapping 是 Spring 框架的注解,用于将 HTTP DELETE 请求映射到该方法上, + // 路径为 "/myself/{tokenId}",其中 {tokenId} 是一个路径参数, + // 即当客户端发送 DELETE 请求到包含 tokenId 的路径时,会调用这个方法进行处理 + @Log(title = "在线设备", businessType = BusinessType.FORCE) + @DeleteMapping("/myself/{tokenId}") + // 定义一个方法 remove,用于移除当前登录用户的指定在线设备(通过 tokenId) + // @param tokenId 要移除的在线设备对应的 tokenId,通过 @PathVariable 注解获取路径参数 + // @return R 类型的对象,用于封装响应结果,这里表示移除操作的结果 + public R remove(@PathVariable("tokenId") String tokenId) { + try { + // 获取当前登录用户的所有 token 集合 + List keys = StpUtil.getTokenValueListByLoginId(StpUtil.getLoginIdAsString()); + // 对 token 集合进行筛选,找到与传入的 tokenId 匹配的 token, + // 如果找到则使用 StpUtil 的 kickoutByTokenValue 方法强制踢出该设备对应的用户 + keys.stream() + .filter(key -> key.equals(tokenId)) + .findFirst() + .ifPresent(key -> StpUtil.kickoutByTokenValue(tokenId)); + } catch (NotLoginException ignored) { + // 如果捕获到 NotLoginException 异常,不进行任何处理(忽略该异常) + } + // 返回表示操作成功的 R 对象 + return R.ok(); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysClientController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysClientController.java new file mode 100644 index 0000000..eaed068 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysClientController.java @@ -0,0 +1,115 @@ +package org.dromara.system.controller.system; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.system.domain.vo.SysClientVo; +import org.dromara.system.domain.bo.SysClientBo; +import org.dromara.system.service.ISysClientService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 客户端管理 + * + * @author Michelle.Chung + * @date 2023-06-18 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/client") +public class SysClientController extends BaseController { + + private final ISysClientService sysClientService; + + /** + * 查询客户端管理列表 + */ + @SaCheckPermission("system:client:list") + @GetMapping("/list") + public TableDataInfo list(SysClientBo bo, PageQuery pageQuery) { + return sysClientService.queryPageList(bo, pageQuery); + } + + /** + * 导出客户端管理列表 + */ + @SaCheckPermission("system:client:export") + @Log(title = "客户端管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysClientBo bo, HttpServletResponse response) { + List list = sysClientService.queryList(bo); + ExcelUtil.exportExcel(list, "客户端管理", SysClientVo.class, response); + } + + /** + * 获取客户端管理详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:client:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(sysClientService.queryById(id)); + } + + /** + * 新增客户端管理 + */ + @SaCheckPermission("system:client:add") + @Log(title = "客户端管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysClientBo bo) { + return toAjax(sysClientService.insertByBo(bo)); + } + + /** + * 修改客户端管理 + */ + @SaCheckPermission("system:client:edit") + @Log(title = "客户端管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysClientBo bo) { + return toAjax(sysClientService.updateByBo(bo)); + } + + /** + * 状态修改 + */ + @SaCheckPermission("system:client:edit") + @Log(title = "客户端管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody SysClientBo bo) { + return toAjax(sysClientService.updateClientStatus(bo.getClientId(), bo.getStatus())); + } + + /** + * 删除客户端管理 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:client:remove") + @Log(title = "客户端管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(sysClientService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java new file mode 100644 index 0000000..c73c386 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysConfigController.java @@ -0,0 +1,137 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.core.domain.R; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysConfigBo; +import org.dromara.system.domain.vo.SysConfigVo; +import org.dromara.system.service.ISysConfigService; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 参数配置 信息操作处理 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/config") +public class SysConfigController extends BaseController { + + private final ISysConfigService configService; + + /** + * 获取参数配置列表 + */ + @SaCheckPermission("system:config:list") + @GetMapping("/list") + public TableDataInfo list(SysConfigBo config, PageQuery pageQuery) { + return configService.selectPageConfigList(config, pageQuery); + } + + /** + * 导出参数配置列表 + */ + @Log(title = "参数管理", businessType = BusinessType.EXPORT) + @SaCheckPermission("system:config:export") + @PostMapping("/export") + public void export(SysConfigBo config, HttpServletResponse response) { + List list = configService.selectConfigList(config); + ExcelUtil.exportExcel(list, "参数数据", SysConfigVo.class, response); + } + + /** + * 根据参数编号获取详细信息 + * + * @param configId 参数ID + */ + @SaCheckPermission("system:config:query") + @GetMapping(value = "/{configId}") + public R getInfo(@PathVariable Long configId) { + return R.ok(configService.selectConfigById(configId)); + } + + /** + * 根据参数键名查询参数值 + * + * @param configKey 参数Key + */ + @GetMapping(value = "/configKey/{configKey}") + public R getConfigKey(@PathVariable String configKey) { + return R.ok("操作成功", configService.selectConfigByKey(configKey)); + } + + /** + * 新增参数配置 + */ + @SaCheckPermission("system:config:add") + @Log(title = "参数管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysConfigBo config) { + if (!configService.checkConfigKeyUnique(config)) { + return R.fail("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); + } + configService.insertConfig(config); + return R.ok(); + } + + /** + * 修改参数配置 + */ + @SaCheckPermission("system:config:edit") + @Log(title = "参数管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysConfigBo config) { + if (!configService.checkConfigKeyUnique(config)) { + return R.fail("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); + } + configService.updateConfig(config); + return R.ok(); + } + + /** + * 根据参数键名修改参数配置 + */ + @SaCheckPermission("system:config:edit") + @Log(title = "参数管理", businessType = BusinessType.UPDATE) + @PutMapping("/updateByKey") + public R updateByKey(@RequestBody SysConfigBo config) { + configService.updateConfig(config); + return R.ok(); + } + + /** + * 删除参数配置 + * + * @param configIds 参数ID串 + */ + @SaCheckPermission("system:config:remove") + @Log(title = "参数管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{configIds}") + public R remove(@PathVariable Long[] configIds) { + configService.deleteConfigByIds(configIds); + return R.ok(); + } + + /** + * 刷新参数缓存 + */ + @SaCheckPermission("system:config:remove") + @Log(title = "参数管理", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public R refreshCache() { + configService.resetConfigCache(); + return R.ok(); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java new file mode 100644 index 0000000..45b8418 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDeptController.java @@ -0,0 +1,140 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.convert.Convert; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.vo.SysDeptVo; +import org.dromara.system.service.ISysDeptService; +import org.dromara.system.service.ISysPostService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 部门信息 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dept") +public class SysDeptController extends BaseController { + + private final ISysDeptService deptService; + private final ISysPostService postService; + + /** + * 获取部门列表 + */ + @SaCheckPermission("system:dept:list") + @GetMapping("/list") + public R> list(SysDeptBo dept) { + List depts = deptService.selectDeptList(dept); + return R.ok(depts); + } + + /** + * 查询部门列表(排除节点) + * + * @param deptId 部门ID + */ + @SaCheckPermission("system:dept:list") + @GetMapping("/list/exclude/{deptId}") + public R> excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) { + List depts = deptService.selectDeptList(new SysDeptBo()); + depts.removeIf(d -> d.getDeptId().equals(deptId) + || StringUtils.splitList(d.getAncestors()).contains(Convert.toStr(deptId))); + return R.ok(depts); + } + + /** + * 根据部门编号获取详细信息 + * + * @param deptId 部门ID + */ + @SaCheckPermission("system:dept:query") + @GetMapping(value = "/{deptId}") + public R getInfo(@PathVariable Long deptId) { + deptService.checkDeptDataScope(deptId); + return R.ok(deptService.selectDeptById(deptId)); + } + + /** + * 新增部门 + */ + @SaCheckPermission("system:dept:add") + @Log(title = "部门管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysDeptBo dept) { + if (!deptService.checkDeptNameUnique(dept)) { + return R.fail("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } + return toAjax(deptService.insertDept(dept)); + } + + /** + * 修改部门 + */ + @SaCheckPermission("system:dept:edit") + @Log(title = "部门管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysDeptBo dept) { + Long deptId = dept.getDeptId(); + deptService.checkDeptDataScope(deptId); + if (!deptService.checkDeptNameUnique(dept)) { + return R.fail("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); + } else if (dept.getParentId().equals(deptId)) { + return R.fail("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); + } else if (StringUtils.equals(SystemConstants.DISABLE, dept.getStatus())) { + if (deptService.selectNormalChildrenDeptById(deptId) > 0) { + return R.fail("该部门包含未停用的子部门!"); + } else if (deptService.checkDeptExistUser(deptId)) { + return R.fail("该部门下存在已分配用户,不能禁用!"); + } + } + return toAjax(deptService.updateDept(dept)); + } + + /** + * 删除部门 + * + * @param deptId 部门ID + */ + @SaCheckPermission("system:dept:remove") + @Log(title = "部门管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{deptId}") + public R remove(@PathVariable Long deptId) { + if (deptService.hasChildByDeptId(deptId)) { + return R.warn("存在下级部门,不允许删除"); + } + if (deptService.checkDeptExistUser(deptId)) { + return R.warn("部门存在用户,不允许删除"); + } + if (postService.countPostByDeptId(deptId) > 0) { + return R.warn("部门存在岗位,不允许删除"); + } + deptService.checkDeptDataScope(deptId); + return toAjax(deptService.deleteDeptById(deptId)); + } + + /** + * 获取部门选择框列表 + * + * @param deptIds 部门ID串 + */ + @SaCheckPermission("system:dept:query") + @GetMapping("/optionselect") + public R> optionselect(@RequestParam(required = false) Long[] deptIds) { + return R.ok(deptService.selectDeptByIds(deptIds == null ? null : List.of(deptIds))); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java new file mode 100644 index 0000000..5752751 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictDataController.java @@ -0,0 +1,123 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.ObjectUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.system.domain.bo.SysDictDataBo; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.dromara.system.service.ISysDictDataService; +import org.dromara.system.service.ISysDictTypeService; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import jakarta.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.List; + +/** + * 数据字典信息 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dict/data") +public class SysDictDataController extends BaseController { + + private final ISysDictDataService dictDataService; + private final ISysDictTypeService dictTypeService; + + /** + * 查询字典数据列表 + */ + @SaCheckPermission("system:dict:list") + @GetMapping("/list") + public TableDataInfo list(SysDictDataBo dictData, PageQuery pageQuery) { + return dictDataService.selectPageDictDataList(dictData, pageQuery); + } + + /** + * 导出字典数据列表 + */ + @Log(title = "字典数据", businessType = BusinessType.EXPORT) + @SaCheckPermission("system:dict:export") + @PostMapping("/export") + public void export(SysDictDataBo dictData, HttpServletResponse response) { + List list = dictDataService.selectDictDataList(dictData); + ExcelUtil.exportExcel(list, "字典数据", SysDictDataVo.class, response); + } + + /** + * 查询字典数据详细 + * + * @param dictCode 字典code + */ + @SaCheckPermission("system:dict:query") + @GetMapping(value = "/{dictCode}") + public R getInfo(@PathVariable Long dictCode) { + return R.ok(dictDataService.selectDictDataById(dictCode)); + } + + /** + * 根据字典类型查询字典数据信息 + * + * @param dictType 字典类型 + */ + @GetMapping(value = "/type/{dictType}") + public R> dictType(@PathVariable String dictType) { + List data = dictTypeService.selectDictDataByType(dictType); + if (ObjectUtil.isNull(data)) { + data = new ArrayList<>(); + } + return R.ok(data); + } + + /** + * 新增字典类型 + */ + @SaCheckPermission("system:dict:add") + @Log(title = "字典数据", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysDictDataBo dict) { + if (!dictDataService.checkDictDataUnique(dict)) { + return R.fail("新增字典数据'" + dict.getDictValue() + "'失败,字典键值已存在"); + } + dictDataService.insertDictData(dict); + return R.ok(); + } + + /** + * 修改保存字典类型 + */ + @SaCheckPermission("system:dict:edit") + @Log(title = "字典数据", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysDictDataBo dict) { + if (!dictDataService.checkDictDataUnique(dict)) { + return R.fail("修改字典数据'" + dict.getDictValue() + "'失败,字典键值已存在"); + } + dictDataService.updateDictData(dict); + return R.ok(); + } + + /** + * 删除字典类型 + * + * @param dictCodes 字典code串 + */ + @SaCheckPermission("system:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictCodes}") + public R remove(@PathVariable Long[] dictCodes) { + dictDataService.deleteDictDataByIds(dictCodes); + return R.ok(); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictTypeController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictTypeController.java new file mode 100644 index 0000000..67c1f51 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysDictTypeController.java @@ -0,0 +1,125 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.core.domain.R; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysDictTypeBo; +import org.dromara.system.domain.vo.SysDictTypeVo; +import org.dromara.system.service.ISysDictTypeService; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 数据字典信息 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/dict/type") +public class SysDictTypeController extends BaseController { + + private final ISysDictTypeService dictTypeService; + + /** + * 查询字典类型列表 + */ + @SaCheckPermission("system:dict:list") + @GetMapping("/list") + public TableDataInfo list(SysDictTypeBo dictType, PageQuery pageQuery) { + return dictTypeService.selectPageDictTypeList(dictType, pageQuery); + } + + /** + * 导出字典类型列表 + */ + @Log(title = "字典类型", businessType = BusinessType.EXPORT) + @SaCheckPermission("system:dict:export") + @PostMapping("/export") + public void export(SysDictTypeBo dictType, HttpServletResponse response) { + List list = dictTypeService.selectDictTypeList(dictType); + ExcelUtil.exportExcel(list, "字典类型", SysDictTypeVo.class, response); + } + + /** + * 查询字典类型详细 + * + * @param dictId 字典ID + */ + @SaCheckPermission("system:dict:query") + @GetMapping(value = "/{dictId}") + public R getInfo(@PathVariable Long dictId) { + return R.ok(dictTypeService.selectDictTypeById(dictId)); + } + + /** + * 新增字典类型 + */ + @SaCheckPermission("system:dict:add") + @Log(title = "字典类型", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysDictTypeBo dict) { + if (!dictTypeService.checkDictTypeUnique(dict)) { + return R.fail("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dictTypeService.insertDictType(dict); + return R.ok(); + } + + /** + * 修改字典类型 + */ + @SaCheckPermission("system:dict:edit") + @Log(title = "字典类型", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysDictTypeBo dict) { + if (!dictTypeService.checkDictTypeUnique(dict)) { + return R.fail("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); + } + dictTypeService.updateDictType(dict); + return R.ok(); + } + + /** + * 删除字典类型 + * + * @param dictIds 字典ID串 + */ + @SaCheckPermission("system:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.DELETE) + @DeleteMapping("/{dictIds}") + public R remove(@PathVariable Long[] dictIds) { + dictTypeService.deleteDictTypeByIds(dictIds); + return R.ok(); + } + + /** + * 刷新字典缓存 + */ + @SaCheckPermission("system:dict:remove") + @Log(title = "字典类型", businessType = BusinessType.CLEAN) + @DeleteMapping("/refreshCache") + public R refreshCache() { + dictTypeService.resetDictCache(); + return R.ok(); + } + + /** + * 获取字典选择框列表 + */ + @GetMapping("/optionselect") + public R> optionselect() { + List dictTypes = dictTypeService.selectDictTypeAll(); + return R.ok(dictTypes); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java new file mode 100644 index 0000000..d8cd335 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java @@ -0,0 +1,174 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.lang.tree.Tree; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.SysMenu; +import org.dromara.system.domain.bo.SysMenuBo; +import org.dromara.system.domain.vo.MenuTreeSelectVo; +import org.dromara.system.domain.vo.RouterVo; +import org.dromara.system.domain.vo.SysMenuVo; +import org.dromara.system.service.ISysMenuService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 菜单信息 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/menu") +public class SysMenuController extends BaseController { + + private final ISysMenuService menuService; + + /** + * 获取路由信息 + * + * @return 路由信息 + */ + @GetMapping("/getRouters") + public R> getRouters() { + List menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId()); + return R.ok(menuService.buildMenus(menus)); + } + + /** + * 获取菜单列表 + */ + @SaCheckRole(value = { + TenantConstants.SUPER_ADMIN_ROLE_KEY, + TenantConstants.TENANT_ADMIN_ROLE_KEY + }, mode = SaMode.OR) + @SaCheckPermission("system:menu:list") + @GetMapping("/list") + public R> list(SysMenuBo menu) { + List menus = menuService.selectMenuList(menu, LoginHelper.getUserId()); + return R.ok(menus); + } + + /** + * 根据菜单编号获取详细信息 + * + * @param menuId 菜单ID + */ + @SaCheckRole(value = { + TenantConstants.SUPER_ADMIN_ROLE_KEY, + TenantConstants.TENANT_ADMIN_ROLE_KEY + }, mode = SaMode.OR) + @SaCheckPermission("system:menu:query") + @GetMapping(value = "/{menuId}") + public R getInfo(@PathVariable Long menuId) { + return R.ok(menuService.selectMenuById(menuId)); + } + + /** + * 获取菜单下拉树列表 + */ + @SaCheckPermission("system:menu:query") + @GetMapping("/treeselect") + public R>> treeselect(SysMenuBo menu) { + List menus = menuService.selectMenuList(menu, LoginHelper.getUserId()); + return R.ok(menuService.buildMenuTreeSelect(menus)); + } + + /** + * 加载对应角色菜单列表树 + * + * @param roleId 角色ID + */ + @SaCheckPermission("system:menu:query") + @GetMapping(value = "/roleMenuTreeselect/{roleId}") + public R roleMenuTreeselect(@PathVariable("roleId") Long roleId) { + List menus = menuService.selectMenuList(LoginHelper.getUserId()); + MenuTreeSelectVo selectVo = new MenuTreeSelectVo(); + selectVo.setCheckedKeys(menuService.selectMenuListByRoleId(roleId)); + selectVo.setMenus(menuService.buildMenuTreeSelect(menus)); + return R.ok(selectVo); + } + + /** + * 加载对应租户套餐菜单列表树 + * + * @param packageId 租户套餐ID + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:menu:query") + @GetMapping(value = "/tenantPackageMenuTreeselect/{packageId}") + public R tenantPackageMenuTreeselect(@PathVariable("packageId") Long packageId) { + List menus = menuService.selectMenuList(LoginHelper.getUserId()); + MenuTreeSelectVo selectVo = new MenuTreeSelectVo(); + selectVo.setCheckedKeys(menuService.selectMenuListByPackageId(packageId)); + selectVo.setMenus(menuService.buildMenuTreeSelect(menus)); + return R.ok(selectVo); + } + + /** + * 新增菜单 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:menu:add") + @Log(title = "菜单管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysMenuBo menu) { + if (!menuService.checkMenuNameUnique(menu)) { + return R.fail("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + } else if (SystemConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { + return R.fail("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + } + return toAjax(menuService.insertMenu(menu)); + } + + /** + * 修改菜单 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:menu:edit") + @Log(title = "菜单管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysMenuBo menu) { + if (!menuService.checkMenuNameUnique(menu)) { + return R.fail("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); + } else if (SystemConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) { + return R.fail("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); + } else if (menu.getMenuId().equals(menu.getParentId())) { + return R.fail("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); + } + return toAjax(menuService.updateMenu(menu)); + } + + /** + * 删除菜单 + * + * @param menuId 菜单ID + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:menu:remove") + @Log(title = "菜单管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{menuId}") + public R remove(@PathVariable("menuId") Long menuId) { + if (menuService.hasChildByMenuId(menuId)) { + return R.warn("存在子菜单,不允许删除"); + } + if (menuService.checkMenuExistRole(menuId)) { + return R.warn("菜单已分配,不允许删除"); + } + return toAjax(menuService.deleteMenuById(menuId)); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java new file mode 100644 index 0000000..5d65137 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysNoticeController.java @@ -0,0 +1,90 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.service.DictService; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.sse.utils.SseMessageUtils; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysNoticeBo; +import org.dromara.system.domain.vo.SysNoticeVo; +import org.dromara.system.service.ISysNoticeService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * 公告 信息操作处理 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/notice") +public class SysNoticeController extends BaseController { + + private final ISysNoticeService noticeService; + private final DictService dictService; + + /** + * 获取通知公告列表 + */ + @SaCheckPermission("system:notice:list") + @GetMapping("/list") + public TableDataInfo list(SysNoticeBo notice, PageQuery pageQuery) { + return noticeService.selectPageNoticeList(notice, pageQuery); + } + + /** + * 根据通知公告编号获取详细信息 + * + * @param noticeId 公告ID + */ + @SaCheckPermission("system:notice:query") + @GetMapping(value = "/{noticeId}") + public R getInfo(@PathVariable Long noticeId) { + return R.ok(noticeService.selectNoticeById(noticeId)); + } + + /** + * 新增通知公告 + */ + @SaCheckPermission("system:notice:add") + @Log(title = "通知公告", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysNoticeBo notice) { + int rows = noticeService.insertNotice(notice); + if (rows <= 0) { + return R.fail(); + } + String type = dictService.getDictLabel("sys_notice_type", notice.getNoticeType()); + SseMessageUtils.publishAll("[" + type + "] " + notice.getNoticeTitle()); + return R.ok(); + } + + /** + * 修改通知公告 + */ + @SaCheckPermission("system:notice:edit") + @Log(title = "通知公告", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysNoticeBo notice) { + return toAjax(noticeService.updateNotice(notice)); + } + + /** + * 删除通知公告 + * + * @param noticeIds 公告ID串 + */ + @SaCheckPermission("system:notice:remove") + @Log(title = "通知公告", businessType = BusinessType.DELETE) + @DeleteMapping("/{noticeIds}") + public R remove(@PathVariable Long[] noticeIds) { + return toAjax(noticeService.deleteNoticeByIds(noticeIds)); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssConfigController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssConfigController.java new file mode 100644 index 0000000..24ddaff --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssConfigController.java @@ -0,0 +1,105 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.core.validate.QueryGroup; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysOssConfigBo; +import org.dromara.system.domain.vo.SysOssConfigVo; +import org.dromara.system.service.ISysOssConfigService; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 对象存储配置 + * + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/resource/oss/config") +public class SysOssConfigController extends BaseController { + + private final ISysOssConfigService ossConfigService; + + /** + * 查询对象存储配置列表 + */ + @SaCheckPermission("system:ossConfig:list") + @GetMapping("/list") + public TableDataInfo list(@Validated(QueryGroup.class) SysOssConfigBo bo, PageQuery pageQuery) { + return ossConfigService.queryPageList(bo, pageQuery); + } + + /** + * 获取对象存储配置详细信息 + * + * @param ossConfigId OSS配置ID + */ + @SaCheckPermission("system:ossConfig:list") + @GetMapping("/{ossConfigId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long ossConfigId) { + return R.ok(ossConfigService.queryById(ossConfigId)); + } + + /** + * 新增对象存储配置 + */ + @SaCheckPermission("system:ossConfig:add") + @Log(title = "对象存储配置", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysOssConfigBo bo) { + return toAjax(ossConfigService.insertByBo(bo)); + } + + /** + * 修改对象存储配置 + */ + @SaCheckPermission("system:ossConfig:edit") + @Log(title = "对象存储配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysOssConfigBo bo) { + return toAjax(ossConfigService.updateByBo(bo)); + } + + /** + * 删除对象存储配置 + * + * @param ossConfigIds OSS配置ID串 + */ + @SaCheckPermission("system:ossConfig:remove") + @Log(title = "对象存储配置", businessType = BusinessType.DELETE) + @DeleteMapping("/{ossConfigIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ossConfigIds) { + return toAjax(ossConfigService.deleteWithValidByIds(List.of(ossConfigIds), true)); + } + + /** + * 状态修改 + */ + @SaCheckPermission("system:ossConfig:edit") + @Log(title = "对象存储状态修改", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody SysOssConfigBo bo) { + return toAjax(ossConfigService.updateOssConfigStatus(bo)); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java new file mode 100644 index 0000000..81200c1 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java @@ -0,0 +1,108 @@ +package org.dromara.system.controller.system; + + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.ObjectUtil; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.QueryGroup; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysOssBo; +import org.dromara.system.domain.vo.SysOssUploadVo; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.service.ISysOssService; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import lombok.RequiredArgsConstructor; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +/** + * 文件上传 控制层 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/resource/oss") +public class SysOssController extends BaseController { + + private final ISysOssService ossService; + + /** + * 查询OSS对象存储列表 + */ + @SaCheckPermission("system:oss:list") + @GetMapping("/list") + public TableDataInfo list(@Validated(QueryGroup.class) SysOssBo bo, PageQuery pageQuery) { + return ossService.queryPageList(bo, pageQuery); + } + + /** + * 查询OSS对象基于id串 + * + * @param ossIds OSS对象ID串 + */ + @SaCheckPermission("system:oss:query") + @GetMapping("/listByIds/{ossIds}") + public R> listByIds(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ossIds) { + List list = ossService.listByIds(Arrays.asList(ossIds)); + return R.ok(list); + } + + /** + * 上传OSS对象存储 + * + * @param file 文件 + */ + @SaCheckPermission("system:oss:upload") + @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R upload(@RequestPart("file") MultipartFile file) { + if (ObjectUtil.isNull(file)) { + return R.fail("上传文件不能为空"); + } + SysOssVo oss = ossService.upload(file); + SysOssUploadVo uploadVo = new SysOssUploadVo(); + uploadVo.setUrl(oss.getUrl()); + uploadVo.setFileName(oss.getOriginalName()); + uploadVo.setOssId(oss.getOssId().toString()); + return R.ok(uploadVo); + } + + /** + * 下载OSS对象 + * + * @param ossId OSS对象ID + */ + @SaCheckPermission("system:oss:download") + @GetMapping("/download/{ossId}") + public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { + ossService.download(ossId, response); + } + + /** + * 删除OSS对象存储 + * + * @param ossIds OSS对象ID串 + */ + @SaCheckPermission("system:oss:remove") + @Log(title = "OSS对象存储", businessType = BusinessType.DELETE) + @DeleteMapping("/{ossIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ossIds) { + return toAjax(ossService.deleteWithValidByIds(List.of(ossIds), true)); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java new file mode 100644 index 0000000..5333a4a --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysPostController.java @@ -0,0 +1,133 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.ObjectUtil; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.service.ISysPostService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; + +/** + * 岗位信息操作处理 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/post") +public class SysPostController extends BaseController { + + private final ISysPostService postService; + + /** + * 获取岗位列表 + */ + @SaCheckPermission("system:post:list") + @GetMapping("/list") + public TableDataInfo list(SysPostBo post, PageQuery pageQuery) { + return postService.selectPagePostList(post, pageQuery); + } + + /** + * 导出岗位列表 + */ + @Log(title = "岗位管理", businessType = BusinessType.EXPORT) + @SaCheckPermission("system:post:export") + @PostMapping("/export") + public void export(SysPostBo post, HttpServletResponse response) { + List list = postService.selectPostList(post); + ExcelUtil.exportExcel(list, "岗位数据", SysPostVo.class, response); + } + + /** + * 根据岗位编号获取详细信息 + * + * @param postId 岗位ID + */ + @SaCheckPermission("system:post:query") + @GetMapping(value = "/{postId}") + public R getInfo(@PathVariable Long postId) { + return R.ok(postService.selectPostById(postId)); + } + + /** + * 新增岗位 + */ + @SaCheckPermission("system:post:add") + @Log(title = "岗位管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysPostBo post) { + if (!postService.checkPostNameUnique(post)) { + return R.fail("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + } else if (!postService.checkPostCodeUnique(post)) { + return R.fail("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + } + return toAjax(postService.insertPost(post)); + } + + /** + * 修改岗位 + */ + @SaCheckPermission("system:post:edit") + @Log(title = "岗位管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysPostBo post) { + if (!postService.checkPostNameUnique(post)) { + return R.fail("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); + } else if (!postService.checkPostCodeUnique(post)) { + return R.fail("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); + } else if (SystemConstants.DISABLE.equals(post.getStatus()) + && postService.countUserPostById(post.getPostId()) > 0) { + return R.fail("该岗位下存在已分配用户,不能禁用!"); + } + return toAjax(postService.updatePost(post)); + } + + /** + * 删除岗位 + * + * @param postIds 岗位ID串 + */ + @SaCheckPermission("system:post:remove") + @Log(title = "岗位管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{postIds}") + public R remove(@PathVariable Long[] postIds) { + return toAjax(postService.deletePostByIds(postIds)); + } + + /** + * 获取岗位选择框列表 + * + * @param postIds 岗位ID串 + * @param deptId 部门id + */ + @SaCheckPermission("system:post:query") + @GetMapping("/optionselect") + public R> optionselect(@RequestParam(required = false) Long[] postIds, @RequestParam(required = false) Long deptId) { + List list = new ArrayList<>(); + if (ObjectUtil.isNotNull(deptId)) { + SysPostBo post = new SysPostBo(); + post.setDeptId(deptId); + list = postService.selectPostList(post); + } else if (postIds != null) { + list = postService.selectPostByIds(List.of(postIds)); + } + return R.ok(list); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java new file mode 100644 index 0000000..5f187cb --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysProfileController.java @@ -0,0 +1,133 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.io.FileUtil; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.file.MimeTypeUtils; +import org.dromara.common.encrypt.annotation.ApiEncrypt; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.helper.DataPermissionHelper; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.bo.SysUserPasswordBo; +import org.dromara.system.domain.bo.SysUserProfileBo; +import org.dromara.system.domain.vo.AvatarVo; +import org.dromara.system.domain.vo.ProfileVo; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysOssService; +import org.dromara.system.service.ISysUserService; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Arrays; + +/** + * 个人信息 业务处理 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/user/profile") +public class SysProfileController extends BaseController { + + private final ISysUserService userService; + private final ISysOssService ossService; + + /** + * 个人信息 + */ + @GetMapping + public R profile() { + SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); + ProfileVo profileVo = new ProfileVo(); + profileVo.setUser(user); + profileVo.setRoleGroup(userService.selectUserRoleGroup(user.getUserId())); + profileVo.setPostGroup(userService.selectUserPostGroup(user.getUserId())); + return R.ok(profileVo); + } + + /** + * 修改用户信息 + */ + @RepeatSubmit + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping + public R updateProfile(@Validated @RequestBody SysUserProfileBo profile) { + SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class); + user.setUserId(LoginHelper.getUserId()); + String username = LoginHelper.getUsername(); + if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { + return R.fail("修改用户'" + username + "'失败,手机号码已存在"); + } + if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { + return R.fail("修改用户'" + username + "'失败,邮箱账号已存在"); + } + int rows = DataPermissionHelper.ignore(() -> userService.updateUserProfile(user)); + if (rows > 0) { + return R.ok(); + } + return R.fail("修改个人信息异常,请联系管理员"); + } + + /** + * 重置密码 + * + * @param bo 新旧密码 + */ + @RepeatSubmit + @ApiEncrypt + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping("/updatePwd") + public R updatePwd(@Validated @RequestBody SysUserPasswordBo bo) { + SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); + String password = user.getPassword(); + if (!BCrypt.checkpw(bo.getOldPassword(), password)) { + return R.fail("修改密码失败,旧密码错误"); + } + if (BCrypt.checkpw(bo.getNewPassword(), password)) { + return R.fail("新密码不能与旧密码相同"); + } + int rows = DataPermissionHelper.ignore(() -> userService.resetUserPwd(user.getUserId(), BCrypt.hashpw(bo.getNewPassword()))); + if (rows > 0) { + return R.ok(); + } + return R.fail("修改密码异常,请联系管理员"); + } + + /** + * 头像上传 + * + * @param avatarfile 用户头像 + */ + @RepeatSubmit + @Log(title = "用户头像", businessType = BusinessType.UPDATE) + @PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R avatar(@RequestPart("avatarfile") MultipartFile avatarfile) { + if (!avatarfile.isEmpty()) { + String extension = FileUtil.extName(avatarfile.getOriginalFilename()); + if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) { + return R.fail("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式"); + } + SysOssVo oss = ossService.upload(avatarfile); + String avatar = oss.getUrl(); + boolean updateSuccess = DataPermissionHelper.ignore(() -> userService.updateUserAvatar(LoginHelper.getUserId(), oss.getOssId())); + if (updateSuccess) { + AvatarVo avatarVo = new AvatarVo(); + avatarVo.setImgUrl(avatar); + return R.ok(avatarVo); + } + } + return R.fail("上传图片异常,请联系管理员"); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java new file mode 100644 index 0000000..d4a9dc8 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysRoleController.java @@ -0,0 +1,229 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.SysUserRole; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.vo.DeptTreeSelectVo; +import org.dromara.system.domain.vo.SysRoleVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysDeptService; +import org.dromara.system.service.ISysRoleService; +import org.dromara.system.service.ISysUserService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 角色信息 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/role") +public class SysRoleController extends BaseController { + + private final ISysRoleService roleService; + private final ISysUserService userService; + private final ISysDeptService deptService; + + /** + * 获取角色信息列表 + */ + @SaCheckPermission("system:role:list") + @GetMapping("/list") + public TableDataInfo list(SysRoleBo role, PageQuery pageQuery) { + return roleService.selectPageRoleList(role, pageQuery); + } + + /** + * 导出角色信息列表 + */ + @Log(title = "角色管理", businessType = BusinessType.EXPORT) + @SaCheckPermission("system:role:export") + @PostMapping("/export") + public void export(SysRoleBo role, HttpServletResponse response) { + List list = roleService.selectRoleList(role); + ExcelUtil.exportExcel(list, "角色数据", SysRoleVo.class, response); + } + + /** + * 根据角色编号获取详细信息 + * + * @param roleId 角色ID + */ + @SaCheckPermission("system:role:query") + @GetMapping(value = "/{roleId}") + public R getInfo(@PathVariable Long roleId) { + roleService.checkRoleDataScope(roleId); + return R.ok(roleService.selectRoleById(roleId)); + } + + /** + * 新增角色 + */ + @SaCheckPermission("system:role:add") + @Log(title = "角色管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysRoleBo role) { + roleService.checkRoleAllowed(role); + if (!roleService.checkRoleNameUnique(role)) { + return R.fail("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); + } else if (!roleService.checkRoleKeyUnique(role)) { + return R.fail("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); + } + return toAjax(roleService.insertRole(role)); + + } + + /** + * 修改保存角色 + */ + @SaCheckPermission("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysRoleBo role) { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + if (!roleService.checkRoleNameUnique(role)) { + return R.fail("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); + } else if (!roleService.checkRoleKeyUnique(role)) { + return R.fail("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); + } + + if (roleService.updateRole(role) > 0) { + roleService.cleanOnlineUserByRole(role.getRoleId()); + return R.ok(); + } + return R.fail("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); + } + + /** + * 修改保存数据权限 + */ + @SaCheckPermission("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping("/dataScope") + public R dataScope(@RequestBody SysRoleBo role) { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + return toAjax(roleService.authDataScope(role)); + } + + /** + * 状态修改 + */ + @SaCheckPermission("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody SysRoleBo role) { + roleService.checkRoleAllowed(role); + roleService.checkRoleDataScope(role.getRoleId()); + return toAjax(roleService.updateRoleStatus(role.getRoleId(), role.getStatus())); + } + + /** + * 删除角色 + * + * @param roleIds 角色ID串 + */ + @SaCheckPermission("system:role:remove") + @Log(title = "角色管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{roleIds}") + public R remove(@PathVariable Long[] roleIds) { + return toAjax(roleService.deleteRoleByIds(roleIds)); + } + + /** + * 获取角色选择框列表 + * + * @param roleIds 角色ID串 + */ + @SaCheckPermission("system:role:query") + @GetMapping("/optionselect") + public R> optionselect(@RequestParam(required = false) Long[] roleIds) { + return R.ok(roleService.selectRoleByIds(roleIds == null ? null : List.of(roleIds))); + } + + /** + * 查询已分配用户角色列表 + */ + @SaCheckPermission("system:role:list") + @GetMapping("/authUser/allocatedList") + public TableDataInfo allocatedList(SysUserBo user, PageQuery pageQuery) { + return userService.selectAllocatedList(user, pageQuery); + } + + /** + * 查询未分配用户角色列表 + */ + @SaCheckPermission("system:role:list") + @GetMapping("/authUser/unallocatedList") + public TableDataInfo unallocatedList(SysUserBo user, PageQuery pageQuery) { + return userService.selectUnallocatedList(user, pageQuery); + } + + /** + * 取消授权用户 + */ + @SaCheckPermission("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancel") + public R cancelAuthUser(@RequestBody SysUserRole userRole) { + return toAjax(roleService.deleteAuthUser(userRole)); + } + + /** + * 批量取消授权用户 + * + * @param roleId 角色ID + * @param userIds 用户ID串 + */ + @SaCheckPermission("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/cancelAll") + public R cancelAuthUserAll(Long roleId, Long[] userIds) { + return toAjax(roleService.deleteAuthUsers(roleId, userIds)); + } + + /** + * 批量选择用户授权 + * + * @param roleId 角色ID + * @param userIds 用户ID串 + */ + @SaCheckPermission("system:role:edit") + @Log(title = "角色管理", businessType = BusinessType.GRANT) + @PutMapping("/authUser/selectAll") + public R selectAuthUserAll(Long roleId, Long[] userIds) { + roleService.checkRoleDataScope(roleId); + return toAjax(roleService.insertAuthUsers(roleId, userIds)); + } + + /** + * 获取对应角色部门树列表 + * + * @param roleId 角色ID + */ + @SaCheckPermission("system:role:list") + @GetMapping(value = "/deptTree/{roleId}") + public R roleDeptTreeselect(@PathVariable("roleId") Long roleId) { + DeptTreeSelectVo selectVo = new DeptTreeSelectVo(); + selectVo.setCheckedKeys(deptService.selectDeptListByRoleId(roleId)); + selectVo.setDepts(deptService.selectDeptTreeList(new SysDeptBo())); + return R.ok(selectVo); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysSocialController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysSocialController.java new file mode 100644 index 0000000..b0281cf --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysSocialController.java @@ -0,0 +1,38 @@ +package org.dromara.system.controller.system; + +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.vo.SysSocialVo; +import org.dromara.system.service.ISysSocialService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 社会化关系 + * + * @author thiszhc + * @date 2023-06-16 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/social") +public class SysSocialController extends BaseController { + + private final ISysSocialService socialUserService; + + /** + * 查询社会化关系列表 + */ + @GetMapping("/list") + public R> list() { + return R.ok(socialUserService.queryListByUserId(LoginHelper.getUserId())); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java new file mode 100644 index 0000000..66c1b7d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantController.java @@ -0,0 +1,193 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaCheckRole; +import com.baomidou.lock.annotation.Lock4j; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.encrypt.annotation.ApiEncrypt; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysTenantBo; +import org.dromara.system.domain.vo.SysTenantVo; +import org.dromara.system.service.ISysTenantService; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 租户管理 + * + * @author Michelle.Chung + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/tenant") +@ConditionalOnProperty(value = "tenant.enable", havingValue = "true") +public class SysTenantController extends BaseController { + + private final ISysTenantService tenantService; + + /** + * 查询租户列表 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:list") + @GetMapping("/list") + public TableDataInfo list(SysTenantBo bo, PageQuery pageQuery) { + return tenantService.queryPageList(bo, pageQuery); + } + + /** + * 导出租户列表 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:export") + @Log(title = "租户管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysTenantBo bo, HttpServletResponse response) { + List list = tenantService.queryList(bo); + ExcelUtil.exportExcel(list, "租户", SysTenantVo.class, response); + } + + /** + * 获取租户详细信息 + * + * @param id 主键 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(tenantService.queryById(id)); + } + + /** + * 新增租户 + */ + @ApiEncrypt + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:add") + @Log(title = "租户管理", businessType = BusinessType.INSERT) + @Lock4j + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysTenantBo bo) { + if (!tenantService.checkCompanyNameUnique(bo)) { + return R.fail("新增租户'" + bo.getCompanyName() + "'失败,企业名称已存在"); + } + return toAjax(TenantHelper.ignore(() -> tenantService.insertByBo(bo))); + } + + /** + * 修改租户 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:edit") + @Log(title = "租户管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysTenantBo bo) { + tenantService.checkTenantAllowed(bo.getTenantId()); + if (!tenantService.checkCompanyNameUnique(bo)) { + return R.fail("修改租户'" + bo.getCompanyName() + "'失败,公司名称已存在"); + } + return toAjax(tenantService.updateByBo(bo)); + } + + /** + * 状态修改 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:edit") + @Log(title = "租户管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody SysTenantBo bo) { + tenantService.checkTenantAllowed(bo.getTenantId()); + return toAjax(tenantService.updateTenantStatus(bo)); + } + + /** + * 删除租户 + * + * @param ids 主键串 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:remove") + @Log(title = "租户管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(tenantService.deleteWithValidByIds(List.of(ids), true)); + } + + /** + * 动态切换租户 + * + * @param tenantId 租户ID + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @GetMapping("/dynamic/{tenantId}") + public R dynamicTenant(@NotBlank(message = "租户ID不能为空") @PathVariable String tenantId) { + TenantHelper.setDynamic(tenantId, true); + return R.ok(); + } + + /** + * 清除动态租户 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @GetMapping("/dynamic/clear") + public R dynamicClear() { + TenantHelper.clearDynamic(); + return R.ok(); + } + + + /** + * 同步租户套餐 + * + * @param tenantId 租户id + * @param packageId 套餐id + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenant:edit") + @Log(title = "租户管理", businessType = BusinessType.UPDATE) + @GetMapping("/syncTenantPackage") + public R syncTenantPackage(@NotBlank(message = "租户ID不能为空") String tenantId, + @NotNull(message = "套餐ID不能为空") Long packageId) { + return toAjax(TenantHelper.ignore(() -> tenantService.syncTenantPackage(tenantId, packageId))); + } + + /** + * 同步租户字典 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @Log(title = "租户管理", businessType = BusinessType.INSERT) + @GetMapping("/syncTenantDict") + public R syncTenantDict() { + if (!TenantHelper.isEnable()) { + return R.fail("当前未开启租户模式"); + } + tenantService.syncTenantDict(); + return R.ok("同步租户字典成功"); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java new file mode 100644 index 0000000..4bfe597 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysTenantPackageController.java @@ -0,0 +1,142 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaCheckRole; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysTenantPackageBo; +import org.dromara.system.domain.vo.SysTenantPackageVo; +import org.dromara.system.service.ISysTenantPackageService; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 租户套餐管理 + * + * @author Michelle.Chung + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/tenant/package") +@ConditionalOnProperty(value = "tenant.enable", havingValue = "true") +public class SysTenantPackageController extends BaseController { + + private final ISysTenantPackageService tenantPackageService; + + /** + * 查询租户套餐列表 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:list") + @GetMapping("/list") + public TableDataInfo list(SysTenantPackageBo bo, PageQuery pageQuery) { + return tenantPackageService.queryPageList(bo, pageQuery); + } + + /** + * 查询租户套餐下拉选列表 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:list") + @GetMapping("/selectList") + public R> selectList() { + return R.ok(tenantPackageService.selectList()); + } + + /** + * 导出租户套餐列表 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:export") + @Log(title = "租户套餐", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysTenantPackageBo bo, HttpServletResponse response) { + List list = tenantPackageService.queryList(bo); + ExcelUtil.exportExcel(list, "租户套餐", SysTenantPackageVo.class, response); + } + + /** + * 获取租户套餐详细信息 + * + * @param packageId 主键 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:query") + @GetMapping("/{packageId}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long packageId) { + return R.ok(tenantPackageService.queryById(packageId)); + } + + /** + * 新增租户套餐 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:add") + @Log(title = "租户套餐", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysTenantPackageBo bo) { + if (!tenantPackageService.checkPackageNameUnique(bo)) { + return R.fail("新增套餐'" + bo.getPackageName() + "'失败,套餐名称已存在"); + } + return toAjax(tenantPackageService.insertByBo(bo)); + } + + /** + * 修改租户套餐 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:edit") + @Log(title = "租户套餐", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysTenantPackageBo bo) { + if (!tenantPackageService.checkPackageNameUnique(bo)) { + return R.fail("修改套餐'" + bo.getPackageName() + "'失败,套餐名称已存在"); + } + return toAjax(tenantPackageService.updateByBo(bo)); + } + + /** + * 状态修改 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:edit") + @Log(title = "租户套餐", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody SysTenantPackageBo bo) { + return toAjax(tenantPackageService.updatePackageStatus(bo)); + } + + /** + * 删除租户套餐 + * + * @param packageIds 主键串 + */ + @SaCheckRole(TenantConstants.SUPER_ADMIN_ROLE_KEY) + @SaCheckPermission("system:tenantPackage:remove") + @Log(title = "租户套餐", businessType = BusinessType.DELETE) + @DeleteMapping("/{packageIds}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] packageIds) { + return toAjax(tenantPackageService.deleteWithValidByIds(List.of(packageIds), true)); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java new file mode 100644 index 0000000..e1e868a --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -0,0 +1,300 @@ +package org.dromara.system.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.encrypt.annotation.ApiEncrypt; +import org.dromara.common.excel.core.ExcelResult; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.vo.*; +import org.dromara.system.listener.SysUserImportListener; +import org.dromara.system.service.*; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; + +/** + * 用户信息 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/user") +public class SysUserController extends BaseController { + + private final ISysUserService userService; + private final ISysRoleService roleService; + private final ISysPostService postService; + private final ISysDeptService deptService; + private final ISysTenantService tenantService; + + /** + * 获取用户列表 + */ + @SaCheckPermission("system:user:list") + @GetMapping("/list") + public TableDataInfo list(SysUserBo user, PageQuery pageQuery) { + return userService.selectPageUserList(user, pageQuery); + } + + /** + * 导出用户列表 + */ + @Log(title = "用户管理", businessType = BusinessType.EXPORT) + @SaCheckPermission("system:user:export") + @PostMapping("/export") + public void export(SysUserBo user, HttpServletResponse response) { + List list = userService.selectUserExportList(user); + ExcelUtil.exportExcel(list, "用户数据", SysUserExportVo.class, response); + } + + /** + * 导入数据 + * + * @param file 导入文件 + * @param updateSupport 是否更新已存在数据 + */ + @Log(title = "用户管理", businessType = BusinessType.IMPORT) + @SaCheckPermission("system:user:import") + @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception { + ExcelResult result = ExcelUtil.importExcel(file.getInputStream(), SysUserImportVo.class, new SysUserImportListener(updateSupport)); + return R.ok(result.getAnalysis()); + } + + /** + * 获取导入模板 + */ + @PostMapping("/importTemplate") + public void importTemplate(HttpServletResponse response) { + ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", SysUserImportVo.class, response); + } + + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @GetMapping("/getInfo") + public R getInfo() { + UserInfoVo userInfoVo = new UserInfoVo(); + LoginUser loginUser = LoginHelper.getLoginUser(); + if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) { + // 超级管理员 如果重新加载用户信息需清除动态租户 + TenantHelper.clearDynamic(); + } + SysUserVo user = userService.selectUserById(loginUser.getUserId()); + if (ObjectUtil.isNull(user)) { + return R.fail("没有权限访问用户数据!"); + } + userInfoVo.setUser(user); + userInfoVo.setPermissions(loginUser.getMenuPermission()); + userInfoVo.setRoles(loginUser.getRolePermission()); + return R.ok(userInfoVo); + } + + /** + * 根据用户编号获取详细信息 + * + * @param userId 用户ID + */ + @SaCheckPermission("system:user:query") + @GetMapping(value = {"/", "/{userId}"}) + public R getInfo(@PathVariable(value = "userId", required = false) Long userId) { + SysUserInfoVo userInfoVo = new SysUserInfoVo(); + if (ObjectUtil.isNotNull(userId)) { + userService.checkUserDataScope(userId); + SysUserVo sysUser = userService.selectUserById(userId); + userInfoVo.setUser(sysUser); + userInfoVo.setRoleIds(roleService.selectRoleListByUserId(userId)); + Long deptId = sysUser.getDeptId(); + if (ObjectUtil.isNotNull(deptId)) { + SysPostBo postBo = new SysPostBo(); + postBo.setDeptId(deptId); + userInfoVo.setPosts(postService.selectPostList(postBo)); + userInfoVo.setPostIds(postService.selectPostListByUserId(userId)); + } + } + SysRoleBo roleBo = new SysRoleBo(); + roleBo.setStatus(SystemConstants.NORMAL); + List roles = roleService.selectRoleList(roleBo); + userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin())); + return R.ok(userInfoVo); + } + + /** + * 新增用户 + */ + @SaCheckPermission("system:user:add") + @Log(title = "用户管理", businessType = BusinessType.INSERT) + @PostMapping + public R add(@Validated @RequestBody SysUserBo user) { + deptService.checkDeptDataScope(user.getDeptId()); + if (!userService.checkUserNameUnique(user)) { + return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); + } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { + return R.fail("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); + } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { + return R.fail("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + if (TenantHelper.isEnable()) { + if (!tenantService.checkAccountBalance(TenantHelper.getTenantId())) { + return R.fail("当前租户下用户名额不足,请联系管理员"); + } + } + user.setPassword(BCrypt.hashpw(user.getPassword())); + return toAjax(userService.insertUser(user)); + } + + /** + * 修改用户 + */ + @SaCheckPermission("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysUserBo user) { + userService.checkUserAllowed(user.getUserId()); + userService.checkUserDataScope(user.getUserId()); + deptService.checkDeptDataScope(user.getDeptId()); + if (!userService.checkUserNameUnique(user)) { + return R.fail("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); + } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { + return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { + return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + return toAjax(userService.updateUser(user)); + } + + /** + * 删除用户 + * + * @param userIds 角色ID串 + */ + @SaCheckPermission("system:user:remove") + @Log(title = "用户管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{userIds}") + public R remove(@PathVariable Long[] userIds) { + if (ArrayUtil.contains(userIds, LoginHelper.getUserId())) { + return R.fail("当前用户不能删除"); + } + return toAjax(userService.deleteUserByIds(userIds)); + } + + /** + * 根据用户ID串批量获取用户基础信息 + * + * @param userIds 用户ID串 + * @param deptId 部门ID + */ + @SaCheckPermission("system:user:query") + @GetMapping("/optionselect") + public R> optionselect(@RequestParam(required = false) Long[] userIds, + @RequestParam(required = false) Long deptId) { + return R.ok(userService.selectUserByIds(ArrayUtil.isEmpty(userIds) ? null : List.of(userIds), deptId)); + } + + /** + * 重置密码 + */ + @ApiEncrypt + @SaCheckPermission("system:user:resetPwd") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/resetPwd") + public R resetPwd(@RequestBody SysUserBo user) { + userService.checkUserAllowed(user.getUserId()); + userService.checkUserDataScope(user.getUserId()); + user.setPassword(BCrypt.hashpw(user.getPassword())); + return toAjax(userService.resetUserPwd(user.getUserId(), user.getPassword())); + } + + /** + * 状态修改 + */ + @SaCheckPermission("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping("/changeStatus") + public R changeStatus(@RequestBody SysUserBo user) { + userService.checkUserAllowed(user.getUserId()); + userService.checkUserDataScope(user.getUserId()); + return toAjax(userService.updateUserStatus(user.getUserId(), user.getStatus())); + } + + /** + * 根据用户编号获取授权角色 + * + * @param userId 用户ID + */ + @SaCheckPermission("system:user:query") + @GetMapping("/authRole/{userId}") + public R authRole(@PathVariable Long userId) { + userService.checkUserDataScope(userId); + SysUserVo user = userService.selectUserById(userId); + List roles = roleService.selectRolesAuthByUserId(userId); + SysUserInfoVo userInfoVo = new SysUserInfoVo(); + userInfoVo.setUser(user); + userInfoVo.setRoles(LoginHelper.isSuperAdmin(userId) ? roles : StreamUtils.filter(roles, r -> !r.isSuperAdmin())); + return R.ok(userInfoVo); + } + + /** + * 用户授权角色 + * + * @param userId 用户Id + * @param roleIds 角色ID串 + */ + @SaCheckPermission("system:user:edit") + @Log(title = "用户管理", businessType = BusinessType.GRANT) + @PutMapping("/authRole") + public R insertAuthRole(Long userId, Long[] roleIds) { + userService.checkUserDataScope(userId); + userService.insertUserAuth(userId, roleIds); + return R.ok(); + } + + /** + * 获取部门树列表 + */ + @SaCheckPermission("system:user:list") + @GetMapping("/deptTree") + public R>> deptTree(SysDeptBo dept) { + return R.ok(deptService.selectDeptTreeList(dept)); + } + + /** + * 获取部门下的所有用户信息 + */ + @SaCheckPermission("system:user:list") + @GetMapping("/list/dept/{deptId}") + public R> listByDept(@PathVariable @NotNull Long deptId) { + return R.ok(userService.selectUserListByDept(deptId)); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysCache.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysCache.java new file mode 100644 index 0000000..e398a20 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysCache.java @@ -0,0 +1,47 @@ +package org.dromara.system.domain; + +import org.dromara.common.core.utils.StringUtils; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 缓存信息 + * + * @author Lion Li + */ +@Data +@NoArgsConstructor +public class SysCache { + + /** + * 缓存名称 + */ + private String cacheName = ""; + + /** + * 缓存键名 + */ + private String cacheKey = ""; + + /** + * 缓存内容 + */ + private String cacheValue = ""; + + /** + * 备注 + */ + private String remark = ""; + + public SysCache(String cacheName, String remark) { + this.cacheName = cacheName; + this.remark = remark; + } + + public SysCache(String cacheName, String cacheKey, String cacheValue) { + this.cacheName = StringUtils.replace(cacheName, ":", ""); + this.cacheKey = StringUtils.replace(cacheKey, cacheName, ""); + this.cacheValue = cacheValue; + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java new file mode 100644 index 0000000..ee2475d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysClient.java @@ -0,0 +1,77 @@ +package org.dromara.system.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; + +/** + * 授权管理对象 sys_client + * + * @author Michelle.Chung + * @date 2023-05-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_client") +public class SysClient extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 客户端id + */ + private String clientId; + + /** + * 客户端key + */ + private String clientKey; + + /** + * 客户端秘钥 + */ + private String clientSecret; + + /** + * 授权类型 + */ + private String grantType; + + /** + * 设备类型 + */ + private String deviceType; + + /** + * token活跃超时时间 + */ + private Long activeTimeout; + + /** + * token固定超时时间 + */ + private Long timeout; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysConfig.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysConfig.java new file mode 100644 index 0000000..6fcb88f --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysConfig.java @@ -0,0 +1,51 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 参数配置表 sys_config + * + * @author Lion Li + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_config") +public class SysConfig extends TenantEntity { + + /** + * 参数主键 + */ + @TableId(value = "config_id") + private Long configId; + + /** + * 参数名称 + */ + private String configName; + + /** + * 参数键名 + */ + private String configKey; + + /** + * 参数键值 + */ + private String configValue; + + /** + * 系统内置(Y是 N否) + */ + private String configType; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java new file mode 100644 index 0000000..b94fd8a --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysDept.java @@ -0,0 +1,83 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + +/** + * 部门表 sys_dept + * + * @author Lion Li + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_dept") +public class SysDept extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 部门ID + */ + @TableId(value = "dept_id") + private Long deptId; + + /** + * 父部门ID + */ + private Long parentId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 部门类别编码 + */ + private String deptCategory; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 负责人 + */ + private Long leader; + + /** + * 联系电话 + */ + private String phone; + + /** + * 邮箱 + */ + private String email; + + /** + * 部门状态:0正常,1停用 + */ + private String status; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 祖级列表 + */ + private String ancestors; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysDictData.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysDictData.java new file mode 100644 index 0000000..9d83736 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysDictData.java @@ -0,0 +1,71 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.tenant.core.TenantEntity; + +/** + * 字典数据表 sys_dict_data + * + * @author Lion Li + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_dict_data") +public class SysDictData extends TenantEntity { + + /** + * 字典编码 + */ + @TableId(value = "dict_code") + private Long dictCode; + + /** + * 字典排序 + */ + private Integer dictSort; + + /** + * 字典标签 + */ + private String dictLabel; + + /** + * 字典键值 + */ + private String dictValue; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 样式属性(其他样式扩展) + */ + private String cssClass; + + /** + * 表格字典样式 + */ + private String listClass; + + /** + * 是否默认(Y是 N否) + */ + private String isDefault; + + /** + * 备注 + */ + private String remark; + + public boolean getDefault() { + return SystemConstants.YES.equals(this.isDefault); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysDictType.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysDictType.java new file mode 100644 index 0000000..955af85 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysDictType.java @@ -0,0 +1,41 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 字典类型表 sys_dict_type + * + * @author Lion Li + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_dict_type") +public class SysDictType extends TenantEntity { + + /** + * 字典主键 + */ + @TableId(value = "dict_id") + private Long dictId; + + /** + * 字典名称 + */ + private String dictName; + + /** + * 字典类型 + */ + private String dictType; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysLogininfor.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysLogininfor.java new file mode 100644 index 0000000..c57dc0a --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysLogininfor.java @@ -0,0 +1,85 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 系统访问记录表 sys_logininfor + * + * @author Lion Li + */ + +@Data +@TableName("sys_logininfor") +public class SysLogininfor implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @TableId(value = "info_id") + private Long infoId; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 用户账号 + */ + private String userName; + + /** + * 客户端 + */ + private String clientKey; + + /** + * 设备类型 + */ + private String deviceType; + + /** + * 登录状态 0成功 1失败 + */ + private String status; + + /** + * 登录IP地址 + */ + private String ipaddr; + + /** + * 登录地点 + */ + private String loginLocation; + + /** + * 浏览器类型 + */ + private String browser; + + /** + * 操作系统 + */ + private String os; + + /** + * 提示消息 + */ + private String msg; + + /** + * 访问时间 + */ + private Date loginTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysMenu.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysMenu.java new file mode 100644 index 0000000..2df5596 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysMenu.java @@ -0,0 +1,191 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.constant.Constants; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.util.ArrayList; +import java.util.List; + +/** + * 菜单权限表 sys_menu + * + * @author Lion Li + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_menu") +public class SysMenu extends BaseEntity { + + /** + * 菜单ID + */ + @TableId(value = "menu_id") + private Long menuId; + + /** + * 父菜单ID + */ + private Long parentId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 路由地址 + */ + private String path; + + /** + * 组件路径 + */ + private String component; + + /** + * 路由参数 + */ + private String queryParam; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 类型(M目录 C菜单 F按钮) + */ + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + + /** + * 菜单状态(0正常 1停用) + */ + private String status; + + /** + * 权限字符串 + */ + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 备注 + */ + private String remark; + + /** + * 父菜单名称 + */ + @TableField(exist = false) + private String parentName; + + /** + * 子菜单 + */ + @TableField(exist = false) + private List children = new ArrayList<>(); + + /** + * 获取路由名称 + */ + public String getRouteName() { + String routerName = StringUtils.capitalize(path); + // 非外链并且是一级目录(类型为目录) + if (isMenuFrame()) { + routerName = StringUtils.EMPTY; + } + return routerName; + } + + /** + * 获取路由地址 + */ + public String getRouterPath() { + String routerPath = this.path; + // 内链打开外网方式 + if (getParentId() != 0L && isInnerLink()) { + routerPath = innerLinkReplaceEach(routerPath); + } + // 非外链并且是一级目录(类型为目录) + if (0L == getParentId() && SystemConstants.TYPE_DIR.equals(getMenuType()) + && SystemConstants.NO_FRAME.equals(getIsFrame())) { + routerPath = "/" + this.path; + } + // 非外链并且是一级目录(类型为菜单) + else if (isMenuFrame()) { + routerPath = "/"; + } + return routerPath; + } + + /** + * 获取组件信息 + */ + public String getComponentInfo() { + String component = SystemConstants.LAYOUT; + if (StringUtils.isNotEmpty(this.component) && !isMenuFrame()) { + component = this.component; + } else if (StringUtils.isEmpty(this.component) && getParentId() != 0L && isInnerLink()) { + component = SystemConstants.INNER_LINK; + } else if (StringUtils.isEmpty(this.component) && isParentView()) { + component = SystemConstants.PARENT_VIEW; + } + return component; + } + + /** + * 是否为菜单内部跳转 + */ + public boolean isMenuFrame() { + return getParentId() == 0L && SystemConstants.TYPE_MENU.equals(menuType) && isFrame.equals(SystemConstants.NO_FRAME); + } + + /** + * 是否为内链组件 + */ + public boolean isInnerLink() { + return isFrame.equals(SystemConstants.NO_FRAME) && StringUtils.ishttp(path); + } + + /** + * 是否为parent_view组件 + */ + public boolean isParentView() { + return getParentId() != 0L && SystemConstants.TYPE_DIR.equals(menuType); + } + + /** + * 内链域名特殊字符替换 + */ + public static String innerLinkReplaceEach(String path) { + return StringUtils.replaceEach(path, new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":"}, + new String[]{"", "", "", "/", "/"}); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysNotice.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysNotice.java new file mode 100644 index 0000000..bfcc2bc --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysNotice.java @@ -0,0 +1,51 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** + * 通知公告表 sys_notice + * + * @author Lion Li + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_notice") +public class SysNotice extends TenantEntity { + + /** + * 公告ID + */ + @TableId(value = "notice_id") + private Long noticeId; + + /** + * 公告标题 + */ + private String noticeTitle; + + /** + * 公告类型(1通知 2公告) + */ + private String noticeType; + + /** + * 公告内容 + */ + private String noticeContent; + + /** + * 公告状态(0正常 1关闭) + */ + private String status; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysOperLog.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysOperLog.java new file mode 100644 index 0000000..41a8c59 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysOperLog.java @@ -0,0 +1,115 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 操作日志记录表 oper_log + * + * @author Lion Li + */ + +@Data +@TableName("sys_oper_log") +public class SysOperLog implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 日志主键 + */ + @TableId(value = "oper_id") + private Long operId; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 操作模块 + */ + private String title; + + /** + * 业务类型(0其它 1新增 2修改 3删除) + */ + private Integer businessType; + + /** + * 请求方法 + */ + private String method; + + /** + * 请求方式 + */ + private String requestMethod; + + /** + * 操作类别(0其它 1后台用户 2手机端用户) + */ + private Integer operatorType; + + /** + * 操作人员 + */ + private String operName; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 请求url + */ + private String operUrl; + + /** + * 操作地址 + */ + private String operIp; + + /** + * 操作地点 + */ + private String operLocation; + + /** + * 请求参数 + */ + private String operParam; + + /** + * 返回参数 + */ + private String jsonResult; + + /** + * 操作状态(0正常 1异常) + */ + private Integer status; + + /** + * 错误消息 + */ + private String errorMsg; + + /** + * 操作时间 + */ + private Date operTime; + + /** + * 消耗时间 + */ + private Long costTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysOss.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysOss.java new file mode 100644 index 0000000..af88898 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysOss.java @@ -0,0 +1,50 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * OSS对象存储对象 + * + * @author Lion Li + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_oss") +public class SysOss extends TenantEntity { + + /** + * 对象存储主键 + */ + @TableId(value = "oss_id") + private Long ossId; + + /** + * 文件名 + */ + private String fileName; + + /** + * 原名 + */ + private String originalName; + + /** + * 文件后缀名 + */ + private String fileSuffix; + + /** + * URL地址 + */ + private String url; + + /** + * 服务商 + */ + private String service; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysOssConfig.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysOssConfig.java new file mode 100644 index 0000000..4b67d63 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysOssConfig.java @@ -0,0 +1,89 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 对象存储配置对象 sys_oss_config + * + * @author Lion Li + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_oss_config") +public class SysOssConfig extends BaseEntity { + + /** + * 主键 + */ + @TableId(value = "oss_config_id") + private Long ossConfigId; + + /** + * 配置key + */ + private String configKey; + + /** + * accessKey + */ + private String accessKey; + + /** + * 秘钥 + */ + private String secretKey; + + /** + * 桶名称 + */ + private String bucketName; + + /** + * 前缀 + */ + private String prefix; + + /** + * 访问站点 + */ + private String endpoint; + + /** + * 自定义域名 + */ + private String domain; + + /** + * 是否https(0否 1是) + */ + private String isHttps; + + /** + * 域 + */ + private String region; + + /** + * 是否默认(0=是,1=否) + */ + private String status; + + /** + * 扩展字段 + */ + private String ext1; + + /** + * 备注 + */ + private String remark; + + /** + * 桶权限类型(0private 1public 2custom) + */ + private String accessPolicy; +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java new file mode 100644 index 0000000..2c985da --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysPost.java @@ -0,0 +1,61 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 岗位表 sys_post + * + * @author Lion Li + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_post") +public class SysPost extends TenantEntity { + + /** + * 岗位序号 + */ + @TableId(value = "post_id") + private Long postId; + + /** + * 部门id + */ + private Long deptId; + + /** + * 岗位编码 + */ + private String postCode; + + /** + * 岗位名称 + */ + private String postName; + + /** + * 岗位类别编码 + */ + private String postCategory; + + /** + * 岗位排序 + */ + private Integer postSort; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java new file mode 100644 index 0000000..a7c0ad5 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysRole.java @@ -0,0 +1,79 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.tenant.core.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * 角色表 sys_role + * + * @author Lion Li + */ + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName("sys_role") +public class SysRole extends TenantEntity { + + /** + * 角色ID + */ + @TableId(value = "role_id") + private Long roleId; + + /** + * 角色名称 + */ + private String roleName; + + /** + * 角色权限 + */ + private String roleKey; + + /** + * 角色排序 + */ + private Integer roleSort; + + /** + * 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限) + */ + private String dataScope; + + /** + * 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) + */ + private Boolean menuCheckStrictly; + + /** + * 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 ) + */ + private Boolean deptCheckStrictly; + + /** + * 角色状态(0正常 1停用) + */ + private String status; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 备注 + */ + private String remark; + + public SysRole(Long roleId) { + this.roleId = roleId; + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleDept.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleDept.java new file mode 100644 index 0000000..ba77694 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleDept.java @@ -0,0 +1,29 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 角色和部门关联 sys_role_dept + * + * @author Lion Li + */ + +@Data +@TableName("sys_role_dept") +public class SysRoleDept { + + /** + * 角色ID + */ + @TableId(type = IdType.INPUT) + private Long roleId; + + /** + * 部门ID + */ + private Long deptId; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleMenu.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleMenu.java new file mode 100644 index 0000000..ba28f17 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysRoleMenu.java @@ -0,0 +1,29 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 角色和菜单关联 sys_role_menu + * + * @author Lion Li + */ + +@Data +@TableName("sys_role_menu") +public class SysRoleMenu { + + /** + * 角色ID + */ + @TableId(type = IdType.INPUT) + private Long roleId; + + /** + * 菜单ID + */ + private Long menuId; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java new file mode 100644 index 0000000..10f2936 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysSocial.java @@ -0,0 +1,136 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + +/** + * 社会化关系对象 sys_social + * + * @author thiszhc + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_social") +public class SysSocial extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 的唯一ID + */ + private String authId; + + /** + * 用户来源 + */ + private String source; + + /** + * 用户的授权令牌 + */ + private String accessToken; + + /** + * 用户的授权令牌的有效期,部分平台可能没有 + */ + private int expireIn; + + /** + * 刷新令牌,部分平台可能没有 + */ + private String refreshToken; + + /** + * 用户的 open id + */ + private String openId; + + /** + * 授权的第三方账号 + */ + private String userName; + + /** + * 授权的第三方昵称 + */ + private String nickName; + + /** + * 授权的第三方邮箱 + */ + private String email; + + /** + * 授权的第三方头像地址 + */ + private String avatar; + + /** + * 平台的授权信息,部分平台可能没有 + */ + private String accessCode; + + /** + * 用户的 unionid + */ + private String unionId; + + /** + * 授予的权限,部分平台可能没有 + */ + private String scope; + + /** + * 个别平台的授权信息,部分平台可能没有 + */ + private String tokenType; + + /** + * id token,部分平台可能没有 + */ + private String idToken; + + /** + * 小米平台用户的附带属性,部分平台可能没有 + */ + private String macAlgorithm; + + /** + * 小米平台用户的附带属性,部分平台可能没有 + */ + private String macKey; + + /** + * 用户的授权code,部分平台可能没有 + */ + private String code; + + /** + * Twitter平台用户的附带属性,部分平台可能没有 + */ + private String oauthToken; + + /** + * Twitter平台用户的附带属性,部分平台可能没有 + */ + private String oauthTokenSecret; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java new file mode 100644 index 0000000..9800c30 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenant.java @@ -0,0 +1,103 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serial; +import java.util.Date; + +/** + * 租户对象 sys_tenant + * + * @author Michelle.Chung + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_tenant") +public class SysTenant extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 联系人 + */ + private String contactUserName; + + /** + * 联系电话 + */ + private String contactPhone; + + /** + * 企业名称 + */ + private String companyName; + + /** + * 统一社会信用代码 + */ + private String licenseNumber; + + /** + * 地址 + */ + private String address; + + /** + * 域名 + */ + private String domain; + + /** + * 企业简介 + */ + private String intro; + + /** + * 备注 + */ + private String remark; + + /** + * 租户套餐编号 + */ + private Long packageId; + + /** + * 过期时间 + */ + private Date expireTime; + + /** + * 用户数量(-1不限制) + */ + private Long accountCount; + + /** + * 租户状态(0正常 1停用) + */ + private String status; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenantPackage.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenantPackage.java new file mode 100644 index 0000000..5f58e3e --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysTenantPackage.java @@ -0,0 +1,60 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.io.Serial; + +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 租户套餐对象 sys_tenant_package + * + * @author Michelle.Chung + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_tenant_package") +public class SysTenantPackage extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 租户套餐id + */ + @TableId(value = "package_id") + private Long packageId; + + /** + * 套餐名称 + */ + private String packageName; + + /** + * 关联菜单id + */ + private String menuIds; + + /** + * 备注 + */ + private String remark; + + /** + * 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示) + */ + private Boolean menuCheckStrictly; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java new file mode 100644 index 0000000..3712f80 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUser.java @@ -0,0 +1,115 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.tenant.core.TenantEntity; + +import java.util.Date; + +/** + * 用户对象 sys_user + * + * @author Lion Li + */ + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName("sys_user") +public class SysUser extends TenantEntity { + + /** + * 用户ID + */ + @TableId(value = "user_id") + private Long userId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 用户账号 + */ + private String userName; + + /** + * 用户昵称 + */ + private String nickName; + + /** + * 用户类型(sys_user系统用户) + */ + private String userType; + + /** + * 用户邮箱 + */ + private String email; + + /** + * 手机号码 + */ + private String phonenumber; + + /** + * 用户性别 + */ + private String sex; + + /** + * 用户头像 + */ + private Long avatar; + + /** + * 密码 + */ + @TableField( + insertStrategy = FieldStrategy.NOT_EMPTY, + updateStrategy = FieldStrategy.NOT_EMPTY, + whereStrategy = FieldStrategy.NOT_EMPTY + ) + private String password; + + /** + * 帐号状态(0正常 1停用) + */ + private String status; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + + /** + * 最后登录IP + */ + private String loginIp; + + /** + * 最后登录时间 + */ + private Date loginDate; + + /** + * 备注 + */ + private String remark; + + + public SysUser(Long userId) { + this.userId = userId; + } + + public boolean isSuperAdmin() { + return SystemConstants.SUPER_ADMIN_ID.equals(this.userId); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java new file mode 100644 index 0000000..ba30eb6 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java @@ -0,0 +1,63 @@ +package org.dromara.system.domain; + +import lombok.Data; + +/** + * 当前在线会话 + * + * @author Lion Li + */ +@Data +public class SysUserOnline { + + /** + * 会话编号 + */ + private String tokenId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 用户名称 + */ + private String userName; + + /** + * 客户端 + */ + private String clientKey; + + /** + * 设备类型 + */ + private String deviceType; + + /** + * 登录IP地址 + */ + private String ipaddr; + + /** + * 登录地址 + */ + private String loginLocation; + + /** + * 浏览器类型 + */ + private String browser; + + /** + * 操作系统 + */ + private String os; + + /** + * 登录时间 + */ + private Long loginTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserPost.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserPost.java new file mode 100644 index 0000000..119c117 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserPost.java @@ -0,0 +1,29 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 用户和岗位关联 sys_user_post + * + * @author Lion Li + */ + +@Data +@TableName("sys_user_post") +public class SysUserPost { + + /** + * 用户ID + */ + @TableId(type = IdType.INPUT) + private Long userId; + + /** + * 岗位ID + */ + private Long postId; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserRole.java b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserRole.java new file mode 100644 index 0000000..0a50e80 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserRole.java @@ -0,0 +1,29 @@ +package org.dromara.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * 用户和角色关联 sys_user_role + * + * @author Lion Li + */ + +@Data +@TableName("sys_user_role") +public class SysUserRole { + + /** + * 用户ID + */ + @TableId(type = IdType.INPUT) + private Long userId; + + /** + * 角色ID + */ + private Long roleId; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysClientBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysClientBo.java new file mode 100644 index 0000000..e5f5ffa --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysClientBo.java @@ -0,0 +1,80 @@ +package org.dromara.system.domain.bo; + +import org.dromara.system.domain.SysClient; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.util.List; + +/** + * 授权管理业务对象 sys_client + * + * @author Michelle.Chung + * @date 2023-05-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysClient.class, reverseConvertGenerate = false) +public class SysClientBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 客户端id + */ + private String clientId; + + /** + * 客户端key + */ + @NotBlank(message = "客户端key不能为空", groups = { AddGroup.class, EditGroup.class }) + private String clientKey; + + /** + * 客户端秘钥 + */ + @NotBlank(message = "客户端秘钥不能为空", groups = { AddGroup.class, EditGroup.class }) + private String clientSecret; + + /** + * 授权类型 + */ + @NotNull(message = "授权类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private List grantTypeList; + + /** + * 授权类型 + */ + private String grantType; + + /** + * 设备类型 + */ + private String deviceType; + + /** + * token活跃超时时间 + */ + private Long activeTimeout; + + /** + * token固定超时时间 + */ + private Long timeout; + + /** + * 状态(0正常 1停用) + */ + private String status; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysConfigBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysConfigBo.java new file mode 100644 index 0000000..257935d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysConfigBo.java @@ -0,0 +1,59 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysConfig; + +/** + * 参数配置业务对象 sys_config + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysConfig.class, reverseConvertGenerate = false) +public class SysConfigBo extends BaseEntity { + + /** + * 参数主键 + */ + private Long configId; + + /** + * 参数名称 + */ + @NotBlank(message = "参数名称不能为空") + @Size(min = 0, max = 100, message = "参数名称不能超过{max}个字符") + private String configName; + + /** + * 参数键名 + */ + @NotBlank(message = "参数键名不能为空") + @Size(min = 0, max = 100, message = "参数键名长度不能超过{max}个字符") + private String configKey; + + /** + * 参数键值 + */ + @NotBlank(message = "参数键值不能为空") + @Size(min = 0, max = 500, message = "参数键值长度不能超过{max}个字符") + private String configValue; + + /** + * 系统内置(Y是 N否) + */ + private String configType; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java new file mode 100644 index 0000000..5f64d6f --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java @@ -0,0 +1,76 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysDept; + +/** + * 部门业务对象 sys_dept + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysDept.class, reverseConvertGenerate = false) +public class SysDeptBo extends BaseEntity { + + /** + * 部门id + */ + private Long deptId; + + /** + * 父部门ID + */ + private Long parentId; + + /** + * 部门名称 + */ + @NotBlank(message = "部门名称不能为空") + @Size(min = 0, max = 30, message = "部门名称长度不能超过{max}个字符") + private String deptName; + + /** + * 部门类别编码 + */ + @Size(min = 0, max = 100, message = "部门类别编码长度不能超过{max}个字符") + private String deptCategory; + + /** + * 显示顺序 + */ + @NotNull(message = "显示顺序不能为空") + private Integer orderNum; + + /** + * 负责人 + */ + private Long leader; + + /** + * 联系电话 + */ + @Size(min = 0, max = 11, message = "联系电话长度不能超过{max}个字符") + private String phone; + + /** + * 邮箱 + */ + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符") + private String email; + + /** + * 部门状态(0正常 1停用) + */ + private String status; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictDataBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictDataBo.java new file mode 100644 index 0000000..042946c --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictDataBo.java @@ -0,0 +1,80 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysDictData; + +/** + * 字典数据业务对象 sys_dict_data + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysDictData.class, reverseConvertGenerate = false) +public class SysDictDataBo extends BaseEntity { + + /** + * 字典编码 + */ + private Long dictCode; + + /** + * 字典排序 + */ + private Integer dictSort; + + /** + * 字典标签 + */ + @NotBlank(message = "字典标签不能为空") + @Size(min = 0, max = 100, message = "字典标签长度不能超过{max}个字符") + private String dictLabel; + + /** + * 字典键值 + */ + @NotBlank(message = "字典键值不能为空") + @Size(min = 0, max = 100, message = "字典键值长度不能超过{max}个字符") + private String dictValue; + + /** + * 字典类型 + */ + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型长度不能超过{max}个字符") + private String dictType; + + /** + * 样式属性(其他样式扩展) + */ + @Size(min = 0, max = 100, message = "样式属性长度不能超过{max}个字符") + private String cssClass; + + /** + * 表格回显样式 + */ + private String listClass; + + /** + * 是否默认(Y是 N否) + */ + private String isDefault; + + /** + * 创建部门 + */ + private Long createDept; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictTypeBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictTypeBo.java new file mode 100644 index 0000000..fcc1ac1 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDictTypeBo.java @@ -0,0 +1,50 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.constant.RegexConstants; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysDictType; + +/** + * 字典类型业务对象 sys_dict_type + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysDictType.class, reverseConvertGenerate = false) +public class SysDictTypeBo extends BaseEntity { + + /** + * 字典主键 + */ + private Long dictId; + + /** + * 字典名称 + */ + @NotBlank(message = "字典名称不能为空") + @Size(min = 0, max = 100, message = "字典类型名称长度不能超过{max}个字符") + private String dictName; + + /** + * 字典类型 + */ + @NotBlank(message = "字典类型不能为空") + @Size(min = 0, max = 100, message = "字典类型类型长度不能超过{max}个字符") + @Pattern(regexp = RegexConstants.DICTIONARY_TYPE, message = "字典类型必须以字母开头,且只能为(小写字母,数字,下滑线)") + private String dictType; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysLogininforBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysLogininforBo.java new file mode 100644 index 0000000..4646162 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysLogininforBo.java @@ -0,0 +1,87 @@ +package org.dromara.system.domain.bo; + +import org.dromara.system.domain.SysLogininfor; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 系统访问记录业务对象 sys_logininfor + * + * @author Michelle.Chung + */ + +@Data +@AutoMapper(target = SysLogininfor.class, reverseConvertGenerate = false) +public class SysLogininforBo { + + /** + * 访问ID + */ + private Long infoId; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 用户账号 + */ + private String userName; + + /** + * 客户端 + */ + private String clientKey; + + /** + * 设备类型 + */ + private String deviceType; + + /** + * 登录IP地址 + */ + private String ipaddr; + + /** + * 登录地点 + */ + private String loginLocation; + + /** + * 浏览器类型 + */ + private String browser; + + /** + * 操作系统 + */ + private String os; + + /** + * 登录状态(0成功 1失败) + */ + private String status; + + /** + * 提示消息 + */ + private String msg; + + /** + * 访问时间 + */ + private Date loginTime; + + /** + * 请求参数 + */ + private Map params = new HashMap<>(); + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysMenuBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysMenuBo.java new file mode 100644 index 0000000..fbaafaa --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysMenuBo.java @@ -0,0 +1,110 @@ +package org.dromara.system.domain.bo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.constant.RegexConstants; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysMenu; + +/** + * 菜单权限业务对象 sys_menu + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysMenu.class, reverseConvertGenerate = false) +public class SysMenuBo extends BaseEntity { + + /** + * 菜单ID + */ + private Long menuId; + + /** + * 父菜单ID + */ + private Long parentId; + + /** + * 菜单名称 + */ + @NotBlank(message = "菜单名称不能为空") + @Size(min = 0, max = 50, message = "菜单名称长度不能超过{max}个字符") + private String menuName; + + /** + * 显示顺序 + */ + @NotNull(message = "显示顺序不能为空") + private Integer orderNum; + + /** + * 路由地址 + */ + @Size(min = 0, max = 200, message = "路由地址不能超过{max}个字符") + private String path; + + /** + * 组件路径 + */ + @Size(min = 0, max = 200, message = "组件路径不能超过{max}个字符") + private String component; + + /** + * 路由参数 + */ + private String queryParam; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 菜单类型(M目录 C菜单 F按钮) + */ + @NotBlank(message = "菜单类型不能为空") + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + + /** + * 菜单状态(0正常 1停用) + */ + private String status; + + /** + * 权限标识 + */ + @JsonInclude(JsonInclude.Include.NON_NULL) + @Size(min = 0, max = 100, message = "权限标识长度不能超过{max}个字符") + @Pattern(regexp = RegexConstants.PERMISSION_STRING, message = "权限标识必须符合 tool:build:list 格式") + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysNoticeBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysNoticeBo.java new file mode 100644 index 0000000..cdcc575 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysNoticeBo.java @@ -0,0 +1,61 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.xss.Xss; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysNotice; + +/** + * 通知公告业务对象 sys_notice + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysNotice.class, reverseConvertGenerate = false) +public class SysNoticeBo extends BaseEntity { + + /** + * 公告ID + */ + private Long noticeId; + + /** + * 公告标题 + */ + @Xss(message = "公告标题不能包含脚本字符") + @NotBlank(message = "公告标题不能为空") + @Size(min = 0, max = 50, message = "公告标题不能超过{max}个字符") + private String noticeTitle; + + /** + * 公告类型(1通知 2公告) + */ + private String noticeType; + + /** + * 公告内容 + */ + private String noticeContent; + + /** + * 公告状态(0正常 1关闭) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人名称 + */ + private String createByName; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOperLogBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOperLogBo.java new file mode 100644 index 0000000..f16400a --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOperLogBo.java @@ -0,0 +1,127 @@ +package org.dromara.system.domain.bo; + +import org.dromara.common.log.event.OperLogEvent; +import org.dromara.system.domain.SysOperLog; +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMappers; +import lombok.Data; + +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 操作日志记录业务对象 sys_oper_log + * + * @author Michelle.Chung + * @date 2023-02-07 + */ + +@Data +@AutoMappers({ + @AutoMapper(target = SysOperLog.class, reverseConvertGenerate = false), + @AutoMapper(target = OperLogEvent.class) +}) +public class SysOperLogBo { + + /** + * 日志主键 + */ + private Long operId; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 模块标题 + */ + private String title; + + /** + * 业务类型(0其它 1新增 2修改 3删除) + */ + private Integer businessType; + + /** + * 业务类型数组 + */ + private Integer[] businessTypes; + + /** + * 方法名称 + */ + private String method; + + /** + * 请求方式 + */ + private String requestMethod; + + /** + * 操作类别(0其它 1后台用户 2手机端用户) + */ + private Integer operatorType; + + /** + * 操作人员 + */ + private String operName; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 请求URL + */ + private String operUrl; + + /** + * 主机地址 + */ + private String operIp; + + /** + * 操作地点 + */ + private String operLocation; + + /** + * 请求参数 + */ + private String operParam; + + /** + * 返回参数 + */ + private String jsonResult; + + /** + * 操作状态(0正常 1异常) + */ + private Integer status; + + /** + * 错误消息 + */ + private String errorMsg; + + /** + * 操作时间 + */ + private Date operTime; + + /** + * 消耗时间 + */ + private Long costTime; + + /** + * 请求参数 + */ + private Map params = new HashMap<>(); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOssBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOssBo.java new file mode 100644 index 0000000..7cb3104 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOssBo.java @@ -0,0 +1,49 @@ +package org.dromara.system.domain.bo; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysOss; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * OSS对象存储分页查询对象 sys_oss + * + * @author Lion Li + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysOss.class, reverseConvertGenerate = false) +public class SysOssBo extends BaseEntity { + + /** + * ossId + */ + private Long ossId; + + /** + * 文件名 + */ + private String fileName; + + /** + * 原名 + */ + private String originalName; + + /** + * 文件后缀名 + */ + private String fileSuffix; + + /** + * URL地址 + */ + private String url; + + /** + * 服务商 + */ + private String service; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOssConfigBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOssConfigBo.java new file mode 100644 index 0000000..3dc4328 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOssConfigBo.java @@ -0,0 +1,109 @@ +package org.dromara.system.domain.bo; + +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysOssConfig; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 对象存储配置业务对象 sys_oss_config + * + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysOssConfig.class, reverseConvertGenerate = false) +public class SysOssConfigBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = {EditGroup.class}) + private Long ossConfigId; + + /** + * 配置key + */ + @NotBlank(message = "配置key不能为空", groups = {AddGroup.class, EditGroup.class}) + @Size(min = 2, max = 100, message = "configKey长度必须介于{min}和{max} 之间") + private String configKey; + + /** + * accessKey + */ + @NotBlank(message = "accessKey不能为空", groups = {AddGroup.class, EditGroup.class}) + @Size(min = 2, max = 100, message = "accessKey长度必须介于{min}和{max} 之间") + private String accessKey; + + /** + * 秘钥 + */ + @NotBlank(message = "secretKey不能为空", groups = {AddGroup.class, EditGroup.class}) + @Size(min = 2, max = 100, message = "secretKey长度必须介于{min}和{max} 之间") + private String secretKey; + + /** + * 桶名称 + */ + @NotBlank(message = "桶名称不能为空", groups = {AddGroup.class, EditGroup.class}) + @Size(min = 2, max = 100, message = "bucketName长度必须介于{min}和{max}之间") + private String bucketName; + + /** + * 前缀 + */ + private String prefix; + + /** + * 访问站点 + */ + @NotBlank(message = "访问站点不能为空", groups = {AddGroup.class, EditGroup.class}) + @Size(min = 2, max = 100, message = "endpoint长度必须介于{min}和{max}之间") + private String endpoint; + + /** + * 自定义域名 + */ + private String domain; + + /** + * 是否https(Y=是,N=否) + */ + private String isHttps; + + /** + * 是否默认(0=是,1=否) + */ + private String status; + + /** + * 域 + */ + private String region; + + /** + * 扩展字段 + */ + private String ext1; + + /** + * 备注 + */ + private String remark; + + /** + * 桶权限类型(0private 1public 2custom) + */ + @NotBlank(message = "桶权限类型不能为空", groups = {AddGroup.class, EditGroup.class}) + private String accessPolicy; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java new file mode 100644 index 0000000..09805cd --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysPostBo.java @@ -0,0 +1,75 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysPost; + +/** + * 岗位信息业务对象 sys_post + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysPost.class, reverseConvertGenerate = false) +public class SysPostBo extends BaseEntity { + + /** + * 岗位ID + */ + private Long postId; + + /** + * 部门id(单部门) + */ + @NotNull(message = "部门id不能为空") + private Long deptId; + + /** + * 归属部门id(部门树) + */ + private Long belongDeptId; + + /** + * 岗位编码 + */ + @NotBlank(message = "岗位编码不能为空") + @Size(min = 0, max = 64, message = "岗位编码长度不能超过{max}个字符") + private String postCode; + + /** + * 岗位名称 + */ + @NotBlank(message = "岗位名称不能为空") + @Size(min = 0, max = 50, message = "岗位名称长度不能超过{max}个字符") + private String postName; + + /** + * 岗位类别编码 + */ + @Size(min = 0, max = 100, message = "类别编码长度不能超过{max}个字符") + private String postCategory; + + /** + * 显示顺序 + */ + @NotNull(message = "显示顺序不能为空") + private Integer postSort; + + /** + * 状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java new file mode 100644 index 0000000..3207bad --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysRoleBo.java @@ -0,0 +1,94 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysRole; + +/** + * 角色信息业务对象 sys_role + * + * @author Michelle.Chung + */ + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysRole.class, reverseConvertGenerate = false) +public class SysRoleBo extends BaseEntity { + + /** + * 角色ID + */ + private Long roleId; + + /** + * 角色名称 + */ + @NotBlank(message = "角色名称不能为空") + @Size(min = 0, max = 30, message = "角色名称长度不能超过{max}个字符") + private String roleName; + + /** + * 角色权限字符串 + */ + @NotBlank(message = "角色权限字符串不能为空") + @Size(min = 0, max = 100, message = "权限字符长度不能超过{max}个字符") + private String roleKey; + + /** + * 显示顺序 + */ + @NotNull(message = "显示顺序不能为空") + private Integer roleSort; + + /** + * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) + */ + private String dataScope; + + /** + * 菜单树选择项是否关联显示 + */ + private Boolean menuCheckStrictly; + + /** + * 部门树选择项是否关联显示 + */ + private Boolean deptCheckStrictly; + + /** + * 角色状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + /** + * 菜单组 + */ + private Long[] menuIds; + + /** + * 部门组(数据权限) + */ + private Long[] deptIds; + + public SysRoleBo(Long roleId) { + this.roleId = roleId; + } + + public boolean isSuperAdmin() { + return SystemConstants.SUPER_ADMIN_ID.equals(this.roleId); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java new file mode 100644 index 0000000..cede1e9 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysSocialBo.java @@ -0,0 +1,142 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.tenant.core.TenantEntity; +import org.dromara.system.domain.SysSocial; + +/** + * 社会化关系业务对象 sys_social + * + * @author Lion Li + */ +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysSocial.class, reverseConvertGenerate = false) +public class SysSocialBo extends TenantEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 认证唯一ID + */ + @NotBlank(message = "认证唯一ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private String authId; + + /** + * 用户来源 + */ + @NotBlank(message = "用户来源不能为空", groups = { AddGroup.class, EditGroup.class }) + private String source; + + /** + * 用户的授权令牌 + */ + @NotBlank(message = "用户的授权令牌不能为空", groups = { AddGroup.class, EditGroup.class }) + private String accessToken; + + /** + * 用户的授权令牌的有效期,部分平台可能没有 + */ + private int expireIn; + + /** + * 刷新令牌,部分平台可能没有 + */ + private String refreshToken; + + /** + * 平台唯一id + */ + private String openId; + + /** + * 用户的 ID + */ + @NotBlank(message = "用户的ID不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long userId; + + /** + * 平台的授权信息,部分平台可能没有 + */ + private String accessCode; + + /** + * 用户的 unionid + */ + private String unionId; + + /** + * 授予的权限,部分平台可能没有 + */ + private String scope; + + /** + * 授权的第三方账号 + */ + private String userName; + + /** + * 授权的第三方昵称 + */ + private String nickName; + + /** + * 授权的第三方邮箱 + */ + private String email; + + /** + * 授权的第三方头像地址 + */ + private String avatar; + + /** + * 个别平台的授权信息,部分平台可能没有 + */ + private String tokenType; + + /** + * id token,部分平台可能没有 + */ + private String idToken; + + /** + * 小米平台用户的附带属性,部分平台可能没有 + */ + private String macAlgorithm; + + /** + * 小米平台用户的附带属性,部分平台可能没有 + */ + private String macKey; + + /** + * 用户的授权code,部分平台可能没有 + */ + private String code; + + /** + * Twitter平台用户的附带属性,部分平台可能没有 + */ + private String oauthToken; + + /** + * Twitter平台用户的附带属性,部分平台可能没有 + */ + private String oauthTokenSecret; + + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java new file mode 100644 index 0000000..e3ac642 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantBo.java @@ -0,0 +1,114 @@ +package org.dromara.system.domain.bo; + +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.system.domain.SysTenant; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import java.util.Date; + +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 租户业务对象 sys_tenant + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysTenant.class, reverseConvertGenerate = false) +public class SysTenantBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 联系人 + */ + @NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contactUserName; + + /** + * 联系电话 + */ + @NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contactPhone; + + /** + * 企业名称 + */ + @NotBlank(message = "企业名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String companyName; + + /** + * 用户名(创建系统用户) + */ + @NotBlank(message = "用户名不能为空", groups = { AddGroup.class }) + private String username; + + /** + * 密码(创建系统用户) + */ + @NotBlank(message = "密码不能为空", groups = { AddGroup.class }) + private String password; + + /** + * 统一社会信用代码 + */ + private String licenseNumber; + + /** + * 地址 + */ + private String address; + + /** + * 域名 + */ + private String domain; + + /** + * 企业简介 + */ + private String intro; + + /** + * 备注 + */ + private String remark; + + /** + * 租户套餐编号 + */ + @NotNull(message = "租户套餐不能为空", groups = { AddGroup.class }) + private Long packageId; + + /** + * 过期时间 + */ + private Date expireTime; + + /** + * 用户数量(-1不限制) + */ + private Long accountCount; + + /** + * 租户状态(0正常 1停用) + */ + private String status; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantPackageBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantPackageBo.java new file mode 100644 index 0000000..eecbc9f --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysTenantPackageBo.java @@ -0,0 +1,59 @@ +package org.dromara.system.domain.bo; + +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.system.domain.SysTenantPackage; +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.AutoMapping; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; + +import org.dromara.common.mybatis.core.domain.BaseEntity; + +/** + * 租户套餐业务对象 sys_tenant_package + * + * @author Michelle.Chung + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysTenantPackage.class, reverseConvertGenerate = false) +public class SysTenantPackageBo extends BaseEntity { + + /** + * 租户套餐id + */ + @NotNull(message = "租户套餐id不能为空", groups = { EditGroup.class }) + private Long packageId; + + /** + * 套餐名称 + */ + @NotBlank(message = "套餐名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String packageName; + + /** + * 关联菜单id + */ + @AutoMapping(target = "menuIds", expression = "java(org.dromara.common.core.utils.StringUtils.join(source.getMenuIds(), \",\"))") + private Long[] menuIds; + + /** + * 备注 + */ + private String remark; + + /** + * 菜单树选择项是否关联显示 + */ + private Boolean menuCheckStrictly; + + /** + * 状态(0正常 1停用) + */ + private String status; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java new file mode 100644 index 0000000..2669a81 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserBo.java @@ -0,0 +1,119 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.xss.Xss; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysUser; + +/** + * 用户信息业务对象 sys_user + * + * @author Michelle.Chung + */ + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysUser.class, reverseConvertGenerate = false) +public class SysUserBo extends BaseEntity { + + /** + * 用户ID + */ + private Long userId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 用户账号 + */ + @Xss(message = "用户账号不能包含脚本字符") + @NotBlank(message = "用户账号不能为空") + @Size(min = 0, max = 30, message = "用户账号长度不能超过{max}个字符") + private String userName; + + /** + * 用户昵称 + */ + @Xss(message = "用户昵称不能包含脚本字符") + @NotBlank(message = "用户昵称不能为空") + @Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符") + private String nickName; + + /** + * 用户类型(sys_user系统用户) + */ + private String userType; + + /** + * 用户邮箱 + */ + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符") + private String email; + + /** + * 手机号码 + */ + private String phonenumber; + + /** + * 用户性别(0男 1女 2未知) + */ + private String sex; + + /** + * 密码 + */ + private String password; + + /** + * 帐号状态(0正常 1停用) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + /** + * 角色组 + */ + @Size(min = 1, message = "用户角色不能为空") + private Long[] roleIds; + + /** + * 岗位组 + */ + private Long[] postIds; + + /** + * 数据权限 当前角色ID + */ + private Long roleId; + + /** + * 排除不查询的用户(工作流用) + */ + private String excludeUserIds; + + public SysUserBo(Long userId) { + this.userId = userId; + } + + public boolean isSuperAdmin() { + return SystemConstants.SUPER_ADMIN_ID.equals(this.userId); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserPasswordBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserPasswordBo.java new file mode 100644 index 0000000..8615fcd --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserPasswordBo.java @@ -0,0 +1,29 @@ +package org.dromara.system.domain.bo; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 用户密码修改bo + */ +@Data +public class SysUserPasswordBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 旧密码 + */ + @NotBlank(message = "旧密码不能为空") + private String oldPassword; + + /** + * 新密码 + */ + @NotBlank(message = "新密码不能为空") + private String newPassword; +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java new file mode 100644 index 0000000..846dd79 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysUserProfileBo.java @@ -0,0 +1,53 @@ +package org.dromara.system.domain.bo; + +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.Pattern; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.dromara.common.core.constant.RegexConstants; +import org.dromara.common.core.xss.Xss; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.sensitive.annotation.Sensitive; +import org.dromara.common.sensitive.core.SensitiveStrategy; + +/** + * 个人信息业务处理 + * + * @author Michelle.Chung + */ + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class SysUserProfileBo extends BaseEntity { + + /** + * 用户昵称 + */ + @Xss(message = "用户昵称不能包含脚本字符") + @Size(min = 0, max = 30, message = "用户昵称长度不能超过{max}个字符") + private String nickName; + + /** + * 用户邮箱 + */ + @Sensitive(strategy = SensitiveStrategy.EMAIL) + @Email(message = "邮箱格式不正确") + @Size(min = 0, max = 50, message = "邮箱长度不能超过{max}个字符") + private String email; + + /** + * 手机号码 + */ + @Pattern(regexp = RegexConstants.MOBILE, message = "手机号格式不正确") + @Sensitive(strategy = SensitiveStrategy.PHONE) + private String phonenumber; + + /** + * 用户性别(0男 1女 2未知) + */ + private String sex; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AvatarVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AvatarVo.java new file mode 100644 index 0000000..46c020b --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/AvatarVo.java @@ -0,0 +1,18 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; + +/** + * 用户头像信息 + * + * @author Michelle.Chung + */ +@Data +public class AvatarVo { + + /** + * 头像地址 + */ + private String imgUrl; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CacheListInfoVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CacheListInfoVo.java new file mode 100644 index 0000000..f827cba --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/CacheListInfoVo.java @@ -0,0 +1,23 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; + +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** + * 缓存监控列表信息 + * + * @author Michelle.Chung + */ +@Data +public class CacheListInfoVo { + + private Properties info; + + private Long dbSize; + + private List> commandStats; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java new file mode 100644 index 0000000..6f7db28 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/DeptTreeSelectVo.java @@ -0,0 +1,26 @@ +package org.dromara.system.domain.vo; + +import cn.hutool.core.lang.tree.Tree; +import lombok.Data; + +import java.util.List; + +/** + * 角色部门列表树信息 + * + * @author Michelle.Chung + */ +@Data +public class DeptTreeSelectVo { + + /** + * 选中部门列表 + */ + private List checkedKeys; + + /** + * 下拉树结构列表 + */ + private List> depts; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MenuTreeSelectVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MenuTreeSelectVo.java new file mode 100644 index 0000000..0724538 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MenuTreeSelectVo.java @@ -0,0 +1,26 @@ +package org.dromara.system.domain.vo; + +import cn.hutool.core.lang.tree.Tree; +import lombok.Data; + +import java.util.List; + +/** + * 角色菜单列表树信息 + * + * @author Michelle.Chung + */ +@Data +public class MenuTreeSelectVo { + + /** + * 选中菜单列表 + */ + private List checkedKeys; + + /** + * 菜单下拉树结构列表 + */ + private List> menus; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MetaVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MetaVo.java new file mode 100644 index 0000000..f720cd7 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/MetaVo.java @@ -0,0 +1,61 @@ +package org.dromara.system.domain.vo; + +import org.dromara.common.core.utils.StringUtils; +import lombok.Data; + +/** + * 路由显示信息 + * + * @author ruoyi + */ + +@Data +public class MetaVo { + + /** + * 设置该路由在侧边栏和面包屑中展示的名字 + */ + private String title; + + /** + * 设置该路由的图标,对应路径src/assets/icons/svg + */ + private String icon; + + /** + * 设置为true,则不会被 缓存 + */ + private boolean noCache; + + /** + * 内链地址(http(s)://开头) + */ + private String link; + + public MetaVo(String title, String icon) { + this.title = title; + this.icon = icon; + } + + public MetaVo(String title, String icon, boolean noCache) { + this.title = title; + this.icon = icon; + this.noCache = noCache; + } + + public MetaVo(String title, String icon, String link) { + this.title = title; + this.icon = icon; + this.link = link; + } + + public MetaVo(String title, String icon, boolean noCache, String link) { + this.title = title; + this.icon = icon; + this.noCache = noCache; + if (StringUtils.ishttp(link)) { + this.link = link; + } + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProfileVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProfileVo.java new file mode 100644 index 0000000..c047651 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/ProfileVo.java @@ -0,0 +1,29 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; + +/** + * 用户个人信息 + * + * @author Michelle.Chung + */ +@Data +public class ProfileVo { + + /** + * 用户信息 + */ + private SysUserVo user; + + /** + * 用户所属角色组 + */ + private String roleGroup; + + /** + * 用户所属岗位组 + */ + private String postGroup; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RouterVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RouterVo.java new file mode 100644 index 0000000..0d576ef --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/RouterVo.java @@ -0,0 +1,62 @@ +package org.dromara.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.List; + +/** + * 路由配置信息 + * + * @author Lion Li + */ +@Data +@JsonInclude(JsonInclude.Include.NON_EMPTY) +public class RouterVo { + + /** + * 路由名字 + */ + private String name; + + /** + * 路由地址 + */ + private String path; + + /** + * 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现 + */ + private boolean hidden; + + /** + * 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 + */ + private String redirect; + + /** + * 组件地址 + */ + private String component; + + /** + * 路由参数:如 {"id": 1, "name": "ry"} + */ + private String query; + + /** + * 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 + */ + private Boolean alwaysShow; + + /** + * 其他元素 + */ + private MetaVo meta; + + /** + * 子路由 + */ + private List children; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java new file mode 100644 index 0000000..34f24eb --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysClientVo.java @@ -0,0 +1,90 @@ +package org.dromara.system.domain.vo; + +import org.dromara.system.domain.SysClient; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + + +/** + * 授权管理视图对象 sys_client + * + * @author Michelle.Chung + * @date 2023-05-15 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysClient.class) +public class SysClientVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 客户端id + */ + @ExcelProperty(value = "客户端id") + private String clientId; + + /** + * 客户端key + */ + @ExcelProperty(value = "客户端key") + private String clientKey; + + /** + * 客户端秘钥 + */ + @ExcelProperty(value = "客户端秘钥") + private String clientSecret; + + /** + * 授权类型 + */ + @ExcelProperty(value = "授权类型") + private List grantTypeList; + + /** + * 授权类型 + */ + private String grantType; + + /** + * 设备类型 + */ + private String deviceType; + + /** + * token活跃超时时间 + */ + @ExcelProperty(value = "token活跃超时时间") + private Long activeTimeout; + + /** + * token固定超时时间 + */ + @ExcelProperty(value = "token固定超时时间") + private Long timeout; + + /** + * 状态(0正常 1停用) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=正常,1=停用") + private String status; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java new file mode 100644 index 0000000..f896000 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysConfigVo.java @@ -0,0 +1,72 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysConfig; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 参数配置视图对象 sys_config + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysConfig.class) +public class SysConfigVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 参数主键 + */ + @ExcelProperty(value = "参数主键") + private Long configId; + + /** + * 参数名称 + */ + @ExcelProperty(value = "参数名称") + private String configName; + + /** + * 参数键名 + */ + @ExcelProperty(value = "参数键名") + private String configKey; + + /** + * 参数键值 + */ + @ExcelProperty(value = "参数键值") + private String configValue; + + /** + * 系统内置(Y是 N否) + */ + @ExcelProperty(value = "系统内置", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_yes_no") + private String configType; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java new file mode 100644 index 0000000..c56fb09 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDeptVo.java @@ -0,0 +1,102 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysDept; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 部门视图对象 sys_dept + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysDept.class) +public class SysDeptVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + + /** + * 父部门id + */ + private Long parentId; + + /** + * 父部门名称 + */ + private String parentName; + + /** + * 祖级列表 + */ + private String ancestors; + + /** + * 部门名称 + */ + @ExcelProperty(value = "部门名称") + private String deptName; + + /** + * 部门类别编码 + */ + @ExcelProperty(value = "部门类别编码") + private String deptCategory; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 负责人ID + */ + private Long leader; + + /** + * 负责人 + */ + @ExcelProperty(value = "负责人") + private String leaderName; + + /** + * 联系电话 + */ + @ExcelProperty(value = "联系电话") + private String phone; + + /** + * 邮箱 + */ + @ExcelProperty(value = "邮箱") + private String email; + + /** + * 部门状态(0正常 1停用) + */ + @ExcelProperty(value = "部门状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_normal_disable") + private String status; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java new file mode 100644 index 0000000..83ea619 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictDataVo.java @@ -0,0 +1,88 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysDictData; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 字典数据视图对象 sys_dict_data + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysDictData.class) +public class SysDictDataVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 字典编码 + */ + @ExcelProperty(value = "字典编码") + private Long dictCode; + + /** + * 字典排序 + */ + @ExcelProperty(value = "字典排序") + private Integer dictSort; + + /** + * 字典标签 + */ + @ExcelProperty(value = "字典标签") + private String dictLabel; + + /** + * 字典键值 + */ + @ExcelProperty(value = "字典键值") + private String dictValue; + + /** + * 字典类型 + */ + @ExcelProperty(value = "字典类型") + private String dictType; + + /** + * 样式属性(其他样式扩展) + */ + private String cssClass; + + /** + * 表格回显样式 + */ + private String listClass; + + /** + * 是否默认(Y是 N否) + */ + @ExcelProperty(value = "是否默认", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_yes_no") + private String isDefault; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java new file mode 100644 index 0000000..e6a184f --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysDictTypeVo.java @@ -0,0 +1,59 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysDictType; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 字典类型视图对象 sys_dict_type + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysDictType.class) +public class SysDictTypeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 字典主键 + */ + @ExcelProperty(value = "字典主键") + private Long dictId; + + /** + * 字典名称 + */ + @ExcelProperty(value = "字典名称") + private String dictName; + + /** + * 字典类型 + */ + @ExcelProperty(value = "字典类型") + private String dictType; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java new file mode 100644 index 0000000..de19aea --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java @@ -0,0 +1,106 @@ +package org.dromara.system.domain.vo; + +import java.util.Date; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysLogininfor; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + + +/** + * 系统访问记录视图对象 sys_logininfor + * + * @author Michelle.Chung + * @date 2023-02-07 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysLogininfor.class) +public class SysLogininforVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 访问ID + */ + @ExcelProperty(value = "序号") + private Long infoId; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 用户账号 + */ + @ExcelProperty(value = "用户账号") + private String userName; + + /** + * 客户端 + */ + @ExcelProperty(value = "客户端") + private String clientKey; + + /** + * 设备类型 + */ + @ExcelProperty(value = "设备类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_device_type") + private String deviceType; + + /** + * 登录状态(0成功 1失败) + */ + @ExcelProperty(value = "登录状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_common_status") + private String status; + + /** + * 登录IP地址 + */ + @ExcelProperty(value = "登录地址") + private String ipaddr; + + /** + * 登录地点 + */ + @ExcelProperty(value = "登录地点") + private String loginLocation; + + /** + * 浏览器类型 + */ + @ExcelProperty(value = "浏览器") + private String browser; + + /** + * 操作系统 + */ + @ExcelProperty(value = "操作系统") + private String os; + + + /** + * 提示消息 + */ + @ExcelProperty(value = "提示消息") + private String msg; + + /** + * 访问时间 + */ + @ExcelProperty(value = "访问时间") + private Date loginTime; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMenuVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMenuVo.java new file mode 100644 index 0000000..5214a33 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysMenuVo.java @@ -0,0 +1,116 @@ +package org.dromara.system.domain.vo; + +import org.dromara.system.domain.SysMenu; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +/** + * 菜单权限视图对象 sys_menu + * + * @author Michelle.Chung + */ +@Data +@AutoMapper(target = SysMenu.class) +public class SysMenuVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 菜单ID + */ + private Long menuId; + + /** + * 菜单名称 + */ + private String menuName; + + /** + * 父菜单ID + */ + private Long parentId; + + /** + * 显示顺序 + */ + private Integer orderNum; + + /** + * 路由地址 + */ + private String path; + + /** + * 组件路径 + */ + private String component; + + /** + * 路由参数 + */ + private String queryParam; + + /** + * 是否为外链(0是 1否) + */ + private String isFrame; + + /** + * 是否缓存(0缓存 1不缓存) + */ + private String isCache; + + /** + * 菜单类型(M目录 C菜单 F按钮) + */ + private String menuType; + + /** + * 显示状态(0显示 1隐藏) + */ + private String visible; + + /** + * 菜单状态(0正常 1停用) + */ + private String status; + + /** + * 权限标识 + */ + private String perms; + + /** + * 菜单图标 + */ + private String icon; + + /** + * 创建部门 + */ + private Long createDept; + + /** + * 备注 + */ + private String remark; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 子菜单 + */ + private List children = new ArrayList<>(); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysNoticeVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysNoticeVo.java new file mode 100644 index 0000000..afe7367 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysNoticeVo.java @@ -0,0 +1,73 @@ +package org.dromara.system.domain.vo; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.system.domain.SysNotice; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 通知公告视图对象 sys_notice + * + * @author Michelle.Chung + */ +@Data +@AutoMapper(target = SysNotice.class) +public class SysNoticeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 公告ID + */ + private Long noticeId; + + /** + * 公告标题 + */ + private String noticeTitle; + + /** + * 公告类型(1通知 2公告) + */ + private String noticeType; + + /** + * 公告内容 + */ + private String noticeContent; + + /** + * 公告状态(0正常 1关闭) + */ + private String status; + + /** + * 备注 + */ + private String remark; + + /** + * 创建者 + */ + private Long createBy; + + /** + * 创建人名称 + */ + @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") + private String createByName; + + /** + * 创建时间 + */ + private Date createTime; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java new file mode 100644 index 0000000..d9eb71d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java @@ -0,0 +1,144 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysOperLog; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 操作日志记录视图对象 sys_oper_log + * + * @author Michelle.Chung + * @date 2023-02-07 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysOperLog.class) +public class SysOperLogVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 日志主键 + */ + @ExcelProperty(value = "日志主键") + private Long operId; + + /** + * 租户编号 + */ + private String tenantId; + + /** + * 模块标题 + */ + @ExcelProperty(value = "操作模块") + private String title; + + /** + * 业务类型(0其它 1新增 2修改 3删除) + */ + @ExcelProperty(value = "业务类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_oper_type") + private Integer businessType; + + /** + * 业务类型数组 + */ + private Integer[] businessTypes; + + /** + * 方法名称 + */ + @ExcelProperty(value = "请求方法") + private String method; + + /** + * 请求方式 + */ + @ExcelProperty(value = "请求方式") + private String requestMethod; + + /** + * 操作类别(0其它 1后台用户 2手机端用户) + */ + @ExcelProperty(value = "操作类别", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=其它,1=后台用户,2=手机端用户") + private Integer operatorType; + + /** + * 操作人员 + */ + @ExcelProperty(value = "操作人员") + private String operName; + + /** + * 部门名称 + */ + @ExcelProperty(value = "部门名称") + private String deptName; + + /** + * 请求URL + */ + @ExcelProperty(value = "请求地址") + private String operUrl; + + /** + * 主机地址 + */ + @ExcelProperty(value = "操作地址") + private String operIp; + + /** + * 操作地点 + */ + @ExcelProperty(value = "操作地点") + private String operLocation; + + /** + * 请求参数 + */ + @ExcelProperty(value = "请求参数") + private String operParam; + + /** + * 返回参数 + */ + @ExcelProperty(value = "返回参数") + private String jsonResult; + + /** + * 操作状态(0正常 1异常) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_common_status") + private Integer status; + + /** + * 错误消息 + */ + @ExcelProperty(value = "错误消息") + private String errorMsg; + + /** + * 操作时间 + */ + @ExcelProperty(value = "操作时间") + private Date operTime; + + /** + * 消耗时间 + */ + @ExcelProperty(value = "消耗时间") + private Long costTime; +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssConfigVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssConfigVo.java new file mode 100644 index 0000000..e7cfde4 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssConfigVo.java @@ -0,0 +1,97 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import org.dromara.system.domain.SysOssConfig; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 对象存储配置视图对象 sys_oss_config + * + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysOssConfig.class) +public class SysOssConfigVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long ossConfigId; + + /** + * 配置key + */ + private String configKey; + + /** + * accessKey + */ + private String accessKey; + + /** + * 秘钥 + */ + private String secretKey; + + /** + * 桶名称 + */ + private String bucketName; + + /** + * 前缀 + */ + private String prefix; + + /** + * 访问站点 + */ + private String endpoint; + + /** + * 自定义域名 + */ + private String domain; + + /** + * 是否https(Y=是,N=否) + */ + private String isHttps; + + /** + * 域 + */ + private String region; + + /** + * 是否默认(0=是,1=否) + */ + private String status; + + /** + * 扩展字段 + */ + private String ext1; + + /** + * 备注 + */ + private String remark; + + /** + * 桶权限类型(0private 1public 2custom) + */ + private String accessPolicy; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java new file mode 100644 index 0000000..11e0ff8 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssUploadVo.java @@ -0,0 +1,28 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; + +/** + * 上传对象信息 + * + * @author Michelle.Chung + */ +@Data +public class SysOssUploadVo { + + /** + * URL地址 + */ + private String url; + + /** + * 文件名 + */ + private String fileName; + + /** + * 对象存储主键 + */ + private String ossId; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssVo.java new file mode 100644 index 0000000..8d5c429 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOssVo.java @@ -0,0 +1,72 @@ +package org.dromara.system.domain.vo; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.system.domain.SysOss; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * OSS对象存储视图对象 sys_oss + * + * @author Lion Li + */ +@Data +@AutoMapper(target = SysOss.class) +public class SysOssVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 对象存储主键 + */ + private Long ossId; + + /** + * 文件名 + */ + private String fileName; + + /** + * 原名 + */ + private String originalName; + + /** + * 文件后缀名 + */ + private String fileSuffix; + + /** + * URL地址 + */ + private String url; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 上传人 + */ + private Long createBy; + + /** + * 上传人名称 + */ + @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy") + private String createByName; + + /** + * 服务商 + */ + private String service; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java new file mode 100644 index 0000000..69be547 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysPostVo.java @@ -0,0 +1,91 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.system.domain.SysPost; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 岗位信息视图对象 sys_post + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysPost.class) +public class SysPostVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 岗位ID + */ + @ExcelProperty(value = "岗位序号") + private Long postId; + + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + + /** + * 岗位编码 + */ + @ExcelProperty(value = "岗位编码") + private String postCode; + + /** + * 岗位名称 + */ + @ExcelProperty(value = "岗位名称") + private String postName; + + /** + * 岗位类别编码 + */ + @ExcelProperty(value = "类别编码") + private String postCategory; + + /** + * 显示顺序 + */ + @ExcelProperty(value = "岗位排序") + private Integer postSort; + + /** + * 状态(0正常 1停用) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_normal_disable") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 部门名 + */ + @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "deptId") + private String deptName; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java new file mode 100644 index 0000000..ffb2c6d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java @@ -0,0 +1,100 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysRole; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 角色信息视图对象 sys_role + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysRole.class) +public class SysRoleVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 角色ID + */ + @ExcelProperty(value = "角色序号") + private Long roleId; + + /** + * 角色名称 + */ + @ExcelProperty(value = "角色名称") + private String roleName; + + /** + * 角色权限字符串 + */ + @ExcelProperty(value = "角色权限") + private String roleKey; + + /** + * 显示顺序 + */ + @ExcelProperty(value = "角色排序") + private Integer roleSort; + + /** + * 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限) + */ + @ExcelProperty(value = "数据范围", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "1=所有数据权限,2=自定义数据权限,3=本部门数据权限,4=本部门及以下数据权限,5=仅本人数据权限") + private String dataScope; + + /** + * 菜单树选择项是否关联显示 + */ + @ExcelProperty(value = "菜单树选择项是否关联显示") + private Boolean menuCheckStrictly; + + /** + * 部门树选择项是否关联显示 + */ + @ExcelProperty(value = "部门树选择项是否关联显示") + private Boolean deptCheckStrictly; + + /** + * 角色状态(0正常 1停用) + */ + @ExcelProperty(value = "角色状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_normal_disable") + private String status; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 用户是否存在此角色标识 默认不存在 + */ + private boolean flag = false; + + public boolean isSuperAdmin() { + return SystemConstants.SUPER_ADMIN_ID.equals(this.roleId); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java new file mode 100644 index 0000000..948dbcc --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysSocialVo.java @@ -0,0 +1,144 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.system.domain.SysSocial; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 社会化关系视图对象 sys_social + * + * @author thiszhc + */ +@Data +@AutoMapper(target = SysSocial.class) +public class SysSocialVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long id; + + /** + * 用户ID + */ + private Long userId; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 的唯一ID + */ + private String authId; + + /** + * 用户来源 + */ + private String source; + + /** + * 用户的授权令牌 + */ + private String accessToken; + + /** + * 用户的授权令牌的有效期,部分平台可能没有 + */ + private int expireIn; + + /** + * 刷新令牌,部分平台可能没有 + */ + private String refreshToken; + + /** + * 用户的 open id + */ + private String openId; + + /** + * 授权的第三方账号 + */ + private String userName; + + /** + * 授权的第三方昵称 + */ + private String nickName; + + /** + * 授权的第三方邮箱 + */ + private String email; + + /** + * 授权的第三方头像地址 + */ + private String avatar; + + + /** + * 平台的授权信息,部分平台可能没有 + */ + private String accessCode; + + /** + * 用户的 unionid + */ + private String unionId; + + /** + * 授予的权限,部分平台可能没有 + */ + private String scope; + + /** + * 个别平台的授权信息,部分平台可能没有 + */ + private String tokenType; + + /** + * id token,部分平台可能没有 + */ + private String idToken; + + /** + * 小米平台用户的附带属性,部分平台可能没有 + */ + private String macAlgorithm; + + /** + * 小米平台用户的附带属性,部分平台可能没有 + */ + private String macKey; + + /** + * 用户的授权code,部分平台可能没有 + */ + private String code; + + /** + * Twitter平台用户的附带属性,部分平台可能没有 + */ + private String oauthToken; + + /** + * Twitter平台用户的附带属性,部分平台可能没有 + */ + private String oauthTokenSecret; + + /** + * 创建时间 + */ + private Date createTime; +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java new file mode 100644 index 0000000..070334b --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantPackageVo.java @@ -0,0 +1,66 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysTenantPackage; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 租户套餐视图对象 sys_tenant_package + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysTenantPackage.class) +public class SysTenantPackageVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 租户套餐id + */ + @ExcelProperty(value = "租户套餐id") + private Long packageId; + + /** + * 套餐名称 + */ + @ExcelProperty(value = "套餐名称") + private String packageName; + + /** + * 关联菜单id + */ + @ExcelProperty(value = "关联菜单id") + private String menuIds; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 菜单树选择项是否关联显示 + */ + @ExcelProperty(value = "菜单树选择项是否关联显示") + private Boolean menuCheckStrictly; + + /** + * 状态(0正常 1停用) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=正常,1=停用") + private String status; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java new file mode 100644 index 0000000..6a45315 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysTenantVo.java @@ -0,0 +1,115 @@ +package org.dromara.system.domain.vo; + +import java.util.Date; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import org.dromara.system.domain.SysTenant; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 租户视图对象 sys_tenant + * + * @author Michelle.Chung + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysTenant.class) +public class SysTenantVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 租户编号 + */ + @ExcelProperty(value = "租户编号") + private String tenantId; + + /** + * 联系人 + */ + @ExcelProperty(value = "联系人") + private String contactUserName; + + /** + * 联系电话 + */ + @ExcelProperty(value = "联系电话") + private String contactPhone; + + /** + * 企业名称 + */ + @ExcelProperty(value = "企业名称") + private String companyName; + + /** + * 统一社会信用代码 + */ + @ExcelProperty(value = "统一社会信用代码") + private String licenseNumber; + + /** + * 地址 + */ + @ExcelProperty(value = "地址") + private String address; + + /** + * 域名 + */ + @ExcelProperty(value = "域名") + private String domain; + + /** + * 企业简介 + */ + @ExcelProperty(value = "企业简介") + private String intro; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 租户套餐编号 + */ + @ExcelProperty(value = "租户套餐编号") + private Long packageId; + + /** + * 过期时间 + */ + @ExcelProperty(value = "过期时间") + private Date expireTime; + + /** + * 用户数量(-1不限制) + */ + @ExcelProperty(value = "用户数量") + private Long accountCount; + + /** + * 租户状态(0正常 1停用) + */ + @ExcelProperty(value = "租户状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=正常,1=停用") + private String status; + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java new file mode 100644 index 0000000..37ec6b7 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserExportVo.java @@ -0,0 +1,96 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import io.github.linpeilie.annotations.ReverseAutoMapping; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 用户对象导出VO + * + * @author Lion Li + */ + +@Data +@NoArgsConstructor +public class SysUserExportVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + @ExcelProperty(value = "用户序号") + private Long userId; + + /** + * 用户账号 + */ + @ExcelProperty(value = "登录名称") + private String userName; + + /** + * 用户昵称 + */ + @ExcelProperty(value = "用户名称") + private String nickName; + + /** + * 用户邮箱 + */ + @ExcelProperty(value = "用户邮箱") + private String email; + + /** + * 手机号码 + */ + @ExcelProperty(value = "手机号码") + private String phonenumber; + + /** + * 用户性别 + */ + @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_user_sex") + private String sex; + + /** + * 帐号状态(0正常 1停用) + */ + @ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_normal_disable") + private String status; + + /** + * 最后登录IP + */ + @ExcelProperty(value = "最后登录IP") + private String loginIp; + + /** + * 最后登录时间 + */ + @ExcelProperty(value = "最后登录时间") + private Date loginDate; + + /** + * 部门名称 + */ + @ExcelProperty(value = "部门名称") + private String deptName; + + /** + * 负责人 + */ + @ExcelProperty(value = "部门负责人") + private String leaderName; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java new file mode 100644 index 0000000..c34a23c --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserImportVo.java @@ -0,0 +1,76 @@ +package org.dromara.system.domain.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 用户对象导入VO + * + * @author Lion Li + */ + +@Data +@NoArgsConstructor +// @Accessors(chain = true) // 导入不允许使用 会找不到set方法 +public class SysUserImportVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + @ExcelProperty(value = "用户序号") + private Long userId; + + /** + * 部门ID + */ + @ExcelProperty(value = "部门编号") + private Long deptId; + + /** + * 用户账号 + */ + @ExcelProperty(value = "登录名称") + private String userName; + + /** + * 用户昵称 + */ + @ExcelProperty(value = "用户名称") + private String nickName; + + /** + * 用户邮箱 + */ + @ExcelProperty(value = "用户邮箱") + private String email; + + /** + * 手机号码 + */ + @ExcelProperty(value = "手机号码") + private String phonenumber; + + /** + * 用户性别 + */ + @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_user_sex") + private String sex; + + /** + * 帐号状态(0正常 1停用) + */ + @ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(dictType = "sys_normal_disable") + private String status; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserInfoVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserInfoVo.java new file mode 100644 index 0000000..e41355d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserInfoVo.java @@ -0,0 +1,40 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; + +import java.util.List; + +/** + * 用户信息 + * + * @author Michelle.Chung + */ +@Data +public class SysUserInfoVo { + + /** + * 用户信息 + */ + private SysUserVo user; + + /** + * 角色ID列表 + */ + private List roleIds; + + /** + * 角色列表 + */ + private List roles; + + /** + * 岗位ID列表 + */ + private List postIds; + + /** + * 岗位列表 + */ + private List posts; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java new file mode 100644 index 0000000..86249d2 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java @@ -0,0 +1,142 @@ +package org.dromara.system.domain.vo; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import org.dromara.common.sensitive.annotation.Sensitive; +import org.dromara.common.sensitive.core.SensitiveStrategy; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.system.domain.SysUser; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + + +/** + * 用户信息视图对象 sys_user + * + * @author Michelle.Chung + */ +@Data +@AutoMapper(target = SysUser.class) +public class SysUserVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 用户ID + */ + private Long userId; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 部门ID + */ + private Long deptId; + + /** + * 用户账号 + */ + private String userName; + + /** + * 用户昵称 + */ + private String nickName; + + /** + * 用户类型(sys_user系统用户) + */ + private String userType; + + /** + * 用户邮箱 + */ + @Sensitive(strategy = SensitiveStrategy.EMAIL, perms = "system:user:edit") + private String email; + + /** + * 手机号码 + */ + @Sensitive(strategy = SensitiveStrategy.PHONE, perms = "system:user:edit") + private String phonenumber; + + /** + * 用户性别(0男 1女 2未知) + */ + private String sex; + + /** + * 头像地址 + */ + @Translation(type = TransConstant.OSS_ID_TO_URL) + private Long avatar; + + /** + * 密码 + */ + @JsonIgnore + @JsonProperty + private String password; + + /** + * 帐号状态(0正常 1停用) + */ + private String status; + + /** + * 最后登录IP + */ + private String loginIp; + + /** + * 最后登录时间 + */ + private Date loginDate; + + /** + * 备注 + */ + private String remark; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 部门名 + */ + @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "deptId") + private String deptName; + + /** + * 角色对象 + */ + private List roles; + + /** + * 角色组 + */ + private Long[] roleIds; + + /** + * 岗位组 + */ + private Long[] postIds; + + /** + * 数据权限 当前角色ID + */ + private Long roleId; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java new file mode 100644 index 0000000..48fa92a --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/domain/vo/UserInfoVo.java @@ -0,0 +1,30 @@ +package org.dromara.system.domain.vo; + +import lombok.Data; + +import java.util.Set; + +/** + * 登录用户信息 + * + * @author Michelle.Chung + */ +@Data +public class UserInfoVo { + + /** + * 用户基本信息 + */ + private SysUserVo user; + + /** + * 菜单权限 + */ + private Set permissions; + + /** + * 角色权限 + */ + private Set roles; + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java b/ruoyi-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java new file mode 100644 index 0000000..25b62a9 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java @@ -0,0 +1,127 @@ +package org.dromara.system.listener; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.crypto.digest.BCrypt; +import cn.hutool.http.HtmlUtil; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.ConstraintViolationException; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.ValidatorUtils; +import org.dromara.common.excel.core.ExcelListener; +import org.dromara.common.excel.core.ExcelResult; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.vo.SysUserImportVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.service.ISysConfigService; +import org.dromara.system.service.ISysUserService; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * 系统用户自定义导入 + * + * @author Lion Li + */ +@Slf4j +public class SysUserImportListener extends AnalysisEventListener implements ExcelListener { + + private final ISysUserService userService; + + private final String password; + + private final Boolean isUpdateSupport; + + private final Long operUserId; + + private int successNum = 0; + private int failureNum = 0; + private final StringBuilder successMsg = new StringBuilder(); + private final StringBuilder failureMsg = new StringBuilder(); + + public SysUserImportListener(Boolean isUpdateSupport) { + String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword"); + this.userService = SpringUtils.getBean(ISysUserService.class); + this.password = BCrypt.hashpw(initPassword); + this.isUpdateSupport = isUpdateSupport; + this.operUserId = LoginHelper.getUserId(); + } + + @Override + public void invoke(SysUserImportVo userVo, AnalysisContext context) { + SysUserVo sysUser = this.userService.selectUserByUserName(userVo.getUserName()); + try { + // 验证是否存在这个用户 + if (ObjectUtil.isNull(sysUser)) { + SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); + ValidatorUtils.validate(user); + user.setPassword(password); + user.setCreateBy(operUserId); + userService.insertUser(user); + successNum++; + successMsg.append("
").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功"); + } else if (isUpdateSupport) { + Long userId = sysUser.getUserId(); + SysUserBo user = BeanUtil.toBean(userVo, SysUserBo.class); + user.setUserId(userId); + ValidatorUtils.validate(user); + userService.checkUserAllowed(user.getUserId()); + userService.checkUserDataScope(user.getUserId()); + user.setUpdateBy(operUserId); + userService.updateUser(user); + successNum++; + successMsg.append("
").append(successNum).append("、账号 ").append(user.getUserName()).append(" 更新成功"); + } else { + failureNum++; + failureMsg.append("
").append(failureNum).append("、账号 ").append(sysUser.getUserName()).append(" 已存在"); + } + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "、账号 " + HtmlUtil.cleanHtmlTag(userVo.getUserName()) + " 导入失败:"; + String message = e.getMessage(); + if (e instanceof ConstraintViolationException cvException) { + message = StreamUtils.join(cvException.getConstraintViolations(), ConstraintViolation::getMessage, ", "); + } + failureMsg.append(msg).append(message); + log.error(msg, e); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + + } + + @Override + public ExcelResult getExcelResult() { + return new ExcelResult<>() { + + @Override + public String getAnalysis() { + if (failureNum > 0) { + failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); + } + return successMsg.toString(); + } + + @Override + public List getList() { + return null; + } + + @Override + public List getErrorList() { + return null; + } + }; + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysClientMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysClientMapper.java new file mode 100644 index 0000000..15bcfb4 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysClientMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.SysClient; +import org.dromara.system.domain.vo.SysClientVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 授权管理Mapper接口 + * + * @author Michelle.Chung + * @date 2023-05-15 + */ +public interface SysClientMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysConfigMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysConfigMapper.java new file mode 100644 index 0000000..0eaaee8 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysConfigMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysConfig; +import org.dromara.system.domain.vo.SysConfigVo; + +/** + * 参数配置 数据层 + * + * @author Lion Li + */ +public interface SysConfigMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java new file mode 100644 index 0000000..b69624c --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDeptMapper.java @@ -0,0 +1,78 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.vo.SysDeptVo; + +import java.util.List; + +/** + * 部门管理 数据层 + * + * @author Lion Li + */ +public interface SysDeptMapper extends BaseMapperPlus { + + /** + * 查询部门管理数据 + * + * @param queryWrapper 查询条件 + * @return 部门信息集合 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id") + }) + List selectDeptList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 分页查询部门管理数据 + * + * @param queryWrapper 查询条件 + * @return 部门信息集合 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + }) + Page selectPageDeptList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 统计指定部门ID的部门数量 + * + * @param deptId 部门ID + * @return 该部门ID的部门数量 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id") + }) + long countDeptById(Long deptId); + + /** + * 根据父部门ID查询其所有子部门的列表 + * + * @param parentId 父部门ID + * @return 包含子部门的列表 + */ + default List selectListByParentId(Long parentId) { + return this.selectList(new LambdaQueryWrapper() + .select(SysDept::getDeptId) + .apply(DataBaseHelper.findInSet(parentId, "ancestors"))); + } + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * @param deptCheckStrictly 部门树选择项是否关联显示 + * @return 选中部门列表 + */ + List selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java new file mode 100644 index 0000000..7298db3 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictDataMapper.java @@ -0,0 +1,29 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysDictData; +import org.dromara.system.domain.vo.SysDictDataVo; + +import java.util.List; + +/** + * 字典表 数据层 + * + * @author Lion Li + */ +public interface SysDictDataMapper extends BaseMapperPlus { + + /** + * 根据字典类型查询字典数据列表 + * + * @param dictType 字典类型 + * @return 符合条件的字典数据列表 + */ + default List selectDictDataByType(String dictType) { + return selectVoList( + new LambdaQueryWrapper() + .eq(SysDictData::getDictType, dictType) + .orderByAsc(SysDictData::getDictSort)); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictTypeMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictTypeMapper.java new file mode 100644 index 0000000..9a9bdd5 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysDictTypeMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.SysDictType; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.vo.SysDictTypeVo; + +/** + * 字典表 数据层 + * + * @author Lion Li + */ +public interface SysDictTypeMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysLogininforMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysLogininforMapper.java new file mode 100644 index 0000000..85edd1d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysLogininforMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysLogininfor; +import org.dromara.system.domain.vo.SysLogininforVo; + +/** + * 系统访问日志情况信息 数据层 + * + * @author Lion Li + */ +public interface SysLogininforMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java new file mode 100644 index 0000000..205413b --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysMenuMapper.java @@ -0,0 +1,76 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysMenu; +import org.dromara.system.domain.vo.SysMenuVo; + +import java.util.List; + +/** + * 菜单表 数据层 + * + * @author Lion Li + */ +public interface SysMenuMapper extends BaseMapperPlus { + + /** + * 根据用户查询系统菜单列表 + * + * @param queryWrapper 查询条件 + * @return 菜单列表 + */ + List selectMenuListByUserId(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + List selectMenuPermsByUserId(Long userId); + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + List selectMenuPermsByRoleId(Long roleId); + + /** + * 根据用户ID查询菜单 + * + * @return 菜单列表 + */ + default List selectMenuTreeAll() { + LambdaQueryWrapper lqw = new LambdaQueryWrapper() + .in(SysMenu::getMenuType, SystemConstants.TYPE_DIR, SystemConstants.TYPE_MENU) + .eq(SysMenu::getStatus, SystemConstants.NORMAL) + .orderByAsc(SysMenu::getParentId) + .orderByAsc(SysMenu::getOrderNum); + return this.selectList(lqw); + } + + /** + * 根据用户ID查询菜单 + * + * @param userId 用户ID + * @return 菜单列表 + */ + List selectMenuTreeByUserId(Long userId); + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * @param menuCheckStrictly 菜单树选择项是否关联显示 + * @return 选中菜单列表 + */ + List selectMenuListByRoleId(@Param("roleId") Long roleId, @Param("menuCheckStrictly") boolean menuCheckStrictly); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysNoticeMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysNoticeMapper.java new file mode 100644 index 0000000..1e27b77 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysNoticeMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysNotice; +import org.dromara.system.domain.vo.SysNoticeVo; + +/** + * 通知公告表 数据层 + * + * @author Lion Li + */ +public interface SysNoticeMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOperLogMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOperLogMapper.java new file mode 100644 index 0000000..5d20404 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOperLogMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysOperLog; +import org.dromara.system.domain.vo.SysOperLogVo; + +/** + * 操作日志 数据层 + * + * @author Lion Li + */ +public interface SysOperLogMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssConfigMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssConfigMapper.java new file mode 100644 index 0000000..f93d34d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssConfigMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysOssConfig; +import org.dromara.system.domain.vo.SysOssConfigVo; + +/** + * 对象存储配置Mapper接口 + * + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 + */ +public interface SysOssConfigMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java new file mode 100644 index 0000000..3da621d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysOssMapper.java @@ -0,0 +1,13 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysOss; +import org.dromara.system.domain.vo.SysOssVo; + +/** + * 文件上传 数据层 + * + * @author Lion Li + */ +public interface SysOssMapper extends BaseMapperPlus { +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java new file mode 100644 index 0000000..60da074 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysPostMapper.java @@ -0,0 +1,43 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysPost; +import org.dromara.system.domain.vo.SysPostVo; + +import java.util.List; + +/** + * 岗位信息 数据层 + * + * @author Lion Li + */ +public interface SysPostMapper extends BaseMapperPlus { + + /** + * 分页查询岗位列表 + * + * @param page 分页对象 + * @param queryWrapper 查询条件 + * @return 包含岗位信息的分页结果 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "create_by") + }) + Page selectPagePostList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 查询用户所属岗位组 + * + * @param userId 用户ID + * @return 结果 + */ + List selectPostsByUserId(Long userId); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleDeptMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleDeptMapper.java new file mode 100644 index 0000000..3de0bb6 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleDeptMapper.java @@ -0,0 +1,13 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysRoleDept; + +/** + * 角色与部门关联表 数据层 + * + * @author Lion Li + */ +public interface SysRoleDeptMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java new file mode 100644 index 0000000..9cb1ea5 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMapper.java @@ -0,0 +1,75 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.vo.SysRoleVo; + +import java.util.List; + +/** + * 角色表 数据层 + * + * @author Lion Li + */ +public interface SysRoleMapper extends BaseMapperPlus { + + /** + * 分页查询角色列表 + * + * @param page 分页对象 + * @param queryWrapper 查询条件 + * @return 包含角色信息的分页结果 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "userName", value = "r.create_by") + }) + Page selectPageRoleList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据条件分页查询角色数据 + * + * @param queryWrapper 查询条件 + * @return 角色数据集合信息 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "userName", value = "r.create_by") + }) + List selectRoleList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据角色ID查询角色信息 + * + * @param roleId 角色ID + * @return 对应的角色信息 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "userName", value = "r.create_by") + }) + SysRoleVo selectRoleById(Long roleId); + + /** + * 根据用户ID查询角色 + * + * @param userId 用户ID + * @return 角色列表 + */ + List selectRolePermissionByUserId(Long userId); + + /** + * 根据用户ID查询角色 + * + * @param userId 用户ID + * @return 角色列表 + */ + List selectRolesByUserId(Long userId); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMenuMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMenuMapper.java new file mode 100644 index 0000000..0a657b4 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysRoleMenuMapper.java @@ -0,0 +1,13 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysRoleMenu; + +/** + * 角色与菜单关联表 数据层 + * + * @author Lion Li + */ +public interface SysRoleMenuMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java new file mode 100644 index 0000000..b942061 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysSocialMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysSocial; +import org.dromara.system.domain.vo.SysSocialVo; + +/** + * 社会化关系Mapper接口 + * + * @author thiszhc + */ +public interface SysSocialMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantMapper.java new file mode 100644 index 0000000..7e1167a --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.system.domain.SysTenant; +import org.dromara.system.domain.vo.SysTenantVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 租户Mapper接口 + * + * @author Michelle.Chung + */ +public interface SysTenantMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantPackageMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantPackageMapper.java new file mode 100644 index 0000000..10ca170 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysTenantPackageMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysTenantPackage; +import org.dromara.system.domain.vo.SysTenantPackageVo; + +/** + * 租户套餐Mapper接口 + * + * @author Michelle.Chung + */ +public interface SysTenantPackageMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java new file mode 100644 index 0000000..46695aa --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java @@ -0,0 +1,123 @@ +package org.dromara.system.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.vo.SysUserExportVo; +import org.dromara.system.domain.vo.SysUserVo; + +import java.util.List; + +/** + * 用户表 数据层 + * + * @author Lion Li + */ +public interface SysUserMapper extends BaseMapperPlus { + + /** + * 分页查询用户列表,并进行数据权限控制 + * + * @param page 分页参数 + * @param queryWrapper 查询条件 + * @return 分页的用户信息 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "u.dept_id"), + @DataColumn(key = "userName", value = "u.user_id") + }) + Page selectPageUserList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 查询用户列表,并进行数据权限控制 + * + * @param queryWrapper 查询条件 + * @return 用户信息集合 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + List selectUserList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据条件分页查询用户列表 + * + * @param queryWrapper 查询条件 + * @return 用户信息集合信息 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "userName", value = "u.user_id") + }) + List selectUserExportList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据条件分页查询已配用户角色列表 + * + * @param queryWrapper 查询条件 + * @return 用户信息集合信息 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "userName", value = "u.user_id") + }) + Page selectAllocatedList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param queryWrapper 查询条件 + * @return 用户信息集合信息 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "d.dept_id"), + @DataColumn(key = "userName", value = "u.user_id") + }) + Page selectUnallocatedList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据用户ID统计用户数量 + * + * @param userId 用户ID + * @return 用户数量 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + long countUserById(Long userId); + + /** + * 根据条件更新用户数据 + * + * @param user 要更新的用户实体 + * @param updateWrapper 更新条件封装器 + * @return 更新操作影响的行数 + */ + @Override + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + int update(@Param(Constants.ENTITY) SysUser user, @Param(Constants.WRAPPER) Wrapper updateWrapper); + + /** + * 根据用户ID更新用户数据 + * + * @param user 要更新的用户实体 + * @return 更新操作影响的行数 + */ + @Override + @DataPermission({ + @DataColumn(key = "deptName", value = "dept_id"), + @DataColumn(key = "userName", value = "user_id") + }) + int updateById(@Param(Constants.ENTITY) SysUser user); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserPostMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserPostMapper.java new file mode 100644 index 0000000..07c1371 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserPostMapper.java @@ -0,0 +1,13 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysUserPost; + +/** + * 用户与岗位关联表 数据层 + * + * @author Lion Li + */ +public interface SysUserPostMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java new file mode 100644 index 0000000..8340348 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/mapper/SysUserRoleMapper.java @@ -0,0 +1,23 @@ +package org.dromara.system.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.system.domain.SysUserRole; + +import java.util.List; + +/** + * 用户与角色关联表 数据层 + * + * @author Lion Li + */ +public interface SysUserRoleMapper extends BaseMapperPlus { + + /** + * 根据角色ID查询关联的用户ID列表 + * + * @param roleId 角色ID + * @return 关联到指定角色的用户ID列表 + */ + List selectUserIdsByRoleId(Long roleId); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java b/ruoyi-system/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java new file mode 100644 index 0000000..27dad7d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/runner/SystemApplicationRunner.java @@ -0,0 +1,28 @@ +package org.dromara.system.runner; + +import org.dromara.system.service.ISysOssConfigService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +/** + * 初始化 system 模块对应业务数据 + * + * @author Lion Li + */ +@Slf4j +@RequiredArgsConstructor +@Component +public class SystemApplicationRunner implements ApplicationRunner { + + private final ISysOssConfigService ossConfigService; + + @Override + public void run(ApplicationArguments args) throws Exception { + ossConfigService.init(); + log.info("初始化OSS配置成功"); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysClientService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysClientService.java new file mode 100644 index 0000000..546c3f3 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysClientService.java @@ -0,0 +1,60 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.SysClient; +import org.dromara.system.domain.vo.SysClientVo; +import org.dromara.system.domain.bo.SysClientBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 客户端管理Service接口 + * + * @author Michelle.Chung + * @date 2023-06-18 + */ +public interface ISysClientService { + + /** + * 查询客户端管理 + */ + SysClientVo queryById(Long id); + + /** + * 查询客户端信息基于客户端id + */ + SysClientVo queryByClientId(String clientId); + + /** + * 查询客户端管理列表 + */ + TableDataInfo queryPageList(SysClientBo bo, PageQuery pageQuery); + + /** + * 查询客户端管理列表 + */ + List queryList(SysClientBo bo); + + /** + * 新增客户端管理 + */ + Boolean insertByBo(SysClientBo bo); + + /** + * 修改客户端管理 + */ + Boolean updateByBo(SysClientBo bo); + + /** + * 修改状态 + */ + int updateClientStatus(String clientId, String status); + + /** + * 校验并批量删除客户端管理信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java new file mode 100644 index 0000000..f7efda7 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysConfigService.java @@ -0,0 +1,87 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysConfigBo; +import org.dromara.system.domain.vo.SysConfigVo; + +import java.util.List; + +/** + * 参数配置 服务层 + * + * @author Lion Li + */ +public interface ISysConfigService { + + + TableDataInfo selectPageConfigList(SysConfigBo config, PageQuery pageQuery); + + /** + * 查询参数配置信息 + * + * @param configId 参数配置ID + * @return 参数配置信息 + */ + SysConfigVo selectConfigById(Long configId); + + /** + * 根据键名查询参数配置信息 + * + * @param configKey 参数键名 + * @return 参数键值 + */ + String selectConfigByKey(String configKey); + + /** + * 获取注册开关 + * @param tenantId 租户id + * @return true开启,false关闭 + */ + boolean selectRegisterEnabled(String tenantId); + + /** + * 查询参数配置列表 + * + * @param config 参数配置信息 + * @return 参数配置集合 + */ + List selectConfigList(SysConfigBo config); + + /** + * 新增参数配置 + * + * @param bo 参数配置信息 + * @return 结果 + */ + String insertConfig(SysConfigBo bo); + + /** + * 修改参数配置 + * + * @param bo 参数配置信息 + * @return 结果 + */ + String updateConfig(SysConfigBo bo); + + /** + * 批量删除参数信息 + * + * @param configIds 需要删除的参数ID + */ + void deleteConfigByIds(Long[] configIds); + + /** + * 重置参数缓存数据 + */ + void resetConfigCache(); + + /** + * 校验参数键名是否唯一 + * + * @param config 参数信息 + * @return 结果 + */ + boolean checkConfigKeyUnique(SysConfigBo config); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java new file mode 100644 index 0000000..3f252f7 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDataScopeService.java @@ -0,0 +1,26 @@ +package org.dromara.system.service; + +/** + * 通用 数据权限 服务 + * + * @author Lion Li + */ +public interface ISysDataScopeService { + + /** + * 获取角色自定义权限 + * + * @param roleId 角色id + * @return 部门id组 + */ + String getRoleCustom(Long roleId); + + /** + * 获取部门及以下权限 + * + * @param deptId 部门id + * @return 部门id组 + */ + String getDeptAndChild(Long deptId); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java new file mode 100644 index 0000000..bf16642 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java @@ -0,0 +1,125 @@ +package org.dromara.system.service; + +import cn.hutool.core.lang.tree.Tree; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.vo.SysDeptVo; + +import java.util.List; + +/** + * 部门管理 服务层 + * + * @author Lion Li + */ +public interface ISysDeptService { + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * @return 部门信息集合 + */ + List selectDeptList(SysDeptBo dept); + + /** + * 查询部门树结构信息 + * + * @param dept 部门信息 + * @return 部门树信息集合 + */ + List> selectDeptTreeList(SysDeptBo dept); + + /** + * 构建前端所需要下拉树结构 + * + * @param depts 部门列表 + * @return 下拉树结构列表 + */ + List> buildDeptTreeSelect(List depts); + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * @return 选中部门列表 + */ + List selectDeptListByRoleId(Long roleId); + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * @return 部门信息 + */ + SysDeptVo selectDeptById(Long deptId); + + /** + * 通过部门ID串查询部门 + * + * @param deptIds 部门id串 + * @return 部门列表信息 + */ + List selectDeptByIds(List deptIds); + + /** + * 根据ID查询所有子部门数(正常状态) + * + * @param deptId 部门ID + * @return 子部门数 + */ + long selectNormalChildrenDeptById(Long deptId); + + /** + * 是否存在部门子节点 + * + * @param deptId 部门ID + * @return 结果 + */ + boolean hasChildByDeptId(Long deptId); + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * @return 结果 true 存在 false 不存在 + */ + boolean checkDeptExistUser(Long deptId); + + /** + * 校验部门名称是否唯一 + * + * @param dept 部门信息 + * @return 结果 + */ + boolean checkDeptNameUnique(SysDeptBo dept); + + /** + * 校验部门是否有数据权限 + * + * @param deptId 部门id + */ + void checkDeptDataScope(Long deptId); + + /** + * 新增保存部门信息 + * + * @param bo 部门信息 + * @return 结果 + */ + int insertDept(SysDeptBo bo); + + /** + * 修改保存部门信息 + * + * @param bo 部门信息 + * @return 结果 + */ + int updateDept(SysDeptBo bo); + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * @return 结果 + */ + int deleteDeptById(Long deptId); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java new file mode 100644 index 0000000..0e697db --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictDataService.java @@ -0,0 +1,76 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysDictDataBo; +import org.dromara.system.domain.vo.SysDictDataVo; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author Lion Li + */ +public interface ISysDictDataService { + + + TableDataInfo selectPageDictDataList(SysDictDataBo dictData, PageQuery pageQuery); + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + List selectDictDataList(SysDictDataBo dictData); + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + String selectDictLabel(String dictType, String dictValue); + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + SysDictDataVo selectDictDataById(Long dictCode); + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + void deleteDictDataByIds(Long[] dictCodes); + + /** + * 新增保存字典数据信息 + * + * @param bo 字典数据信息 + * @return 结果 + */ + List insertDictData(SysDictDataBo bo); + + /** + * 修改保存字典数据信息 + * + * @param bo 字典数据信息 + * @return 结果 + */ + List updateDictData(SysDictDataBo bo); + + /** + * 校验字典键值是否唯一 + * + * @param dict 字典数据 + * @return 结果 + */ + boolean checkDictDataUnique(SysDictDataBo dict); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictTypeService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictTypeService.java new file mode 100644 index 0000000..3b32d6c --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysDictTypeService.java @@ -0,0 +1,95 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysDictTypeBo; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.dromara.system.domain.vo.SysDictTypeVo; + +import java.util.List; + +/** + * 字典 业务层 + * + * @author Lion Li + */ +public interface ISysDictTypeService { + + + TableDataInfo selectPageDictTypeList(SysDictTypeBo dictType, PageQuery pageQuery); + + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + List selectDictTypeList(SysDictTypeBo dictType); + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + List selectDictTypeAll(); + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + List selectDictDataByType(String dictType); + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + SysDictTypeVo selectDictTypeById(Long dictId); + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + SysDictTypeVo selectDictTypeByType(String dictType); + + /** + * 批量删除字典信息 + * + * @param dictIds 需要删除的字典ID + */ + void deleteDictTypeByIds(Long[] dictIds); + + /** + * 重置字典缓存数据 + */ + void resetDictCache(); + + /** + * 新增保存字典类型信息 + * + * @param bo 字典类型信息 + * @return 结果 + */ + List insertDictType(SysDictTypeBo bo); + + /** + * 修改保存字典类型信息 + * + * @param bo 字典类型信息 + * @return 结果 + */ + List updateDictType(SysDictTypeBo bo); + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + boolean checkDictTypeUnique(SysDictTypeBo dictType); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysLogininforService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysLogininforService.java new file mode 100644 index 0000000..6b3b7a6 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysLogininforService.java @@ -0,0 +1,47 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysLogininforBo; +import org.dromara.system.domain.vo.SysLogininforVo; + +import java.util.List; + +/** + * 系统访问日志情况信息 服务层 + * + * @author Lion Li + */ +public interface ISysLogininforService { + + + TableDataInfo selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery); + + /** + * 新增系统登录日志 + * + * @param bo 访问日志对象 + */ + void insertLogininfor(SysLogininforBo bo); + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * @return 登录记录集合 + */ + List selectLogininforList(SysLogininforBo logininfor); + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * @return 结果 + */ + int deleteLogininforByIds(Long[] infoIds); + + /** + * 清空系统登录日志 + */ + void cleanLogininfor(); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysMenuService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysMenuService.java new file mode 100644 index 0000000..72d705e --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysMenuService.java @@ -0,0 +1,147 @@ +package org.dromara.system.service; + +import cn.hutool.core.lang.tree.Tree; +import org.dromara.system.domain.SysMenu; +import org.dromara.system.domain.bo.SysMenuBo; +import org.dromara.system.domain.vo.RouterVo; +import org.dromara.system.domain.vo.SysMenuVo; + +import java.util.List; +import java.util.Set; + +/** + * 菜单 业务层 + * + * @author Lion Li + */ +public interface ISysMenuService { + + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * @return 菜单列表 + */ + List selectMenuList(Long userId); + + /** + * 根据用户查询系统菜单列表 + * + * @param menu 菜单信息 + * @param userId 用户ID + * @return 菜单列表 + */ + List selectMenuList(SysMenuBo menu, Long userId); + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + Set selectMenuPermsByUserId(Long userId); + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + Set selectMenuPermsByRoleId(Long roleId); + + /** + * 根据用户ID查询菜单树信息 + * + * @param userId 用户ID + * @return 菜单列表 + */ + List selectMenuTreeByUserId(Long userId); + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * @return 选中菜单列表 + */ + List selectMenuListByRoleId(Long roleId); + + /** + * 根据租户套餐ID查询菜单树信息 + * + * @param packageId 租户套餐ID + * @return 选中菜单列表 + */ + List selectMenuListByPackageId(Long packageId); + + /** + * 构建前端路由所需要的菜单 + * + * @param menus 菜单列表 + * @return 路由列表 + */ + List buildMenus(List menus); + + /** + * 构建前端所需要下拉树结构 + * + * @param menus 菜单列表 + * @return 下拉树结构列表 + */ + List> buildMenuTreeSelect(List menus); + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * @return 菜单信息 + */ + SysMenuVo selectMenuById(Long menuId); + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * @return 结果 true 存在 false 不存在 + */ + boolean hasChildByMenuId(Long menuId); + + /** + * 查询菜单是否存在角色 + * + * @param menuId 菜单ID + * @return 结果 true 存在 false 不存在 + */ + boolean checkMenuExistRole(Long menuId); + + /** + * 新增保存菜单信息 + * + * @param bo 菜单信息 + * @return 结果 + */ + int insertMenu(SysMenuBo bo); + + /** + * 修改保存菜单信息 + * + * @param bo 菜单信息 + * @return 结果 + */ + int updateMenu(SysMenuBo bo); + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * @return 结果 + */ + int deleteMenuById(Long menuId); + + /** + * 校验菜单名称是否唯一 + * + * @param menu 菜单信息 + * @return 结果 + */ + boolean checkMenuNameUnique(SysMenuBo menu); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java new file mode 100644 index 0000000..8ec999d --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysNoticeService.java @@ -0,0 +1,67 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysNoticeBo; +import org.dromara.system.domain.vo.SysNoticeVo; + +import java.util.List; + +/** + * 公告 服务层 + * + * @author Lion Li + */ +public interface ISysNoticeService { + + + TableDataInfo selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery); + + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * @return 公告信息 + */ + SysNoticeVo selectNoticeById(Long noticeId); + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * @return 公告集合 + */ + List selectNoticeList(SysNoticeBo notice); + + /** + * 新增公告 + * + * @param bo 公告信息 + * @return 结果 + */ + int insertNotice(SysNoticeBo bo); + + /** + * 修改公告 + * + * @param bo 公告信息 + * @return 结果 + */ + int updateNotice(SysNoticeBo bo); + + /** + * 删除公告信息 + * + * @param noticeId 公告ID + * @return 结果 + */ + int deleteNoticeById(Long noticeId); + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * @return 结果 + */ + int deleteNoticeByIds(Long[] noticeIds); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysOperLogService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysOperLogService.java new file mode 100644 index 0000000..9573510 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysOperLogService.java @@ -0,0 +1,54 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysOperLogBo; +import org.dromara.system.domain.vo.SysOperLogVo; + +import java.util.List; + +/** + * 操作日志 服务层 + * + * @author Lion Li + */ +public interface ISysOperLogService { + + TableDataInfo selectPageOperLogList(SysOperLogBo operLog, PageQuery pageQuery); + + /** + * 新增操作日志 + * + * @param bo 操作日志对象 + */ + void insertOperlog(SysOperLogBo bo); + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * @return 操作日志集合 + */ + List selectOperLogList(SysOperLogBo operLog); + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * @return 结果 + */ + int deleteOperLogByIds(Long[] operIds); + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * @return 操作日志对象 + */ + SysOperLogVo selectOperLogById(Long operId); + + /** + * 清空操作日志 + */ + void cleanOperLog(); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssConfigService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssConfigService.java new file mode 100644 index 0000000..2f6dfc9 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssConfigService.java @@ -0,0 +1,64 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysOssConfigBo; +import org.dromara.system.domain.vo.SysOssConfigVo; + +import java.util.Collection; + +/** + * 对象存储配置Service接口 + * + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 + */ +public interface ISysOssConfigService { + + /** + * 初始化OSS配置 + */ + void init(); + + /** + * 查询单个 + */ + SysOssConfigVo queryById(Long ossConfigId); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(SysOssConfigBo bo, PageQuery pageQuery); + + /** + * 根据新增业务对象插入对象存储配置 + * + * @param bo 对象存储配置新增业务对象 + * @return 结果 + */ + Boolean insertByBo(SysOssConfigBo bo); + + /** + * 根据编辑业务对象修改对象存储配置 + * + * @param bo 对象存储配置编辑业务对象 + * @return 结果 + */ + Boolean updateByBo(SysOssConfigBo bo); + + /** + * 校验并删除数据 + * + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return 结果 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 启用停用状态 + */ + int updateOssConfigStatus(SysOssConfigBo bo); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java new file mode 100644 index 0000000..057c068 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java @@ -0,0 +1,80 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysOssBo; +import org.dromara.system.domain.vo.SysOssVo; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.Collection; +import java.util.List; + +/** + * 文件上传 服务层 + * + * @author Lion Li + */ +public interface ISysOssService { + + /** + * 查询OSS对象存储列表 + * + * @param sysOss OSS对象存储分页查询对象 + * @param pageQuery 分页查询实体类 + * @return 结果 + */ + TableDataInfo queryPageList(SysOssBo sysOss, PageQuery pageQuery); + + /** + * 根据一组 ossIds 获取对应的 SysOssVo 列表 + * + * @param ossIds 一组文件在数据库中的唯一标识集合 + * @return 包含 SysOssVo 对象的列表 + */ + List listByIds(Collection ossIds); + + /** + * 根据 ossId 从缓存或数据库中获取 SysOssVo 对象 + * + * @param ossId 文件在数据库中的唯一标识 + * @return SysOssVo 对象,包含文件信息 + */ + SysOssVo getById(Long ossId); + + /** + * 上传 MultipartFile 到对象存储服务,并保存文件信息到数据库 + * + * @param file 要上传的 MultipartFile 对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + */ + SysOssVo upload(MultipartFile file); + + /** + * 上传文件到对象存储服务,并保存文件信息到数据库 + * + * @param file 要上传的文件对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + */ + SysOssVo upload(File file); + + /** + * 文件下载方法,支持一次性下载完整文件 + * + * @param ossId OSS对象ID + * @param response HttpServletResponse对象,用于设置响应头和向客户端发送文件内容 + */ + void download(Long ossId, HttpServletResponse response) throws IOException; + + /** + * 删除OSS对象存储 + * + * @param ids OSS对象ID串 + * @param isValid 判断是否需要校验 + * @return 结果 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysPermissionService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysPermissionService.java new file mode 100644 index 0000000..0116df5 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysPermissionService.java @@ -0,0 +1,28 @@ +package org.dromara.system.service; + +import java.util.Set; + +/** + * 用户权限处理 + * + * @author Lion Li + */ +public interface ISysPermissionService { + + /** + * 获取角色数据权限 + * + * @param userId 用户id + * @return 角色权限信息 + */ + Set getRolePermission(Long userId); + + /** + * 获取菜单数据权限 + * + * @param userId 用户id + * @return 菜单权限信息 + */ + Set getMenuPermission(Long userId); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java new file mode 100644 index 0000000..a760d49 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysPostService.java @@ -0,0 +1,130 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.vo.SysPostVo; + +import java.util.List; + +/** + * 岗位信息 服务层 + * + * @author Lion Li + */ +public interface ISysPostService { + + + TableDataInfo selectPagePostList(SysPostBo post, PageQuery pageQuery); + + /** + * 查询岗位信息集合 + * + * @param post 岗位信息 + * @return 岗位列表 + */ + List selectPostList(SysPostBo post); + + /** + * 查询用户所属岗位组 + * + * @param userId 用户ID + * @return 岗位ID + */ + List selectPostsByUserId(Long userId); + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + List selectPostAll(); + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * @return 角色对象信息 + */ + SysPostVo selectPostById(Long postId); + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * @return 选中岗位ID列表 + */ + List selectPostListByUserId(Long userId); + + /** + * 通过岗位ID串查询岗位 + * + * @param postIds 岗位id串 + * @return 岗位列表信息 + */ + List selectPostByIds(List postIds); + + /** + * 校验岗位名称 + * + * @param post 岗位信息 + * @return 结果 + */ + boolean checkPostNameUnique(SysPostBo post); + + /** + * 校验岗位编码 + * + * @param post 岗位信息 + * @return 结果 + */ + boolean checkPostCodeUnique(SysPostBo post); + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * @return 结果 + */ + long countUserPostById(Long postId); + + /** + * 通过部门ID查询岗位使用数量 + * + * @param deptId 部门id + * @return 结果 + */ + long countPostByDeptId(Long deptId); + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * @return 结果 + */ + int deletePostById(Long postId); + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * @return 结果 + */ + int deletePostByIds(Long[] postIds); + + /** + * 新增保存岗位信息 + * + * @param bo 岗位信息 + * @return 结果 + */ + int insertPost(SysPostBo bo); + + /** + * 修改保存岗位信息 + * + * @param bo 岗位信息 + * @return 结果 + */ + int updatePost(SysPostBo bo); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java new file mode 100644 index 0000000..cec4bf7 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysRoleService.java @@ -0,0 +1,202 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysUserRole; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.vo.SysRoleVo; + +import java.util.List; +import java.util.Set; + +/** + * 角色业务层 + * + * @author Lion Li + */ +public interface ISysRoleService { + + + TableDataInfo selectPageRoleList(SysRoleBo role, PageQuery pageQuery); + + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * @return 角色数据集合信息 + */ + List selectRoleList(SysRoleBo role); + + /** + * 根据用户ID查询角色列表 + * + * @param userId 用户ID + * @return 角色列表 + */ + List selectRolesByUserId(Long userId); + + /** + * 根据用户ID查询角色列表(包含被授权状态) + * + * @param userId 用户ID + * @return 角色列表 + */ + List selectRolesAuthByUserId(Long userId); + + /** + * 根据用户ID查询角色权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + Set selectRolePermissionByUserId(Long userId); + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + List selectRoleAll(); + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * @return 选中角色ID列表 + */ + List selectRoleListByUserId(Long userId); + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * @return 角色对象信息 + */ + SysRoleVo selectRoleById(Long roleId); + + /** + * 通过角色ID串查询角色 + * + * @param roleIds 角色ID串 + * @return 角色列表信息 + */ + List selectRoleByIds(List roleIds); + + /** + * 校验角色名称是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + boolean checkRoleNameUnique(SysRoleBo role); + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + boolean checkRoleKeyUnique(SysRoleBo role); + + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + void checkRoleAllowed(SysRoleBo role); + + /** + * 校验角色是否有数据权限 + * + * @param roleId 角色id + */ + void checkRoleDataScope(Long roleId); + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * @return 结果 + */ + long countUserRoleByRoleId(Long roleId); + + /** + * 新增保存角色信息 + * + * @param bo 角色信息 + * @return 结果 + */ + int insertRole(SysRoleBo bo); + + /** + * 修改保存角色信息 + * + * @param bo 角色信息 + * @return 结果 + */ + int updateRole(SysRoleBo bo); + + /** + * 修改角色状态 + * + * @param roleId 角色ID + * @param status 角色状态 + * @return 结果 + */ + int updateRoleStatus(Long roleId, String status); + + /** + * 修改数据权限信息 + * + * @param bo 角色信息 + * @return 结果 + */ + int authDataScope(SysRoleBo bo); + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * @return 结果 + */ + int deleteRoleById(Long roleId); + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * @return 结果 + */ + int deleteRoleByIds(Long[] roleIds); + + /** + * 取消授权用户角色 + * + * @param userRole 用户和角色关联信息 + * @return 结果 + */ + int deleteAuthUser(SysUserRole userRole); + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要取消授权的用户数据ID + * @return 结果 + */ + int deleteAuthUsers(Long roleId, Long[] userIds); + + /** + * 批量选择授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要删除的用户数据ID + * @return 结果 + */ + int insertAuthUsers(Long roleId, Long[] userIds); + + void cleanOnlineUserByRole(Long roleId); + + void cleanOnlineUser(List userIds); + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java new file mode 100644 index 0000000..cc7016e --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysSocialService.java @@ -0,0 +1,53 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.bo.SysSocialBo; +import org.dromara.system.domain.vo.SysSocialVo; + +import java.util.List; + +/** + * 社会化关系Service接口 + * + * @author thiszhc + */ +public interface ISysSocialService { + + + /** + * 查询社会化关系 + */ + SysSocialVo queryById(String id); + + /** + * 查询社会化关系列表 + */ + List queryList(SysSocialBo bo); + + /** + * 查询社会化关系列表 + */ + List queryListByUserId(Long userId); + + /** + * 新增授权关系 + */ + Boolean insertByBo(SysSocialBo bo); + + /** + * 更新社会化关系 + */ + Boolean updateByBo(SysSocialBo bo); + + /** + * 删除社会化关系信息 + */ + Boolean deleteWithValidById(Long id); + + + /** + * 根据 authId 查询 + */ + List selectByAuthId(String authId); + + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantPackageService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantPackageService.java new file mode 100644 index 0000000..d060b68 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantPackageService.java @@ -0,0 +1,62 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysTenantPackageBo; +import org.dromara.system.domain.vo.SysTenantPackageVo; + +import java.util.Collection; +import java.util.List; + +/** + * 租户套餐Service接口 + * + * @author Michelle.Chung + */ +public interface ISysTenantPackageService { + + /** + * 查询租户套餐 + */ + SysTenantPackageVo queryById(Long packageId); + + /** + * 查询租户套餐列表 + */ + TableDataInfo queryPageList(SysTenantPackageBo bo, PageQuery pageQuery); + + /** + * 查询租户套餐已启用列表 + */ + List selectList(); + + /** + * 查询租户套餐列表 + */ + List queryList(SysTenantPackageBo bo); + + /** + * 新增租户套餐 + */ + Boolean insertByBo(SysTenantPackageBo bo); + + /** + * 修改租户套餐 + */ + Boolean updateByBo(SysTenantPackageBo bo); + + /** + * 校验套餐名称是否唯一 + */ + boolean checkPackageNameUnique(SysTenantPackageBo bo); + + /** + * 修改套餐状态 + */ + int updatePackageStatus(SysTenantPackageBo bo); + + /** + * 校验并批量删除租户套餐信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantService.java new file mode 100644 index 0000000..f697829 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysTenantService.java @@ -0,0 +1,87 @@ +package org.dromara.system.service; + +import org.dromara.system.domain.vo.SysTenantVo; +import org.dromara.system.domain.bo.SysTenantBo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * 租户Service接口 + * + * @author Michelle.Chung + */ +public interface ISysTenantService { + + /** + * 查询租户 + */ + SysTenantVo queryById(Long id); + + /** + * 基于租户ID查询租户 + */ + SysTenantVo queryByTenantId(String tenantId); + + /** + * 查询租户列表 + */ + TableDataInfo queryPageList(SysTenantBo bo, PageQuery pageQuery); + + /** + * 查询租户列表 + */ + List queryList(SysTenantBo bo); + + /** + * 新增租户 + */ + Boolean insertByBo(SysTenantBo bo); + + /** + * 修改租户 + */ + Boolean updateByBo(SysTenantBo bo); + + /** + * 修改租户状态 + */ + int updateTenantStatus(SysTenantBo bo); + + /** + * 校验租户是否允许操作 + */ + void checkTenantAllowed(String tenantId); + + /** + * 校验并批量删除租户信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 校验企业名称是否唯一 + */ + boolean checkCompanyNameUnique(SysTenantBo bo); + + /** + * 校验账号余额 + */ + boolean checkAccountBalance(String tenantId); + + /** + * 校验有效期 + */ + boolean checkExpireTime(String tenantId); + + /** + * 同步租户套餐 + */ + Boolean syncTenantPackage(String tenantId, Long packageId); + + /** + * 同步租户字典 + */ + void syncTenantDict(); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java b/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java new file mode 100644 index 0000000..0325a25 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/ISysUserService.java @@ -0,0 +1,222 @@ +package org.dromara.system.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.vo.SysUserExportVo; +import org.dromara.system.domain.vo.SysUserVo; + +import java.util.List; + +/** + * 用户 业务层 + * + * @author Lion Li + */ +public interface ISysUserService { + + + TableDataInfo selectPageUserList(SysUserBo user, PageQuery pageQuery); + + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + List selectUserExportList(SysUserBo user); + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + TableDataInfo selectAllocatedList(SysUserBo user, PageQuery pageQuery); + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + TableDataInfo selectUnallocatedList(SysUserBo user, PageQuery pageQuery); + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + SysUserVo selectUserByUserName(String userName); + + /** + * 通过手机号查询用户 + * + * @param phonenumber 手机号 + * @return 用户对象信息 + */ + SysUserVo selectUserByPhonenumber(String phonenumber); + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + SysUserVo selectUserById(Long userId); + + /** + * 通过用户ID串查询用户 + * + * @param userIds 用户ID串 + * @param deptId 部门id + * @return 用户列表信息 + */ + List selectUserByIds(List userIds, Long deptId); + + /** + * 根据用户ID查询用户所属角色组 + * + * @param userId 用户ID + * @return 结果 + */ + String selectUserRoleGroup(Long userId); + + /** + * 根据用户ID查询用户所属岗位组 + * + * @param userId 用户ID + * @return 结果 + */ + String selectUserPostGroup(Long userId); + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + boolean checkUserNameUnique(SysUserBo user); + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + boolean checkPhoneUnique(SysUserBo user); + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + boolean checkEmailUnique(SysUserBo user); + + /** + * 校验用户是否允许操作 + * + * @param userId 用户ID + */ + void checkUserAllowed(Long userId); + + /** + * 校验用户是否有数据权限 + * + * @param userId 用户id + */ + void checkUserDataScope(Long userId); + + /** + * 新增用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + int insertUser(SysUserBo user); + + /** + * 注册用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + boolean registerUser(SysUserBo user, String tenantId); + + /** + * 修改用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + int updateUser(SysUserBo user); + + /** + * 用户授权角色 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + void insertUserAuth(Long userId, Long[] roleIds); + + /** + * 修改用户状态 + * + * @param userId 用户ID + * @param status 帐号状态 + * @return 结果 + */ + int updateUserStatus(Long userId, String status); + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * @return 结果 + */ + int updateUserProfile(SysUserBo user); + + /** + * 修改用户头像 + * + * @param userId 用户ID + * @param avatar 头像地址 + * @return 结果 + */ + boolean updateUserAvatar(Long userId, Long avatar); + + /** + * 重置用户密码 + * + * @param userId 用户ID + * @param password 密码 + * @return 结果 + */ + int resetUserPwd(Long userId, String password); + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + int deleteUserById(Long userId); + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * @return 结果 + */ + int deleteUserByIds(Long[] userIds); + + /** + * 通过部门id查询当前部门所有用户 + * + * @param deptId 部门id + * @return 结果 + */ + List selectUserListByDept(Long deptId); +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java new file mode 100644 index 0000000..4f6e676 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysClientServiceImpl.java @@ -0,0 +1,151 @@ +package org.dromara.system.service.impl; + +import cn.hutool.crypto.SecureUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysClient; +import org.dromara.system.domain.bo.SysClientBo; +import org.dromara.system.domain.vo.SysClientVo; +import org.dromara.system.mapper.SysClientMapper; +import org.dromara.system.service.ISysClientService; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; + +/** + * 客户端管理Service业务层处理 + * + * @author Michelle.Chung + * @date 2023-06-18 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SysClientServiceImpl implements ISysClientService { + + private final SysClientMapper baseMapper; + + /** + * 查询客户端管理 + */ + @Override + public SysClientVo queryById(Long id) { + SysClientVo vo = baseMapper.selectVoById(id); + vo.setGrantTypeList(List.of(vo.getGrantType().split(","))); + return vo; + } + + + /** + * 查询客户端管理 + */ + @Cacheable(cacheNames = CacheNames.SYS_CLIENT, key = "#clientId") + @Override + public SysClientVo queryByClientId(String clientId) { + return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysClient::getClientId, clientId)); + } + + /** + * 查询客户端管理列表 + */ + @Override + public TableDataInfo queryPageList(SysClientBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + result.getRecords().forEach(r -> r.setGrantTypeList(List.of(r.getGrantType().split(",")))); + return TableDataInfo.build(result); + } + + /** + * 查询客户端管理列表 + */ + @Override + public List queryList(SysClientBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysClientBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getClientId()), SysClient::getClientId, bo.getClientId()); + lqw.eq(StringUtils.isNotBlank(bo.getClientKey()), SysClient::getClientKey, bo.getClientKey()); + lqw.eq(StringUtils.isNotBlank(bo.getClientSecret()), SysClient::getClientSecret, bo.getClientSecret()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysClient::getStatus, bo.getStatus()); + lqw.orderByAsc(SysClient::getId); + return lqw; + } + + /** + * 新增客户端管理 + */ + @Override + public Boolean insertByBo(SysClientBo bo) { + SysClient add = MapstructUtils.convert(bo, SysClient.class); + validEntityBeforeSave(add); + add.setGrantType(String.join(",", bo.getGrantTypeList())); + // 生成clientid + String clientKey = bo.getClientKey(); + String clientSecret = bo.getClientSecret(); + add.setClientId(SecureUtil.md5(clientKey + clientSecret)); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改客户端管理 + */ + @CacheEvict(cacheNames = CacheNames.SYS_CLIENT, key = "#bo.clientId") + @Override + public Boolean updateByBo(SysClientBo bo) { + SysClient update = MapstructUtils.convert(bo, SysClient.class); + validEntityBeforeSave(update); + update.setGrantType(String.join(",", bo.getGrantTypeList())); + return baseMapper.updateById(update) > 0; + } + + /** + * 修改状态 + */ + @CacheEvict(cacheNames = CacheNames.SYS_CLIENT, key = "#clientId") + @Override + public int updateClientStatus(String clientId, String status) { + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysClient::getStatus, status) + .eq(SysClient::getClientId, clientId)); + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysClient entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除客户端管理 + */ + @CacheEvict(cacheNames = CacheNames.SYS_CLIENT, allEntries = true) + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java new file mode 100644 index 0000000..d92647c --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -0,0 +1,217 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.ConfigService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.utils.CacheUtils; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.system.domain.SysConfig; +import org.dromara.system.domain.bo.SysConfigBo; +import org.dromara.system.domain.vo.SysConfigVo; +import org.dromara.system.mapper.SysConfigMapper; +import org.dromara.system.service.ISysConfigService; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 参数配置 服务层实现 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysConfigServiceImpl implements ISysConfigService, ConfigService { + + private final SysConfigMapper baseMapper; + + @Override + public TableDataInfo selectPageConfigList(SysConfigBo config, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(config); + Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + /** + * 查询参数配置信息 + * + * @param configId 参数配置ID + * @return 参数配置信息 + */ + @Override + @DS("master") + public SysConfigVo selectConfigById(Long configId) { + return baseMapper.selectVoById(configId); + } + + /** + * 根据键名查询参数配置信息 + * + * @param configKey 参数key + * @return 参数键值 + */ + @Cacheable(cacheNames = CacheNames.SYS_CONFIG, key = "#configKey") + @Override + public String selectConfigByKey(String configKey) { + SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(SysConfig::getConfigKey, configKey)); + return ObjectUtils.notNullGetter(retConfig, SysConfig::getConfigValue, StringUtils.EMPTY); + } + + /** + * 获取注册开关 + * @param tenantId 租户id + * @return true开启,false关闭 + */ + @Override + public boolean selectRegisterEnabled(String tenantId) { + SysConfig retConfig = TenantHelper.dynamic(tenantId, () -> { + return baseMapper.selectOne(new LambdaQueryWrapper() + .eq(SysConfig::getConfigKey, "sys.account.registerUser")); + }); + if (ObjectUtil.isNull(retConfig)) { + return false; + } + return Convert.toBool(retConfig.getConfigValue()); + } + + /** + * 查询参数配置列表 + * + * @param config 参数配置信息 + * @return 参数配置集合 + */ + @Override + public List selectConfigList(SysConfigBo config) { + LambdaQueryWrapper lqw = buildQueryWrapper(config); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysConfigBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getConfigName()), SysConfig::getConfigName, bo.getConfigName()); + lqw.eq(StringUtils.isNotBlank(bo.getConfigType()), SysConfig::getConfigType, bo.getConfigType()); + lqw.like(StringUtils.isNotBlank(bo.getConfigKey()), SysConfig::getConfigKey, bo.getConfigKey()); + lqw.between(params.get("beginTime") != null && params.get("endTime") != null, + SysConfig::getCreateTime, params.get("beginTime"), params.get("endTime")); + lqw.orderByAsc(SysConfig::getConfigId); + return lqw; + } + + /** + * 新增参数配置 + * + * @param bo 参数配置信息 + * @return 结果 + */ + @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#bo.configKey") + @Override + public String insertConfig(SysConfigBo bo) { + SysConfig config = MapstructUtils.convert(bo, SysConfig.class); + int row = baseMapper.insert(config); + if (row > 0) { + return config.getConfigValue(); + } + throw new ServiceException("操作失败"); + } + + /** + * 修改参数配置 + * + * @param bo 参数配置信息 + * @return 结果 + */ + @CachePut(cacheNames = CacheNames.SYS_CONFIG, key = "#bo.configKey") + @Override + public String updateConfig(SysConfigBo bo) { + int row = 0; + SysConfig config = MapstructUtils.convert(bo, SysConfig.class); + if (config.getConfigId() != null) { + SysConfig temp = baseMapper.selectById(config.getConfigId()); + if (!StringUtils.equals(temp.getConfigKey(), config.getConfigKey())) { + CacheUtils.evict(CacheNames.SYS_CONFIG, temp.getConfigKey()); + } + row = baseMapper.updateById(config); + } else { + CacheUtils.evict(CacheNames.SYS_CONFIG, config.getConfigKey()); + row = baseMapper.update(config, new LambdaQueryWrapper() + .eq(SysConfig::getConfigKey, config.getConfigKey())); + } + if (row > 0) { + return config.getConfigValue(); + } + throw new ServiceException("操作失败"); + } + + /** + * 批量删除参数信息 + * + * @param configIds 需要删除的参数ID + */ + @Override + public void deleteConfigByIds(Long[] configIds) { + for (Long configId : configIds) { + SysConfig config = baseMapper.selectById(configId); + if (StringUtils.equals(SystemConstants.YES, config.getConfigType())) { + throw new ServiceException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); + } + CacheUtils.evict(CacheNames.SYS_CONFIG, config.getConfigKey()); + } + baseMapper.deleteByIds(Arrays.asList(configIds)); + } + + /** + * 重置参数缓存数据 + */ + @Override + public void resetConfigCache() { + CacheUtils.clear(CacheNames.SYS_CONFIG); + } + + /** + * 校验参数键名是否唯一 + * + * @param config 参数配置信息 + * @return 结果 + */ + @Override + public boolean checkConfigKeyUnique(SysConfigBo config) { + long configId = ObjectUtils.notNull(config.getConfigId(), -1L); + SysConfig info = baseMapper.selectOne(new LambdaQueryWrapper().eq(SysConfig::getConfigKey, config.getConfigKey())); + if (ObjectUtil.isNotNull(info) && info.getConfigId() != configId) { + return false; + } + return true; + } + + /** + * 根据参数 key 获取参数值 + * + * @param configKey 参数 key + * @return 参数值 + */ + @Override + public String getConfigValue(String configKey) { + return SpringUtils.getAopProxy(this).selectConfigByKey(configKey); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java new file mode 100644 index 0000000..12a5072 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDataScopeServiceImpl.java @@ -0,0 +1,78 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.SysRoleDept; +import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.mapper.SysRoleDeptMapper; +import org.dromara.system.service.ISysDataScopeService; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 数据权限 实现 + *

+ * 注意: 此Service内不允许调用标注`数据权限`注解的方法 + * 例如: deptMapper.selectList 此 selectList 方法标注了`数据权限`注解 会出现循环解析的问题 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service("sdss") +public class SysDataScopeServiceImpl implements ISysDataScopeService { + + private final SysRoleDeptMapper roleDeptMapper; + private final SysDeptMapper deptMapper; + + /** + * 获取角色自定义权限 + * + * @param roleId 角色Id + * @return 部门Id组 + */ + @Cacheable(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#roleId", condition = "#roleId != null") + @Override + public String getRoleCustom(Long roleId) { + if (ObjectUtil.isNull(roleId)) { + return "-1"; + } + List list = roleDeptMapper.selectList( + new LambdaQueryWrapper() + .select(SysRoleDept::getDeptId) + .eq(SysRoleDept::getRoleId, roleId)); + if (CollUtil.isNotEmpty(list)) { + return StreamUtils.join(list, rd -> Convert.toStr(rd.getDeptId())); + } + return "-1"; + } + + /** + * 获取部门及以下权限 + * + * @param deptId 部门Id + * @return 部门Id组 + */ + @Cacheable(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, key = "#deptId", condition = "#deptId != null") + @Override + public String getDeptAndChild(Long deptId) { + if (ObjectUtil.isNull(deptId)) { + return "-1"; + } + List deptList = deptMapper.selectListByParentId(deptId); + List ids = StreamUtils.toList(deptList, SysDept::getDeptId); + ids.add(deptId); + if (CollUtil.isNotEmpty(ids)) { + return StreamUtils.join(ids, Convert::toStr); + } + return "-1"; + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java new file mode 100644 index 0000000..ca062be --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -0,0 +1,386 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.dto.DeptDTO; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.DeptService; +import org.dromara.common.core.utils.*; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.common.redis.utils.CacheUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.vo.SysDeptVo; +import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.mapper.SysRoleMapper; +import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.service.ISysDeptService; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.cache.annotation.Caching; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 部门管理 服务实现 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysDeptServiceImpl implements ISysDeptService, DeptService { + + private final SysDeptMapper baseMapper; + private final SysRoleMapper roleMapper; + private final SysUserMapper userMapper; + + /** + * 查询部门管理数据 + * + * @param dept 部门信息 + * @return 部门信息集合 + */ + @Override + public List selectDeptList(SysDeptBo dept) { + LambdaQueryWrapper lqw = buildQueryWrapper(dept); + return baseMapper.selectDeptList(lqw); + } + + /** + * 查询部门树结构信息 + * + * @param bo 部门信息 + * @return 部门树信息集合 + */ + @Override + public List> selectDeptTreeList(SysDeptBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + List depts = baseMapper.selectDeptList(lqw); + return buildDeptTreeSelect(depts); + } + + private LambdaQueryWrapper buildQueryWrapper(SysDeptBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SysDept::getDelFlag, SystemConstants.NORMAL); + lqw.eq(ObjectUtil.isNotNull(bo.getDeptId()), SysDept::getDeptId, bo.getDeptId()); + lqw.eq(ObjectUtil.isNotNull(bo.getParentId()), SysDept::getParentId, bo.getParentId()); + lqw.like(StringUtils.isNotBlank(bo.getDeptName()), SysDept::getDeptName, bo.getDeptName()); + lqw.like(StringUtils.isNotBlank(bo.getDeptCategory()), SysDept::getDeptCategory, bo.getDeptCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysDept::getStatus, bo.getStatus()); + lqw.orderByAsc(SysDept::getAncestors); + lqw.orderByAsc(SysDept::getParentId); + lqw.orderByAsc(SysDept::getOrderNum); + lqw.orderByAsc(SysDept::getDeptId); + return lqw; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param depts 部门列表 + * @return 下拉树结构列表 + */ + @Override + public List> buildDeptTreeSelect(List depts) { + if (CollUtil.isEmpty(depts)) { + return CollUtil.newArrayList(); + } + // 获取当前列表中每一个节点的parentId,然后在列表中查找是否有id与其parentId对应,若无对应,则表明此时节点列表中,该节点在当前列表中属于顶级节点 + List> treeList = CollUtil.newArrayList(); + for (SysDeptVo d : depts) { + Long parentId = d.getParentId(); + SysDeptVo sysDeptVo = StreamUtils.findFirst(depts, it -> it.getDeptId().longValue() == parentId); + if (ObjectUtil.isNull(sysDeptVo)) { + List> trees = TreeBuildUtils.build(depts, parentId, (dept, tree) -> + tree.setId(dept.getDeptId()) + .setParentId(dept.getParentId()) + .setName(dept.getDeptName()) + .setWeight(dept.getOrderNum()) + .putExtra("disabled", SystemConstants.DISABLE.equals(dept.getStatus()))); + Tree tree = StreamUtils.findFirst(trees, it -> it.getId().longValue() == d.getDeptId()); + treeList.add(tree); + } + } + return treeList; + } + + /** + * 根据角色ID查询部门树信息 + * + * @param roleId 角色ID + * @return 选中部门列表 + */ + @Override + public List selectDeptListByRoleId(Long roleId) { + SysRole role = roleMapper.selectById(roleId); + return baseMapper.selectDeptListByRoleId(roleId, role.getDeptCheckStrictly()); + } + + /** + * 根据部门ID查询信息 + * + * @param deptId 部门ID + * @return 部门信息 + */ + @Cacheable(cacheNames = CacheNames.SYS_DEPT, key = "#deptId") + @Override + public SysDeptVo selectDeptById(Long deptId) { + SysDeptVo dept = baseMapper.selectVoById(deptId); + if (ObjectUtil.isNull(dept)) { + return null; + } + SysDeptVo parentDept = baseMapper.selectVoOne(new LambdaQueryWrapper() + .select(SysDept::getDeptName).eq(SysDept::getDeptId, dept.getParentId())); + dept.setParentName(ObjectUtils.notNullGetter(parentDept, SysDeptVo::getDeptName)); + return dept; + } + + @Override + public List selectDeptByIds(List deptIds) { + return baseMapper.selectDeptList(new LambdaQueryWrapper() + .select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getLeader) + .eq(SysDept::getStatus, SystemConstants.NORMAL) + .in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds)); + } + + /** + * 通过部门ID查询部门名称 + * + * @param deptIds 部门ID串逗号分隔 + * @return 部门名称串逗号分隔 + */ + @Override + public String selectDeptNameByIds(String deptIds) { + List list = new ArrayList<>(); + for (Long id : StringUtils.splitTo(deptIds, Convert::toLong)) { + SysDeptVo vo = SpringUtils.getAopProxy(this).selectDeptById(id); + if (ObjectUtil.isNotNull(vo)) { + list.add(vo.getDeptName()); + } + } + return String.join(StringUtils.SEPARATOR, list); + } + + /** + * 根据部门ID查询部门负责人 + * + * @param deptId 部门ID,用于指定需要查询的部门 + * @return 返回该部门的负责人ID + */ + @Override + public Long selectDeptLeaderById(Long deptId) { + SysDeptVo vo = SpringUtils.getAopProxy(this).selectDeptById(deptId); + return vo.getLeader(); + } + + /** + * 查询部门 + * + * @return 部门列表 + */ + @Override + public List selectDeptsByList() { + List list = baseMapper.selectDeptList(new LambdaQueryWrapper() + .select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getParentId) + .eq(SysDept::getStatus, SystemConstants.NORMAL)); + return BeanUtil.copyToList(list, DeptDTO.class); + } + + /** + * 根据ID查询所有子部门数(正常状态) + * + * @param deptId 部门ID + * @return 子部门数 + */ + @Override + public long selectNormalChildrenDeptById(Long deptId) { + return baseMapper.selectCount(new LambdaQueryWrapper() + .eq(SysDept::getStatus, SystemConstants.NORMAL) + .apply(DataBaseHelper.findInSet(deptId, "ancestors"))); + } + + /** + * 是否存在子节点 + * + * @param deptId 部门ID + * @return 结果 + */ + @Override + public boolean hasChildByDeptId(Long deptId) { + return baseMapper.exists(new LambdaQueryWrapper() + .eq(SysDept::getParentId, deptId)); + } + + /** + * 查询部门是否存在用户 + * + * @param deptId 部门ID + * @return 结果 true 存在 false 不存在 + */ + @Override + public boolean checkDeptExistUser(Long deptId) { + return userMapper.exists(new LambdaQueryWrapper() + .eq(SysUser::getDeptId, deptId)); + } + + /** + * 校验部门名称是否唯一 + * + * @param dept 部门信息 + * @return 结果 + */ + @Override + public boolean checkDeptNameUnique(SysDeptBo dept) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysDept::getDeptName, dept.getDeptName()) + .eq(SysDept::getParentId, dept.getParentId()) + .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId())); + return !exist; + } + + /** + * 校验部门是否有数据权限 + * + * @param deptId 部门id + */ + @Override + public void checkDeptDataScope(Long deptId) { + if (ObjectUtil.isNull(deptId)) { + return; + } + if (LoginHelper.isSuperAdmin()) { + return; + } + if (baseMapper.countDeptById(deptId) == 0) { + throw new ServiceException("没有权限访问部门数据!"); + } + } + + /** + * 新增保存部门信息 + * + * @param bo 部门信息 + * @return 结果 + */ + @CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, allEntries = true) + @Override + public int insertDept(SysDeptBo bo) { + SysDept info = baseMapper.selectById(bo.getParentId()); + // 如果父节点不为正常状态,则不允许新增子节点 + if (!SystemConstants.NORMAL.equals(info.getStatus())) { + throw new ServiceException("部门停用,不允许新增"); + } + SysDept dept = MapstructUtils.convert(bo, SysDept.class); + dept.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + dept.getParentId()); + return baseMapper.insert(dept); + } + + /** + * 修改保存部门信息 + * + * @param bo 部门信息 + * @return 结果 + */ + @Caching(evict = { + @CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#bo.deptId"), + @CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, allEntries = true) + }) + @Override + @Transactional(rollbackFor = Exception.class) + public int updateDept(SysDeptBo bo) { + SysDept dept = MapstructUtils.convert(bo, SysDept.class); + SysDept oldDept = baseMapper.selectById(dept.getDeptId()); + if (ObjectUtil.isNull(oldDept)) { + throw new ServiceException("部门不存在,无法修改"); + } + if (!oldDept.getParentId().equals(dept.getParentId())) { + // 如果是新父部门 则校验是否具有新父部门权限 避免越权 + this.checkDeptDataScope(dept.getParentId()); + SysDept newParentDept = baseMapper.selectById(dept.getParentId()); + if (ObjectUtil.isNotNull(newParentDept)) { + String newAncestors = newParentDept.getAncestors() + StringUtils.SEPARATOR + newParentDept.getDeptId(); + String oldAncestors = oldDept.getAncestors(); + dept.setAncestors(newAncestors); + updateDeptChildren(dept.getDeptId(), newAncestors, oldAncestors); + } + } else { + dept.setAncestors(oldDept.getAncestors()); + } + int result = baseMapper.updateById(dept); + if (SystemConstants.NORMAL.equals(dept.getStatus()) && StringUtils.isNotEmpty(dept.getAncestors()) + && !StringUtils.equals(SystemConstants.NORMAL, dept.getAncestors())) { + // 如果该部门是启用状态,则启用该部门的所有上级部门 + updateParentDeptStatusNormal(dept); + } + return result; + } + + /** + * 修改该部门的父级部门状态 + * + * @param dept 当前部门 + */ + private void updateParentDeptStatusNormal(SysDept dept) { + String ancestors = dept.getAncestors(); + Long[] deptIds = Convert.toLongArray(ancestors); + baseMapper.update(null, new LambdaUpdateWrapper() + .set(SysDept::getStatus, SystemConstants.NORMAL) + .in(SysDept::getDeptId, Arrays.asList(deptIds))); + } + + /** + * 修改子元素关系 + * + * @param deptId 被修改的部门ID + * @param newAncestors 新的父ID集合 + * @param oldAncestors 旧的父ID集合 + */ + private void updateDeptChildren(Long deptId, String newAncestors, String oldAncestors) { + List children = baseMapper.selectList(new LambdaQueryWrapper() + .apply(DataBaseHelper.findInSet(deptId, "ancestors"))); + List list = new ArrayList<>(); + for (SysDept child : children) { + SysDept dept = new SysDept(); + dept.setDeptId(child.getDeptId()); + dept.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); + list.add(dept); + } + if (CollUtil.isNotEmpty(list)) { + if (baseMapper.updateBatchById(list)) { + list.forEach(dept -> CacheUtils.evict(CacheNames.SYS_DEPT, dept.getDeptId())); + } + } + } + + /** + * 删除部门管理信息 + * + * @param deptId 部门ID + * @return 结果 + */ + @Caching(evict = { + @CacheEvict(cacheNames = CacheNames.SYS_DEPT, key = "#deptId"), + @CacheEvict(cacheNames = CacheNames.SYS_DEPT_AND_CHILD, key = "#deptId") + }) + @Override + public int deleteDeptById(Long deptId) { + return baseMapper.deleteById(deptId); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java new file mode 100644 index 0000000..e44fdbc --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictDataServiceImpl.java @@ -0,0 +1,157 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.system.domain.SysDictData; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.redis.utils.CacheUtils; +import org.dromara.system.domain.bo.SysDictDataBo; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.dromara.system.mapper.SysDictDataMapper; +import org.dromara.system.service.ISysDictDataService; +import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.CachePut; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典 业务层处理 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysDictDataServiceImpl implements ISysDictDataService { + + private final SysDictDataMapper baseMapper; + + @Override + public TableDataInfo selectPageDictDataList(SysDictDataBo dictData, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(dictData); + Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + /** + * 根据条件分页查询字典数据 + * + * @param dictData 字典数据信息 + * @return 字典数据集合信息 + */ + @Override + public List selectDictDataList(SysDictDataBo dictData) { + LambdaQueryWrapper lqw = buildQueryWrapper(dictData); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysDictDataBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getDictSort() != null, SysDictData::getDictSort, bo.getDictSort()); + lqw.like(StringUtils.isNotBlank(bo.getDictLabel()), SysDictData::getDictLabel, bo.getDictLabel()); + lqw.eq(StringUtils.isNotBlank(bo.getDictType()), SysDictData::getDictType, bo.getDictType()); + lqw.orderByAsc(SysDictData::getDictSort); + return lqw; + } + + /** + * 根据字典类型和字典键值查询字典数据信息 + * + * @param dictType 字典类型 + * @param dictValue 字典键值 + * @return 字典标签 + */ + @Override + public String selectDictLabel(String dictType, String dictValue) { + return baseMapper.selectOne(new LambdaQueryWrapper() + .select(SysDictData::getDictLabel) + .eq(SysDictData::getDictType, dictType) + .eq(SysDictData::getDictValue, dictValue)) + .getDictLabel(); + } + + /** + * 根据字典数据ID查询信息 + * + * @param dictCode 字典数据ID + * @return 字典数据 + */ + @Override + public SysDictDataVo selectDictDataById(Long dictCode) { + return baseMapper.selectVoById(dictCode); + } + + /** + * 批量删除字典数据信息 + * + * @param dictCodes 需要删除的字典数据ID + */ + @Override + public void deleteDictDataByIds(Long[] dictCodes) { + for (Long dictCode : dictCodes) { + SysDictData data = baseMapper.selectById(dictCode); + baseMapper.deleteById(dictCode); + CacheUtils.evict(CacheNames.SYS_DICT, data.getDictType()); + } + } + + /** + * 新增保存字典数据信息 + * + * @param bo 字典数据信息 + * @return 结果 + */ + @CachePut(cacheNames = CacheNames.SYS_DICT, key = "#bo.dictType") + @Override + public List insertDictData(SysDictDataBo bo) { + SysDictData data = MapstructUtils.convert(bo, SysDictData.class); + int row = baseMapper.insert(data); + if (row > 0) { + return baseMapper.selectDictDataByType(data.getDictType()); + } + throw new ServiceException("操作失败"); + } + + /** + * 修改保存字典数据信息 + * + * @param bo 字典数据信息 + * @return 结果 + */ + @CachePut(cacheNames = CacheNames.SYS_DICT, key = "#bo.dictType") + @Override + public List updateDictData(SysDictDataBo bo) { + SysDictData data = MapstructUtils.convert(bo, SysDictData.class); + int row = baseMapper.updateById(data); + if (row > 0) { + return baseMapper.selectDictDataByType(data.getDictType()); + } + throw new ServiceException("操作失败"); + } + + /** + * 校验字典键值是否唯一 + * + * @param dict 字典数据 + * @return 结果 + */ + @Override + public boolean checkDictDataUnique(SysDictDataBo dict) { + Long dictCode = ObjectUtils.notNull(dict.getDictCode(), -1L); + SysDictData entity = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, dict.getDictType()).eq(SysDictData::getDictValue, dict.getDictValue())); + if (ObjectUtil.isNotNull(entity) && !dictCode.equals(entity.getDictCode())) { + return false; + } + return true; + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java new file mode 100644 index 0000000..1be0b7f --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDictTypeServiceImpl.java @@ -0,0 +1,258 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.DictService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.utils.CacheUtils; +import org.dromara.system.domain.SysDictData; +import org.dromara.system.domain.SysDictType; +import org.dromara.system.domain.bo.SysDictTypeBo; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.dromara.system.domain.vo.SysDictTypeVo; +import org.dromara.system.mapper.SysDictDataMapper; +import org.dromara.system.mapper.SysDictTypeMapper; +import org.dromara.system.service.ISysDictTypeService; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 字典 业务层处理 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService { + + private final SysDictTypeMapper baseMapper; + private final SysDictDataMapper dictDataMapper; + + @Override + public TableDataInfo selectPageDictTypeList(SysDictTypeBo dictType, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(dictType); + Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + /** + * 根据条件分页查询字典类型 + * + * @param dictType 字典类型信息 + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeList(SysDictTypeBo dictType) { + LambdaQueryWrapper lqw = buildQueryWrapper(dictType); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysDictTypeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getDictName()), SysDictType::getDictName, bo.getDictName()); + lqw.like(StringUtils.isNotBlank(bo.getDictType()), SysDictType::getDictType, bo.getDictType()); + lqw.between(params.get("beginTime") != null && params.get("endTime") != null, + SysDictType::getCreateTime, params.get("beginTime"), params.get("endTime")); + lqw.orderByAsc(SysDictType::getDictId); + return lqw; + } + + /** + * 根据所有字典类型 + * + * @return 字典类型集合信息 + */ + @Override + public List selectDictTypeAll() { + return baseMapper.selectVoList(); + } + + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + @Cacheable(cacheNames = CacheNames.SYS_DICT, key = "#dictType") + @Override + public List selectDictDataByType(String dictType) { + List dictDatas = dictDataMapper.selectDictDataByType(dictType); + if (CollUtil.isNotEmpty(dictDatas)) { + return dictDatas; + } + return null; + } + + /** + * 根据字典类型ID查询信息 + * + * @param dictId 字典类型ID + * @return 字典类型 + */ + @Override + public SysDictTypeVo selectDictTypeById(Long dictId) { + return baseMapper.selectVoById(dictId); + } + + /** + * 根据字典类型查询信息 + * + * @param dictType 字典类型 + * @return 字典类型 + */ + @Override + public SysDictTypeVo selectDictTypeByType(String dictType) { + return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysDictType::getDictType, dictType)); + } + + /** + * 批量删除字典类型信息 + * + * @param dictIds 需要删除的字典ID + */ + @Override + public void deleteDictTypeByIds(Long[] dictIds) { + for (Long dictId : dictIds) { + SysDictType dictType = baseMapper.selectById(dictId); + if (dictDataMapper.exists(new LambdaQueryWrapper() + .eq(SysDictData::getDictType, dictType.getDictType()))) { + throw new ServiceException(String.format("%1$s已分配,不能删除", dictType.getDictName())); + } + CacheUtils.evict(CacheNames.SYS_DICT, dictType.getDictType()); + } + baseMapper.deleteByIds(Arrays.asList(dictIds)); + } + + /** + * 重置字典缓存数据 + */ + @Override + public void resetDictCache() { + CacheUtils.clear(CacheNames.SYS_DICT); + } + + /** + * 新增保存字典类型信息 + * + * @param bo 字典类型信息 + * @return 结果 + */ + @CachePut(cacheNames = CacheNames.SYS_DICT, key = "#bo.dictType") + @Override + public List insertDictType(SysDictTypeBo bo) { + SysDictType dict = MapstructUtils.convert(bo, SysDictType.class); + int row = baseMapper.insert(dict); + if (row > 0) { + // 新增 type 下无 data 数据 返回空防止缓存穿透 + return new ArrayList<>(); + } + throw new ServiceException("操作失败"); + } + + /** + * 修改保存字典类型信息 + * + * @param bo 字典类型信息 + * @return 结果 + */ + @CachePut(cacheNames = CacheNames.SYS_DICT, key = "#bo.dictType") + @Override + @Transactional(rollbackFor = Exception.class) + public List updateDictType(SysDictTypeBo bo) { + SysDictType dict = MapstructUtils.convert(bo, SysDictType.class); + SysDictType oldDict = baseMapper.selectById(dict.getDictId()); + dictDataMapper.update(null, new LambdaUpdateWrapper() + .set(SysDictData::getDictType, dict.getDictType()) + .eq(SysDictData::getDictType, oldDict.getDictType())); + int row = baseMapper.updateById(dict); + if (row > 0) { + CacheUtils.evict(CacheNames.SYS_DICT, oldDict.getDictType()); + return dictDataMapper.selectDictDataByType(dict.getDictType()); + } + throw new ServiceException("操作失败"); + } + + /** + * 校验字典类型称是否唯一 + * + * @param dictType 字典类型 + * @return 结果 + */ + @Override + public boolean checkDictTypeUnique(SysDictTypeBo dictType) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysDictType::getDictType, dictType.getDictType()) + .ne(ObjectUtil.isNotNull(dictType.getDictId()), SysDictType::getDictId, dictType.getDictId())); + return !exist; + } + + /** + * 根据字典类型和字典值获取字典标签 + * + * @param dictType 字典类型 + * @param dictValue 字典值 + * @param separator 分隔符 + * @return 字典标签 + */ + @Override + public String getDictLabel(String dictType, String dictValue, String separator) { + List datas = SpringUtils.getAopProxy(this).selectDictDataByType(dictType); + Map map = StreamUtils.toMap(datas, SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel); + if (StringUtils.containsAny(dictValue, separator)) { + return Arrays.stream(dictValue.split(separator)) + .map(v -> map.getOrDefault(v, StringUtils.EMPTY)) + .collect(Collectors.joining(separator)); + } else { + return map.getOrDefault(dictValue, StringUtils.EMPTY); + } + } + + /** + * 根据字典类型和字典标签获取字典值 + * + * @param dictType 字典类型 + * @param dictLabel 字典标签 + * @param separator 分隔符 + * @return 字典值 + */ + @Override + public String getDictValue(String dictType, String dictLabel, String separator) { + List datas = SpringUtils.getAopProxy(this).selectDictDataByType(dictType); + Map map = StreamUtils.toMap(datas, SysDictDataVo::getDictLabel, SysDictDataVo::getDictValue); + if (StringUtils.containsAny(dictLabel, separator)) { + return Arrays.stream(dictLabel.split(separator)) + .map(l -> map.getOrDefault(l, StringUtils.EMPTY)) + .collect(Collectors.joining(separator)); + } else { + return map.getOrDefault(dictLabel, StringUtils.EMPTY); + } + } + + @Override + public Map getAllDictByDictType(String dictType) { + List list = selectDictDataByType(dictType); + return StreamUtils.toMap(list, SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java new file mode 100644 index 0000000..72b497e --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysLogininforServiceImpl.java @@ -0,0 +1,175 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.constant.Constants; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.ServletUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.ip.AddressUtils; +import org.dromara.common.log.event.LogininforEvent; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.SysLogininfor; +import org.dromara.system.domain.bo.SysLogininforBo; +import org.dromara.system.domain.vo.SysClientVo; +import org.dromara.system.domain.vo.SysLogininforVo; +import org.dromara.system.mapper.SysLogininforMapper; +import org.dromara.system.service.ISysClientService; +import org.dromara.system.service.ISysLogininforService; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 系统访问日志情况信息 服务层处理 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Slf4j +@Service +public class SysLogininforServiceImpl implements ISysLogininforService { + + private final SysLogininforMapper baseMapper; + + private final ISysClientService clientService; + + /** + * 记录登录信息 + * + * @param logininforEvent 登录事件 + */ + @Async + @EventListener + public void recordLogininfor(LogininforEvent logininforEvent) { + HttpServletRequest request = logininforEvent.getRequest(); + final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent")); + final String ip = ServletUtils.getClientIP(request); + // 客户端信息 + String clientId = request.getHeader(LoginHelper.CLIENT_KEY); + SysClientVo client = null; + if (StringUtils.isNotBlank(clientId)) { + client = clientService.queryByClientId(clientId); + } + + String address = AddressUtils.getRealAddressByIP(ip); + StringBuilder s = new StringBuilder(); + s.append(getBlock(ip)); + s.append(address); + s.append(getBlock(logininforEvent.getUsername())); + s.append(getBlock(logininforEvent.getStatus())); + s.append(getBlock(logininforEvent.getMessage())); + // 打印信息到日志 + log.info(s.toString(), logininforEvent.getArgs()); + // 获取客户端操作系统 + String os = userAgent.getOs().getName(); + // 获取客户端浏览器 + String browser = userAgent.getBrowser().getName(); + // 封装对象 + SysLogininforBo logininfor = new SysLogininforBo(); + logininfor.setTenantId(logininforEvent.getTenantId()); + logininfor.setUserName(logininforEvent.getUsername()); + if (ObjectUtil.isNotNull(client)) { + logininfor.setClientKey(client.getClientKey()); + logininfor.setDeviceType(client.getDeviceType()); + } + logininfor.setIpaddr(ip); + logininfor.setLoginLocation(address); + logininfor.setBrowser(browser); + logininfor.setOs(os); + logininfor.setMsg(logininforEvent.getMessage()); + // 日志状态 + if (StringUtils.equalsAny(logininforEvent.getStatus(), Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER)) { + logininfor.setStatus(Constants.SUCCESS); + } else if (Constants.LOGIN_FAIL.equals(logininforEvent.getStatus())) { + logininfor.setStatus(Constants.FAIL); + } + // 插入数据 + insertLogininfor(logininfor); + } + + private String getBlock(Object msg) { + if (msg == null) { + msg = ""; + } + return "[" + msg.toString() + "]"; + } + + @Override + public TableDataInfo selectPageLogininforList(SysLogininforBo logininfor, PageQuery pageQuery) { + Map params = logininfor.getParams(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper() + .like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr()) + .eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus()) + .like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName()) + .between(params.get("beginTime") != null && params.get("endTime") != null, + SysLogininfor::getLoginTime, params.get("beginTime"), params.get("endTime")); + if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { + lqw.orderByDesc(SysLogininfor::getInfoId); + } + Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + /** + * 新增系统登录日志 + * + * @param bo 访问日志对象 + */ + @Override + public void insertLogininfor(SysLogininforBo bo) { + SysLogininfor logininfor = MapstructUtils.convert(bo, SysLogininfor.class); + logininfor.setLoginTime(new Date()); + baseMapper.insert(logininfor); + } + + /** + * 查询系统登录日志集合 + * + * @param logininfor 访问日志对象 + * @return 登录记录集合 + */ + @Override + public List selectLogininforList(SysLogininforBo logininfor) { + Map params = logininfor.getParams(); + return baseMapper.selectVoList(new LambdaQueryWrapper() + .like(StringUtils.isNotBlank(logininfor.getIpaddr()), SysLogininfor::getIpaddr, logininfor.getIpaddr()) + .eq(StringUtils.isNotBlank(logininfor.getStatus()), SysLogininfor::getStatus, logininfor.getStatus()) + .like(StringUtils.isNotBlank(logininfor.getUserName()), SysLogininfor::getUserName, logininfor.getUserName()) + .between(params.get("beginTime") != null && params.get("endTime") != null, + SysLogininfor::getLoginTime, params.get("beginTime"), params.get("endTime")) + .orderByDesc(SysLogininfor::getInfoId)); + } + + /** + * 批量删除系统登录日志 + * + * @param infoIds 需要删除的登录日志ID + * @return 结果 + */ + @Override + public int deleteLogininforByIds(Long[] infoIds) { + return baseMapper.deleteByIds(Arrays.asList(infoIds)); + } + + /** + * 清空系统登录日志 + */ + @Override + public void cleanLogininfor() { + baseMapper.delete(new LambdaQueryWrapper<>()); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java new file mode 100644 index 0000000..40643e1 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,372 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.TreeBuildUtils; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.SysMenu; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.SysRoleMenu; +import org.dromara.system.domain.SysTenantPackage; +import org.dromara.system.domain.bo.SysMenuBo; +import org.dromara.system.domain.vo.MetaVo; +import org.dromara.system.domain.vo.RouterVo; +import org.dromara.system.domain.vo.SysMenuVo; +import org.dromara.system.mapper.SysMenuMapper; +import org.dromara.system.mapper.SysRoleMapper; +import org.dromara.system.mapper.SysRoleMenuMapper; +import org.dromara.system.mapper.SysTenantPackageMapper; +import org.dromara.system.service.ISysMenuService; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * 菜单 业务层处理 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysMenuServiceImpl implements ISysMenuService { + + private final SysMenuMapper baseMapper; + private final SysRoleMapper roleMapper; + private final SysRoleMenuMapper roleMenuMapper; + private final SysTenantPackageMapper tenantPackageMapper; + + /** + * 根据用户查询系统菜单列表 + * + * @param userId 用户ID + * @return 菜单列表 + */ + @Override + public List selectMenuList(Long userId) { + return selectMenuList(new SysMenuBo(), userId); + } + + /** + * 查询系统菜单列表 + * + * @param menu 菜单信息 + * @return 菜单列表 + */ + @Override + public List selectMenuList(SysMenuBo menu, Long userId) { + List menuList; + // 管理员显示所有菜单信息 + if (LoginHelper.isSuperAdmin(userId)) { + menuList = baseMapper.selectVoList(new LambdaQueryWrapper() + .like(StringUtils.isNotBlank(menu.getMenuName()), SysMenu::getMenuName, menu.getMenuName()) + .eq(StringUtils.isNotBlank(menu.getVisible()), SysMenu::getVisible, menu.getVisible()) + .eq(StringUtils.isNotBlank(menu.getStatus()), SysMenu::getStatus, menu.getStatus()) + .orderByAsc(SysMenu::getParentId) + .orderByAsc(SysMenu::getOrderNum)); + } else { + QueryWrapper wrapper = Wrappers.query(); + wrapper.inSql("r.role_id", "select role_id from sys_user_role where user_id = " + userId) + .like(StringUtils.isNotBlank(menu.getMenuName()), "m.menu_name", menu.getMenuName()) + .eq(StringUtils.isNotBlank(menu.getVisible()), "m.visible", menu.getVisible()) + .eq(StringUtils.isNotBlank(menu.getStatus()), "m.status", menu.getStatus()) + .orderByAsc("m.parent_id") + .orderByAsc("m.order_num"); + List list = baseMapper.selectMenuListByUserId(wrapper); + menuList = MapstructUtils.convert(list, SysMenuVo.class); + } + return menuList; + } + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + @Override + public Set selectMenuPermsByUserId(Long userId) { + List perms = baseMapper.selectMenuPermsByUserId(userId); + Set permsSet = new HashSet<>(); + for (String perm : perms) { + if (StringUtils.isNotEmpty(perm)) { + permsSet.addAll(StringUtils.splitList(perm.trim())); + } + } + return permsSet; + } + + /** + * 根据角色ID查询权限 + * + * @param roleId 角色ID + * @return 权限列表 + */ + @Override + public Set selectMenuPermsByRoleId(Long roleId) { + List perms = baseMapper.selectMenuPermsByRoleId(roleId); + Set permsSet = new HashSet<>(); + for (String perm : perms) { + if (StringUtils.isNotEmpty(perm)) { + permsSet.addAll(StringUtils.splitList(perm.trim())); + } + } + return permsSet; + } + + /** + * 根据用户ID查询菜单 + * + * @param userId 用户名称 + * @return 菜单列表 + */ + @Override + public List selectMenuTreeByUserId(Long userId) { + List menus; + if (LoginHelper.isSuperAdmin(userId)) { + menus = baseMapper.selectMenuTreeAll(); + } else { + menus = baseMapper.selectMenuTreeByUserId(userId); + } + return getChildPerms(menus, 0); + } + + /** + * 根据角色ID查询菜单树信息 + * + * @param roleId 角色ID + * @return 选中菜单列表 + */ + @Override + public List selectMenuListByRoleId(Long roleId) { + SysRole role = roleMapper.selectById(roleId); + return baseMapper.selectMenuListByRoleId(roleId, role.getMenuCheckStrictly()); + } + + /** + * 根据租户套餐ID查询菜单树信息 + * + * @param packageId 租户套餐ID + * @return 选中菜单列表 + */ + @Override + public List selectMenuListByPackageId(Long packageId) { + SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId); + List menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong); + if (CollUtil.isEmpty(menuIds)) { + return List.of(); + } + List parentIds = null; + if (tenantPackage.getMenuCheckStrictly()) { + parentIds = baseMapper.selectObjs(new LambdaQueryWrapper() + .select(SysMenu::getParentId) + .in(SysMenu::getMenuId, menuIds), x -> {return Convert.toLong(x);}); + } + return baseMapper.selectObjs(new LambdaQueryWrapper() + .in(SysMenu::getMenuId, menuIds) + .notIn(CollUtil.isNotEmpty(parentIds), SysMenu::getMenuId, parentIds), x -> {return Convert.toLong(x);}); + } + + /** + * 构建前端路由所需要的菜单 + * 路由name命名规则 path首字母转大写 + id + * + * @param menus 菜单列表 + * @return 路由列表 + */ + @Override + public List buildMenus(List menus) { + List routers = new LinkedList<>(); + for (SysMenu menu : menus) { + String name = menu.getRouteName() + menu.getMenuId(); + RouterVo router = new RouterVo(); + router.setHidden("1".equals(menu.getVisible())); + router.setName(name); + router.setPath(menu.getRouterPath()); + router.setComponent(menu.getComponentInfo()); + router.setQuery(menu.getQueryParam()); + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + List cMenus = menu.getChildren(); + if (CollUtil.isNotEmpty(cMenus) && SystemConstants.TYPE_DIR.equals(menu.getMenuType())) { + router.setAlwaysShow(true); + router.setRedirect("noRedirect"); + router.setChildren(buildMenus(cMenus)); + } else if (menu.isMenuFrame()) { + String frameName = StringUtils.capitalize(menu.getPath()) + menu.getMenuId(); + router.setMeta(null); + List childrenList = new ArrayList<>(); + RouterVo children = new RouterVo(); + children.setPath(menu.getPath()); + children.setComponent(menu.getComponent()); + children.setName(frameName); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), StringUtils.equals("1", menu.getIsCache()), menu.getPath())); + children.setQuery(menu.getQueryParam()); + childrenList.add(children); + router.setChildren(childrenList); + } else if (menu.getParentId().intValue() == 0 && menu.isInnerLink()) { + router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); + router.setPath("/"); + List childrenList = new ArrayList<>(); + RouterVo children = new RouterVo(); + String routerPath = SysMenu.innerLinkReplaceEach(menu.getPath()); + String innerLinkName = StringUtils.capitalize(routerPath) + menu.getMenuId(); + children.setPath(routerPath); + children.setComponent(SystemConstants.INNER_LINK); + children.setName(innerLinkName); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath())); + childrenList.add(children); + router.setChildren(childrenList); + } + routers.add(router); + } + return routers; + } + + /** + * 构建前端所需要下拉树结构 + * + * @param menus 菜单列表 + * @return 下拉树结构列表 + */ + @Override + public List> buildMenuTreeSelect(List menus) { + if (CollUtil.isEmpty(menus)) { + return CollUtil.newArrayList(); + } + return TreeBuildUtils.build(menus, (menu, tree) -> { + Tree menuTree = tree.setId(menu.getMenuId()) + .setParentId(menu.getParentId()) + .setName(menu.getMenuName()) + .setWeight(menu.getOrderNum()); + menuTree.put("menuType", menu.getMenuType()); + menuTree.put("icon", menu.getIcon()); + }); + } + + /** + * 根据菜单ID查询信息 + * + * @param menuId 菜单ID + * @return 菜单信息 + */ + @Override + public SysMenuVo selectMenuById(Long menuId) { + return baseMapper.selectVoById(menuId); + } + + /** + * 是否存在菜单子节点 + * + * @param menuId 菜单ID + * @return 结果 + */ + @Override + public boolean hasChildByMenuId(Long menuId) { + return baseMapper.exists(new LambdaQueryWrapper().eq(SysMenu::getParentId, menuId)); + } + + /** + * 查询菜单使用数量 + * + * @param menuId 菜单ID + * @return 结果 + */ + @Override + public boolean checkMenuExistRole(Long menuId) { + return roleMenuMapper.exists(new LambdaQueryWrapper().eq(SysRoleMenu::getMenuId, menuId)); + } + + /** + * 新增保存菜单信息 + * + * @param bo 菜单信息 + * @return 结果 + */ + @Override + public int insertMenu(SysMenuBo bo) { + SysMenu menu = MapstructUtils.convert(bo, SysMenu.class); + return baseMapper.insert(menu); + } + + /** + * 修改保存菜单信息 + * + * @param bo 菜单信息 + * @return 结果 + */ + @Override + public int updateMenu(SysMenuBo bo) { + SysMenu menu = MapstructUtils.convert(bo, SysMenu.class); + return baseMapper.updateById(menu); + } + + /** + * 删除菜单管理信息 + * + * @param menuId 菜单ID + * @return 结果 + */ + @Override + public int deleteMenuById(Long menuId) { + return baseMapper.deleteById(menuId); + } + + /** + * 校验菜单名称是否唯一 + * + * @param menu 菜单信息 + * @return 结果 + */ + @Override + public boolean checkMenuNameUnique(SysMenuBo menu) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysMenu::getMenuName, menu.getMenuName()) + .eq(SysMenu::getParentId, menu.getParentId()) + .ne(ObjectUtil.isNotNull(menu.getMenuId()), SysMenu::getMenuId, menu.getMenuId())); + return !exist; + } + + /** + * 根据父节点的ID获取所有子节点 + * + * @param list 分类表 + * @param parentId 传入的父节点ID + * @return String + */ + private List getChildPerms(List list, int parentId) { + List returnList = new ArrayList<>(); + for (SysMenu t : list) { + // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 + if (t.getParentId() == parentId) { + recursionFn(list, t); + returnList.add(t); + } + } + return returnList; + } + + /** + * 递归列表 + */ + private void recursionFn(List list, SysMenu t) { + // 得到子节点列表 + List childList = StreamUtils.filter(list, n -> n.getParentId().equals(t.getMenuId())); + t.setChildren(childList); + for (SysMenu tChild : childList) { + // 判断是否有子节点 + if (list.stream().anyMatch(n -> n.getParentId().equals(tChild.getMenuId()))) { + recursionFn(list, tChild); + } + } + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java new file mode 100644 index 0000000..19a3ff5 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysNoticeServiceImpl.java @@ -0,0 +1,124 @@ +package org.dromara.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysNotice; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.bo.SysNoticeBo; +import org.dromara.system.domain.vo.SysNoticeVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.mapper.SysNoticeMapper; +import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.service.ISysNoticeService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 公告 服务层实现 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysNoticeServiceImpl implements ISysNoticeService { + + private final SysNoticeMapper baseMapper; + private final SysUserMapper userMapper; + + @Override + public TableDataInfo selectPageNoticeList(SysNoticeBo notice, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(notice); + Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + /** + * 查询公告信息 + * + * @param noticeId 公告ID + * @return 公告信息 + */ + @Override + public SysNoticeVo selectNoticeById(Long noticeId) { + return baseMapper.selectVoById(noticeId); + } + + /** + * 查询公告列表 + * + * @param notice 公告信息 + * @return 公告集合 + */ + @Override + public List selectNoticeList(SysNoticeBo notice) { + LambdaQueryWrapper lqw = buildQueryWrapper(notice); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysNoticeBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getNoticeTitle()), SysNotice::getNoticeTitle, bo.getNoticeTitle()); + lqw.eq(StringUtils.isNotBlank(bo.getNoticeType()), SysNotice::getNoticeType, bo.getNoticeType()); + if (StringUtils.isNotBlank(bo.getCreateByName())) { + SysUserVo sysUser = userMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getUserName, bo.getCreateByName())); + lqw.eq(SysNotice::getCreateBy, ObjectUtils.notNullGetter(sysUser, SysUserVo::getUserId)); + } + lqw.orderByAsc(SysNotice::getNoticeId); + return lqw; + } + + /** + * 新增公告 + * + * @param bo 公告信息 + * @return 结果 + */ + @Override + public int insertNotice(SysNoticeBo bo) { + SysNotice notice = MapstructUtils.convert(bo, SysNotice.class); + return baseMapper.insert(notice); + } + + /** + * 修改公告 + * + * @param bo 公告信息 + * @return 结果 + */ + @Override + public int updateNotice(SysNoticeBo bo) { + SysNotice notice = MapstructUtils.convert(bo, SysNotice.class); + return baseMapper.updateById(notice); + } + + /** + * 删除公告对象 + * + * @param noticeId 公告ID + * @return 结果 + */ + @Override + public int deleteNoticeById(Long noticeId) { + return baseMapper.deleteById(noticeId); + } + + /** + * 批量删除公告信息 + * + * @param noticeIds 需要删除的公告ID + * @return 结果 + */ + @Override + public int deleteNoticeByIds(Long[] noticeIds) { + return baseMapper.deleteByIds(Arrays.asList(noticeIds)); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java new file mode 100644 index 0000000..27c2f32 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOperLogServiceImpl.java @@ -0,0 +1,134 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.util.ArrayUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.ip.AddressUtils; +import org.dromara.common.log.event.OperLogEvent; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysOperLog; +import org.dromara.system.domain.bo.SysOperLogBo; +import org.dromara.system.domain.vo.SysOperLogVo; +import org.dromara.system.mapper.SysOperLogMapper; +import org.dromara.system.service.ISysOperLogService; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 操作日志 服务层处理 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysOperLogServiceImpl implements ISysOperLogService { + + private final SysOperLogMapper baseMapper; + + /** + * 操作日志记录 + * + * @param operLogEvent 操作日志事件 + */ + @Async + @EventListener + public void recordOper(OperLogEvent operLogEvent) { + SysOperLogBo operLog = MapstructUtils.convert(operLogEvent, SysOperLogBo.class); + // 远程查询操作地点 + operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp())); + insertOperlog(operLog); + } + + @Override + public TableDataInfo selectPageOperLogList(SysOperLogBo operLog, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(operLog); + if (StringUtils.isBlank(pageQuery.getOrderByColumn())) { + lqw.orderByDesc(SysOperLog::getOperId); + } + Page page = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(page); + } + + private LambdaQueryWrapper buildQueryWrapper(SysOperLogBo operLog) { + Map params = operLog.getParams(); + return new LambdaQueryWrapper() + .like(StringUtils.isNotBlank(operLog.getOperIp()), SysOperLog::getOperIp, operLog.getOperIp()) + .like(StringUtils.isNotBlank(operLog.getTitle()), SysOperLog::getTitle, operLog.getTitle()) + .eq(operLog.getBusinessType() != null && operLog.getBusinessType() > 0, + SysOperLog::getBusinessType, operLog.getBusinessType()) + .func(f -> { + if (ArrayUtil.isNotEmpty(operLog.getBusinessTypes())) { + f.in(SysOperLog::getBusinessType, Arrays.asList(operLog.getBusinessTypes())); + } + }) + .eq(operLog.getStatus() != null, + SysOperLog::getStatus, operLog.getStatus()) + .like(StringUtils.isNotBlank(operLog.getOperName()), SysOperLog::getOperName, operLog.getOperName()) + .between(params.get("beginTime") != null && params.get("endTime") != null, + SysOperLog::getOperTime, params.get("beginTime"), params.get("endTime")); + } + + /** + * 新增操作日志 + * + * @param bo 操作日志对象 + */ + @Override + public void insertOperlog(SysOperLogBo bo) { + SysOperLog operLog = MapstructUtils.convert(bo, SysOperLog.class); + operLog.setOperTime(new Date()); + baseMapper.insert(operLog); + } + + /** + * 查询系统操作日志集合 + * + * @param operLog 操作日志对象 + * @return 操作日志集合 + */ + @Override + public List selectOperLogList(SysOperLogBo operLog) { + LambdaQueryWrapper lqw = buildQueryWrapper(operLog); + return baseMapper.selectVoList(lqw.orderByDesc(SysOperLog::getOperId)); + } + + /** + * 批量删除系统操作日志 + * + * @param operIds 需要删除的操作日志ID + * @return 结果 + */ + @Override + public int deleteOperLogByIds(Long[] operIds) { + return baseMapper.deleteByIds(Arrays.asList(operIds)); + } + + /** + * 查询操作日志详细 + * + * @param operId 操作ID + * @return 操作日志对象 + */ + @Override + public SysOperLogVo selectOperLogById(Long operId) { + return baseMapper.selectVoById(operId); + } + + /** + * 清空操作日志 + */ + @Override + public void cleanOperLog() { + baseMapper.delete(new LambdaQueryWrapper<>()); + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java new file mode 100644 index 0000000..a67b04e --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssConfigServiceImpl.java @@ -0,0 +1,177 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.oss.constant.OssConstant; +import org.dromara.common.redis.utils.CacheUtils; +import org.dromara.common.redis.utils.RedisUtils; +import org.dromara.system.domain.SysOssConfig; +import org.dromara.system.domain.bo.SysOssConfigBo; +import org.dromara.system.domain.vo.SysOssConfigVo; +import org.dromara.system.mapper.SysOssConfigMapper; +import org.dromara.system.service.ISysOssConfigService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Collection; +import java.util.List; + +/** + * 对象存储配置Service业务层处理 + * + * @author Lion Li + * @author 孤舟烟雨 + * @date 2021-08-13 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SysOssConfigServiceImpl implements ISysOssConfigService { + + private final SysOssConfigMapper baseMapper; + + /** + * 项目启动时,初始化参数到缓存,加载配置类 + */ + @Override + public void init() { + List list = baseMapper.selectList(); + // 加载OSS初始化配置 + for (SysOssConfig config : list) { + String configKey = config.getConfigKey(); + if ("0".equals(config.getStatus())) { + RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, configKey); + } + CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); + } + } + + @Override + public SysOssConfigVo queryById(Long ossConfigId) { + return baseMapper.selectVoById(ossConfigId); + } + + @Override + public TableDataInfo queryPageList(SysOssConfigBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + + private LambdaQueryWrapper buildQueryWrapper(SysOssConfigBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getConfigKey()), SysOssConfig::getConfigKey, bo.getConfigKey()); + lqw.like(StringUtils.isNotBlank(bo.getBucketName()), SysOssConfig::getBucketName, bo.getBucketName()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysOssConfig::getStatus, bo.getStatus()); + lqw.orderByAsc(SysOssConfig::getOssConfigId); + return lqw; + } + + @Override + public Boolean insertByBo(SysOssConfigBo bo) { + SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class); + validEntityBeforeSave(config); + boolean flag = baseMapper.insert(config) > 0; + if (flag) { + // 从数据库查询完整的数据做缓存 + config = baseMapper.selectById(config.getOssConfigId()); + CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); + } + return flag; + } + + @Override + public Boolean updateByBo(SysOssConfigBo bo) { + SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class); + validEntityBeforeSave(config); + LambdaUpdateWrapper luw = new LambdaUpdateWrapper<>(); + luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, ""); + luw.set(ObjectUtil.isNull(config.getRegion()), SysOssConfig::getRegion, ""); + luw.set(ObjectUtil.isNull(config.getExt1()), SysOssConfig::getExt1, ""); + luw.set(ObjectUtil.isNull(config.getRemark()), SysOssConfig::getRemark, ""); + luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId()); + boolean flag = baseMapper.update(config, luw) > 0; + if (flag) { + // 从数据库查询完整的数据做缓存 + config = baseMapper.selectById(config.getOssConfigId()); + CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); + } + return flag; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysOssConfig entity) { + if (StringUtils.isNotEmpty(entity.getConfigKey()) + && !checkConfigKeyUnique(entity)) { + throw new ServiceException("操作配置'" + entity.getConfigKey() + "'失败, 配置key已存在!"); + } + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + if (CollUtil.containsAny(ids, OssConstant.SYSTEM_DATA_IDS)) { + throw new ServiceException("系统内置, 不可删除!"); + } + } + List list = CollUtil.newArrayList(); + for (Long configId : ids) { + SysOssConfig config = baseMapper.selectById(configId); + list.add(config); + } + boolean flag = baseMapper.deleteByIds(ids) > 0; + if (flag) { + list.forEach(sysOssConfig -> + CacheUtils.evict(CacheNames.SYS_OSS_CONFIG, sysOssConfig.getConfigKey())); + } + return flag; + } + + /** + * 判断configKey是否唯一 + */ + private boolean checkConfigKeyUnique(SysOssConfig sysOssConfig) { + long ossConfigId = ObjectUtils.notNull(sysOssConfig.getOssConfigId(), -1L); + SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper() + .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey) + .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey())); + if (ObjectUtil.isNotNull(info) && info.getOssConfigId() != ossConfigId) { + return false; + } + return true; + } + + /** + * 启用禁用状态 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateOssConfigStatus(SysOssConfigBo bo) { + SysOssConfig sysOssConfig = MapstructUtils.convert(bo, SysOssConfig.class); + int row = baseMapper.update(null, new LambdaUpdateWrapper() + .set(SysOssConfig::getStatus, "1")); + row += baseMapper.updateById(sysOssConfig); + if (row > 0) { + RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, sysOssConfig.getConfigKey()); + } + return row; + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java new file mode 100644 index 0000000..c2eb08c --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -0,0 +1,269 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.domain.dto.OssDTO; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.OssService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.file.FileUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.oss.core.OssClient; +import org.dromara.common.oss.entity.UploadResult; +import org.dromara.common.oss.enumd.AccessPolicyType; +import org.dromara.common.oss.factory.OssFactory; +import org.dromara.system.domain.SysOss; +import org.dromara.system.domain.bo.SysOssBo; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.mapper.SysOssMapper; +import org.dromara.system.service.ISysOssService; +import org.jetbrains.annotations.NotNull; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.time.Duration; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 文件上传 服务层实现 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysOssServiceImpl implements ISysOssService, OssService { + + private final SysOssMapper baseMapper; + + /** + * 查询OSS对象存储列表 + * + * @param bo OSS对象存储分页查询对象 + * @param pageQuery 分页查询实体类 + * @return 结果 + */ + @Override + public TableDataInfo queryPageList(SysOssBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + List filterResult = StreamUtils.toList(result.getRecords(), this::matchingUrl); + result.setRecords(filterResult); + return TableDataInfo.build(result); + } + + /** + * 根据一组 ossIds 获取对应的 SysOssVo 列表 + * + * @param ossIds 一组文件在数据库中的唯一标识集合 + * @return 包含 SysOssVo 对象的列表 + */ + @Override + public List listByIds(Collection ossIds) { + List list = new ArrayList<>(); + SysOssServiceImpl ossService = SpringUtils.getAopProxy(this); + for (Long id : ossIds) { + SysOssVo vo = ossService.getById(id); + if (ObjectUtil.isNotNull(vo)) { + try { + list.add(this.matchingUrl(vo)); + } catch (Exception ignored) { + // 如果oss异常无法连接则将数据直接返回 + list.add(vo); + } + } + } + return list; + } + + /** + * 根据一组 ossIds 获取对应文件的 URL 列表 + * + * @param ossIds 以逗号分隔的 ossId 字符串 + * @return 以逗号分隔的文件 URL 字符串 + */ + @Override + public String selectUrlByIds(String ossIds) { + List list = new ArrayList<>(); + SysOssServiceImpl ossService = SpringUtils.getAopProxy(this); + for (Long id : StringUtils.splitTo(ossIds, Convert::toLong)) { + SysOssVo vo = ossService.getById(id); + if (ObjectUtil.isNotNull(vo)) { + try { + list.add(this.matchingUrl(vo).getUrl()); + } catch (Exception ignored) { + // 如果oss异常无法连接则将数据直接返回 + list.add(vo.getUrl()); + } + } + } + return String.join(StringUtils.SEPARATOR, list); + } + + @Override + public List selectByIds(String ossIds) { + List list = new ArrayList<>(); + for (Long id : StringUtils.splitTo(ossIds, Convert::toLong)) { + SysOssVo vo = SpringUtils.getAopProxy(this).getById(id); + if (ObjectUtil.isNotNull(vo)) { + try { + vo.setUrl(this.matchingUrl(vo).getUrl()); + list.add(BeanUtil.toBean(vo, OssDTO.class)); + } catch (Exception ignored) { + // 如果oss异常无法连接则将数据直接返回 + list.add(BeanUtil.toBean(vo, OssDTO.class)); + } + } + } + return list; + } + + private LambdaQueryWrapper buildQueryWrapper(SysOssBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getFileName()), SysOss::getFileName, bo.getFileName()); + lqw.like(StringUtils.isNotBlank(bo.getOriginalName()), SysOss::getOriginalName, bo.getOriginalName()); + lqw.eq(StringUtils.isNotBlank(bo.getFileSuffix()), SysOss::getFileSuffix, bo.getFileSuffix()); + lqw.eq(StringUtils.isNotBlank(bo.getUrl()), SysOss::getUrl, bo.getUrl()); + lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null, + SysOss::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime")); + lqw.eq(ObjectUtil.isNotNull(bo.getCreateBy()), SysOss::getCreateBy, bo.getCreateBy()); + lqw.eq(StringUtils.isNotBlank(bo.getService()), SysOss::getService, bo.getService()); + lqw.orderByAsc(SysOss::getOssId); + return lqw; + } + + /** + * 根据 ossId 从缓存或数据库中获取 SysOssVo 对象 + * + * @param ossId 文件在数据库中的唯一标识 + * @return SysOssVo 对象,包含文件信息 + */ + @Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId") + @Override + public SysOssVo getById(Long ossId) { + return baseMapper.selectVoById(ossId); + } + + + /** + * 文件下载方法,支持一次性下载完整文件 + * + * @param ossId OSS对象ID + * @param response HttpServletResponse对象,用于设置响应头和向客户端发送文件内容 + */ + @Override + public void download(Long ossId, HttpServletResponse response) throws IOException { + SysOssVo sysOss = SpringUtils.getAopProxy(this).getById(ossId); + if (ObjectUtil.isNull(sysOss)) { + throw new ServiceException("文件数据不存在!"); + } + FileUtils.setAttachmentResponseHeader(response, sysOss.getOriginalName()); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8"); + OssClient storage = OssFactory.instance(sysOss.getService()); + storage.download(sysOss.getFileName(), response.getOutputStream(), response::setContentLengthLong); + } + + /** + * 上传 MultipartFile 到对象存储服务,并保存文件信息到数据库 + * + * @param file 要上传的 MultipartFile 对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + * @throws ServiceException 如果上传过程中发生异常,则抛出 ServiceException 异常 + */ + @Override + public SysOssVo upload(MultipartFile file) { + String originalfileName = file.getOriginalFilename(); + String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); + OssClient storage = OssFactory.instance(); + UploadResult uploadResult; + try { + uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); + } catch (IOException e) { + throw new ServiceException(e.getMessage()); + } + // 保存文件信息 + return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); + } + + /** + * 上传文件到对象存储服务,并保存文件信息到数据库 + * + * @param file 要上传的文件对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + */ + @Override + public SysOssVo upload(File file) { + String originalfileName = file.getName(); + String suffix = StringUtils.substring(originalfileName, originalfileName.lastIndexOf("."), originalfileName.length()); + OssClient storage = OssFactory.instance(); + UploadResult uploadResult = storage.uploadSuffix(file, suffix); + // 保存文件信息 + return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); + } + + @NotNull + private SysOssVo buildResultEntity(String originalfileName, String suffix, String configKey, UploadResult uploadResult) { + SysOss oss = new SysOss(); + oss.setUrl(uploadResult.getUrl()); + oss.setFileSuffix(suffix); + oss.setFileName(uploadResult.getFilename()); + oss.setOriginalName(originalfileName); + oss.setService(configKey); + baseMapper.insert(oss); + SysOssVo sysOssVo = MapstructUtils.convert(oss, SysOssVo.class); + return this.matchingUrl(sysOssVo); + } + + /** + * 删除OSS对象存储 + * + * @param ids OSS对象ID串 + * @param isValid 判断是否需要校验 + * @return 结果 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // 做一些业务上的校验,判断是否需要校验 + } + List list = baseMapper.selectByIds(ids); + for (SysOss sysOss : list) { + OssClient storage = OssFactory.instance(sysOss.getService()); + storage.delete(sysOss.getUrl()); + } + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 桶类型为 private 的URL 修改为临时URL时长为120s + * + * @param oss OSS对象 + * @return oss 匹配Url的OSS对象 + */ + private SysOssVo matchingUrl(SysOssVo oss) { + OssClient storage = OssFactory.instance(oss.getService()); + // 仅修改桶类型为 private 的URL,临时URL时长为120s + if (AccessPolicyType.PRIVATE == storage.getAccessPolicy()) { + oss.setUrl(storage.getPrivateUrl(oss.getFileName(), Duration.ofSeconds(120))); + } + return oss; + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPermissionServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPermissionServiceImpl.java new file mode 100644 index 0000000..9852821 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPermissionServiceImpl.java @@ -0,0 +1,61 @@ +package org.dromara.system.service.impl; + +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.service.ISysMenuService; +import org.dromara.system.service.ISysPermissionService; +import org.dromara.system.service.ISysRoleService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.Set; + +/** + * 用户权限处理 + * + * @author ruoyi + */ +@RequiredArgsConstructor +@Service +public class SysPermissionServiceImpl implements ISysPermissionService { + + private final ISysRoleService roleService; + private final ISysMenuService menuService; + + /** + * 获取角色数据权限 + * + * @param userId 用户id + * @return 角色权限信息 + */ + @Override + public Set getRolePermission(Long userId) { + Set roles = new HashSet<>(); + // 管理员拥有所有权限 + if (LoginHelper.isSuperAdmin(userId)) { + roles.add(TenantConstants.SUPER_ADMIN_ROLE_KEY); + } else { + roles.addAll(roleService.selectRolePermissionByUserId(userId)); + } + return roles; + } + + /** + * 获取菜单数据权限 + * + * @param userId 用户id + * @return 菜单权限信息 + */ + @Override + public Set getMenuPermission(Long userId) { + Set perms = new HashSet<>(); + // 管理员拥有所有权限 + if (LoginHelper.isSuperAdmin(userId)) { + perms.add("*:*:*"); + } else { + perms.addAll(menuService.selectMenuPermsByUserId(userId)); + } + return perms; + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java new file mode 100644 index 0000000..5888985 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java @@ -0,0 +1,249 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.PostService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.SysPost; +import org.dromara.system.domain.SysUserPost; +import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.mapper.SysPostMapper; +import org.dromara.system.mapper.SysUserPostMapper; +import org.dromara.system.service.ISysPostService; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 岗位信息 服务层处理 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysPostServiceImpl implements ISysPostService, PostService { + + private final SysPostMapper baseMapper; + private final SysDeptMapper deptMapper; + private final SysUserPostMapper userPostMapper; + + @Override + public TableDataInfo selectPagePostList(SysPostBo post, PageQuery pageQuery) { + Page page = baseMapper.selectPagePostList(pageQuery.build(), buildQueryWrapper(post)); + return TableDataInfo.build(page); + } + + /** + * 查询岗位信息集合 + * + * @param post 岗位信息 + * @return 岗位信息集合 + */ + @Override + public List selectPostList(SysPostBo post) { + return baseMapper.selectVoList(buildQueryWrapper(post)); + } + + /** + * 查询用户所属岗位组 + * + * @param userId 用户ID + * @return 岗位ID + */ + @Override + public List selectPostsByUserId(Long userId) { + return baseMapper.selectPostsByUserId(userId); + } + + /** + * 根据查询条件构建查询包装器 + * + * @param bo 查询条件对象 + * @return 构建好的查询包装器 + */ + private LambdaQueryWrapper buildQueryWrapper(SysPostBo bo) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.like(StringUtils.isNotBlank(bo.getPostCode()), SysPost::getPostCode, bo.getPostCode()) + .like(StringUtils.isNotBlank(bo.getPostCategory()), SysPost::getPostCategory, bo.getPostCategory()) + .like(StringUtils.isNotBlank(bo.getPostName()), SysPost::getPostName, bo.getPostName()) + .eq(StringUtils.isNotBlank(bo.getStatus()), SysPost::getStatus, bo.getStatus()) + .orderByAsc(SysPost::getPostSort); + if (ObjectUtil.isNotNull(bo.getDeptId())) { + //优先单部门搜索 + wrapper.eq(SysPost::getDeptId, bo.getDeptId()); + } else if (ObjectUtil.isNotNull(bo.getBelongDeptId())) { + //部门树搜索 + wrapper.and(x -> { + List deptList = deptMapper.selectListByParentId(bo.getBelongDeptId()); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(bo.getBelongDeptId()); + x.in(SysPost::getDeptId, deptIds); + }); + } + return wrapper; + } + + /** + * 查询所有岗位 + * + * @return 岗位列表 + */ + @Override + public List selectPostAll() { + return baseMapper.selectVoList(new QueryWrapper<>()); + } + + /** + * 通过岗位ID查询岗位信息 + * + * @param postId 岗位ID + * @return 角色对象信息 + */ + @Override + public SysPostVo selectPostById(Long postId) { + return baseMapper.selectVoById(postId); + } + + /** + * 根据用户ID获取岗位选择框列表 + * + * @param userId 用户ID + * @return 选中岗位ID列表 + */ + @Override + public List selectPostListByUserId(Long userId) { + List list = baseMapper.selectPostsByUserId(userId); + return StreamUtils.toList(list, SysPostVo::getPostId); + } + + /** + * 通过岗位ID串查询岗位 + * + * @param postIds 岗位id串 + * @return 岗位列表信息 + */ + @Override + public List selectPostByIds(List postIds) { + return baseMapper.selectVoList(new LambdaQueryWrapper() + .select(SysPost::getPostId, SysPost::getPostName, SysPost::getPostCode) + .eq(SysPost::getStatus, SystemConstants.NORMAL) + .in(CollUtil.isNotEmpty(postIds), SysPost::getPostId, postIds)); + } + + /** + * 校验岗位名称是否唯一 + * + * @param post 岗位信息 + * @return 结果 + */ + @Override + public boolean checkPostNameUnique(SysPostBo post) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysPost::getPostName, post.getPostName()) + .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId())); + return !exist; + } + + /** + * 校验岗位编码是否唯一 + * + * @param post 岗位信息 + * @return 结果 + */ + @Override + public boolean checkPostCodeUnique(SysPostBo post) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysPost::getPostCode, post.getPostCode()) + .ne(ObjectUtil.isNotNull(post.getPostId()), SysPost::getPostId, post.getPostId())); + return !exist; + } + + /** + * 通过岗位ID查询岗位使用数量 + * + * @param postId 岗位ID + * @return 结果 + */ + @Override + public long countUserPostById(Long postId) { + return userPostMapper.selectCount(new LambdaQueryWrapper().eq(SysUserPost::getPostId, postId)); + } + + /** + * 通过部门ID查询岗位使用数量 + * + * @param deptId 部门id + * @return 结果 + */ + @Override + public long countPostByDeptId(Long deptId) { + return baseMapper.selectCount(new LambdaQueryWrapper().eq(SysPost::getDeptId, deptId)); + } + + /** + * 删除岗位信息 + * + * @param postId 岗位ID + * @return 结果 + */ + @Override + public int deletePostById(Long postId) { + return baseMapper.deleteById(postId); + } + + /** + * 批量删除岗位信息 + * + * @param postIds 需要删除的岗位ID + * @return 结果 + */ + @Override + public int deletePostByIds(Long[] postIds) { + for (Long postId : postIds) { + SysPost post = baseMapper.selectById(postId); + if (countUserPostById(postId) > 0) { + throw new ServiceException(String.format("%1$s已分配,不能删除!", post.getPostName())); + } + } + return baseMapper.deleteByIds(Arrays.asList(postIds)); + } + + /** + * 新增保存岗位信息 + * + * @param bo 岗位信息 + * @return 结果 + */ + @Override + public int insertPost(SysPostBo bo) { + SysPost post = MapstructUtils.convert(bo, SysPost.class); + return baseMapper.insert(post); + } + + /** + * 修改保存岗位信息 + * + * @param bo 岗位信息 + * @return 结果 + */ + @Override + public int updatePost(SysPostBo bo) { + SysPost post = MapstructUtils.convert(bo, SysPost.class); + return baseMapper.updateById(post); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java new file mode 100644 index 0000000..0a2e485 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java @@ -0,0 +1,552 @@ +package org.dromara.system.service.impl; + +import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.RoleService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.SysRoleDept; +import org.dromara.system.domain.SysRoleMenu; +import org.dromara.system.domain.SysUserRole; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.vo.SysRoleVo; +import org.dromara.system.mapper.SysRoleDeptMapper; +import org.dromara.system.mapper.SysRoleMapper; +import org.dromara.system.mapper.SysRoleMenuMapper; +import org.dromara.system.mapper.SysUserRoleMapper; +import org.dromara.system.service.ISysRoleService; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * 角色 业务层处理 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysRoleServiceImpl implements ISysRoleService, RoleService { + + private final SysRoleMapper baseMapper; + private final SysRoleMenuMapper roleMenuMapper; + private final SysUserRoleMapper userRoleMapper; + private final SysRoleDeptMapper roleDeptMapper; + + @Override + public TableDataInfo selectPageRoleList(SysRoleBo role, PageQuery pageQuery) { + Page page = baseMapper.selectPageRoleList(pageQuery.build(), this.buildQueryWrapper(role)); + return TableDataInfo.build(page); + } + + /** + * 根据条件分页查询角色数据 + * + * @param role 角色信息 + * @return 角色数据集合信息 + */ + @Override + public List selectRoleList(SysRoleBo role) { + return baseMapper.selectRoleList(this.buildQueryWrapper(role)); + } + + private Wrapper buildQueryWrapper(SysRoleBo bo) { + Map params = bo.getParams(); + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("r.del_flag", SystemConstants.NORMAL) + .eq(ObjectUtil.isNotNull(bo.getRoleId()), "r.role_id", bo.getRoleId()) + .like(StringUtils.isNotBlank(bo.getRoleName()), "r.role_name", bo.getRoleName()) + .eq(StringUtils.isNotBlank(bo.getStatus()), "r.status", bo.getStatus()) + .like(StringUtils.isNotBlank(bo.getRoleKey()), "r.role_key", bo.getRoleKey()) + .between(params.get("beginTime") != null && params.get("endTime") != null, + "r.create_time", params.get("beginTime"), params.get("endTime")) + .orderByAsc("r.role_sort").orderByAsc("r.create_time"); + return wrapper; + } + + /** + * 根据用户ID查询角色 + * + * @param userId 用户ID + * @return 角色列表 + */ + @Override + public List selectRolesByUserId(Long userId) { + return baseMapper.selectRolesByUserId(userId); + } + + /** + * 根据用户ID查询角色列表(包含被授权状态) + * + * @param userId 用户ID + * @return 角色列表 + */ + @Override + public List selectRolesAuthByUserId(Long userId) { + List userRoles = baseMapper.selectRolesByUserId(userId); + List roles = selectRoleAll(); + // 使用HashSet提高查找效率 + Set userRoleIds = StreamUtils.toSet(userRoles, SysRoleVo::getRoleId); + for (SysRoleVo role : roles) { + if (userRoleIds.contains(role.getRoleId())) { + role.setFlag(true); + } + } + return roles; + } + + /** + * 根据用户ID查询权限 + * + * @param userId 用户ID + * @return 权限列表 + */ + @Override + public Set selectRolePermissionByUserId(Long userId) { + List perms = baseMapper.selectRolesByUserId(userId); + Set permsSet = new HashSet<>(); + for (SysRoleVo perm : perms) { + if (ObjectUtil.isNotNull(perm)) { + permsSet.addAll(StringUtils.splitList(perm.getRoleKey().trim())); + } + } + return permsSet; + } + + /** + * 查询所有角色 + * + * @return 角色列表 + */ + @Override + public List selectRoleAll() { + return this.selectRoleList(new SysRoleBo()); + } + + /** + * 根据用户ID获取角色选择框列表 + * + * @param userId 用户ID + * @return 选中角色ID列表 + */ + @Override + public List selectRoleListByUserId(Long userId) { + List list = baseMapper.selectRolesByUserId(userId); + return StreamUtils.toList(list, SysRoleVo::getRoleId); + } + + /** + * 通过角色ID查询角色 + * + * @param roleId 角色ID + * @return 角色对象信息 + */ + @Override + public SysRoleVo selectRoleById(Long roleId) { + return baseMapper.selectRoleById(roleId); + } + + /** + * 通过角色ID串查询角色 + * + * @param roleIds 角色ID串 + * @return 角色列表信息 + */ + @Override + public List selectRoleByIds(List roleIds) { + return baseMapper.selectRoleList(new QueryWrapper() + .eq("r.status", SystemConstants.NORMAL) + .in(CollUtil.isNotEmpty(roleIds), "r.role_id", roleIds)); + } + + /** + * 校验角色名称是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + public boolean checkRoleNameUnique(SysRoleBo role) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysRole::getRoleName, role.getRoleName()) + .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId())); + return !exist; + } + + /** + * 校验角色权限是否唯一 + * + * @param role 角色信息 + * @return 结果 + */ + @Override + public boolean checkRoleKeyUnique(SysRoleBo role) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysRole::getRoleKey, role.getRoleKey()) + .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId())); + return !exist; + } + + /** + * 校验角色是否允许操作 + * + * @param role 角色信息 + */ + @Override + public void checkRoleAllowed(SysRoleBo role) { + if (ObjectUtil.isNotNull(role.getRoleId()) && LoginHelper.isSuperAdmin(role.getRoleId())) { + throw new ServiceException("不允许操作超级管理员角色"); + } + String[] keys = new String[]{TenantConstants.SUPER_ADMIN_ROLE_KEY, TenantConstants.TENANT_ADMIN_ROLE_KEY}; + // 新增不允许使用 管理员标识符 + if (ObjectUtil.isNull(role.getRoleId()) + && StringUtils.equalsAny(role.getRoleKey(), keys)) { + throw new ServiceException("不允许使用系统内置管理员角色标识符!"); + } + // 修改不允许修改 管理员标识符 + if (ObjectUtil.isNotNull(role.getRoleId())) { + SysRole sysRole = baseMapper.selectById(role.getRoleId()); + // 如果标识符不相等 判断为修改了管理员标识符 + if (!StringUtils.equals(sysRole.getRoleKey(), role.getRoleKey())) { + if (StringUtils.equalsAny(sysRole.getRoleKey(), keys)) { + throw new ServiceException("不允许修改系统内置管理员角色标识符!"); + } else if (StringUtils.equalsAny(role.getRoleKey(), keys)) { + throw new ServiceException("不允许使用系统内置管理员角色标识符!"); + } + } + } + } + + /** + * 校验角色是否有数据权限 + * + * @param roleId 角色id + */ + @Override + public void checkRoleDataScope(Long roleId) { + if (ObjectUtil.isNull(roleId)) { + return; + } + if (LoginHelper.isSuperAdmin()) { + return; + } + List roles = this.selectRoleList(new SysRoleBo(roleId)); + if (CollUtil.isEmpty(roles)) { + throw new ServiceException("没有权限访问角色数据!"); + } + + } + + /** + * 通过角色ID查询角色使用数量 + * + * @param roleId 角色ID + * @return 结果 + */ + @Override + public long countUserRoleByRoleId(Long roleId) { + return userRoleMapper.selectCount(new LambdaQueryWrapper().eq(SysUserRole::getRoleId, roleId)); + } + + /** + * 新增保存角色信息 + * + * @param bo 角色信息 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertRole(SysRoleBo bo) { + SysRole role = MapstructUtils.convert(bo, SysRole.class); + // 新增角色信息 + baseMapper.insert(role); + bo.setRoleId(role.getRoleId()); + return insertRoleMenu(bo); + } + + /** + * 修改保存角色信息 + * + * @param bo 角色信息 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int updateRole(SysRoleBo bo) { + SysRole role = MapstructUtils.convert(bo, SysRole.class); + + if (SystemConstants.DISABLE.equals(role.getStatus()) && this.countUserRoleByRoleId(role.getRoleId()) > 0) { + throw new ServiceException("角色已分配,不能禁用!"); + } + // 修改角色信息 + baseMapper.updateById(role); + // 删除角色与菜单关联 + roleMenuMapper.delete(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, role.getRoleId())); + return insertRoleMenu(bo); + } + + /** + * 修改角色状态 + * + * @param roleId 角色ID + * @param status 角色状态 + * @return 结果 + */ + @Override + public int updateRoleStatus(Long roleId, String status) { + if (SystemConstants.DISABLE.equals(status) && this.countUserRoleByRoleId(roleId) > 0) { + throw new ServiceException("角色已分配,不能禁用!"); + } + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysRole::getStatus, status) + .eq(SysRole::getRoleId, roleId)); + } + + /** + * 修改数据权限信息 + * + * @param bo 角色信息 + * @return 结果 + */ + @CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#bo.roleId") + @Override + @Transactional(rollbackFor = Exception.class) + public int authDataScope(SysRoleBo bo) { + SysRole role = MapstructUtils.convert(bo, SysRole.class); + // 修改角色信息 + baseMapper.updateById(role); + // 删除角色与部门关联 + roleDeptMapper.delete(new LambdaQueryWrapper().eq(SysRoleDept::getRoleId, role.getRoleId())); + // 新增角色和部门信息(数据权限) + return insertRoleDept(bo); + } + + /** + * 新增角色菜单信息 + * + * @param role 角色对象 + */ + private int insertRoleMenu(SysRoleBo role) { + int rows = 1; + // 新增用户与角色管理 + List list = new ArrayList<>(); + for (Long menuId : role.getMenuIds()) { + SysRoleMenu rm = new SysRoleMenu(); + rm.setRoleId(role.getRoleId()); + rm.setMenuId(menuId); + list.add(rm); + } + if (list.size() > 0) { + rows = roleMenuMapper.insertBatch(list) ? list.size() : 0; + } + return rows; + } + + /** + * 新增角色部门信息(数据权限) + * + * @param role 角色对象 + */ + private int insertRoleDept(SysRoleBo role) { + int rows = 1; + // 新增角色与部门(数据权限)管理 + List list = new ArrayList<>(); + for (Long deptId : role.getDeptIds()) { + SysRoleDept rd = new SysRoleDept(); + rd.setRoleId(role.getRoleId()); + rd.setDeptId(deptId); + list.add(rd); + } + if (list.size() > 0) { + rows = roleDeptMapper.insertBatch(list) ? list.size() : 0; + } + return rows; + } + + /** + * 通过角色ID删除角色 + * + * @param roleId 角色ID + * @return 结果 + */ + @CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#roleId") + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteRoleById(Long roleId) { + // 删除角色与菜单关联 + roleMenuMapper.delete(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, roleId)); + // 删除角色与部门关联 + roleDeptMapper.delete(new LambdaQueryWrapper().eq(SysRoleDept::getRoleId, roleId)); + return baseMapper.deleteById(roleId); + } + + /** + * 批量删除角色信息 + * + * @param roleIds 需要删除的角色ID + * @return 结果 + */ + @CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, allEntries = true) + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteRoleByIds(Long[] roleIds) { + for (Long roleId : roleIds) { + SysRole role = baseMapper.selectById(roleId); + checkRoleAllowed(BeanUtil.toBean(role, SysRoleBo.class)); + checkRoleDataScope(roleId); + if (countUserRoleByRoleId(roleId) > 0) { + throw new ServiceException(String.format("%1$s已分配,不能删除!", role.getRoleName())); + } + } + List ids = Arrays.asList(roleIds); + // 删除角色与菜单关联 + roleMenuMapper.delete(new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, ids)); + // 删除角色与部门关联 + roleDeptMapper.delete(new LambdaQueryWrapper().in(SysRoleDept::getRoleId, ids)); + return baseMapper.deleteByIds(ids); + } + + /** + * 取消授权用户角色 + * + * @param userRole 用户和角色关联信息 + * @return 结果 + */ + @Override + public int deleteAuthUser(SysUserRole userRole) { + int rows = userRoleMapper.delete(new LambdaQueryWrapper() + .eq(SysUserRole::getRoleId, userRole.getRoleId()) + .eq(SysUserRole::getUserId, userRole.getUserId())); + if (rows > 0) { + cleanOnlineUser(List.of(userRole.getUserId())); + } + return rows; + } + + /** + * 批量取消授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要取消授权的用户数据ID + * @return 结果 + */ + @Override + public int deleteAuthUsers(Long roleId, Long[] userIds) { + List ids = List.of(userIds); + int rows = userRoleMapper.delete(new LambdaQueryWrapper() + .eq(SysUserRole::getRoleId, roleId) + .in(SysUserRole::getUserId, ids)); + if (rows > 0) { + cleanOnlineUser(ids); + } + return rows; + } + + /** + * 批量选择授权用户角色 + * + * @param roleId 角色ID + * @param userIds 需要授权的用户数据ID + * @return 结果 + */ + @Override + public int insertAuthUsers(Long roleId, Long[] userIds) { + // 新增用户与角色管理 + int rows = 1; + List ids = List.of(userIds); + List list = StreamUtils.toList(ids, userId -> { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + return ur; + }); + if (CollUtil.isNotEmpty(list)) { + rows = userRoleMapper.insertBatch(list) ? list.size() : 0; + } + if (rows > 0) { + cleanOnlineUser(ids); + } + return rows; + } + + @Override + public void cleanOnlineUserByRole(Long roleId) { + // 如果角色未绑定用户 直接返回 + Long num = userRoleMapper.selectCount(new LambdaQueryWrapper().eq(SysUserRole::getRoleId, roleId)); + if (num == 0) { + return; + } + List keys = StpUtil.searchTokenValue("", 0, -1, false); + if (CollUtil.isEmpty(keys)) { + return; + } + // 角色关联的在线用户量过大会导致redis阻塞卡顿 谨慎操作 + keys.parallelStream().forEach(key -> { + String token = StringUtils.substringAfterLast(key, ":"); + // 如果已经过期则跳过 + if (StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) < -1) { + return; + } + LoginUser loginUser = LoginHelper.getLoginUser(token); + if (ObjectUtil.isNull(loginUser) || CollUtil.isEmpty(loginUser.getRoles())) { + return; + } + if (loginUser.getRoles().stream().anyMatch(r -> r.getRoleId().equals(roleId))) { + try { + StpUtil.logoutByTokenValue(token); + } catch (NotLoginException ignored) { + } + } + }); + } + + @Override + public void cleanOnlineUser(List userIds) { + List keys = StpUtil.searchTokenValue("", 0, -1, false); + if (CollUtil.isEmpty(keys)) { + return; + } + // 角色关联的在线用户量过大会导致redis阻塞卡顿 谨慎操作 + keys.parallelStream().forEach(key -> { + String token = StringUtils.substringAfterLast(key, ":"); + // 如果已经过期则跳过 + if (StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) < -1) { + return; + } + LoginUser loginUser = LoginHelper.getLoginUser(token); + if (ObjectUtil.isNull(loginUser)) { + return; + } + if (userIds.contains(loginUser.getUserId())) { + try { + StpUtil.logoutByTokenValue(token); + } catch (NotLoginException ignored) { + } + } + }); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java new file mode 100644 index 0000000..8a0d45e --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSensitiveServiceImpl.java @@ -0,0 +1,47 @@ +package org.dromara.system.service.impl; + +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.ArrayUtil; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.sensitive.core.SensitiveService; +import org.dromara.common.tenant.helper.TenantHelper; +import org.springframework.stereotype.Service; + +/** + * 脱敏服务 + * 默认管理员不过滤 + * 需自行根据业务重写实现 + * + * @author Lion Li + * @version 3.6.0 + */ +@Service +public class SysSensitiveServiceImpl implements SensitiveService { + + /** + * 是否脱敏 + */ + @Override + public boolean isSensitive(String[] roleKey, String[] perms) { + if (!LoginHelper.isLogin()) { + return true; + } + boolean roleExist = ArrayUtil.isNotEmpty(roleKey); + boolean permsExist = ArrayUtil.isNotEmpty(perms); + if (roleExist && permsExist) { + if (StpUtil.hasRoleOr(roleKey) && StpUtil.hasPermissionOr(perms)) { + return false; + } + } else if (roleExist && StpUtil.hasRoleOr(roleKey)) { + return false; + } else if (permsExist && StpUtil.hasPermissionOr(perms)) { + return false; + } + + if (TenantHelper.isEnable()) { + return !LoginHelper.isSuperAdmin() && !LoginHelper.isTenantAdmin(); + } + return !LoginHelper.isSuperAdmin(); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java new file mode 100644 index 0000000..9c54cbc --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysSocialServiceImpl.java @@ -0,0 +1,112 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.system.domain.SysSocial; +import org.dromara.system.domain.bo.SysSocialBo; +import org.dromara.system.domain.vo.SysSocialVo; +import org.dromara.system.mapper.SysSocialMapper; +import org.dromara.system.service.ISysSocialService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 社会化关系Service业务层处理 + * + * @author thiszhc + * @date 2023-06-12 + */ +@RequiredArgsConstructor +@Service +public class SysSocialServiceImpl implements ISysSocialService { + + private final SysSocialMapper baseMapper; + + + /** + * 查询社会化关系 + */ + @Override + public SysSocialVo queryById(String id) { + return baseMapper.selectVoById(id); + } + + /** + * 授权列表 + */ + @Override + public List queryList(SysSocialBo bo) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper() + .eq(ObjectUtil.isNotNull(bo.getUserId()), SysSocial::getUserId, bo.getUserId()) + .eq(StringUtils.isNotBlank(bo.getAuthId()), SysSocial::getAuthId, bo.getAuthId()) + .eq(StringUtils.isNotBlank(bo.getSource()), SysSocial::getSource, bo.getSource()); + return baseMapper.selectVoList(lqw); + } + + @Override + public List queryListByUserId(Long userId) { + return baseMapper.selectVoList(new LambdaQueryWrapper().eq(SysSocial::getUserId, userId)); + } + + + /** + * 新增社会化关系 + */ + @Override + public Boolean insertByBo(SysSocialBo bo) { + SysSocial add = MapstructUtils.convert(bo, SysSocial.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + if (add != null) { + bo.setId(add.getId()); + } else { + return false; + } + } + return flag; + } + + /** + * 更新社会化关系 + */ + @Override + public Boolean updateByBo(SysSocialBo bo) { + SysSocial update = MapstructUtils.convert(bo, SysSocial.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysSocial entity) { + //TODO 做一些数据校验,如唯一约束 + } + + + /** + * 删除社会化关系 + */ + @Override + public Boolean deleteWithValidById(Long id) { + return baseMapper.deleteById(id) > 0; + } + + + /** + * 根据 authId 查询用户信息 + * + * @param authId 认证id + * @return 授权信息 + */ + @Override + public List selectByAuthId(String authId) { + return baseMapper.selectVoList(new LambdaQueryWrapper().eq(SysSocial::getAuthId, authId)); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java new file mode 100644 index 0000000..23dd052 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.java @@ -0,0 +1,168 @@ +package org.dromara.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.dto.TaskAssigneeDTO; +import org.dromara.common.core.domain.model.TaskAssigneeBody; +import org.dromara.common.core.service.TaskAssigneeService; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.SysPost; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.vo.SysDeptVo; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.domain.vo.SysRoleVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.mapper.SysDeptMapper; +import org.dromara.system.mapper.SysPostMapper; +import org.dromara.system.mapper.SysRoleMapper; +import org.dromara.system.mapper.SysUserMapper; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 工作流设计器获取任务执行人 + * + * @author Lion Li + */ +@RequiredArgsConstructor +@Service +public class SysTaskAssigneeServiceImpl implements TaskAssigneeService { + + private final SysPostMapper postMapper; + private final SysDeptMapper deptMapper; + private final SysUserMapper userMapper; + private final SysRoleMapper roleMapper; + + /** + * 查询角色并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectRolesByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("r.del_flag", SystemConstants.NORMAL) + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "r.role_name", taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "r.role_key", taskQuery.getHandlerName()) + .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), + "r.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) + .orderByAsc("r.role_sort").orderByAsc("r.create_time"); + Page page = roleMapper.selectPageRoleList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysRoleVo::getRoleId, SysRoleVo::getRoleKey, SysRoleVo::getRoleName, null, SysRoleVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + + /** + * 查询岗位并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectPostsByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysPost::getPostCategory, taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysPost::getPostName, taskQuery.getHandlerName()) + .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), + SysPost::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()); + if (StringUtils.isNotBlank(taskQuery.getGroupId())) { + Long belongDeptId = Long.valueOf(taskQuery.getGroupId()); + wrapper.and(x -> { + List deptList = deptMapper.selectListByParentId(belongDeptId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(belongDeptId); + x.in(SysPost::getDeptId, deptIds); + }); + } + Page page = postMapper.selectPagePostList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysPostVo::getPostId, SysPostVo::getPostCategory, SysPostVo::getPostName, SysPostVo::getDeptId, SysPostVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + + /** + * 查询部门并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectDeptsByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(SysDept::getDelFlag, SystemConstants.NORMAL) + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), SysDept::getDeptCategory, taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), SysDept::getDeptName, taskQuery.getHandlerName()) + .between(StringUtils.isNotBlank(taskQuery.getBeginTime()) && StringUtils.isNotBlank(taskQuery.getEndTime()), + SysDept::getCreateTime, taskQuery.getBeginTime(), taskQuery.getEndTime()) + .orderByAsc(SysDept::getAncestors) + .orderByAsc(SysDept::getParentId) + .orderByAsc(SysDept::getOrderNum) + .orderByAsc(SysDept::getDeptId); + if (StringUtils.isNotBlank(taskQuery.getGroupId())) { + //部门树搜索 + wrapper.and(x -> { + Long parentId = Long.valueOf(taskQuery.getGroupId()); + List deptList = deptMapper.selectListByParentId(parentId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(parentId); + x.in(SysDept::getDeptId, deptIds); + }); + } + Page page = deptMapper.selectPageDeptList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysDeptVo::getDeptId, SysDeptVo::getDeptCategory, SysDeptVo::getDeptName, SysDeptVo::getParentId, SysDeptVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + + + /** + * 查询用户并返回任务指派的列表,支持分页 + * + * @param taskQuery 查询条件 + * @return 办理人 + */ + @Override + public TaskAssigneeDTO selectUsersByTaskAssigneeList(TaskAssigneeBody taskQuery) { + PageQuery pageQuery = new PageQuery(taskQuery.getPageSize(), taskQuery.getPageNum()); + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("u.del_flag", SystemConstants.NORMAL) + .like(StringUtils.isNotBlank(taskQuery.getHandlerCode()), "u.user_name", taskQuery.getHandlerCode()) + .like(StringUtils.isNotBlank(taskQuery.getHandlerName()), "u.nick_name", taskQuery.getHandlerName()) + .between(taskQuery.getBeginTime() != null && taskQuery.getEndTime() != null, + "u.create_time", taskQuery.getBeginTime(), taskQuery.getEndTime()) + .orderByAsc("u.user_id"); + if (StringUtils.isNotBlank(taskQuery.getGroupId())) { + //部门树搜索 + wrapper.and(x -> { + Long parentId = Long.valueOf(taskQuery.getGroupId()); + List deptList = deptMapper.selectListByParentId(parentId); + List deptIds = StreamUtils.toList(deptList, SysDept::getDeptId); + deptIds.add(parentId); + x.in("u.dept_id", deptIds); + }); + } + Page page = userMapper.selectPageUserList(pageQuery.build(), wrapper); + // 使用封装的字段映射方法进行转换 + List handlers = TaskAssigneeDTO.convertToHandlerList(page.getRecords(), + SysUserVo::getUserId, SysUserVo::getUserName, SysUserVo::getNickName, SysUserVo::getDeptId, SysUserVo::getCreateTime); + return new TaskAssigneeDTO(page.getTotal(), handlers); + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java new file mode 100644 index 0000000..8d69e96 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantPackageServiceImpl.java @@ -0,0 +1,157 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.system.domain.SysTenant; +import org.dromara.system.domain.SysTenantPackage; +import org.dromara.system.domain.bo.SysTenantPackageBo; +import org.dromara.system.domain.vo.SysTenantPackageVo; +import org.dromara.system.mapper.SysTenantMapper; +import org.dromara.system.mapper.SysTenantPackageMapper; +import org.dromara.system.service.ISysTenantPackageService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +/** + * 租户套餐Service业务层处理 + * + * @author Michelle.Chung + */ +@RequiredArgsConstructor +@Service +public class SysTenantPackageServiceImpl implements ISysTenantPackageService { + + private final SysTenantPackageMapper baseMapper; + private final SysTenantMapper tenantMapper; + + /** + * 查询租户套餐 + */ + @Override + public SysTenantPackageVo queryById(Long packageId){ + return baseMapper.selectVoById(packageId); + } + + /** + * 查询租户套餐列表 + */ + @Override + public TableDataInfo queryPageList(SysTenantPackageBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + @Override + public List selectList() { + return baseMapper.selectVoList(new LambdaQueryWrapper() + .eq(SysTenantPackage::getStatus, SystemConstants.NORMAL)); + } + + /** + * 查询租户套餐列表 + */ + @Override + public List queryList(SysTenantPackageBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysTenantPackageBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StringUtils.isNotBlank(bo.getPackageName()), SysTenantPackage::getPackageName, bo.getPackageName()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysTenantPackage::getStatus, bo.getStatus()); + lqw.orderByAsc(SysTenantPackage::getPackageId); + return lqw; + } + + /** + * 新增租户套餐 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(SysTenantPackageBo bo) { + SysTenantPackage add = MapstructUtils.convert(bo, SysTenantPackage.class); + // 保存菜单id + List menuIds = Arrays.asList(bo.getMenuIds()); + if (CollUtil.isNotEmpty(menuIds)) { + add.setMenuIds(StringUtils.join(menuIds, ", ")); + } else { + add.setMenuIds(""); + } + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setPackageId(add.getPackageId()); + } + return flag; + } + + /** + * 修改租户套餐 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(SysTenantPackageBo bo) { + SysTenantPackage update = MapstructUtils.convert(bo, SysTenantPackage.class); + // 保存菜单id + List menuIds = Arrays.asList(bo.getMenuIds()); + if (CollUtil.isNotEmpty(menuIds)) { + update.setMenuIds(StringUtils.join(menuIds, ", ")); + } else { + update.setMenuIds(""); + } + return baseMapper.updateById(update) > 0; + } + + /** + * 校验套餐名称是否唯一 + */ + @Override + public boolean checkPackageNameUnique(SysTenantPackageBo bo) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysTenantPackage::getPackageName, bo.getPackageName()) + .ne(ObjectUtil.isNotNull(bo.getPackageId()), SysTenantPackage::getPackageId, bo.getPackageId())); + return !exist; + } + + /** + * 修改套餐状态 + * + * @param bo 套餐信息 + * @return 结果 + */ + @Override + public int updatePackageStatus(SysTenantPackageBo bo) { + SysTenantPackage tenantPackage = MapstructUtils.convert(bo, SysTenantPackage.class); + return baseMapper.updateById(tenantPackage); + } + + /** + * 批量删除租户套餐 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + boolean exists = tenantMapper.exists(new LambdaQueryWrapper().in(SysTenant::getPackageId, ids)); + if (exists) { + throw new ServiceException("租户套餐已被使用"); + } + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java new file mode 100644 index 0000000..f31bd30 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysTenantServiceImpl.java @@ -0,0 +1,477 @@ +package org.dromara.system.service.impl; + +import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.constant.Constants; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.WorkflowService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.utils.CacheUtils; +import org.dromara.common.tenant.core.TenantEntity; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.system.domain.*; +import org.dromara.system.domain.bo.SysTenantBo; +import org.dromara.system.domain.vo.SysTenantVo; +import org.dromara.system.mapper.*; +import org.dromara.system.service.ISysTenantService; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * 租户Service业务层处理 + * + * @author Michelle.Chung + */ +@RequiredArgsConstructor +@Service +public class SysTenantServiceImpl implements ISysTenantService { + + private final SysTenantMapper baseMapper; + private final SysTenantPackageMapper tenantPackageMapper; + private final SysUserMapper userMapper; + private final SysDeptMapper deptMapper; + private final SysRoleMapper roleMapper; + private final SysRoleMenuMapper roleMenuMapper; + private final SysRoleDeptMapper roleDeptMapper; + private final SysUserRoleMapper userRoleMapper; + private final SysDictTypeMapper dictTypeMapper; + private final SysDictDataMapper dictDataMapper; + private final SysConfigMapper configMapper; + + /** + * 查询租户 + */ + @Override + public SysTenantVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 基于租户ID查询租户 + */ + @Cacheable(cacheNames = CacheNames.SYS_TENANT, key = "#tenantId") + @Override + public SysTenantVo queryByTenantId(String tenantId) { + return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysTenant::getTenantId, tenantId)); + } + + /** + * 查询租户列表 + */ + @Override + public TableDataInfo queryPageList(SysTenantBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询租户列表 + */ + @Override + public List queryList(SysTenantBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysTenantBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getTenantId()), SysTenant::getTenantId, bo.getTenantId()); + lqw.like(StringUtils.isNotBlank(bo.getContactUserName()), SysTenant::getContactUserName, bo.getContactUserName()); + lqw.eq(StringUtils.isNotBlank(bo.getContactPhone()), SysTenant::getContactPhone, bo.getContactPhone()); + lqw.like(StringUtils.isNotBlank(bo.getCompanyName()), SysTenant::getCompanyName, bo.getCompanyName()); + lqw.eq(StringUtils.isNotBlank(bo.getLicenseNumber()), SysTenant::getLicenseNumber, bo.getLicenseNumber()); + lqw.eq(StringUtils.isNotBlank(bo.getAddress()), SysTenant::getAddress, bo.getAddress()); + lqw.eq(StringUtils.isNotBlank(bo.getIntro()), SysTenant::getIntro, bo.getIntro()); + lqw.like(StringUtils.isNotBlank(bo.getDomain()), SysTenant::getDomain, bo.getDomain()); + lqw.eq(bo.getPackageId() != null, SysTenant::getPackageId, bo.getPackageId()); + lqw.eq(bo.getExpireTime() != null, SysTenant::getExpireTime, bo.getExpireTime()); + lqw.eq(bo.getAccountCount() != null, SysTenant::getAccountCount, bo.getAccountCount()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysTenant::getStatus, bo.getStatus()); + lqw.orderByAsc(SysTenant::getId); + return lqw; + } + + /** + * 新增租户 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(SysTenantBo bo) { + SysTenant add = MapstructUtils.convert(bo, SysTenant.class); + + // 获取所有租户编号 + List tenantIds = baseMapper.selectObjs( + new LambdaQueryWrapper().select(SysTenant::getTenantId), x -> { + return Convert.toStr(x); + }); + String tenantId = generateTenantId(tenantIds); + add.setTenantId(tenantId); + boolean flag = baseMapper.insert(add) > 0; + if (!flag) { + throw new ServiceException("创建租户失败"); + } + bo.setId(add.getId()); + + // 根据套餐创建角色 + Long roleId = createTenantRole(tenantId, bo.getPackageId()); + + // 创建部门: 公司名是部门名称 + SysDept dept = new SysDept(); + dept.setTenantId(tenantId); + dept.setDeptName(bo.getCompanyName()); + dept.setParentId(Constants.TOP_PARENT_ID); + dept.setAncestors(Constants.TOP_PARENT_ID.toString()); + deptMapper.insert(dept); + Long deptId = dept.getDeptId(); + + // 角色和部门关联表 + SysRoleDept roleDept = new SysRoleDept(); + roleDept.setRoleId(roleId); + roleDept.setDeptId(deptId); + roleDeptMapper.insert(roleDept); + + // 创建系统用户 + SysUser user = new SysUser(); + user.setTenantId(tenantId); + user.setUserName(bo.getUsername()); + user.setNickName(bo.getUsername()); + user.setPassword(BCrypt.hashpw(bo.getPassword())); + user.setDeptId(deptId); + userMapper.insert(user); + //新增系统用户后,默认当前用户为部门的负责人 + SysDept sd = new SysDept(); + sd.setLeader(user.getUserId()); + sd.setDeptId(deptId); + deptMapper.updateById(sd); + + // 用户和角色关联表 + SysUserRole userRole = new SysUserRole(); + userRole.setUserId(user.getUserId()); + userRole.setRoleId(roleId); + userRoleMapper.insert(userRole); + + String defaultTenantId = TenantConstants.DEFAULT_TENANT_ID; + List dictTypeList = dictTypeMapper.selectList( + new LambdaQueryWrapper().eq(SysDictType::getTenantId, defaultTenantId)); + List dictDataList = dictDataMapper.selectList( + new LambdaQueryWrapper().eq(SysDictData::getTenantId, defaultTenantId)); + for (SysDictType dictType : dictTypeList) { + dictType.setDictId(null); + dictType.setTenantId(tenantId); + } + for (SysDictData dictData : dictDataList) { + dictData.setDictCode(null); + dictData.setTenantId(tenantId); + } + dictTypeMapper.insertBatch(dictTypeList); + dictDataMapper.insertBatch(dictDataList); + + List sysConfigList = configMapper.selectList( + new LambdaQueryWrapper().eq(SysConfig::getTenantId, defaultTenantId)); + for (SysConfig config : sysConfigList) { + config.setConfigId(null); + config.setTenantId(tenantId); + } + configMapper.insertBatch(sysConfigList); + + // 未开启工作流不执行下方操作 + if (SpringUtils.getProperty("warm-flow.enabled", Boolean.class, false)) { + WorkflowService workflowService = SpringUtils.getBean(WorkflowService.class); + // 新增租户流程定义 + workflowService.syncDef(tenantId); + } + return true; + } + + /** + * 生成租户id + * + * @param tenantIds 已有租户id列表 + * @return 租户id + */ + private String generateTenantId(List tenantIds) { + // 随机生成6位 + String numbers = RandomUtil.randomNumbers(6); + // 判断是否存在,如果存在则重新生成 + if (tenantIds.contains(numbers)) { + return generateTenantId(tenantIds); + } + return numbers; + } + + /** + * 根据租户菜单创建租户角色 + * + * @param tenantId 租户编号 + * @param packageId 租户套餐id + * @return 角色id + */ + private Long createTenantRole(String tenantId, Long packageId) { + // 获取租户套餐 + SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId); + if (ObjectUtil.isNull(tenantPackage)) { + throw new ServiceException("套餐不存在"); + } + // 获取套餐菜单id + List menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong); + + // 创建角色 + SysRole role = new SysRole(); + role.setTenantId(tenantId); + role.setRoleName(TenantConstants.TENANT_ADMIN_ROLE_NAME); + role.setRoleKey(TenantConstants.TENANT_ADMIN_ROLE_KEY); + role.setRoleSort(1); + role.setStatus(SystemConstants.NORMAL); + roleMapper.insert(role); + Long roleId = role.getRoleId(); + + // 创建角色菜单 + List roleMenus = new ArrayList<>(menuIds.size()); + menuIds.forEach(menuId -> { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + roleMenus.add(roleMenu); + }); + roleMenuMapper.insertBatch(roleMenus); + + return roleId; + } + + /** + * 修改租户 + */ + @CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId") + @Override + public Boolean updateByBo(SysTenantBo bo) { + SysTenant tenant = MapstructUtils.convert(bo, SysTenant.class); + tenant.setTenantId(null); + tenant.setPackageId(null); + return baseMapper.updateById(tenant) > 0; + } + + /** + * 修改租户状态 + * + * @param bo 租户信息 + * @return 结果 + */ + @CacheEvict(cacheNames = CacheNames.SYS_TENANT, key = "#bo.tenantId") + @Override + public int updateTenantStatus(SysTenantBo bo) { + SysTenant tenant = new SysTenant(); + tenant.setId(bo.getId()); + tenant.setStatus(bo.getStatus()); + return baseMapper.updateById(tenant); + } + + /** + * 校验租户是否允许操作 + * + * @param tenantId 租户ID + */ + @Override + public void checkTenantAllowed(String tenantId) { + if (ObjectUtil.isNotNull(tenantId) && TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) { + throw new ServiceException("不允许操作管理租户"); + } + } + + /** + * 批量删除租户 + */ + @CacheEvict(cacheNames = CacheNames.SYS_TENANT, allEntries = true) + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + // 做一些业务上的校验,判断是否需要校验 + if (ids.contains(TenantConstants.SUPER_ADMIN_ID)) { + throw new ServiceException("超管租户不能删除"); + } + } + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 校验企业名称是否唯一 + */ + @Override + public boolean checkCompanyNameUnique(SysTenantBo bo) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysTenant::getCompanyName, bo.getCompanyName()) + .ne(ObjectUtil.isNotNull(bo.getTenantId()), SysTenant::getTenantId, bo.getTenantId())); + return !exist; + } + + /** + * 校验账号余额 + */ + @Override + public boolean checkAccountBalance(String tenantId) { + SysTenantVo tenant = SpringUtils.getAopProxy(this).queryByTenantId(tenantId); + // 如果余额为-1代表不限制 + if (tenant.getAccountCount() == -1) { + return true; + } + Long userNumber = userMapper.selectCount(new LambdaQueryWrapper<>()); + // 如果余额大于0代表还有可用名额 + return tenant.getAccountCount() - userNumber > 0; + } + + /** + * 校验有效期 + */ + @Override + public boolean checkExpireTime(String tenantId) { + SysTenantVo tenant = SpringUtils.getAopProxy(this).queryByTenantId(tenantId); + // 如果未设置过期时间代表不限制 + if (ObjectUtil.isNull(tenant.getExpireTime())) { + return true; + } + // 如果当前时间在过期时间之前则通过 + return new Date().before(tenant.getExpireTime()); + } + + /** + * 同步租户套餐 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean syncTenantPackage(String tenantId, Long packageId) { + SysTenantPackage tenantPackage = tenantPackageMapper.selectById(packageId); + List roles = roleMapper.selectList( + new LambdaQueryWrapper().eq(SysRole::getTenantId, tenantId)); + List roleIds = new ArrayList<>(roles.size() - 1); + List menuIds = StringUtils.splitTo(tenantPackage.getMenuIds(), Convert::toLong); + roles.forEach(item -> { + if (TenantConstants.TENANT_ADMIN_ROLE_KEY.equals(item.getRoleKey())) { + List roleMenus = new ArrayList<>(menuIds.size()); + menuIds.forEach(menuId -> { + SysRoleMenu roleMenu = new SysRoleMenu(); + roleMenu.setRoleId(item.getRoleId()); + roleMenu.setMenuId(menuId); + roleMenus.add(roleMenu); + }); + roleMenuMapper.delete(new LambdaQueryWrapper().eq(SysRoleMenu::getRoleId, item.getRoleId())); + roleMenuMapper.insertBatch(roleMenus); + } else { + roleIds.add(item.getRoleId()); + } + }); + if (!roleIds.isEmpty()) { + roleMenuMapper.delete( + new LambdaQueryWrapper().in(SysRoleMenu::getRoleId, roleIds).notIn(!menuIds.isEmpty(), SysRoleMenu::getMenuId, menuIds)); + } + return true; + } + + /** + * 同步租户字典 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public void syncTenantDict() { + // 查询超管 所有字典数据 + List dictTypeList = new ArrayList<>(); + List dictDataList = new ArrayList<>(); + TenantHelper.ignore(() -> { + dictTypeList.addAll(dictTypeMapper.selectList()); + dictDataList.addAll(dictDataMapper.selectList()); + }); + Map> typeMap = StreamUtils.groupByKey(dictTypeList, TenantEntity::getTenantId); + Map>> typeDataMap = StreamUtils.groupBy2Key( + dictDataList, TenantEntity::getTenantId, SysDictData::getDictType); + // 管理租户字典数据 + List defaultTypeMap = typeMap.get(TenantConstants.DEFAULT_TENANT_ID); + Map> defaultTypeDataMap = typeDataMap.get(TenantConstants.DEFAULT_TENANT_ID); + + // 获取所有租户编号 + List tenantIds = baseMapper.selectObjs( + new LambdaQueryWrapper().select(SysTenant::getTenantId) + .eq(SysTenant::getStatus, SystemConstants.NORMAL), x -> { + return Convert.toStr(x); + }); + List saveTypeList = new ArrayList<>(); + List saveDataList = new ArrayList<>(); + Set set = new HashSet<>(); + for (String tenantId : tenantIds) { + if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) { + continue; + } + for (SysDictType dictType : defaultTypeMap) { + List typeList = StreamUtils.toList(typeMap.get(tenantId), SysDictType::getDictType); + List dataList = defaultTypeDataMap.get(dictType.getDictType()); + if (typeList.contains(dictType.getDictType())) { + List dataListTenant = typeDataMap.get(tenantId).get(dictType.getDictType()); + Map map = StreamUtils.toIdentityMap(dataListTenant, SysDictData::getDictValue); + for (SysDictData dictData : dataList) { + if (!map.containsKey(dictData.getDictValue())) { + SysDictData data = BeanUtil.toBean(dictData, SysDictData.class); + // 设置字典编码为 null + data.setDictCode(null); + data.setTenantId(tenantId); + data.setCreateTime(null); + data.setUpdateTime(null); + set.add(tenantId); + saveDataList.add(data); + } + } + } else { + SysDictType type = BeanUtil.toBean(dictType, SysDictType.class); + type.setDictId(null); + type.setTenantId(tenantId); + type.setCreateTime(null); + type.setUpdateTime(null); + set.add(tenantId); + saveTypeList.add(type); + if (CollUtil.isNotEmpty(dataList)) { + // 筛选出 dictType 对应的 data + for (SysDictData dictData : dataList) { + SysDictData data = BeanUtil.toBean(dictData, SysDictData.class); + // 设置字典编码为 null + data.setDictCode(null); + data.setTenantId(tenantId); + data.setCreateTime(null); + data.setUpdateTime(null); + set.add(tenantId); + saveDataList.add(data); + } + } + } + } + } + TenantHelper.ignore(() -> { + if (CollUtil.isNotEmpty(saveTypeList)) { + dictTypeMapper.insertBatch(saveTypeList); + } + if (CollUtil.isNotEmpty(saveDataList)) { + dictDataMapper.insertBatch(saveDataList); + } + }); + for (String tenantId : set) { + TenantHelper.dynamic(tenantId, () -> CacheUtils.clear(CacheNames.SYS_DICT)); + } + } + +} diff --git a/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java new file mode 100644 index 0000000..4081170 --- /dev/null +++ b/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -0,0 +1,722 @@ +package org.dromara.system.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.constant.CacheNames; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.UserService; +import org.dromara.common.core.utils.*; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.system.domain.*; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.domain.vo.SysRoleVo; +import org.dromara.system.domain.vo.SysUserExportVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.mapper.*; +import org.dromara.system.service.ISysUserService; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 用户 业务层处理 + * + * @author Lion Li + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SysUserServiceImpl implements ISysUserService, UserService { + + private final SysUserMapper baseMapper; + private final SysDeptMapper deptMapper; + private final SysRoleMapper roleMapper; + private final SysPostMapper postMapper; + private final SysUserRoleMapper userRoleMapper; + private final SysUserPostMapper userPostMapper; + + @Override + public TableDataInfo selectPageUserList(SysUserBo user, PageQuery pageQuery) { + Page page = baseMapper.selectPageUserList(pageQuery.build(), this.buildQueryWrapper(user)); + return TableDataInfo.build(page); + } + + /** + * 根据条件分页查询用户列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public List selectUserExportList(SysUserBo user) { + return baseMapper.selectUserExportList(this.buildQueryWrapper(user)); + } + + private Wrapper buildQueryWrapper(SysUserBo user) { + Map params = user.getParams(); + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("u.del_flag", SystemConstants.NORMAL) + .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId()) + .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) + .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) + .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) + .between(params.get("beginTime") != null && params.get("endTime") != null, + "u.create_time", params.get("beginTime"), params.get("endTime")) + .and(ObjectUtil.isNotNull(user.getDeptId()), w -> { + List deptList = deptMapper.selectListByParentId(user.getDeptId()); + List ids = StreamUtils.toList(deptList, SysDept::getDeptId); + ids.add(user.getDeptId()); + w.in("u.dept_id", ids); + }).orderByAsc("u.user_id"); + if (StringUtils.isNotBlank(user.getExcludeUserIds())) { + wrapper.notIn("u.user_id", StringUtils.splitTo(user.getExcludeUserIds(), Convert::toLong)); + } + return wrapper; + } + + /** + * 根据条件分页查询已分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public TableDataInfo selectAllocatedList(SysUserBo user, PageQuery pageQuery) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("u.del_flag", SystemConstants.NORMAL) + .eq(ObjectUtil.isNotNull(user.getRoleId()), "r.role_id", user.getRoleId()) + .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) + .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) + .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) + .orderByAsc("u.user_id"); + Page page = baseMapper.selectAllocatedList(pageQuery.build(), wrapper); + return TableDataInfo.build(page); + } + + /** + * 根据条件分页查询未分配用户角色列表 + * + * @param user 用户信息 + * @return 用户信息集合信息 + */ + @Override + public TableDataInfo selectUnallocatedList(SysUserBo user, PageQuery pageQuery) { + List userIds = userRoleMapper.selectUserIdsByRoleId(user.getRoleId()); + QueryWrapper wrapper = Wrappers.query(); + wrapper.eq("u.del_flag", SystemConstants.NORMAL) + .and(w -> w.ne("r.role_id", user.getRoleId()).or().isNull("r.role_id")) + .notIn(CollUtil.isNotEmpty(userIds), "u.user_id", userIds) + .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) + .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) + .orderByAsc("u.user_id"); + Page page = baseMapper.selectUnallocatedList(pageQuery.build(), wrapper); + return TableDataInfo.build(page); + } + + /** + * 通过用户名查询用户 + * + * @param userName 用户名 + * @return 用户对象信息 + */ + @Override + public SysUserVo selectUserByUserName(String userName) { + return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getUserName, userName)); + } + + /** + * 通过手机号查询用户 + * + * @param phonenumber 手机号 + * @return 用户对象信息 + */ + @Override + public SysUserVo selectUserByPhonenumber(String phonenumber) { + return baseMapper.selectVoOne(new LambdaQueryWrapper().eq(SysUser::getPhonenumber, phonenumber)); + } + + /** + * 通过用户ID查询用户 + * + * @param userId 用户ID + * @return 用户对象信息 + */ + @Override + public SysUserVo selectUserById(Long userId) { + SysUserVo user = baseMapper.selectVoById(userId); + if (ObjectUtil.isNull(user)) { + return user; + } + user.setRoles(roleMapper.selectRolesByUserId(user.getUserId())); + return user; + } + + /** + * 通过用户ID串查询用户 + * + * @param userIds 用户ID串 + * @param deptId 部门id + * @return 用户列表信息 + */ + @Override + public List selectUserByIds(List userIds, Long deptId) { + return baseMapper.selectUserList(new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName) + .eq(SysUser::getStatus, SystemConstants.NORMAL) + .eq(ObjectUtil.isNotNull(deptId), SysUser::getDeptId, deptId) + .in(CollUtil.isNotEmpty(userIds), SysUser::getUserId, userIds)); + } + + /** + * 查询用户所属角色组 + * + * @param userId 用户ID + * @return 结果 + */ + @Override + public String selectUserRoleGroup(Long userId) { + List list = roleMapper.selectRolesByUserId(userId); + if (CollUtil.isEmpty(list)) { + return StringUtils.EMPTY; + } + return StreamUtils.join(list, SysRoleVo::getRoleName); + } + + /** + * 查询用户所属岗位组 + * + * @param userId 用户ID + * @return 结果 + */ + @Override + public String selectUserPostGroup(Long userId) { + List list = postMapper.selectPostsByUserId(userId); + if (CollUtil.isEmpty(list)) { + return StringUtils.EMPTY; + } + return StreamUtils.join(list, SysPostVo::getPostName); + } + + /** + * 校验用户名称是否唯一 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean checkUserNameUnique(SysUserBo user) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysUser::getUserName, user.getUserName()) + .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + return !exist; + } + + /** + * 校验手机号码是否唯一 + * + * @param user 用户信息 + */ + @Override + public boolean checkPhoneUnique(SysUserBo user) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysUser::getPhonenumber, user.getPhonenumber()) + .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + return !exist; + } + + /** + * 校验email是否唯一 + * + * @param user 用户信息 + */ + @Override + public boolean checkEmailUnique(SysUserBo user) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(SysUser::getEmail, user.getEmail()) + .ne(ObjectUtil.isNotNull(user.getUserId()), SysUser::getUserId, user.getUserId())); + return !exist; + } + + /** + * 校验用户是否允许操作 + * + * @param userId 用户ID + */ + @Override + public void checkUserAllowed(Long userId) { + if (ObjectUtil.isNotNull(userId) && LoginHelper.isSuperAdmin(userId)) { + throw new ServiceException("不允许操作超级管理员用户"); + } + } + + /** + * 校验用户是否有数据权限 + * + * @param userId 用户id + */ + @Override + public void checkUserDataScope(Long userId) { + if (ObjectUtil.isNull(userId)) { + return; + } + if (LoginHelper.isSuperAdmin()) { + return; + } + if (baseMapper.countUserById(userId) == 0) { + throw new ServiceException("没有权限访问用户数据!"); + } + } + + /** + * 新增保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int insertUser(SysUserBo user) { + SysUser sysUser = MapstructUtils.convert(user, SysUser.class); + // 新增用户信息 + int rows = baseMapper.insert(sysUser); + user.setUserId(sysUser.getUserId()); + // 新增用户岗位关联 + insertUserPost(user, false); + // 新增用户与角色管理 + insertUserRole(user, false); + return rows; + } + + /** + * 注册用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + public boolean registerUser(SysUserBo user, String tenantId) { + user.setCreateBy(0L); + user.setUpdateBy(0L); + SysUser sysUser = MapstructUtils.convert(user, SysUser.class); + sysUser.setTenantId(tenantId); + return baseMapper.insert(sysUser) > 0; + } + + /** + * 修改保存用户信息 + * + * @param user 用户信息 + * @return 结果 + */ + @Override + @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId") + @Transactional(rollbackFor = Exception.class) + public int updateUser(SysUserBo user) { + // 新增用户与角色管理 + insertUserRole(user, true); + // 新增用户与岗位管理 + insertUserPost(user, true); + SysUser sysUser = MapstructUtils.convert(user, SysUser.class); + // 防止错误更新后导致的数据误删除 + int flag = baseMapper.updateById(sysUser); + if (flag < 1) { + throw new ServiceException("修改用户" + user.getUserName() + "信息失败"); + } + return flag; + } + + /** + * 用户授权角色 + * + * @param userId 用户ID + * @param roleIds 角色组 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void insertUserAuth(Long userId, Long[] roleIds) { + insertUserRole(userId, roleIds, true); + } + + /** + * 修改用户状态 + * + * @param userId 用户ID + * @param status 帐号状态 + * @return 结果 + */ + @Override + public int updateUserStatus(Long userId, String status) { + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysUser::getStatus, status) + .eq(SysUser::getUserId, userId)); + } + + /** + * 修改用户基本信息 + * + * @param user 用户信息 + * @return 结果 + */ + @CacheEvict(cacheNames = CacheNames.SYS_NICKNAME, key = "#user.userId") + @Override + public int updateUserProfile(SysUserBo user) { + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(ObjectUtil.isNotNull(user.getNickName()), SysUser::getNickName, user.getNickName()) + .set(SysUser::getPhonenumber, user.getPhonenumber()) + .set(SysUser::getEmail, user.getEmail()) + .set(SysUser::getSex, user.getSex()) + .eq(SysUser::getUserId, user.getUserId())); + } + + /** + * 修改用户头像 + * + * @param userId 用户ID + * @param avatar 头像地址 + * @return 结果 + */ + @Override + public boolean updateUserAvatar(Long userId, Long avatar) { + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysUser::getAvatar, avatar) + .eq(SysUser::getUserId, userId)) > 0; + } + + /** + * 重置用户密码 + * + * @param userId 用户ID + * @param password 密码 + * @return 结果 + */ + @Override + public int resetUserPwd(Long userId, String password) { + return baseMapper.update(null, + new LambdaUpdateWrapper() + .set(SysUser::getPassword, password) + .eq(SysUser::getUserId, userId)); + } + + /** + * 新增用户角色信息 + * + * @param user 用户对象 + * @param clear 清除已存在的关联数据 + */ + private void insertUserRole(SysUserBo user, boolean clear) { + this.insertUserRole(user.getUserId(), user.getRoleIds(), clear); + } + + /** + * 新增用户岗位信息 + * + * @param user 用户对象 + * @param clear 清除已存在的关联数据 + */ + private void insertUserPost(SysUserBo user, boolean clear) { + Long[] posts = user.getPostIds(); + if (ArrayUtil.isNotEmpty(posts)) { + if (clear) { + // 删除用户与岗位关联 + userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, user.getUserId())); + } + // 新增用户与岗位管理 + List list = StreamUtils.toList(List.of(posts), postId -> { + SysUserPost up = new SysUserPost(); + up.setUserId(user.getUserId()); + up.setPostId(postId); + return up; + }); + userPostMapper.insertBatch(list); + } + } + + /** + * 新增用户角色信息 + * + * @param userId 用户ID + * @param roleIds 角色组 + * @param clear 清除已存在的关联数据 + */ + private void insertUserRole(Long userId, Long[] roleIds, boolean clear) { + if (ArrayUtil.isNotEmpty(roleIds)) { + List roleList = new ArrayList<>(List.of(roleIds)); + if (!LoginHelper.isSuperAdmin(userId)) { + roleList.remove(SystemConstants.SUPER_ADMIN_ID); + } + // 判断是否具有此角色的操作权限 + List roles = roleMapper.selectRoleList( + new QueryWrapper().in("r.role_id", roleList)); + if (CollUtil.isEmpty(roles)) { + throw new ServiceException("没有权限访问角色的数据"); + } + if (clear) { + // 删除用户与角色关联 + userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); + } + // 新增用户与角色管理 + List list = StreamUtils.toList(roleList, roleId -> { + SysUserRole ur = new SysUserRole(); + ur.setUserId(userId); + ur.setRoleId(roleId); + return ur; + }); + userRoleMapper.insertBatch(list); + } + } + + /** + * 通过用户ID删除用户 + * + * @param userId 用户ID + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteUserById(Long userId) { + // 删除用户与角色关联 + userRoleMapper.delete(new LambdaQueryWrapper().eq(SysUserRole::getUserId, userId)); + // 删除用户与岗位表 + userPostMapper.delete(new LambdaQueryWrapper().eq(SysUserPost::getUserId, userId)); + // 防止更新失败导致的数据删除 + int flag = baseMapper.deleteById(userId); + if (flag < 1) { + throw new ServiceException("删除用户失败!"); + } + return flag; + } + + /** + * 批量删除用户信息 + * + * @param userIds 需要删除的用户ID + * @return 结果 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int deleteUserByIds(Long[] userIds) { + for (Long userId : userIds) { + checkUserAllowed(userId); + checkUserDataScope(userId); + } + List ids = List.of(userIds); + // 删除用户与角色关联 + userRoleMapper.delete(new LambdaQueryWrapper().in(SysUserRole::getUserId, ids)); + // 删除用户与岗位表 + userPostMapper.delete(new LambdaQueryWrapper().in(SysUserPost::getUserId, ids)); + // 防止更新失败导致的数据删除 + int flag = baseMapper.deleteByIds(ids); + if (flag < 1) { + throw new ServiceException("删除用户失败!"); + } + return flag; + } + + /** + * 通过部门id查询当前部门所有用户 + * + * @param deptId 部门ID + * @return 用户信息集合信息 + */ + @Override + public List selectUserListByDept(Long deptId) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(SysUser::getDeptId, deptId); + lqw.orderByAsc(SysUser::getUserId); + return baseMapper.selectVoList(lqw); + } + + /** + * 通过用户ID查询用户账户 + * + * @param userId 用户ID + * @return 用户账户 + */ + @Cacheable(cacheNames = CacheNames.SYS_USER_NAME, key = "#userId") + @Override + public String selectUserNameById(Long userId) { + SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() + .select(SysUser::getUserName).eq(SysUser::getUserId, userId)); + return ObjectUtils.notNullGetter(sysUser, SysUser::getUserName); + } + + /** + * 通过用户ID查询用户账户 + * + * @param userId 用户ID + * @return 用户账户 + */ + @Override + @Cacheable(cacheNames = CacheNames.SYS_NICKNAME, key = "#userId") + public String selectNicknameById(Long userId) { + SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() + .select(SysUser::getNickName).eq(SysUser::getUserId, userId)); + return ObjectUtils.notNullGetter(sysUser, SysUser::getNickName); + } + + /** + * 通过用户ID查询用户账户 + * + * @param userIds 用户ID 多个用逗号隔开 + * @return 用户账户 + */ + @Override + public String selectNicknameByIds(String userIds) { + List list = new ArrayList<>(); + for (Long id : StringUtils.splitTo(userIds, Convert::toLong)) { + String nickname = SpringUtils.getAopProxy(this).selectNicknameById(id); + if (StringUtils.isNotBlank(nickname)) { + list.add(nickname); + } + } + return String.join(StringUtils.SEPARATOR, list); + } + + /** + * 通过用户ID查询用户手机号 + * + * @param userId 用户id + * @return 用户手机号 + */ + @Override + public String selectPhonenumberById(Long userId) { + SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() + .select(SysUser::getPhonenumber).eq(SysUser::getUserId, userId)); + return ObjectUtils.notNullGetter(sysUser, SysUser::getPhonenumber); + } + + /** + * 通过用户ID查询用户邮箱 + * + * @param userId 用户id + * @return 用户邮箱 + */ + @Override + public String selectEmailById(Long userId) { + SysUser sysUser = baseMapper.selectOne(new LambdaQueryWrapper() + .select(SysUser::getEmail).eq(SysUser::getUserId, userId)); + return ObjectUtils.notNullGetter(sysUser, SysUser::getEmail); + } + + /** + * 通过用户ID查询用户列表 + * + * @param userIds 用户ids + * @return 用户列表 + */ + @Override + public List selectListByIds(List userIds) { + if (CollUtil.isEmpty(userIds)) { + return List.of(); + } + List list = baseMapper.selectVoList(new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) + .eq(SysUser::getStatus, SystemConstants.NORMAL) + .in(SysUser::getUserId, userIds)); + return BeanUtil.copyToList(list, UserDTO.class); + } + + /** + * 通过角色ID查询用户ID + * + * @param roleIds 角色ids + * @return 用户ids + */ + @Override + public List selectUserIdsByRoleIds(List roleIds) { + if (CollUtil.isEmpty(roleIds)) { + return List.of(); + } + List userRoles = userRoleMapper.selectList( + new LambdaQueryWrapper().in(SysUserRole::getRoleId, roleIds)); + return StreamUtils.toList(userRoles, SysUserRole::getUserId); + } + + /** + * 通过角色ID查询用户 + * + * @param roleIds 角色ids + * @return 用户 + */ + @Override + public List selectUsersByRoleIds(List roleIds) { + if (CollUtil.isEmpty(roleIds)) { + return List.of(); + } + + // 通过角色ID获取用户角色信息 + List userRoles = userRoleMapper.selectList( + new LambdaQueryWrapper().in(SysUserRole::getRoleId, roleIds)); + + // 获取用户ID列表 + Set userIds = StreamUtils.toSet(userRoles, SysUserRole::getUserId); + + return selectListByIds(new ArrayList<>(userIds)); + } + + /** + * 通过部门ID查询用户 + * + * @param deptIds 部门ids + * @return 用户 + */ + @Override + public List selectUsersByDeptIds(List deptIds) { + if (CollUtil.isEmpty(deptIds)) { + return List.of(); + } + List list = baseMapper.selectVoList(new LambdaQueryWrapper() + .select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber) + .eq(SysUser::getStatus, SystemConstants.NORMAL) + .in(SysUser::getDeptId, deptIds)); + return BeanUtil.copyToList(list, UserDTO.class); + } + + /** + * 通过岗位ID查询用户 + * + * @param postIds 岗位ids + * @return 用户 + */ + @Override + public List selectUsersByPostIds(List postIds) { + if (CollUtil.isEmpty(postIds)) { + return List.of(); + } + + // 通过岗位ID获取用户岗位信息 + List userPosts = userPostMapper.selectList( + new LambdaQueryWrapper().in(SysUserPost::getPostId, postIds)); + + // 获取用户ID列表 + Set userIds = StreamUtils.toSet(userPosts, SysUserPost::getUserId); + + return selectListByIds(new ArrayList<>(userIds)); + } + +} diff --git a/ruoyi-system/src/main/resources/mapper/package-info.md b/ruoyi-system/src/main/resources/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/SysClientMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysClientMapper.xml new file mode 100644 index 0000000..fd150ad --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysClientMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml new file mode 100644 index 0000000..e542a10 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysConfigMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml new file mode 100644 index 0000000..9057a0e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml new file mode 100644 index 0000000..6bcce51 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml new file mode 100644 index 0000000..6975da4 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysDictTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml new file mode 100644 index 0000000..c64b551 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml new file mode 100644 index 0000000..9dd3f2e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml new file mode 100644 index 0000000..43f494d --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysNoticeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml new file mode 100644 index 0000000..5ef14ee --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysOssConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysOssConfigMapper.xml new file mode 100644 index 0000000..8c2c080 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysOssConfigMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml new file mode 100644 index 0000000..d9b25bd --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysOssMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml new file mode 100644 index 0000000..322403f --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysPostMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml new file mode 100644 index 0000000..1705bb2 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml new file mode 100644 index 0000000..4ef7b1e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + select distinct r.role_id, + r.role_name, + r.role_key, + r.role_sort, + r.data_scope, + r.menu_check_strictly, + r.dept_check_strictly, + r.status, + r.del_flag, + r.create_time, + r.remark + from sys_role r + left join sys_user_role sur on sur.role_id = r.role_id + left join sys_user u on u.user_id = sur.user_id + left join sys_dept d on u.dept_id = d.dept_id + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml new file mode 100644 index 0000000..f01dc5e --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml new file mode 100644 index 0000000..baa4b59 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysSocialMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml new file mode 100644 index 0000000..0d96e13 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysTenantPackageMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysTenantPackageMapper.xml new file mode 100644 index 0000000..79cf4c5 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysTenantPackageMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml new file mode 100644 index 0000000..ded6fa8 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml new file mode 100644 index 0000000..e9f2496 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserPostMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml new file mode 100644 index 0000000..bc52d1a --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserRoleMapper.xml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/ruoyi-system/target/classes/META-INF/mps/autoMapper b/ruoyi-system/target/classes/META-INF/mps/autoMapper new file mode 100644 index 0000000..d9c48e8 --- /dev/null +++ b/ruoyi-system/target/classes/META-INF/mps/autoMapper @@ -0,0 +1,33 @@ +org.dromara.system.domain.bo.SysLogininforBo +org.dromara.system.domain.vo.SysNoticeVo +org.dromara.system.domain.bo.SysDictDataBo +org.dromara.system.domain.bo.SysNoticeBo +org.dromara.system.domain.vo.SysClientVo +org.dromara.system.domain.vo.SysConfigVo +org.dromara.system.domain.bo.SysOssBo +org.dromara.system.domain.vo.SysMenuVo +org.dromara.system.domain.vo.SysUserVo +org.dromara.system.domain.vo.SysDeptVo +org.dromara.system.domain.bo.SysDictTypeBo +org.dromara.system.domain.bo.SysTenantBo +org.dromara.system.domain.bo.SysOssConfigBo +org.dromara.system.domain.bo.SysMenuBo +org.dromara.system.domain.bo.SysDeptBo +org.dromara.system.domain.vo.SysOperLogVo +org.dromara.system.domain.vo.SysOssConfigVo +org.dromara.system.domain.vo.SysLogininforVo +org.dromara.system.domain.bo.SysSocialBo +org.dromara.system.domain.bo.SysTenantPackageBo +org.dromara.system.domain.vo.SysDictTypeVo +org.dromara.system.domain.bo.SysUserBo +org.dromara.system.domain.vo.SysOssVo +org.dromara.system.domain.vo.SysTenantPackageVo +org.dromara.system.domain.vo.SysSocialVo +org.dromara.system.domain.vo.SysTenantVo +org.dromara.system.domain.vo.SysRoleVo +org.dromara.system.domain.vo.SysDictDataVo +org.dromara.system.domain.bo.SysPostBo +org.dromara.system.domain.bo.SysRoleBo +org.dromara.system.domain.bo.SysClientBo +org.dromara.system.domain.bo.SysConfigBo +org.dromara.system.domain.vo.SysPostVo \ No newline at end of file diff --git a/ruoyi-system/target/classes/META-INF/mps/autoMappers b/ruoyi-system/target/classes/META-INF/mps/autoMappers new file mode 100644 index 0000000..800151c --- /dev/null +++ b/ruoyi-system/target/classes/META-INF/mps/autoMappers @@ -0,0 +1 @@ +org.dromara.system.domain.bo.SysOperLogBo \ No newline at end of file diff --git a/ruoyi-system/target/classes/io/github/linpeilie/AutoMapperConfig__2.class b/ruoyi-system/target/classes/io/github/linpeilie/AutoMapperConfig__2.class new file mode 100644 index 0000000..b237881 Binary files /dev/null and b/ruoyi-system/target/classes/io/github/linpeilie/AutoMapperConfig__2.class differ diff --git a/ruoyi-system/target/classes/io/github/linpeilie/ConverterMapperAdapter__2.class b/ruoyi-system/target/classes/io/github/linpeilie/ConverterMapperAdapter__2.class new file mode 100644 index 0000000..33fe3f6 Binary files /dev/null and b/ruoyi-system/target/classes/io/github/linpeilie/ConverterMapperAdapter__2.class differ diff --git a/ruoyi-system/target/classes/mapper/package-info.md b/ruoyi-system/target/classes/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-system/target/classes/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-system/target/classes/mapper/system/SysClientMapper.xml b/ruoyi-system/target/classes/mapper/system/SysClientMapper.xml new file mode 100644 index 0000000..fd150ad --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysClientMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysConfigMapper.xml b/ruoyi-system/target/classes/mapper/system/SysConfigMapper.xml new file mode 100644 index 0000000..e542a10 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysConfigMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml b/ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml new file mode 100644 index 0000000..9057a0e --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysDeptMapper.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysDictDataMapper.xml b/ruoyi-system/target/classes/mapper/system/SysDictDataMapper.xml new file mode 100644 index 0000000..6bcce51 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysDictDataMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysDictTypeMapper.xml b/ruoyi-system/target/classes/mapper/system/SysDictTypeMapper.xml new file mode 100644 index 0000000..6975da4 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysDictTypeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysLogininforMapper.xml b/ruoyi-system/target/classes/mapper/system/SysLogininforMapper.xml new file mode 100644 index 0000000..c64b551 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysLogininforMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysMenuMapper.xml b/ruoyi-system/target/classes/mapper/system/SysMenuMapper.xml new file mode 100644 index 0000000..9dd3f2e --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysMenuMapper.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysNoticeMapper.xml b/ruoyi-system/target/classes/mapper/system/SysNoticeMapper.xml new file mode 100644 index 0000000..43f494d --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysNoticeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysOperLogMapper.xml b/ruoyi-system/target/classes/mapper/system/SysOperLogMapper.xml new file mode 100644 index 0000000..5ef14ee --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysOperLogMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysOssConfigMapper.xml b/ruoyi-system/target/classes/mapper/system/SysOssConfigMapper.xml new file mode 100644 index 0000000..8c2c080 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysOssConfigMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysOssMapper.xml b/ruoyi-system/target/classes/mapper/system/SysOssMapper.xml new file mode 100644 index 0000000..d9b25bd --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysOssMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysPostMapper.xml b/ruoyi-system/target/classes/mapper/system/SysPostMapper.xml new file mode 100644 index 0000000..322403f --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysPostMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysRoleDeptMapper.xml b/ruoyi-system/target/classes/mapper/system/SysRoleDeptMapper.xml new file mode 100644 index 0000000..1705bb2 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysRoleDeptMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysRoleMapper.xml b/ruoyi-system/target/classes/mapper/system/SysRoleMapper.xml new file mode 100644 index 0000000..4ef7b1e --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysRoleMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + select distinct r.role_id, + r.role_name, + r.role_key, + r.role_sort, + r.data_scope, + r.menu_check_strictly, + r.dept_check_strictly, + r.status, + r.del_flag, + r.create_time, + r.remark + from sys_role r + left join sys_user_role sur on sur.role_id = r.role_id + left join sys_user u on u.user_id = sur.user_id + left join sys_dept d on u.dept_id = d.dept_id + + + + + + + + + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysRoleMenuMapper.xml b/ruoyi-system/target/classes/mapper/system/SysRoleMenuMapper.xml new file mode 100644 index 0000000..f01dc5e --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysRoleMenuMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysSocialMapper.xml b/ruoyi-system/target/classes/mapper/system/SysSocialMapper.xml new file mode 100644 index 0000000..baa4b59 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysSocialMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysTenantMapper.xml b/ruoyi-system/target/classes/mapper/system/SysTenantMapper.xml new file mode 100644 index 0000000..0d96e13 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysTenantMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysTenantPackageMapper.xml b/ruoyi-system/target/classes/mapper/system/SysTenantPackageMapper.xml new file mode 100644 index 0000000..79cf4c5 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysTenantPackageMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml b/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml new file mode 100644 index 0000000..ded6fa8 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysUserMapper.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysUserPostMapper.xml b/ruoyi-system/target/classes/mapper/system/SysUserPostMapper.xml new file mode 100644 index 0000000..e9f2496 --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysUserPostMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-system/target/classes/mapper/system/SysUserRoleMapper.xml b/ruoyi-system/target/classes/mapper/system/SysUserRoleMapper.xml new file mode 100644 index 0000000..bc52d1a --- /dev/null +++ b/ruoyi-system/target/classes/mapper/system/SysUserRoleMapper.xml @@ -0,0 +1,13 @@ + + + + + + + diff --git a/ruoyi-system/target/classes/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapper.class b/ruoyi-system/target/classes/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapper.class new file mode 100644 index 0000000..4dff86c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapperImpl.class new file mode 100644 index 0000000..608505d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/CacheController.class b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/CacheController.class new file mode 100644 index 0000000..bd21495 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/CacheController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/CacheController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/CacheController__Javadoc.json new file mode 100644 index 0000000..37c2c43 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/CacheController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 缓存监控\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"getInfo","paramTypes":[],"doc":" 获取缓存监控列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysLogininforController.class b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysLogininforController.class new file mode 100644 index 0000000..25b8231 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysLogininforController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysLogininforController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysLogininforController__Javadoc.json new file mode 100644 index 0000000..6960fad --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysLogininforController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统访问记录\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysLogininforBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取系统访问记录列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysLogininforBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出系统访问记录列表\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 批量删除登录日志\n @param infoIds 日志ids\n"},{"name":"clean","paramTypes":[],"doc":" 清理系统访问记录\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysOperlogController.class b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysOperlogController.class new file mode 100644 index 0000000..95d2566 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysOperlogController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysOperlogController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysOperlogController__Javadoc.json new file mode 100644 index 0000000..86959f9 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysOperlogController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 操作日志记录\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysOperLogBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取操作日志记录列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysOperLogBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出操作日志记录列表\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 批量删除操作日志记录\n @param operIds 日志ids\n"},{"name":"clean","paramTypes":[],"doc":" 清理操作日志记录\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysUserOnlineController.class b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysUserOnlineController.class new file mode 100644 index 0000000..002c4e1 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysUserOnlineController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysUserOnlineController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysUserOnlineController__Javadoc.json new file mode 100644 index 0000000..b03594d --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/monitor/SysUserOnlineController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 在线用户监控\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["java.lang.String","java.lang.String"],"doc":" 获取在线用户监控列表\n\n @param ipaddr IP地址\n @param userName 用户名\n"},{"name":"forceLogout","paramTypes":["java.lang.String"],"doc":" 强退用户\n\n @param tokenId token值\n"},{"name":"getInfo","paramTypes":[],"doc":" 获取当前用户登录在线设备\n"},{"name":"remove","paramTypes":["java.lang.String"],"doc":" 强退当前在线设备\n\n @param tokenId token值\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysClientController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysClientController.class new file mode 100644 index 0000000..90e80e1 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysClientController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysClientController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysClientController__Javadoc.json new file mode 100644 index 0000000..7865c26 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysClientController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 客户端管理\n\n @author Michelle.Chung\n @date 2023-06-18\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysClientBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询客户端管理列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysClientBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出客户端管理列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取客户端管理详细信息\n\n @param id 主键\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 新增客户端管理\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 修改客户端管理\n"},{"name":"changeStatus","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 状态修改\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除客户端管理\n\n @param ids 主键串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysConfigController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysConfigController.class new file mode 100644 index 0000000..f33cf35 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysConfigController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysConfigController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysConfigController__Javadoc.json new file mode 100644 index 0000000..1f7d105 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysConfigController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 参数配置 信息操作处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysConfigBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取参数配置列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysConfigBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出参数配置列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据参数编号获取详细信息\n\n @param configId 参数ID\n"},{"name":"getConfigKey","paramTypes":["java.lang.String"],"doc":" 根据参数键名查询参数值\n\n @param configKey 参数Key\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 新增参数配置\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 修改参数配置\n"},{"name":"updateByKey","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 根据参数键名修改参数配置\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除参数配置\n\n @param configIds 参数ID串\n"},{"name":"refreshCache","paramTypes":[],"doc":" 刷新参数缓存\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDeptController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDeptController.class new file mode 100644 index 0000000..2d25d21 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDeptController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDeptController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDeptController__Javadoc.json new file mode 100644 index 0000000..ba3eb61 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDeptController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 部门信息\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 获取部门列表\n"},{"name":"excludeChild","paramTypes":["java.lang.Long"],"doc":" 查询部门列表(排除节点)\n\n @param deptId 部门ID\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据部门编号获取详细信息\n\n @param deptId 部门ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 新增部门\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 修改部门\n"},{"name":"remove","paramTypes":["java.lang.Long"],"doc":" 删除部门\n\n @param deptId 部门ID\n"},{"name":"optionselect","paramTypes":["java.lang.Long[]"],"doc":" 获取部门选择框列表\n\n @param deptIds 部门ID串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictDataController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictDataController.class new file mode 100644 index 0000000..d8a9d82 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictDataController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictDataController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictDataController__Javadoc.json new file mode 100644 index 0000000..71c2d45 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictDataController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 数据字典信息\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询字典数据列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出字典数据列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 查询字典数据详细\n\n @param dictCode 字典code\n"},{"name":"dictType","paramTypes":["java.lang.String"],"doc":" 根据字典类型查询字典数据信息\n\n @param dictType 字典类型\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 新增字典类型\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 修改保存字典类型\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除字典类型\n\n @param dictCodes 字典code串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictTypeController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictTypeController.class new file mode 100644 index 0000000..3e81299 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictTypeController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictTypeController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictTypeController__Javadoc.json new file mode 100644 index 0000000..0cd11c0 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysDictTypeController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 数据字典信息\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询字典类型列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出字典类型列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 查询字典类型详细\n\n @param dictId 字典ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 新增字典类型\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 修改字典类型\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除字典类型\n\n @param dictIds 字典ID串\n"},{"name":"refreshCache","paramTypes":[],"doc":" 刷新字典缓存\n"},{"name":"optionselect","paramTypes":[],"doc":" 获取字典选择框列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysMenuController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysMenuController.class new file mode 100644 index 0000000..5169ffb Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysMenuController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysMenuController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysMenuController__Javadoc.json new file mode 100644 index 0000000..8b19859 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysMenuController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 菜单信息\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"getRouters","paramTypes":[],"doc":" 获取路由信息\n\n @return 路由信息\n"},{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 获取菜单列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据菜单编号获取详细信息\n\n @param menuId 菜单ID\n"},{"name":"treeselect","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 获取菜单下拉树列表\n"},{"name":"roleMenuTreeselect","paramTypes":["java.lang.Long"],"doc":" 加载对应角色菜单列表树\n\n @param roleId 角色ID\n"},{"name":"tenantPackageMenuTreeselect","paramTypes":["java.lang.Long"],"doc":" 加载对应租户套餐菜单列表树\n\n @param packageId 租户套餐ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 新增菜单\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 修改菜单\n"},{"name":"remove","paramTypes":["java.lang.Long"],"doc":" 删除菜单\n\n @param menuId 菜单ID\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysNoticeController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysNoticeController.class new file mode 100644 index 0000000..de76771 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysNoticeController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysNoticeController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysNoticeController__Javadoc.json new file mode 100644 index 0000000..ad713c3 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysNoticeController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 公告 信息操作处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取通知公告列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据通知公告编号获取详细信息\n\n @param noticeId 公告ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 新增通知公告\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 修改通知公告\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除通知公告\n\n @param noticeIds 公告ID串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssConfigController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssConfigController.class new file mode 100644 index 0000000..8648b7c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssConfigController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssConfigController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssConfigController__Javadoc.json new file mode 100644 index 0000000..01dc9b5 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssConfigController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 对象存储配置\n\n @author Lion Li\n @author 孤舟烟雨\n @date 2021-08-13\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询对象存储配置列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取对象存储配置详细信息\n\n @param ossConfigId OSS配置ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo"],"doc":" 新增对象存储配置\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo"],"doc":" 修改对象存储配置\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除对象存储配置\n\n @param ossConfigIds OSS配置ID串\n"},{"name":"changeStatus","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo"],"doc":" 状态修改\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssController.class new file mode 100644 index 0000000..5d33244 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssController__Javadoc.json new file mode 100644 index 0000000..e71028f --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysOssController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 文件上传 控制层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysOssBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询OSS对象存储列表\n"},{"name":"listByIds","paramTypes":["java.lang.Long[]"],"doc":" 查询OSS对象基于id串\n\n @param ossIds OSS对象ID串\n"},{"name":"upload","paramTypes":["org.springframework.web.multipart.MultipartFile"],"doc":" 上传OSS对象存储\n\n @param file 文件\n"},{"name":"download","paramTypes":["java.lang.Long","jakarta.servlet.http.HttpServletResponse"],"doc":" 下载OSS对象\n\n @param ossId OSS对象ID\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除OSS对象存储\n\n @param ossIds OSS对象ID串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysPostController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysPostController.class new file mode 100644 index 0000000..4f07a19 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysPostController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysPostController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysPostController__Javadoc.json new file mode 100644 index 0000000..a9be364 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysPostController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 岗位信息操作处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysPostBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取岗位列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysPostBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出岗位列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据岗位编号获取详细信息\n\n @param postId 岗位ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 新增岗位\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 修改岗位\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除岗位\n\n @param postIds 岗位ID串\n"},{"name":"optionselect","paramTypes":["java.lang.Long[]","java.lang.Long"],"doc":" 获取岗位选择框列表\n\n @param postIds 岗位ID串\n @param deptId 部门id\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysProfileController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysProfileController.class new file mode 100644 index 0000000..afe92e7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysProfileController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysProfileController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysProfileController__Javadoc.json new file mode 100644 index 0000000..4662500 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysProfileController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 个人信息 业务处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"profile","paramTypes":[],"doc":" 个人信息\n"},{"name":"updateProfile","paramTypes":["org.dromara.system.domain.bo.SysUserProfileBo"],"doc":" 修改用户信息\n"},{"name":"updatePwd","paramTypes":["org.dromara.system.domain.bo.SysUserPasswordBo"],"doc":" 重置密码\n\n @param bo 新旧密码\n"},{"name":"avatar","paramTypes":["org.springframework.web.multipart.MultipartFile"],"doc":" 头像上传\n\n @param avatarfile 用户头像\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysRoleController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysRoleController.class new file mode 100644 index 0000000..be74a30 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysRoleController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysRoleController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysRoleController__Javadoc.json new file mode 100644 index 0000000..f905f75 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysRoleController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色信息\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysRoleBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取角色信息列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysRoleBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出角色信息列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据角色编号获取详细信息\n\n @param roleId 角色ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 新增角色\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 修改保存角色\n"},{"name":"dataScope","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 修改保存数据权限\n"},{"name":"changeStatus","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 状态修改\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除角色\n\n @param roleIds 角色ID串\n"},{"name":"optionselect","paramTypes":["java.lang.Long[]"],"doc":" 获取角色选择框列表\n\n @param roleIds 角色ID串\n"},{"name":"allocatedList","paramTypes":["org.dromara.system.domain.bo.SysUserBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询已分配用户角色列表\n"},{"name":"unallocatedList","paramTypes":["org.dromara.system.domain.bo.SysUserBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询未分配用户角色列表\n"},{"name":"cancelAuthUser","paramTypes":["org.dromara.system.domain.SysUserRole"],"doc":" 取消授权用户\n"},{"name":"cancelAuthUserAll","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 批量取消授权用户\n\n @param roleId 角色ID\n @param userIds 用户ID串\n"},{"name":"selectAuthUserAll","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 批量选择用户授权\n\n @param roleId 角色ID\n @param userIds 用户ID串\n"},{"name":"roleDeptTreeselect","paramTypes":["java.lang.Long"],"doc":" 获取对应角色部门树列表\n\n @param roleId 角色ID\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysSocialController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysSocialController.class new file mode 100644 index 0000000..8613e75 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysSocialController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysSocialController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysSocialController__Javadoc.json new file mode 100644 index 0000000..d4832ff --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysSocialController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 社会化关系\n\n @author thiszhc\n @date 2023-06-16\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":[],"doc":" 查询社会化关系列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantController.class new file mode 100644 index 0000000..032213b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantController__Javadoc.json new file mode 100644 index 0000000..a024409 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户管理\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysTenantBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询租户列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysTenantBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出租户列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取租户详细信息\n\n @param id 主键\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 新增租户\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 修改租户\n"},{"name":"changeStatus","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 状态修改\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除租户\n\n @param ids 主键串\n"},{"name":"dynamicTenant","paramTypes":["java.lang.String"],"doc":" 动态切换租户\n\n @param tenantId 租户ID\n"},{"name":"dynamicClear","paramTypes":[],"doc":" 清除动态租户\n"},{"name":"syncTenantPackage","paramTypes":["java.lang.String","java.lang.Long"],"doc":" 同步租户套餐\n\n @param tenantId 租户id\n @param packageId 套餐id\n"},{"name":"syncTenantDict","paramTypes":[],"doc":" 同步租户字典\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantPackageController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantPackageController.class new file mode 100644 index 0000000..ca3612a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantPackageController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantPackageController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantPackageController__Javadoc.json new file mode 100644 index 0000000..c261fa5 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysTenantPackageController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户套餐管理\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询租户套餐列表\n"},{"name":"selectList","paramTypes":[],"doc":" 查询租户套餐下拉选列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出租户套餐列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取租户套餐详细信息\n\n @param packageId 主键\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 新增租户套餐\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 修改租户套餐\n"},{"name":"changeStatus","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 状态修改\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除租户套餐\n\n @param packageIds 主键串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysUserController.class b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysUserController.class new file mode 100644 index 0000000..25f94ff Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysUserController.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/controller/system/SysUserController__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysUserController__Javadoc.json new file mode 100644 index 0000000..ed05485 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/controller/system/SysUserController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户信息\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.system.domain.bo.SysUserBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取用户列表\n"},{"name":"export","paramTypes":["org.dromara.system.domain.bo.SysUserBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出用户列表\n"},{"name":"importData","paramTypes":["org.springframework.web.multipart.MultipartFile","boolean"],"doc":" 导入数据\n\n @param file 导入文件\n @param updateSupport 是否更新已存在数据\n"},{"name":"importTemplate","paramTypes":["jakarta.servlet.http.HttpServletResponse"],"doc":" 获取导入模板\n"},{"name":"getInfo","paramTypes":[],"doc":" 获取用户信息\n\n @return 用户信息\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据用户编号获取详细信息\n\n @param userId 用户ID\n"},{"name":"add","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 新增用户\n"},{"name":"edit","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 修改用户\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除用户\n\n @param userIds 角色ID串\n"},{"name":"optionselect","paramTypes":["java.lang.Long[]","java.lang.Long"],"doc":" 根据用户ID串批量获取用户基础信息\n\n @param userIds 用户ID串\n @param deptId 部门ID\n"},{"name":"resetPwd","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 重置密码\n"},{"name":"changeStatus","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 状态修改\n"},{"name":"authRole","paramTypes":["java.lang.Long"],"doc":" 根据用户编号获取授权角色\n\n @param userId 用户ID\n"},{"name":"insertAuthRole","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 用户授权角色\n\n @param userId 用户Id\n @param roleIds 角色ID串\n"},{"name":"deptTree","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 获取部门树列表\n"},{"name":"listByDept","paramTypes":["java.lang.Long"],"doc":" 获取部门下的所有用户信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysCache.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysCache.class new file mode 100644 index 0000000..b9487f7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysCache.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysCache__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysCache__Javadoc.json new file mode 100644 index 0000000..e95bf1c --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysCache__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 缓存信息\n\n @author Lion Li\n","fields":[{"name":"cacheName","doc":" 缓存名称\n"},{"name":"cacheKey","doc":" 缓存键名\n"},{"name":"cacheValue","doc":" 缓存内容\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysClient.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysClient.class new file mode 100644 index 0000000..f5a9fa5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysClient.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysClientToSysClientVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysClientToSysClientVoMapper.class new file mode 100644 index 0000000..213a515 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysClientToSysClientVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysClientToSysClientVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysClientToSysClientVoMapperImpl.class new file mode 100644 index 0000000..b1ae92f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysClientToSysClientVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysClient__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysClient__Javadoc.json new file mode 100644 index 0000000..70717de --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysClient__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 授权管理对象 sys_client\n\n @author Michelle.Chung\n @date 2023-05-15\n","fields":[{"name":"id","doc":" id\n"},{"name":"clientId","doc":" 客户端id\n"},{"name":"clientKey","doc":" 客户端key\n"},{"name":"clientSecret","doc":" 客户端秘钥\n"},{"name":"grantType","doc":" 授权类型\n"},{"name":"deviceType","doc":" 设备类型\n"},{"name":"activeTimeout","doc":" token活跃超时时间\n"},{"name":"timeout","doc":" token固定超时时间\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"},{"name":"delFlag","doc":" 删除标志(0代表存在 1代表删除)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysConfig.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfig.class new file mode 100644 index 0000000..cf18877 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfig.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysConfigToSysConfigVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfigToSysConfigVoMapper.class new file mode 100644 index 0000000..7229339 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfigToSysConfigVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysConfigToSysConfigVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfigToSysConfigVoMapperImpl.class new file mode 100644 index 0000000..7fec0d4 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfigToSysConfigVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysConfig__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfig__Javadoc.json new file mode 100644 index 0000000..d1be400 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysConfig__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 参数配置表 sys_config\n\n @author Lion Li\n","fields":[{"name":"configId","doc":" 参数主键\n"},{"name":"configName","doc":" 参数名称\n"},{"name":"configKey","doc":" 参数键名\n"},{"name":"configValue","doc":" 参数键值\n"},{"name":"configType","doc":" 系统内置(Y是 N否)\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDept.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDept.class new file mode 100644 index 0000000..7f33654 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDept.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDeptToSysDeptVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDeptToSysDeptVoMapper.class new file mode 100644 index 0000000..6311551 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDeptToSysDeptVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDeptToSysDeptVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDeptToSysDeptVoMapperImpl.class new file mode 100644 index 0000000..e01c767 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDeptToSysDeptVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDept__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysDept__Javadoc.json new file mode 100644 index 0000000..3e51ba7 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysDept__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 部门表 sys_dept\n\n @author Lion Li\n","fields":[{"name":"deptId","doc":" 部门ID\n"},{"name":"parentId","doc":" 父部门ID\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"deptCategory","doc":" 部门类别编码\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"leader","doc":" 负责人\n"},{"name":"phone","doc":" 联系电话\n"},{"name":"email","doc":" 邮箱\n"},{"name":"status","doc":" 部门状态:0正常,1停用\n"},{"name":"delFlag","doc":" 删除标志(0代表存在 1代表删除)\n"},{"name":"ancestors","doc":" 祖级列表\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictData.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictData.class new file mode 100644 index 0000000..6e081a2 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictData.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictDataToSysDictDataVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictDataToSysDictDataVoMapper.class new file mode 100644 index 0000000..d800b06 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictDataToSysDictDataVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictDataToSysDictDataVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictDataToSysDictDataVoMapperImpl.class new file mode 100644 index 0000000..dbea3f3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictDataToSysDictDataVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictData__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictData__Javadoc.json new file mode 100644 index 0000000..6488547 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictData__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典数据表 sys_dict_data\n\n @author Lion Li\n","fields":[{"name":"dictCode","doc":" 字典编码\n"},{"name":"dictSort","doc":" 字典排序\n"},{"name":"dictLabel","doc":" 字典标签\n"},{"name":"dictValue","doc":" 字典键值\n"},{"name":"dictType","doc":" 字典类型\n"},{"name":"cssClass","doc":" 样式属性(其他样式扩展)\n"},{"name":"listClass","doc":" 表格字典样式\n"},{"name":"isDefault","doc":" 是否默认(Y是 N否)\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictType.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictType.class new file mode 100644 index 0000000..7a5070a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictType.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapper.class new file mode 100644 index 0000000..d3017d1 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapperImpl.class new file mode 100644 index 0000000..b968a73 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysDictType__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictType__Javadoc.json new file mode 100644 index 0000000..4dc0f0e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysDictType__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典类型表 sys_dict_type\n\n @author Lion Li\n","fields":[{"name":"dictId","doc":" 字典主键\n"},{"name":"dictName","doc":" 字典名称\n"},{"name":"dictType","doc":" 字典类型\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininfor.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininfor.class new file mode 100644 index 0000000..de39686 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininfor.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininforToSysLogininforVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininforToSysLogininforVoMapper.class new file mode 100644 index 0000000..7205883 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininforToSysLogininforVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininforToSysLogininforVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininforToSysLogininforVoMapperImpl.class new file mode 100644 index 0000000..b8cdc1e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininforToSysLogininforVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininfor__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininfor__Javadoc.json new file mode 100644 index 0000000..e0e9404 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysLogininfor__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统访问记录表 sys_logininfor\n\n @author Lion Li\n","fields":[{"name":"infoId","doc":" ID\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"clientKey","doc":" 客户端\n"},{"name":"deviceType","doc":" 设备类型\n"},{"name":"status","doc":" 登录状态 0成功 1失败\n"},{"name":"ipaddr","doc":" 登录IP地址\n"},{"name":"loginLocation","doc":" 登录地点\n"},{"name":"browser","doc":" 浏览器类型\n"},{"name":"os","doc":" 操作系统\n"},{"name":"msg","doc":" 提示消息\n"},{"name":"loginTime","doc":" 访问时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysMenu.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenu.class new file mode 100644 index 0000000..03278af Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenu.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysMenuToSysMenuVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenuToSysMenuVoMapper.class new file mode 100644 index 0000000..e595941 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenuToSysMenuVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysMenuToSysMenuVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenuToSysMenuVoMapperImpl.class new file mode 100644 index 0000000..b7a0921 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenuToSysMenuVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysMenu__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenu__Javadoc.json new file mode 100644 index 0000000..2d08a21 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysMenu__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 菜单权限表 sys_menu\n\n @author Lion Li\n","fields":[{"name":"menuId","doc":" 菜单ID\n"},{"name":"parentId","doc":" 父菜单ID\n"},{"name":"menuName","doc":" 菜单名称\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"path","doc":" 路由地址\n"},{"name":"component","doc":" 组件路径\n"},{"name":"queryParam","doc":" 路由参数\n"},{"name":"isFrame","doc":" 是否为外链(0是 1否)\n"},{"name":"isCache","doc":" 是否缓存(0缓存 1不缓存)\n"},{"name":"menuType","doc":" 类型(M目录 C菜单 F按钮)\n"},{"name":"visible","doc":" 显示状态(0显示 1隐藏)\n"},{"name":"status","doc":" 菜单状态(0正常 1停用)\n"},{"name":"perms","doc":" 权限字符串\n"},{"name":"icon","doc":" 菜单图标\n"},{"name":"remark","doc":" 备注\n"},{"name":"parentName","doc":" 父菜单名称\n"},{"name":"children","doc":" 子菜单\n"}],"enumConstants":[],"methods":[{"name":"getRouteName","paramTypes":[],"doc":" 获取路由名称\n"},{"name":"getRouterPath","paramTypes":[],"doc":" 获取路由地址\n"},{"name":"getComponentInfo","paramTypes":[],"doc":" 获取组件信息\n"},{"name":"isMenuFrame","paramTypes":[],"doc":" 是否为菜单内部跳转\n"},{"name":"isInnerLink","paramTypes":[],"doc":" 是否为内链组件\n"},{"name":"isParentView","paramTypes":[],"doc":" 是否为parent_view组件\n"},{"name":"innerLinkReplaceEach","paramTypes":["java.lang.String"],"doc":" 内链域名特殊字符替换\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysNotice.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysNotice.class new file mode 100644 index 0000000..18d242b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysNotice.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysNoticeToSysNoticeVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysNoticeToSysNoticeVoMapper.class new file mode 100644 index 0000000..fb5e7a6 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysNoticeToSysNoticeVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysNoticeToSysNoticeVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysNoticeToSysNoticeVoMapperImpl.class new file mode 100644 index 0000000..1f27af5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysNoticeToSysNoticeVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysNotice__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysNotice__Javadoc.json new file mode 100644 index 0000000..151466b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysNotice__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 通知公告表 sys_notice\n\n @author Lion Li\n","fields":[{"name":"noticeId","doc":" 公告ID\n"},{"name":"noticeTitle","doc":" 公告标题\n"},{"name":"noticeType","doc":" 公告类型(1通知 2公告)\n"},{"name":"noticeContent","doc":" 公告内容\n"},{"name":"status","doc":" 公告状态(0正常 1关闭)\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLog.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLog.class new file mode 100644 index 0000000..4047da9 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLog.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLogToSysOperLogVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLogToSysOperLogVoMapper.class new file mode 100644 index 0000000..b4dc453 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLogToSysOperLogVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLogToSysOperLogVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLogToSysOperLogVoMapperImpl.class new file mode 100644 index 0000000..33ae80b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLogToSysOperLogVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLog__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLog__Javadoc.json new file mode 100644 index 0000000..772371e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysOperLog__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 操作日志记录表 oper_log\n\n @author Lion Li\n","fields":[{"name":"operId","doc":" 日志主键\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"title","doc":" 操作模块\n"},{"name":"businessType","doc":" 业务类型(0其它 1新增 2修改 3删除)\n"},{"name":"method","doc":" 请求方法\n"},{"name":"requestMethod","doc":" 请求方式\n"},{"name":"operatorType","doc":" 操作类别(0其它 1后台用户 2手机端用户)\n"},{"name":"operName","doc":" 操作人员\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"operUrl","doc":" 请求url\n"},{"name":"operIp","doc":" 操作地址\n"},{"name":"operLocation","doc":" 操作地点\n"},{"name":"operParam","doc":" 请求参数\n"},{"name":"jsonResult","doc":" 返回参数\n"},{"name":"status","doc":" 操作状态(0正常 1异常)\n"},{"name":"errorMsg","doc":" 错误消息\n"},{"name":"operTime","doc":" 操作时间\n"},{"name":"costTime","doc":" 消耗时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOss.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOss.class new file mode 100644 index 0000000..0353ee6 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOss.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfig.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfig.class new file mode 100644 index 0000000..e058064 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfig.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapper.class new file mode 100644 index 0000000..bb82caa Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapperImpl.class new file mode 100644 index 0000000..a1c072f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfig__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfig__Javadoc.json new file mode 100644 index 0000000..8f2bc58 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssConfig__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 对象存储配置对象 sys_oss_config\n\n @author Lion Li\n","fields":[{"name":"ossConfigId","doc":" 主键\n"},{"name":"configKey","doc":" 配置key\n"},{"name":"accessKey","doc":" accessKey\n"},{"name":"secretKey","doc":" 秘钥\n"},{"name":"bucketName","doc":" 桶名称\n"},{"name":"prefix","doc":" 前缀\n"},{"name":"endpoint","doc":" 访问站点\n"},{"name":"domain","doc":" 自定义域名\n"},{"name":"isHttps","doc":" 是否https(0否 1是)\n"},{"name":"region","doc":" 域\n"},{"name":"status","doc":" 是否默认(0=是,1=否)\n"},{"name":"ext1","doc":" 扩展字段\n"},{"name":"remark","doc":" 备注\n"},{"name":"accessPolicy","doc":" 桶权限类型(0private 1public 2custom)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOssToSysOssVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssToSysOssVoMapper.class new file mode 100644 index 0000000..ed3f4f8 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssToSysOssVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOssToSysOssVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssToSysOssVoMapperImpl.class new file mode 100644 index 0000000..922dd0c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysOssToSysOssVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysOss__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysOss__Javadoc.json new file mode 100644 index 0000000..f9d28ac --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysOss__Javadoc.json @@ -0,0 +1 @@ +{"doc":" OSS对象存储对象\n\n @author Lion Li\n","fields":[{"name":"ossId","doc":" 对象存储主键\n"},{"name":"fileName","doc":" 文件名\n"},{"name":"originalName","doc":" 原名\n"},{"name":"fileSuffix","doc":" 文件后缀名\n"},{"name":"url","doc":" URL地址\n"},{"name":"service","doc":" 服务商\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysPost.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysPost.class new file mode 100644 index 0000000..64821ae Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysPost.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysPostToSysPostVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysPostToSysPostVoMapper.class new file mode 100644 index 0000000..c695723 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysPostToSysPostVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysPostToSysPostVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysPostToSysPostVoMapperImpl.class new file mode 100644 index 0000000..5c6afbc Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysPostToSysPostVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysPost__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysPost__Javadoc.json new file mode 100644 index 0000000..f3dc9b7 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysPost__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 岗位表 sys_post\n\n @author Lion Li\n","fields":[{"name":"postId","doc":" 岗位序号\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"postCode","doc":" 岗位编码\n"},{"name":"postName","doc":" 岗位名称\n"},{"name":"postCategory","doc":" 岗位类别编码\n"},{"name":"postSort","doc":" 岗位排序\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRole.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysRole.class new file mode 100644 index 0000000..5087e0d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysRole.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleDept.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleDept.class new file mode 100644 index 0000000..2829cad Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleDept.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleDept__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleDept__Javadoc.json new file mode 100644 index 0000000..14a41d8 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleDept__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色和部门关联 sys_role_dept\n\n @author Lion Li\n","fields":[{"name":"roleId","doc":" 角色ID\n"},{"name":"deptId","doc":" 部门ID\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleMenu.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleMenu.class new file mode 100644 index 0000000..914e0a7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleMenu.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleMenu__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleMenu__Javadoc.json new file mode 100644 index 0000000..c327bef --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleMenu__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色和菜单关联 sys_role_menu\n\n @author Lion Li\n","fields":[{"name":"roleId","doc":" 角色ID\n"},{"name":"menuId","doc":" 菜单ID\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleToSysRoleVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleToSysRoleVoMapper.class new file mode 100644 index 0000000..bddb0ef Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleToSysRoleVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleToSysRoleVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleToSysRoleVoMapperImpl.class new file mode 100644 index 0000000..16458c6 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysRoleToSysRoleVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysRole__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysRole__Javadoc.json new file mode 100644 index 0000000..8395eb4 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysRole__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色表 sys_role\n\n @author Lion Li\n","fields":[{"name":"roleId","doc":" 角色ID\n"},{"name":"roleName","doc":" 角色名称\n"},{"name":"roleKey","doc":" 角色权限\n"},{"name":"roleSort","doc":" 角色排序\n"},{"name":"dataScope","doc":" 数据范围(1:所有数据权限;2:自定义数据权限;3:本部门数据权限;4:本部门及以下数据权限;5:仅本人数据权限)\n"},{"name":"menuCheckStrictly","doc":" 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示)\n"},{"name":"deptCheckStrictly","doc":" 部门树选择项是否关联显示(0:父子不互相关联显示 1:父子互相关联显示 )\n"},{"name":"status","doc":" 角色状态(0正常 1停用)\n"},{"name":"delFlag","doc":" 删除标志(0代表存在 1代表删除)\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysSocial.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocial.class new file mode 100644 index 0000000..176daf3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocial.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysSocialToSysSocialVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocialToSysSocialVoMapper.class new file mode 100644 index 0000000..26d3979 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocialToSysSocialVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysSocialToSysSocialVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocialToSysSocialVoMapperImpl.class new file mode 100644 index 0000000..ceaa539 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocialToSysSocialVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysSocial__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocial__Javadoc.json new file mode 100644 index 0000000..b733ecb --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysSocial__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 社会化关系对象 sys_social\n\n @author thiszhc\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"userId","doc":" 用户ID\n"},{"name":"authId","doc":" 的唯一ID\n"},{"name":"source","doc":" 用户来源\n"},{"name":"accessToken","doc":" 用户的授权令牌\n"},{"name":"expireIn","doc":" 用户的授权令牌的有效期,部分平台可能没有\n"},{"name":"refreshToken","doc":" 刷新令牌,部分平台可能没有\n"},{"name":"openId","doc":" 用户的 open id\n"},{"name":"userName","doc":" 授权的第三方账号\n"},{"name":"nickName","doc":" 授权的第三方昵称\n"},{"name":"email","doc":" 授权的第三方邮箱\n"},{"name":"avatar","doc":" 授权的第三方头像地址\n"},{"name":"accessCode","doc":" 平台的授权信息,部分平台可能没有\n"},{"name":"unionId","doc":" 用户的 unionid\n"},{"name":"scope","doc":" 授予的权限,部分平台可能没有\n"},{"name":"tokenType","doc":" 个别平台的授权信息,部分平台可能没有\n"},{"name":"idToken","doc":" id token,部分平台可能没有\n"},{"name":"macAlgorithm","doc":" 小米平台用户的附带属性,部分平台可能没有\n"},{"name":"macKey","doc":" 小米平台用户的附带属性,部分平台可能没有\n"},{"name":"code","doc":" 用户的授权code,部分平台可能没有\n"},{"name":"oauthToken","doc":" Twitter平台用户的附带属性,部分平台可能没有\n"},{"name":"oauthTokenSecret","doc":" Twitter平台用户的附带属性,部分平台可能没有\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenant.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenant.class new file mode 100644 index 0000000..aee9362 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenant.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackage.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackage.class new file mode 100644 index 0000000..cc62cc1 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackage.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapper.class new file mode 100644 index 0000000..f319be2 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapperImpl.class new file mode 100644 index 0000000..e00309f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackage__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackage__Javadoc.json new file mode 100644 index 0000000..a375349 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantPackage__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户套餐对象 sys_tenant_package\n\n @author Michelle.Chung\n","fields":[{"name":"packageId","doc":" 租户套餐id\n"},{"name":"packageName","doc":" 套餐名称\n"},{"name":"menuIds","doc":" 关联菜单id\n"},{"name":"remark","doc":" 备注\n"},{"name":"menuCheckStrictly","doc":" 菜单树选择项是否关联显示( 0:父子不互相关联显示 1:父子互相关联显示)\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"},{"name":"delFlag","doc":" 删除标志(0代表存在 1代表删除)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantToSysTenantVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantToSysTenantVoMapper.class new file mode 100644 index 0000000..308ba1f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantToSysTenantVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantToSysTenantVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantToSysTenantVoMapperImpl.class new file mode 100644 index 0000000..a95d519 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenantToSysTenantVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysTenant__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenant__Javadoc.json new file mode 100644 index 0000000..b25d577 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysTenant__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户对象 sys_tenant\n\n @author Michelle.Chung\n","fields":[{"name":"id","doc":" id\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"contactUserName","doc":" 联系人\n"},{"name":"contactPhone","doc":" 联系电话\n"},{"name":"companyName","doc":" 企业名称\n"},{"name":"licenseNumber","doc":" 统一社会信用代码\n"},{"name":"address","doc":" 地址\n"},{"name":"domain","doc":" 域名\n"},{"name":"intro","doc":" 企业简介\n"},{"name":"remark","doc":" 备注\n"},{"name":"packageId","doc":" 租户套餐编号\n"},{"name":"expireTime","doc":" 过期时间\n"},{"name":"accountCount","doc":" 用户数量(-1不限制)\n"},{"name":"status","doc":" 租户状态(0正常 1停用)\n"},{"name":"delFlag","doc":" 删除标志(0代表存在 1代表删除)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUser.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysUser.class new file mode 100644 index 0000000..7020507 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysUser.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserOnline.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserOnline.class new file mode 100644 index 0000000..730ba8b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserOnline.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserOnline__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserOnline__Javadoc.json new file mode 100644 index 0000000..7b39518 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserOnline__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 当前在线会话\n\n @author Lion Li\n","fields":[{"name":"tokenId","doc":" 会话编号\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"userName","doc":" 用户名称\n"},{"name":"clientKey","doc":" 客户端\n"},{"name":"deviceType","doc":" 设备类型\n"},{"name":"ipaddr","doc":" 登录IP地址\n"},{"name":"loginLocation","doc":" 登录地址\n"},{"name":"browser","doc":" 浏览器类型\n"},{"name":"os","doc":" 操作系统\n"},{"name":"loginTime","doc":" 登录时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserPost.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserPost.class new file mode 100644 index 0000000..2aff802 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserPost.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserPost__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserPost__Javadoc.json new file mode 100644 index 0000000..9266d39 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserPost__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户和岗位关联 sys_user_post\n\n @author Lion Li\n","fields":[{"name":"userId","doc":" 用户ID\n"},{"name":"postId","doc":" 岗位ID\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserRole.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserRole.class new file mode 100644 index 0000000..891bec5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserRole.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserRole__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserRole__Javadoc.json new file mode 100644 index 0000000..db71695 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserRole__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户和角色关联 sys_user_role\n\n @author Lion Li\n","fields":[{"name":"userId","doc":" 用户ID\n"},{"name":"roleId","doc":" 角色ID\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserToSysUserVoMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserToSysUserVoMapper.class new file mode 100644 index 0000000..966c314 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserToSysUserVoMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUserToSysUserVoMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserToSysUserVoMapperImpl.class new file mode 100644 index 0000000..80ea6df Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/SysUserToSysUserVoMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/SysUser__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/SysUser__Javadoc.json new file mode 100644 index 0000000..7c27ad5 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/SysUser__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户对象 sys_user\n\n @author Lion Li\n","fields":[{"name":"userId","doc":" 用户ID\n"},{"name":"deptId","doc":" 部门ID\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"nickName","doc":" 用户昵称\n"},{"name":"userType","doc":" 用户类型(sys_user系统用户)\n"},{"name":"email","doc":" 用户邮箱\n"},{"name":"phonenumber","doc":" 手机号码\n"},{"name":"sex","doc":" 用户性别\n"},{"name":"avatar","doc":" 用户头像\n"},{"name":"password","doc":" 密码\n"},{"name":"status","doc":" 帐号状态(0正常 1停用)\n"},{"name":"delFlag","doc":" 删除标志(0代表存在 1代表删除)\n"},{"name":"loginIp","doc":" 最后登录IP\n"},{"name":"loginDate","doc":" 最后登录时间\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBo.class new file mode 100644 index 0000000..0a2c89c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBoToSysClientMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBoToSysClientMapper.class new file mode 100644 index 0000000..fd51bce Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBoToSysClientMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBoToSysClientMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBoToSysClientMapperImpl.class new file mode 100644 index 0000000..babbd0a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBoToSysClientMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBo__Javadoc.json new file mode 100644 index 0000000..47867a2 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysClientBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 授权管理业务对象 sys_client\n\n @author Michelle.Chung\n @date 2023-05-15\n","fields":[{"name":"id","doc":" id\n"},{"name":"clientId","doc":" 客户端id\n"},{"name":"clientKey","doc":" 客户端key\n"},{"name":"clientSecret","doc":" 客户端秘钥\n"},{"name":"grantTypeList","doc":" 授权类型\n"},{"name":"grantType","doc":" 授权类型\n"},{"name":"deviceType","doc":" 设备类型\n"},{"name":"activeTimeout","doc":" token活跃超时时间\n"},{"name":"timeout","doc":" token固定超时时间\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBo.class new file mode 100644 index 0000000..8612cee Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapper.class new file mode 100644 index 0000000..cae3481 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapperImpl.class new file mode 100644 index 0000000..5ff17a5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBo__Javadoc.json new file mode 100644 index 0000000..92353c1 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysConfigBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 参数配置业务对象 sys_config\n\n @author Michelle.Chung\n","fields":[{"name":"configId","doc":" 参数主键\n"},{"name":"configName","doc":" 参数名称\n"},{"name":"configKey","doc":" 参数键名\n"},{"name":"configValue","doc":" 参数键值\n"},{"name":"configType","doc":" 系统内置(Y是 N否)\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBo.class new file mode 100644 index 0000000..a1c17dc Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapper.class new file mode 100644 index 0000000..3a68925 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapperImpl.class new file mode 100644 index 0000000..b4b9d61 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBo__Javadoc.json new file mode 100644 index 0000000..a09636e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDeptBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 部门业务对象 sys_dept\n\n @author Michelle.Chung\n","fields":[{"name":"deptId","doc":" 部门id\n"},{"name":"parentId","doc":" 父部门ID\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"deptCategory","doc":" 部门类别编码\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"leader","doc":" 负责人\n"},{"name":"phone","doc":" 联系电话\n"},{"name":"email","doc":" 邮箱\n"},{"name":"status","doc":" 部门状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBo.class new file mode 100644 index 0000000..26569c3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapper.class new file mode 100644 index 0000000..c95ad5f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapperImpl.class new file mode 100644 index 0000000..a1279be Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBo__Javadoc.json new file mode 100644 index 0000000..19c3787 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictDataBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典数据业务对象 sys_dict_data\n\n @author Michelle.Chung\n","fields":[{"name":"dictCode","doc":" 字典编码\n"},{"name":"dictSort","doc":" 字典排序\n"},{"name":"dictLabel","doc":" 字典标签\n"},{"name":"dictValue","doc":" 字典键值\n"},{"name":"dictType","doc":" 字典类型\n"},{"name":"cssClass","doc":" 样式属性(其他样式扩展)\n"},{"name":"listClass","doc":" 表格回显样式\n"},{"name":"isDefault","doc":" 是否默认(Y是 N否)\n"},{"name":"createDept","doc":" 创建部门\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBo.class new file mode 100644 index 0000000..569cd9d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapper.class new file mode 100644 index 0000000..fbe8e83 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapperImpl.class new file mode 100644 index 0000000..288671d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBo__Javadoc.json new file mode 100644 index 0000000..e94476f --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysDictTypeBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典类型业务对象 sys_dict_type\n\n @author Michelle.Chung\n","fields":[{"name":"dictId","doc":" 字典主键\n"},{"name":"dictName","doc":" 字典名称\n"},{"name":"dictType","doc":" 字典类型\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBo.class new file mode 100644 index 0000000..3c59290 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapper.class new file mode 100644 index 0000000..28eeb69 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapperImpl.class new file mode 100644 index 0000000..72cb5fc Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBo__Javadoc.json new file mode 100644 index 0000000..1dab8df --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysLogininforBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统访问记录业务对象 sys_logininfor\n\n @author Michelle.Chung\n","fields":[{"name":"infoId","doc":" 访问ID\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"clientKey","doc":" 客户端\n"},{"name":"deviceType","doc":" 设备类型\n"},{"name":"ipaddr","doc":" 登录IP地址\n"},{"name":"loginLocation","doc":" 登录地点\n"},{"name":"browser","doc":" 浏览器类型\n"},{"name":"os","doc":" 操作系统\n"},{"name":"status","doc":" 登录状态(0成功 1失败)\n"},{"name":"msg","doc":" 提示消息\n"},{"name":"loginTime","doc":" 访问时间\n"},{"name":"params","doc":" 请求参数\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBo.class new file mode 100644 index 0000000..613fd5b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapper.class new file mode 100644 index 0000000..29733b6 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapperImpl.class new file mode 100644 index 0000000..e56759b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBo__Javadoc.json new file mode 100644 index 0000000..df300aa --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysMenuBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 菜单权限业务对象 sys_menu\n\n @author Michelle.Chung\n","fields":[{"name":"menuId","doc":" 菜单ID\n"},{"name":"parentId","doc":" 父菜单ID\n"},{"name":"menuName","doc":" 菜单名称\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"path","doc":" 路由地址\n"},{"name":"component","doc":" 组件路径\n"},{"name":"queryParam","doc":" 路由参数\n"},{"name":"isFrame","doc":" 是否为外链(0是 1否)\n"},{"name":"isCache","doc":" 是否缓存(0缓存 1不缓存)\n"},{"name":"menuType","doc":" 菜单类型(M目录 C菜单 F按钮)\n"},{"name":"visible","doc":" 显示状态(0显示 1隐藏)\n"},{"name":"status","doc":" 菜单状态(0正常 1停用)\n"},{"name":"perms","doc":" 权限标识\n"},{"name":"icon","doc":" 菜单图标\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBo.class new file mode 100644 index 0000000..679d627 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapper.class new file mode 100644 index 0000000..836d269 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapperImpl.class new file mode 100644 index 0000000..c2fba84 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBo__Javadoc.json new file mode 100644 index 0000000..e732ed1 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysNoticeBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 通知公告业务对象 sys_notice\n\n @author Michelle.Chung\n","fields":[{"name":"noticeId","doc":" 公告ID\n"},{"name":"noticeTitle","doc":" 公告标题\n"},{"name":"noticeType","doc":" 公告类型(1通知 2公告)\n"},{"name":"noticeContent","doc":" 公告内容\n"},{"name":"status","doc":" 公告状态(0正常 1关闭)\n"},{"name":"remark","doc":" 备注\n"},{"name":"createByName","doc":" 创建人名称\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBo.class new file mode 100644 index 0000000..85d7e1e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapper.class new file mode 100644 index 0000000..e910cb7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapperImpl.class new file mode 100644 index 0000000..1a62933 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapper.class new file mode 100644 index 0000000..ffcd16c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapperImpl.class new file mode 100644 index 0000000..dacfe82 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBo__Javadoc.json new file mode 100644 index 0000000..70f099d --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOperLogBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 操作日志记录业务对象 sys_oper_log\n\n @author Michelle.Chung\n @date 2023-02-07\n","fields":[{"name":"operId","doc":" 日志主键\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"title","doc":" 模块标题\n"},{"name":"businessType","doc":" 业务类型(0其它 1新增 2修改 3删除)\n"},{"name":"businessTypes","doc":" 业务类型数组\n"},{"name":"method","doc":" 方法名称\n"},{"name":"requestMethod","doc":" 请求方式\n"},{"name":"operatorType","doc":" 操作类别(0其它 1后台用户 2手机端用户)\n"},{"name":"operName","doc":" 操作人员\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"operUrl","doc":" 请求URL\n"},{"name":"operIp","doc":" 主机地址\n"},{"name":"operLocation","doc":" 操作地点\n"},{"name":"operParam","doc":" 请求参数\n"},{"name":"jsonResult","doc":" 返回参数\n"},{"name":"status","doc":" 操作状态(0正常 1异常)\n"},{"name":"errorMsg","doc":" 错误消息\n"},{"name":"operTime","doc":" 操作时间\n"},{"name":"costTime","doc":" 消耗时间\n"},{"name":"params","doc":" 请求参数\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBo.class new file mode 100644 index 0000000..b0e7636 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBoToSysOssMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBoToSysOssMapper.class new file mode 100644 index 0000000..947f98b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBoToSysOssMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBoToSysOssMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBoToSysOssMapperImpl.class new file mode 100644 index 0000000..46a6f64 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBoToSysOssMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBo__Javadoc.json new file mode 100644 index 0000000..acacd51 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" OSS对象存储分页查询对象 sys_oss\n\n @author Lion Li\n","fields":[{"name":"ossId","doc":" ossId\n"},{"name":"fileName","doc":" 文件名\n"},{"name":"originalName","doc":" 原名\n"},{"name":"fileSuffix","doc":" 文件后缀名\n"},{"name":"url","doc":" URL地址\n"},{"name":"service","doc":" 服务商\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBo.class new file mode 100644 index 0000000..786ba55 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapper.class new file mode 100644 index 0000000..13cd5a8 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapperImpl.class new file mode 100644 index 0000000..9cf1b5a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBo__Javadoc.json new file mode 100644 index 0000000..6111213 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysOssConfigBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 对象存储配置业务对象 sys_oss_config\n\n @author Lion Li\n @author 孤舟烟雨\n @date 2021-08-13\n","fields":[{"name":"ossConfigId","doc":" 主键\n"},{"name":"configKey","doc":" 配置key\n"},{"name":"accessKey","doc":" accessKey\n"},{"name":"secretKey","doc":" 秘钥\n"},{"name":"bucketName","doc":" 桶名称\n"},{"name":"prefix","doc":" 前缀\n"},{"name":"endpoint","doc":" 访问站点\n"},{"name":"domain","doc":" 自定义域名\n"},{"name":"isHttps","doc":" 是否https(Y=是,N=否)\n"},{"name":"status","doc":" 是否默认(0=是,1=否)\n"},{"name":"region","doc":" 域\n"},{"name":"ext1","doc":" 扩展字段\n"},{"name":"remark","doc":" 备注\n"},{"name":"accessPolicy","doc":" 桶权限类型(0private 1public 2custom)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBo.class new file mode 100644 index 0000000..d5ddebe Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBoToSysPostMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBoToSysPostMapper.class new file mode 100644 index 0000000..e022962 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBoToSysPostMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBoToSysPostMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBoToSysPostMapperImpl.class new file mode 100644 index 0000000..42066bc Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBoToSysPostMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBo__Javadoc.json new file mode 100644 index 0000000..6116ef4 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysPostBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 岗位信息业务对象 sys_post\n\n @author Michelle.Chung\n","fields":[{"name":"postId","doc":" 岗位ID\n"},{"name":"deptId","doc":" 部门id(单部门)\n"},{"name":"belongDeptId","doc":" 归属部门id(部门树)\n"},{"name":"postCode","doc":" 岗位编码\n"},{"name":"postName","doc":" 岗位名称\n"},{"name":"postCategory","doc":" 岗位类别编码\n"},{"name":"postSort","doc":" 显示顺序\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"},{"name":"remark","doc":" 备注\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBo.class new file mode 100644 index 0000000..3a2994c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapper.class new file mode 100644 index 0000000..4a11da8 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapperImpl.class new file mode 100644 index 0000000..339fc9c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBo__Javadoc.json new file mode 100644 index 0000000..b6ac655 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysRoleBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色信息业务对象 sys_role\n\n @author Michelle.Chung\n","fields":[{"name":"roleId","doc":" 角色ID\n"},{"name":"roleName","doc":" 角色名称\n"},{"name":"roleKey","doc":" 角色权限字符串\n"},{"name":"roleSort","doc":" 显示顺序\n"},{"name":"dataScope","doc":" 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)\n"},{"name":"menuCheckStrictly","doc":" 菜单树选择项是否关联显示\n"},{"name":"deptCheckStrictly","doc":" 部门树选择项是否关联显示\n"},{"name":"status","doc":" 角色状态(0正常 1停用)\n"},{"name":"remark","doc":" 备注\n"},{"name":"menuIds","doc":" 菜单组\n"},{"name":"deptIds","doc":" 部门组(数据权限)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBo.class new file mode 100644 index 0000000..92d79d6 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapper.class new file mode 100644 index 0000000..f2ba179 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapperImpl.class new file mode 100644 index 0000000..2a3e79a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBo__Javadoc.json new file mode 100644 index 0000000..294f264 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysSocialBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 社会化关系业务对象 sys_social\n\n @author Lion Li\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"authId","doc":" 认证唯一ID\n"},{"name":"source","doc":" 用户来源\n"},{"name":"accessToken","doc":" 用户的授权令牌\n"},{"name":"expireIn","doc":" 用户的授权令牌的有效期,部分平台可能没有\n"},{"name":"refreshToken","doc":" 刷新令牌,部分平台可能没有\n"},{"name":"openId","doc":" 平台唯一id\n"},{"name":"userId","doc":" 用户的 ID\n"},{"name":"accessCode","doc":" 平台的授权信息,部分平台可能没有\n"},{"name":"unionId","doc":" 用户的 unionid\n"},{"name":"scope","doc":" 授予的权限,部分平台可能没有\n"},{"name":"userName","doc":" 授权的第三方账号\n"},{"name":"nickName","doc":" 授权的第三方昵称\n"},{"name":"email","doc":" 授权的第三方邮箱\n"},{"name":"avatar","doc":" 授权的第三方头像地址\n"},{"name":"tokenType","doc":" 个别平台的授权信息,部分平台可能没有\n"},{"name":"idToken","doc":" id token,部分平台可能没有\n"},{"name":"macAlgorithm","doc":" 小米平台用户的附带属性,部分平台可能没有\n"},{"name":"macKey","doc":" 小米平台用户的附带属性,部分平台可能没有\n"},{"name":"code","doc":" 用户的授权code,部分平台可能没有\n"},{"name":"oauthToken","doc":" Twitter平台用户的附带属性,部分平台可能没有\n"},{"name":"oauthTokenSecret","doc":" Twitter平台用户的附带属性,部分平台可能没有\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBo.class new file mode 100644 index 0000000..3efc736 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapper.class new file mode 100644 index 0000000..d69cd79 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapperImpl.class new file mode 100644 index 0000000..47abf92 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBo__Javadoc.json new file mode 100644 index 0000000..d01b4d2 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户业务对象 sys_tenant\n\n @author Michelle.Chung\n","fields":[{"name":"id","doc":" id\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"contactUserName","doc":" 联系人\n"},{"name":"contactPhone","doc":" 联系电话\n"},{"name":"companyName","doc":" 企业名称\n"},{"name":"username","doc":" 用户名(创建系统用户)\n"},{"name":"password","doc":" 密码(创建系统用户)\n"},{"name":"licenseNumber","doc":" 统一社会信用代码\n"},{"name":"address","doc":" 地址\n"},{"name":"domain","doc":" 域名\n"},{"name":"intro","doc":" 企业简介\n"},{"name":"remark","doc":" 备注\n"},{"name":"packageId","doc":" 租户套餐编号\n"},{"name":"expireTime","doc":" 过期时间\n"},{"name":"accountCount","doc":" 用户数量(-1不限制)\n"},{"name":"status","doc":" 租户状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBo.class new file mode 100644 index 0000000..6ff823e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapper.class new file mode 100644 index 0000000..c7ff2a1 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapperImpl.class new file mode 100644 index 0000000..f72bd8b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBo__Javadoc.json new file mode 100644 index 0000000..8ecd14d --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysTenantPackageBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户套餐业务对象 sys_tenant_package\n\n @author Michelle.Chung\n","fields":[{"name":"packageId","doc":" 租户套餐id\n"},{"name":"packageName","doc":" 套餐名称\n"},{"name":"menuIds","doc":" 关联菜单id\n"},{"name":"remark","doc":" 备注\n"},{"name":"menuCheckStrictly","doc":" 菜单树选择项是否关联显示\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBo.class new file mode 100644 index 0000000..9b35d86 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBoToSysUserMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBoToSysUserMapper.class new file mode 100644 index 0000000..59d0c0e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBoToSysUserMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBoToSysUserMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBoToSysUserMapperImpl.class new file mode 100644 index 0000000..d54a7be Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBoToSysUserMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBo__Javadoc.json new file mode 100644 index 0000000..59030cd --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户信息业务对象 sys_user\n\n @author Michelle.Chung\n","fields":[{"name":"userId","doc":" 用户ID\n"},{"name":"deptId","doc":" 部门ID\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"nickName","doc":" 用户昵称\n"},{"name":"userType","doc":" 用户类型(sys_user系统用户)\n"},{"name":"email","doc":" 用户邮箱\n"},{"name":"phonenumber","doc":" 手机号码\n"},{"name":"sex","doc":" 用户性别(0男 1女 2未知)\n"},{"name":"password","doc":" 密码\n"},{"name":"status","doc":" 帐号状态(0正常 1停用)\n"},{"name":"remark","doc":" 备注\n"},{"name":"roleIds","doc":" 角色组\n"},{"name":"postIds","doc":" 岗位组\n"},{"name":"roleId","doc":" 数据权限 当前角色ID\n"},{"name":"excludeUserIds","doc":" 排除不查询的用户(工作流用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserPasswordBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserPasswordBo.class new file mode 100644 index 0000000..b5e908c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserPasswordBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserPasswordBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserPasswordBo__Javadoc.json new file mode 100644 index 0000000..2531bbc --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserPasswordBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户密码修改bo\n","fields":[{"name":"oldPassword","doc":" 旧密码\n"},{"name":"newPassword","doc":" 新密码\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserProfileBo.class b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserProfileBo.class new file mode 100644 index 0000000..9202aec Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserProfileBo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserProfileBo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserProfileBo__Javadoc.json new file mode 100644 index 0000000..f854241 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/bo/SysUserProfileBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 个人信息业务处理\n\n @author Michelle.Chung\n","fields":[{"name":"nickName","doc":" 用户昵称\n"},{"name":"email","doc":" 用户邮箱\n"},{"name":"phonenumber","doc":" 手机号码\n"},{"name":"sex","doc":" 用户性别(0男 1女 2未知)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/AvatarVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/AvatarVo.class new file mode 100644 index 0000000..c20df93 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/AvatarVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/AvatarVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/AvatarVo__Javadoc.json new file mode 100644 index 0000000..6710099 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/AvatarVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户头像信息\n\n @author Michelle.Chung\n","fields":[{"name":"imgUrl","doc":" 头像地址\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/CacheListInfoVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/CacheListInfoVo.class new file mode 100644 index 0000000..f59600e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/CacheListInfoVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/CacheListInfoVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/CacheListInfoVo__Javadoc.json new file mode 100644 index 0000000..94e1780 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/CacheListInfoVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 缓存监控列表信息\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/DeptTreeSelectVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/DeptTreeSelectVo.class new file mode 100644 index 0000000..9e6d59c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/DeptTreeSelectVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/DeptTreeSelectVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/DeptTreeSelectVo__Javadoc.json new file mode 100644 index 0000000..f84d392 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/DeptTreeSelectVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色部门列表树信息\n\n @author Michelle.Chung\n","fields":[{"name":"checkedKeys","doc":" 选中部门列表\n"},{"name":"depts","doc":" 下拉树结构列表\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/MenuTreeSelectVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MenuTreeSelectVo.class new file mode 100644 index 0000000..6d649e3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MenuTreeSelectVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/MenuTreeSelectVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MenuTreeSelectVo__Javadoc.json new file mode 100644 index 0000000..dbb7f4b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MenuTreeSelectVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色菜单列表树信息\n\n @author Michelle.Chung\n","fields":[{"name":"checkedKeys","doc":" 选中菜单列表\n"},{"name":"menus","doc":" 菜单下拉树结构列表\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/MetaVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MetaVo.class new file mode 100644 index 0000000..18e96bd Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MetaVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/MetaVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MetaVo__Javadoc.json new file mode 100644 index 0000000..eea4c7b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/MetaVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 路由显示信息\n\n @author ruoyi\n","fields":[{"name":"title","doc":" 设置该路由在侧边栏和面包屑中展示的名字\n"},{"name":"icon","doc":" 设置该路由的图标,对应路径src/assets/icons/svg\n"},{"name":"noCache","doc":" 设置为true,则不会被 缓存\n"},{"name":"link","doc":" 内链地址(http(s)://开头)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/ProfileVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/ProfileVo.class new file mode 100644 index 0000000..d8270f9 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/ProfileVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/ProfileVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/ProfileVo__Javadoc.json new file mode 100644 index 0000000..79ed033 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/ProfileVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户个人信息\n\n @author Michelle.Chung\n","fields":[{"name":"user","doc":" 用户信息\n"},{"name":"roleGroup","doc":" 用户所属角色组\n"},{"name":"postGroup","doc":" 用户所属岗位组\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/RouterVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/RouterVo.class new file mode 100644 index 0000000..8a1b211 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/RouterVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/RouterVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/RouterVo__Javadoc.json new file mode 100644 index 0000000..dd14ee3 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/RouterVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 路由配置信息\n\n @author Lion Li\n","fields":[{"name":"name","doc":" 路由名字\n"},{"name":"path","doc":" 路由地址\n"},{"name":"hidden","doc":" 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现\n"},{"name":"redirect","doc":" 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击\n"},{"name":"component","doc":" 组件地址\n"},{"name":"query","doc":" 路由参数:如 {\"id\": 1, \"name\": \"ry\"}\n"},{"name":"alwaysShow","doc":" 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面\n"},{"name":"meta","doc":" 其他元素\n"},{"name":"children","doc":" 子路由\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVo.class new file mode 100644 index 0000000..a470c28 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVoToSysClientMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVoToSysClientMapper.class new file mode 100644 index 0000000..59dd3d7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVoToSysClientMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVoToSysClientMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVoToSysClientMapperImpl.class new file mode 100644 index 0000000..8bc0a62 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVoToSysClientMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVo__Javadoc.json new file mode 100644 index 0000000..6db6a0f --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysClientVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 授权管理视图对象 sys_client\n\n @author Michelle.Chung\n @date 2023-05-15\n","fields":[{"name":"id","doc":" id\n"},{"name":"clientId","doc":" 客户端id\n"},{"name":"clientKey","doc":" 客户端key\n"},{"name":"clientSecret","doc":" 客户端秘钥\n"},{"name":"grantTypeList","doc":" 授权类型\n"},{"name":"grantType","doc":" 授权类型\n"},{"name":"deviceType","doc":" 设备类型\n"},{"name":"activeTimeout","doc":" token活跃超时时间\n"},{"name":"timeout","doc":" token固定超时时间\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVo.class new file mode 100644 index 0000000..02ec868 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapper.class new file mode 100644 index 0000000..bc69b38 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapperImpl.class new file mode 100644 index 0000000..f77e8d0 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVo__Javadoc.json new file mode 100644 index 0000000..a5f43a6 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysConfigVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 参数配置视图对象 sys_config\n\n @author Michelle.Chung\n","fields":[{"name":"configId","doc":" 参数主键\n"},{"name":"configName","doc":" 参数名称\n"},{"name":"configKey","doc":" 参数键名\n"},{"name":"configValue","doc":" 参数键值\n"},{"name":"configType","doc":" 系统内置(Y是 N否)\n"},{"name":"remark","doc":" 备注\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVo.class new file mode 100644 index 0000000..8acf68d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapper.class new file mode 100644 index 0000000..3d37f7c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapperImpl.class new file mode 100644 index 0000000..16fa0b8 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVo__Javadoc.json new file mode 100644 index 0000000..9cc872e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDeptVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 部门视图对象 sys_dept\n\n @author Michelle.Chung\n","fields":[{"name":"deptId","doc":" 部门id\n"},{"name":"parentId","doc":" 父部门id\n"},{"name":"parentName","doc":" 父部门名称\n"},{"name":"ancestors","doc":" 祖级列表\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"deptCategory","doc":" 部门类别编码\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"leader","doc":" 负责人ID\n"},{"name":"leaderName","doc":" 负责人\n"},{"name":"phone","doc":" 联系电话\n"},{"name":"email","doc":" 邮箱\n"},{"name":"status","doc":" 部门状态(0正常 1停用)\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVo.class new file mode 100644 index 0000000..a0775ee Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapper.class new file mode 100644 index 0000000..f3a5be5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapperImpl.class new file mode 100644 index 0000000..27a71e0 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVo__Javadoc.json new file mode 100644 index 0000000..2372382 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictDataVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典数据视图对象 sys_dict_data\n\n @author Michelle.Chung\n","fields":[{"name":"dictCode","doc":" 字典编码\n"},{"name":"dictSort","doc":" 字典排序\n"},{"name":"dictLabel","doc":" 字典标签\n"},{"name":"dictValue","doc":" 字典键值\n"},{"name":"dictType","doc":" 字典类型\n"},{"name":"cssClass","doc":" 样式属性(其他样式扩展)\n"},{"name":"listClass","doc":" 表格回显样式\n"},{"name":"isDefault","doc":" 是否默认(Y是 N否)\n"},{"name":"remark","doc":" 备注\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVo.class new file mode 100644 index 0000000..447606b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapper.class new file mode 100644 index 0000000..d687505 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapperImpl.class new file mode 100644 index 0000000..b28da10 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVo__Javadoc.json new file mode 100644 index 0000000..1139f9e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysDictTypeVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典类型视图对象 sys_dict_type\n\n @author Michelle.Chung\n","fields":[{"name":"dictId","doc":" 字典主键\n"},{"name":"dictName","doc":" 字典名称\n"},{"name":"dictType","doc":" 字典类型\n"},{"name":"remark","doc":" 备注\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVo.class new file mode 100644 index 0000000..0fe3aed Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapper.class new file mode 100644 index 0000000..d1a7429 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapperImpl.class new file mode 100644 index 0000000..5c99ba1 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVo__Javadoc.json new file mode 100644 index 0000000..57ecf8c --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysLogininforVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统访问记录视图对象 sys_logininfor\n\n @author Michelle.Chung\n @date 2023-02-07\n","fields":[{"name":"infoId","doc":" 访问ID\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"clientKey","doc":" 客户端\n"},{"name":"deviceType","doc":" 设备类型\n"},{"name":"status","doc":" 登录状态(0成功 1失败)\n"},{"name":"ipaddr","doc":" 登录IP地址\n"},{"name":"loginLocation","doc":" 登录地点\n"},{"name":"browser","doc":" 浏览器类型\n"},{"name":"os","doc":" 操作系统\n"},{"name":"msg","doc":" 提示消息\n"},{"name":"loginTime","doc":" 访问时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVo.class new file mode 100644 index 0000000..249461e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapper.class new file mode 100644 index 0000000..ad6d748 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapperImpl.class new file mode 100644 index 0000000..ddd5df9 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVo__Javadoc.json new file mode 100644 index 0000000..f81c3ad --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysMenuVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 菜单权限视图对象 sys_menu\n\n @author Michelle.Chung\n","fields":[{"name":"menuId","doc":" 菜单ID\n"},{"name":"menuName","doc":" 菜单名称\n"},{"name":"parentId","doc":" 父菜单ID\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"path","doc":" 路由地址\n"},{"name":"component","doc":" 组件路径\n"},{"name":"queryParam","doc":" 路由参数\n"},{"name":"isFrame","doc":" 是否为外链(0是 1否)\n"},{"name":"isCache","doc":" 是否缓存(0缓存 1不缓存)\n"},{"name":"menuType","doc":" 菜单类型(M目录 C菜单 F按钮)\n"},{"name":"visible","doc":" 显示状态(0显示 1隐藏)\n"},{"name":"status","doc":" 菜单状态(0正常 1停用)\n"},{"name":"perms","doc":" 权限标识\n"},{"name":"icon","doc":" 菜单图标\n"},{"name":"createDept","doc":" 创建部门\n"},{"name":"remark","doc":" 备注\n"},{"name":"createTime","doc":" 创建时间\n"},{"name":"children","doc":" 子菜单\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVo.class new file mode 100644 index 0000000..b5616aa Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapper.class new file mode 100644 index 0000000..6127f43 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapperImpl.class new file mode 100644 index 0000000..d2a956b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVo__Javadoc.json new file mode 100644 index 0000000..4e50a49 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysNoticeVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 通知公告视图对象 sys_notice\n\n @author Michelle.Chung\n","fields":[{"name":"noticeId","doc":" 公告ID\n"},{"name":"noticeTitle","doc":" 公告标题\n"},{"name":"noticeType","doc":" 公告类型(1通知 2公告)\n"},{"name":"noticeContent","doc":" 公告内容\n"},{"name":"status","doc":" 公告状态(0正常 1关闭)\n"},{"name":"remark","doc":" 备注\n"},{"name":"createBy","doc":" 创建者\n"},{"name":"createByName","doc":" 创建人名称\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVo.class new file mode 100644 index 0000000..a036d8a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapper.class new file mode 100644 index 0000000..d9ed212 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapperImpl.class new file mode 100644 index 0000000..72705a0 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVo__Javadoc.json new file mode 100644 index 0000000..986e647 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOperLogVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 操作日志记录视图对象 sys_oper_log\n\n @author Michelle.Chung\n @date 2023-02-07\n","fields":[{"name":"operId","doc":" 日志主键\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"title","doc":" 模块标题\n"},{"name":"businessType","doc":" 业务类型(0其它 1新增 2修改 3删除)\n"},{"name":"businessTypes","doc":" 业务类型数组\n"},{"name":"method","doc":" 方法名称\n"},{"name":"requestMethod","doc":" 请求方式\n"},{"name":"operatorType","doc":" 操作类别(0其它 1后台用户 2手机端用户)\n"},{"name":"operName","doc":" 操作人员\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"operUrl","doc":" 请求URL\n"},{"name":"operIp","doc":" 主机地址\n"},{"name":"operLocation","doc":" 操作地点\n"},{"name":"operParam","doc":" 请求参数\n"},{"name":"jsonResult","doc":" 返回参数\n"},{"name":"status","doc":" 操作状态(0正常 1异常)\n"},{"name":"errorMsg","doc":" 错误消息\n"},{"name":"operTime","doc":" 操作时间\n"},{"name":"costTime","doc":" 消耗时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVo.class new file mode 100644 index 0000000..7c08cc4 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapper.class new file mode 100644 index 0000000..2dc759d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapperImpl.class new file mode 100644 index 0000000..13cb1e5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVo__Javadoc.json new file mode 100644 index 0000000..774054f --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssConfigVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 对象存储配置视图对象 sys_oss_config\n\n @author Lion Li\n @author 孤舟烟雨\n @date 2021-08-13\n","fields":[{"name":"ossConfigId","doc":" 主键\n"},{"name":"configKey","doc":" 配置key\n"},{"name":"accessKey","doc":" accessKey\n"},{"name":"secretKey","doc":" 秘钥\n"},{"name":"bucketName","doc":" 桶名称\n"},{"name":"prefix","doc":" 前缀\n"},{"name":"endpoint","doc":" 访问站点\n"},{"name":"domain","doc":" 自定义域名\n"},{"name":"isHttps","doc":" 是否https(Y=是,N=否)\n"},{"name":"region","doc":" 域\n"},{"name":"status","doc":" 是否默认(0=是,1=否)\n"},{"name":"ext1","doc":" 扩展字段\n"},{"name":"remark","doc":" 备注\n"},{"name":"accessPolicy","doc":" 桶权限类型(0private 1public 2custom)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssUploadVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssUploadVo.class new file mode 100644 index 0000000..2de8634 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssUploadVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssUploadVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssUploadVo__Javadoc.json new file mode 100644 index 0000000..f1b1dea --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssUploadVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 上传对象信息\n\n @author Michelle.Chung\n","fields":[{"name":"url","doc":" URL地址\n"},{"name":"fileName","doc":" 文件名\n"},{"name":"ossId","doc":" 对象存储主键\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVo.class new file mode 100644 index 0000000..dd73ed3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVoToSysOssMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVoToSysOssMapper.class new file mode 100644 index 0000000..a365228 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVoToSysOssMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVoToSysOssMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVoToSysOssMapperImpl.class new file mode 100644 index 0000000..0484f60 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVoToSysOssMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVo__Javadoc.json new file mode 100644 index 0000000..5572604 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysOssVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" OSS对象存储视图对象 sys_oss\n\n @author Lion Li\n","fields":[{"name":"ossId","doc":" 对象存储主键\n"},{"name":"fileName","doc":" 文件名\n"},{"name":"originalName","doc":" 原名\n"},{"name":"fileSuffix","doc":" 文件后缀名\n"},{"name":"url","doc":" URL地址\n"},{"name":"createTime","doc":" 创建时间\n"},{"name":"createBy","doc":" 上传人\n"},{"name":"createByName","doc":" 上传人名称\n"},{"name":"service","doc":" 服务商\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVo.class new file mode 100644 index 0000000..970b3a7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVoToSysPostMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVoToSysPostMapper.class new file mode 100644 index 0000000..b81e253 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVoToSysPostMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVoToSysPostMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVoToSysPostMapperImpl.class new file mode 100644 index 0000000..8c4e77e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVoToSysPostMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVo__Javadoc.json new file mode 100644 index 0000000..66ebd13 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysPostVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 岗位信息视图对象 sys_post\n\n @author Michelle.Chung\n","fields":[{"name":"postId","doc":" 岗位ID\n"},{"name":"deptId","doc":" 部门id\n"},{"name":"postCode","doc":" 岗位编码\n"},{"name":"postName","doc":" 岗位名称\n"},{"name":"postCategory","doc":" 岗位类别编码\n"},{"name":"postSort","doc":" 显示顺序\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"},{"name":"remark","doc":" 备注\n"},{"name":"createTime","doc":" 创建时间\n"},{"name":"deptName","doc":" 部门名\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVo.class new file mode 100644 index 0000000..f65c0dc Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapper.class new file mode 100644 index 0000000..dddbc34 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapperImpl.class new file mode 100644 index 0000000..66af86e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVo__Javadoc.json new file mode 100644 index 0000000..ad59c23 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysRoleVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色信息视图对象 sys_role\n\n @author Michelle.Chung\n","fields":[{"name":"roleId","doc":" 角色ID\n"},{"name":"roleName","doc":" 角色名称\n"},{"name":"roleKey","doc":" 角色权限字符串\n"},{"name":"roleSort","doc":" 显示顺序\n"},{"name":"dataScope","doc":" 数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)\n"},{"name":"menuCheckStrictly","doc":" 菜单树选择项是否关联显示\n"},{"name":"deptCheckStrictly","doc":" 部门树选择项是否关联显示\n"},{"name":"status","doc":" 角色状态(0正常 1停用)\n"},{"name":"remark","doc":" 备注\n"},{"name":"createTime","doc":" 创建时间\n"},{"name":"flag","doc":" 用户是否存在此角色标识 默认不存在\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVo.class new file mode 100644 index 0000000..2cd10f5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapper.class new file mode 100644 index 0000000..672c696 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapperImpl.class new file mode 100644 index 0000000..803410d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVo__Javadoc.json new file mode 100644 index 0000000..881b123 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysSocialVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 社会化关系视图对象 sys_social\n\n @author thiszhc\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"userId","doc":" 用户ID\n"},{"name":"tenantId","doc":" 租户ID\n"},{"name":"authId","doc":" 的唯一ID\n"},{"name":"source","doc":" 用户来源\n"},{"name":"accessToken","doc":" 用户的授权令牌\n"},{"name":"expireIn","doc":" 用户的授权令牌的有效期,部分平台可能没有\n"},{"name":"refreshToken","doc":" 刷新令牌,部分平台可能没有\n"},{"name":"openId","doc":" 用户的 open id\n"},{"name":"userName","doc":" 授权的第三方账号\n"},{"name":"nickName","doc":" 授权的第三方昵称\n"},{"name":"email","doc":" 授权的第三方邮箱\n"},{"name":"avatar","doc":" 授权的第三方头像地址\n"},{"name":"accessCode","doc":" 平台的授权信息,部分平台可能没有\n"},{"name":"unionId","doc":" 用户的 unionid\n"},{"name":"scope","doc":" 授予的权限,部分平台可能没有\n"},{"name":"tokenType","doc":" 个别平台的授权信息,部分平台可能没有\n"},{"name":"idToken","doc":" id token,部分平台可能没有\n"},{"name":"macAlgorithm","doc":" 小米平台用户的附带属性,部分平台可能没有\n"},{"name":"macKey","doc":" 小米平台用户的附带属性,部分平台可能没有\n"},{"name":"code","doc":" 用户的授权code,部分平台可能没有\n"},{"name":"oauthToken","doc":" Twitter平台用户的附带属性,部分平台可能没有\n"},{"name":"oauthTokenSecret","doc":" Twitter平台用户的附带属性,部分平台可能没有\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVo.class new file mode 100644 index 0000000..6d9d601 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapper.class new file mode 100644 index 0000000..9e1b543 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapperImpl.class new file mode 100644 index 0000000..2f0c65f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVo__Javadoc.json new file mode 100644 index 0000000..e29f000 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantPackageVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户套餐视图对象 sys_tenant_package\n\n @author Michelle.Chung\n","fields":[{"name":"packageId","doc":" 租户套餐id\n"},{"name":"packageName","doc":" 套餐名称\n"},{"name":"menuIds","doc":" 关联菜单id\n"},{"name":"remark","doc":" 备注\n"},{"name":"menuCheckStrictly","doc":" 菜单树选择项是否关联显示\n"},{"name":"status","doc":" 状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVo.class new file mode 100644 index 0000000..3ff1511 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapper.class new file mode 100644 index 0000000..a505612 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapperImpl.class new file mode 100644 index 0000000..bef2c16 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVo__Javadoc.json new file mode 100644 index 0000000..5af052b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysTenantVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户视图对象 sys_tenant\n\n @author Michelle.Chung\n","fields":[{"name":"id","doc":" id\n"},{"name":"tenantId","doc":" 租户编号\n"},{"name":"contactUserName","doc":" 联系人\n"},{"name":"contactPhone","doc":" 联系电话\n"},{"name":"companyName","doc":" 企业名称\n"},{"name":"licenseNumber","doc":" 统一社会信用代码\n"},{"name":"address","doc":" 地址\n"},{"name":"domain","doc":" 域名\n"},{"name":"intro","doc":" 企业简介\n"},{"name":"remark","doc":" 备注\n"},{"name":"packageId","doc":" 租户套餐编号\n"},{"name":"expireTime","doc":" 过期时间\n"},{"name":"accountCount","doc":" 用户数量(-1不限制)\n"},{"name":"status","doc":" 租户状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserExportVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserExportVo.class new file mode 100644 index 0000000..3710170 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserExportVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserExportVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserExportVo__Javadoc.json new file mode 100644 index 0000000..228bd84 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserExportVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户对象导出VO\n\n @author Lion Li\n","fields":[{"name":"userId","doc":" 用户ID\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"nickName","doc":" 用户昵称\n"},{"name":"email","doc":" 用户邮箱\n"},{"name":"phonenumber","doc":" 手机号码\n"},{"name":"sex","doc":" 用户性别\n"},{"name":"status","doc":" 帐号状态(0正常 1停用)\n"},{"name":"loginIp","doc":" 最后登录IP\n"},{"name":"loginDate","doc":" 最后登录时间\n"},{"name":"deptName","doc":" 部门名称\n"},{"name":"leaderName","doc":" 负责人\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserImportVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserImportVo.class new file mode 100644 index 0000000..20fc852 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserImportVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserImportVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserImportVo__Javadoc.json new file mode 100644 index 0000000..3631cfb --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserImportVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户对象导入VO\n\n @author Lion Li\n","fields":[{"name":"userId","doc":" 用户ID\n"},{"name":"deptId","doc":" 部门ID\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"nickName","doc":" 用户昵称\n"},{"name":"email","doc":" 用户邮箱\n"},{"name":"phonenumber","doc":" 手机号码\n"},{"name":"sex","doc":" 用户性别\n"},{"name":"status","doc":" 帐号状态(0正常 1停用)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserInfoVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserInfoVo.class new file mode 100644 index 0000000..b0b33cd Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserInfoVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserInfoVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserInfoVo__Javadoc.json new file mode 100644 index 0000000..190df37 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserInfoVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户信息\n\n @author Michelle.Chung\n","fields":[{"name":"user","doc":" 用户信息\n"},{"name":"roleIds","doc":" 角色ID列表\n"},{"name":"roles","doc":" 角色列表\n"},{"name":"postIds","doc":" 岗位ID列表\n"},{"name":"posts","doc":" 岗位列表\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVo.class new file mode 100644 index 0000000..2b87aec Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVoToSysUserMapper.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVoToSysUserMapper.class new file mode 100644 index 0000000..98a795d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVoToSysUserMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVoToSysUserMapperImpl.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVoToSysUserMapperImpl.class new file mode 100644 index 0000000..f0b3e7d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVoToSysUserMapperImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVo__Javadoc.json new file mode 100644 index 0000000..f1a5a7e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/SysUserVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户信息视图对象 sys_user\n\n @author Michelle.Chung\n","fields":[{"name":"userId","doc":" 用户ID\n"},{"name":"tenantId","doc":" 租户ID\n"},{"name":"deptId","doc":" 部门ID\n"},{"name":"userName","doc":" 用户账号\n"},{"name":"nickName","doc":" 用户昵称\n"},{"name":"userType","doc":" 用户类型(sys_user系统用户)\n"},{"name":"email","doc":" 用户邮箱\n"},{"name":"phonenumber","doc":" 手机号码\n"},{"name":"sex","doc":" 用户性别(0男 1女 2未知)\n"},{"name":"avatar","doc":" 头像地址\n"},{"name":"password","doc":" 密码\n"},{"name":"status","doc":" 帐号状态(0正常 1停用)\n"},{"name":"loginIp","doc":" 最后登录IP\n"},{"name":"loginDate","doc":" 最后登录时间\n"},{"name":"remark","doc":" 备注\n"},{"name":"createTime","doc":" 创建时间\n"},{"name":"deptName","doc":" 部门名\n"},{"name":"roles","doc":" 角色对象\n"},{"name":"roleIds","doc":" 角色组\n"},{"name":"postIds","doc":" 岗位组\n"},{"name":"roleId","doc":" 数据权限 当前角色ID\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/UserInfoVo.class b/ruoyi-system/target/classes/org/dromara/system/domain/vo/UserInfoVo.class new file mode 100644 index 0000000..5a624ef Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/domain/vo/UserInfoVo.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/domain/vo/UserInfoVo__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/domain/vo/UserInfoVo__Javadoc.json new file mode 100644 index 0000000..1881313 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/domain/vo/UserInfoVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 登录用户信息\n\n @author Michelle.Chung\n","fields":[{"name":"user","doc":" 用户基本信息\n"},{"name":"permissions","doc":" 菜单权限\n"},{"name":"roles","doc":" 角色权限\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener$1.class b/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener$1.class new file mode 100644 index 0000000..85c92d9 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener$1.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener.class b/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener.class new file mode 100644 index 0000000..09763bc Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener__Javadoc.json new file mode 100644 index 0000000..c966272 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/listener/SysUserImportListener__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统用户自定义导入\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysClientMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysClientMapper.class new file mode 100644 index 0000000..d13a86c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysClientMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysClientMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysClientMapper__Javadoc.json new file mode 100644 index 0000000..648fcdc --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysClientMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 授权管理Mapper接口\n\n @author Michelle.Chung\n @date 2023-05-15\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysConfigMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysConfigMapper.class new file mode 100644 index 0000000..06dc612 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysConfigMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysConfigMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysConfigMapper__Javadoc.json new file mode 100644 index 0000000..fe8edbe --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysConfigMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 参数配置 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysDeptMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDeptMapper.class new file mode 100644 index 0000000..a12334b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDeptMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysDeptMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDeptMapper__Javadoc.json new file mode 100644 index 0000000..b310030 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDeptMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 部门管理 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDeptList","paramTypes":["com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 查询部门管理数据\n\n @param queryWrapper 查询条件\n @return 部门信息集合\n"},{"name":"selectPageDeptList","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 分页查询部门管理数据\n\n @param queryWrapper 查询条件\n @return 部门信息集合\n"},{"name":"countDeptById","paramTypes":["java.lang.Long"],"doc":" 统计指定部门ID的部门数量\n\n @param deptId 部门ID\n @return 该部门ID的部门数量\n"},{"name":"selectListByParentId","paramTypes":["java.lang.Long"],"doc":" 根据父部门ID查询其所有子部门的列表\n\n @param parentId 父部门ID\n @return 包含子部门的列表\n"},{"name":"selectDeptListByRoleId","paramTypes":["java.lang.Long","boolean"],"doc":" 根据角色ID查询部门树信息\n\n @param roleId 角色ID\n @param deptCheckStrictly 部门树选择项是否关联显示\n @return 选中部门列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictDataMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictDataMapper.class new file mode 100644 index 0000000..1475e1d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictDataMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictDataMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictDataMapper__Javadoc.json new file mode 100644 index 0000000..c7fde9c --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictDataMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDictDataByType","paramTypes":["java.lang.String"],"doc":" 根据字典类型查询字典数据列表\n\n @param dictType 字典类型\n @return 符合条件的字典数据列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictTypeMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictTypeMapper.class new file mode 100644 index 0000000..fdcbb88 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictTypeMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictTypeMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictTypeMapper__Javadoc.json new file mode 100644 index 0000000..c6952f4 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysDictTypeMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysLogininforMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysLogininforMapper.class new file mode 100644 index 0000000..d398c3a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysLogininforMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysLogininforMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysLogininforMapper__Javadoc.json new file mode 100644 index 0000000..f89cbd4 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysLogininforMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统访问日志情况信息 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysMenuMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysMenuMapper.class new file mode 100644 index 0000000..c436335 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysMenuMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysMenuMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysMenuMapper__Javadoc.json new file mode 100644 index 0000000..c3f319f --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysMenuMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 菜单表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectMenuListByUserId","paramTypes":["com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 根据用户查询系统菜单列表\n\n @param queryWrapper 查询条件\n @return 菜单列表\n"},{"name":"selectMenuPermsByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询权限\n\n @param userId 用户ID\n @return 权限列表\n"},{"name":"selectMenuPermsByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询权限\n\n @param roleId 角色ID\n @return 权限列表\n"},{"name":"selectMenuTreeAll","paramTypes":[],"doc":" 根据用户ID查询菜单\n\n @return 菜单列表\n"},{"name":"selectMenuTreeByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询菜单\n\n @param userId 用户ID\n @return 菜单列表\n"},{"name":"selectMenuListByRoleId","paramTypes":["java.lang.Long","boolean"],"doc":" 根据角色ID查询菜单树信息\n\n @param roleId 角色ID\n @param menuCheckStrictly 菜单树选择项是否关联显示\n @return 选中菜单列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysNoticeMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysNoticeMapper.class new file mode 100644 index 0000000..d7ea27e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysNoticeMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysNoticeMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysNoticeMapper__Javadoc.json new file mode 100644 index 0000000..11e94fb --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysNoticeMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 通知公告表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysOperLogMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOperLogMapper.class new file mode 100644 index 0000000..689a32e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOperLogMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysOperLogMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOperLogMapper__Javadoc.json new file mode 100644 index 0000000..9867e80 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOperLogMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 操作日志 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssConfigMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssConfigMapper.class new file mode 100644 index 0000000..61c99be Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssConfigMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssConfigMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssConfigMapper__Javadoc.json new file mode 100644 index 0000000..8e931f5 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssConfigMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 对象存储配置Mapper接口\n\n @author Lion Li\n @author 孤舟烟雨\n @date 2021-08-13\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssMapper.class new file mode 100644 index 0000000..0daf525 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssMapper__Javadoc.json new file mode 100644 index 0000000..de583ad --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysOssMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 文件上传 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysPostMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysPostMapper.class new file mode 100644 index 0000000..982d1c1 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysPostMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysPostMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysPostMapper__Javadoc.json new file mode 100644 index 0000000..0733ec5 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysPostMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 岗位信息 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectPagePostList","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 分页查询岗位列表\n\n @param page 分页对象\n @param queryWrapper 查询条件\n @return 包含岗位信息的分页结果\n"},{"name":"selectPostsByUserId","paramTypes":["java.lang.Long"],"doc":" 查询用户所属岗位组\n\n @param userId 用户ID\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleDeptMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleDeptMapper.class new file mode 100644 index 0000000..7b4228b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleDeptMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleDeptMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleDeptMapper__Javadoc.json new file mode 100644 index 0000000..280917b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleDeptMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色与部门关联表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMapper.class new file mode 100644 index 0000000..4aa57bc Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMapper__Javadoc.json new file mode 100644 index 0000000..75519b6 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectPageRoleList","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 分页查询角色列表\n\n @param page 分页对象\n @param queryWrapper 查询条件\n @return 包含角色信息的分页结果\n"},{"name":"selectRoleList","paramTypes":["com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 根据条件分页查询角色数据\n\n @param queryWrapper 查询条件\n @return 角色数据集合信息\n"},{"name":"selectRoleById","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询角色信息\n\n @param roleId 角色ID\n @return 对应的角色信息\n"},{"name":"selectRolePermissionByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询角色\n\n @param userId 用户ID\n @return 角色列表\n"},{"name":"selectRolesByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询角色\n\n @param userId 用户ID\n @return 角色列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMenuMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMenuMapper.class new file mode 100644 index 0000000..a2c53ad Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMenuMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMenuMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMenuMapper__Javadoc.json new file mode 100644 index 0000000..4fa2956 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysRoleMenuMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色与菜单关联表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysSocialMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysSocialMapper.class new file mode 100644 index 0000000..c6e0827 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysSocialMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysSocialMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysSocialMapper__Javadoc.json new file mode 100644 index 0000000..ce51ddb --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysSocialMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 社会化关系Mapper接口\n\n @author thiszhc\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantMapper.class new file mode 100644 index 0000000..84932a9 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantMapper__Javadoc.json new file mode 100644 index 0000000..e3e52cd --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户Mapper接口\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantPackageMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantPackageMapper.class new file mode 100644 index 0000000..29225a9 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantPackageMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantPackageMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantPackageMapper__Javadoc.json new file mode 100644 index 0000000..98e44ec --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysTenantPackageMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户套餐Mapper接口\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserMapper.class new file mode 100644 index 0000000..5023fa6 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserMapper__Javadoc.json new file mode 100644 index 0000000..91c635f --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectPageUserList","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 分页查询用户列表,并进行数据权限控制\n\n @param page 分页参数\n @param queryWrapper 查询条件\n @return 分页的用户信息\n"},{"name":"selectUserList","paramTypes":["com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 查询用户列表,并进行数据权限控制\n\n @param queryWrapper 查询条件\n @return 用户信息集合\n"},{"name":"selectUserExportList","paramTypes":["com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 根据条件分页查询用户列表\n\n @param queryWrapper 查询条件\n @return 用户信息集合信息\n"},{"name":"selectAllocatedList","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 根据条件分页查询已配用户角色列表\n\n @param queryWrapper 查询条件\n @return 用户信息集合信息\n"},{"name":"selectUnallocatedList","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 根据条件分页查询未分配用户角色列表\n\n @param queryWrapper 查询条件\n @return 用户信息集合信息\n"},{"name":"countUserById","paramTypes":["java.lang.Long"],"doc":" 根据用户ID统计用户数量\n\n @param userId 用户ID\n @return 用户数量\n"},{"name":"update","paramTypes":["org.dromara.system.domain.SysUser","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 根据条件更新用户数据\n\n @param user 要更新的用户实体\n @param updateWrapper 更新条件封装器\n @return 更新操作影响的行数\n"},{"name":"updateById","paramTypes":["org.dromara.system.domain.SysUser"],"doc":" 根据用户ID更新用户数据\n\n @param user 要更新的用户实体\n @return 更新操作影响的行数\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserPostMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserPostMapper.class new file mode 100644 index 0000000..a55a7be Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserPostMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserPostMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserPostMapper__Javadoc.json new file mode 100644 index 0000000..7d1528c --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserPostMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户与岗位关联表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserRoleMapper.class b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserRoleMapper.class new file mode 100644 index 0000000..dd340e7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserRoleMapper.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserRoleMapper__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserRoleMapper__Javadoc.json new file mode 100644 index 0000000..6b8316a --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/mapper/SysUserRoleMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户与角色关联表 数据层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectUserIdsByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询关联的用户ID列表\n\n @param roleId 角色ID\n @return 关联到指定角色的用户ID列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/runner/SystemApplicationRunner.class b/ruoyi-system/target/classes/org/dromara/system/runner/SystemApplicationRunner.class new file mode 100644 index 0000000..35d502b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/runner/SystemApplicationRunner.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/runner/SystemApplicationRunner__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/runner/SystemApplicationRunner__Javadoc.json new file mode 100644 index 0000000..161cbe3 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/runner/SystemApplicationRunner__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 初始化 system 模块对应业务数据\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysClientService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysClientService.class new file mode 100644 index 0000000..161ebb3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysClientService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysClientService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysClientService__Javadoc.json new file mode 100644 index 0000000..06c9fe1 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysClientService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 客户端管理Service接口\n\n @author Michelle.Chung\n @date 2023-06-18\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询客户端管理\n"},{"name":"queryByClientId","paramTypes":["java.lang.String"],"doc":" 查询客户端信息基于客户端id\n"},{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysClientBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询客户端管理列表\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 查询客户端管理列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 新增客户端管理\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 修改客户端管理\n"},{"name":"updateClientStatus","paramTypes":["java.lang.String","java.lang.String"],"doc":" 修改状态\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 校验并批量删除客户端管理信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysConfigService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysConfigService.class new file mode 100644 index 0000000..75eb72e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysConfigService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysConfigService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysConfigService__Javadoc.json new file mode 100644 index 0000000..cc650f8 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysConfigService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 参数配置 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectConfigById","paramTypes":["java.lang.Long"],"doc":" 查询参数配置信息\n\n @param configId 参数配置ID\n @return 参数配置信息\n"},{"name":"selectConfigByKey","paramTypes":["java.lang.String"],"doc":" 根据键名查询参数配置信息\n\n @param configKey 参数键名\n @return 参数键值\n"},{"name":"selectRegisterEnabled","paramTypes":["java.lang.String"],"doc":" 获取注册开关\n @param tenantId 租户id\n @return true开启,false关闭\n"},{"name":"selectConfigList","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 查询参数配置列表\n\n @param config 参数配置信息\n @return 参数配置集合\n"},{"name":"insertConfig","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 新增参数配置\n\n @param bo 参数配置信息\n @return 结果\n"},{"name":"updateConfig","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 修改参数配置\n\n @param bo 参数配置信息\n @return 结果\n"},{"name":"deleteConfigByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除参数信息\n\n @param configIds 需要删除的参数ID\n"},{"name":"resetConfigCache","paramTypes":[],"doc":" 重置参数缓存数据\n"},{"name":"checkConfigKeyUnique","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 校验参数键名是否唯一\n\n @param config 参数信息\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDataScopeService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysDataScopeService.class new file mode 100644 index 0000000..333a8b9 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysDataScopeService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDataScopeService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysDataScopeService__Javadoc.json new file mode 100644 index 0000000..17c467d --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysDataScopeService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 通用 数据权限 服务\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"getRoleCustom","paramTypes":["java.lang.Long"],"doc":" 获取角色自定义权限\n\n @param roleId 角色id\n @return 部门id组\n"},{"name":"getDeptAndChild","paramTypes":["java.lang.Long"],"doc":" 获取部门及以下权限\n\n @param deptId 部门id\n @return 部门id组\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDeptService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysDeptService.class new file mode 100644 index 0000000..3328d6b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysDeptService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDeptService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysDeptService__Javadoc.json new file mode 100644 index 0000000..fa04983 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysDeptService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 部门管理 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDeptList","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 查询部门管理数据\n\n @param dept 部门信息\n @return 部门信息集合\n"},{"name":"selectDeptTreeList","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 查询部门树结构信息\n\n @param dept 部门信息\n @return 部门树信息集合\n"},{"name":"buildDeptTreeSelect","paramTypes":["java.util.List"],"doc":" 构建前端所需要下拉树结构\n\n @param depts 部门列表\n @return 下拉树结构列表\n"},{"name":"selectDeptListByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询部门树信息\n\n @param roleId 角色ID\n @return 选中部门列表\n"},{"name":"selectDeptById","paramTypes":["java.lang.Long"],"doc":" 根据部门ID查询信息\n\n @param deptId 部门ID\n @return 部门信息\n"},{"name":"selectDeptByIds","paramTypes":["java.util.List"],"doc":" 通过部门ID串查询部门\n\n @param deptIds 部门id串\n @return 部门列表信息\n"},{"name":"selectNormalChildrenDeptById","paramTypes":["java.lang.Long"],"doc":" 根据ID查询所有子部门数(正常状态)\n\n @param deptId 部门ID\n @return 子部门数\n"},{"name":"hasChildByDeptId","paramTypes":["java.lang.Long"],"doc":" 是否存在部门子节点\n\n @param deptId 部门ID\n @return 结果\n"},{"name":"checkDeptExistUser","paramTypes":["java.lang.Long"],"doc":" 查询部门是否存在用户\n\n @param deptId 部门ID\n @return 结果 true 存在 false 不存在\n"},{"name":"checkDeptNameUnique","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 校验部门名称是否唯一\n\n @param dept 部门信息\n @return 结果\n"},{"name":"checkDeptDataScope","paramTypes":["java.lang.Long"],"doc":" 校验部门是否有数据权限\n\n @param deptId 部门id\n"},{"name":"insertDept","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 新增保存部门信息\n\n @param bo 部门信息\n @return 结果\n"},{"name":"updateDept","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 修改保存部门信息\n\n @param bo 部门信息\n @return 结果\n"},{"name":"deleteDeptById","paramTypes":["java.lang.Long"],"doc":" 删除部门管理信息\n\n @param deptId 部门ID\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDictDataService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictDataService.class new file mode 100644 index 0000000..3e852db Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictDataService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDictDataService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictDataService__Javadoc.json new file mode 100644 index 0000000..7332ad4 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictDataService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典 业务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDictDataList","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 根据条件分页查询字典数据\n\n @param dictData 字典数据信息\n @return 字典数据集合信息\n"},{"name":"selectDictLabel","paramTypes":["java.lang.String","java.lang.String"],"doc":" 根据字典类型和字典键值查询字典数据信息\n\n @param dictType 字典类型\n @param dictValue 字典键值\n @return 字典标签\n"},{"name":"selectDictDataById","paramTypes":["java.lang.Long"],"doc":" 根据字典数据ID查询信息\n\n @param dictCode 字典数据ID\n @return 字典数据\n"},{"name":"deleteDictDataByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除字典数据信息\n\n @param dictCodes 需要删除的字典数据ID\n"},{"name":"insertDictData","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 新增保存字典数据信息\n\n @param bo 字典数据信息\n @return 结果\n"},{"name":"updateDictData","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 修改保存字典数据信息\n\n @param bo 字典数据信息\n @return 结果\n"},{"name":"checkDictDataUnique","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 校验字典键值是否唯一\n\n @param dict 字典数据\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDictTypeService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictTypeService.class new file mode 100644 index 0000000..33c2f5b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictTypeService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysDictTypeService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictTypeService__Javadoc.json new file mode 100644 index 0000000..75fd2ab --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysDictTypeService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典 业务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDictTypeList","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 根据条件分页查询字典类型\n\n @param dictType 字典类型信息\n @return 字典类型集合信息\n"},{"name":"selectDictTypeAll","paramTypes":[],"doc":" 根据所有字典类型\n\n @return 字典类型集合信息\n"},{"name":"selectDictDataByType","paramTypes":["java.lang.String"],"doc":" 根据字典类型查询字典数据\n\n @param dictType 字典类型\n @return 字典数据集合信息\n"},{"name":"selectDictTypeById","paramTypes":["java.lang.Long"],"doc":" 根据字典类型ID查询信息\n\n @param dictId 字典类型ID\n @return 字典类型\n"},{"name":"selectDictTypeByType","paramTypes":["java.lang.String"],"doc":" 根据字典类型查询信息\n\n @param dictType 字典类型\n @return 字典类型\n"},{"name":"deleteDictTypeByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除字典信息\n\n @param dictIds 需要删除的字典ID\n"},{"name":"resetDictCache","paramTypes":[],"doc":" 重置字典缓存数据\n"},{"name":"insertDictType","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 新增保存字典类型信息\n\n @param bo 字典类型信息\n @return 结果\n"},{"name":"updateDictType","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 修改保存字典类型信息\n\n @param bo 字典类型信息\n @return 结果\n"},{"name":"checkDictTypeUnique","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 校验字典类型称是否唯一\n\n @param dictType 字典类型\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysLogininforService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysLogininforService.class new file mode 100644 index 0000000..fbcbbe7 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysLogininforService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysLogininforService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysLogininforService__Javadoc.json new file mode 100644 index 0000000..da1e751 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysLogininforService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统访问日志情况信息 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"insertLogininfor","paramTypes":["org.dromara.system.domain.bo.SysLogininforBo"],"doc":" 新增系统登录日志\n\n @param bo 访问日志对象\n"},{"name":"selectLogininforList","paramTypes":["org.dromara.system.domain.bo.SysLogininforBo"],"doc":" 查询系统登录日志集合\n\n @param logininfor 访问日志对象\n @return 登录记录集合\n"},{"name":"deleteLogininforByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除系统登录日志\n\n @param infoIds 需要删除的登录日志ID\n @return 结果\n"},{"name":"cleanLogininfor","paramTypes":[],"doc":" 清空系统登录日志\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysMenuService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysMenuService.class new file mode 100644 index 0000000..0d31b57 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysMenuService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysMenuService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysMenuService__Javadoc.json new file mode 100644 index 0000000..4043ae9 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysMenuService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 菜单 业务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectMenuList","paramTypes":["java.lang.Long"],"doc":" 根据用户查询系统菜单列表\n\n @param userId 用户ID\n @return 菜单列表\n"},{"name":"selectMenuList","paramTypes":["org.dromara.system.domain.bo.SysMenuBo","java.lang.Long"],"doc":" 根据用户查询系统菜单列表\n\n @param menu 菜单信息\n @param userId 用户ID\n @return 菜单列表\n"},{"name":"selectMenuPermsByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询权限\n\n @param userId 用户ID\n @return 权限列表\n"},{"name":"selectMenuPermsByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询权限\n\n @param roleId 角色ID\n @return 权限列表\n"},{"name":"selectMenuTreeByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询菜单树信息\n\n @param userId 用户ID\n @return 菜单列表\n"},{"name":"selectMenuListByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询菜单树信息\n\n @param roleId 角色ID\n @return 选中菜单列表\n"},{"name":"selectMenuListByPackageId","paramTypes":["java.lang.Long"],"doc":" 根据租户套餐ID查询菜单树信息\n\n @param packageId 租户套餐ID\n @return 选中菜单列表\n"},{"name":"buildMenus","paramTypes":["java.util.List"],"doc":" 构建前端路由所需要的菜单\n\n @param menus 菜单列表\n @return 路由列表\n"},{"name":"buildMenuTreeSelect","paramTypes":["java.util.List"],"doc":" 构建前端所需要下拉树结构\n\n @param menus 菜单列表\n @return 下拉树结构列表\n"},{"name":"selectMenuById","paramTypes":["java.lang.Long"],"doc":" 根据菜单ID查询信息\n\n @param menuId 菜单ID\n @return 菜单信息\n"},{"name":"hasChildByMenuId","paramTypes":["java.lang.Long"],"doc":" 是否存在菜单子节点\n\n @param menuId 菜单ID\n @return 结果 true 存在 false 不存在\n"},{"name":"checkMenuExistRole","paramTypes":["java.lang.Long"],"doc":" 查询菜单是否存在角色\n\n @param menuId 菜单ID\n @return 结果 true 存在 false 不存在\n"},{"name":"insertMenu","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 新增保存菜单信息\n\n @param bo 菜单信息\n @return 结果\n"},{"name":"updateMenu","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 修改保存菜单信息\n\n @param bo 菜单信息\n @return 结果\n"},{"name":"deleteMenuById","paramTypes":["java.lang.Long"],"doc":" 删除菜单管理信息\n\n @param menuId 菜单ID\n @return 结果\n"},{"name":"checkMenuNameUnique","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 校验菜单名称是否唯一\n\n @param menu 菜单信息\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysNoticeService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysNoticeService.class new file mode 100644 index 0000000..0c18a56 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysNoticeService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysNoticeService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysNoticeService__Javadoc.json new file mode 100644 index 0000000..ca3f148 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysNoticeService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 公告 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectNoticeById","paramTypes":["java.lang.Long"],"doc":" 查询公告信息\n\n @param noticeId 公告ID\n @return 公告信息\n"},{"name":"selectNoticeList","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 查询公告列表\n\n @param notice 公告信息\n @return 公告集合\n"},{"name":"insertNotice","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 新增公告\n\n @param bo 公告信息\n @return 结果\n"},{"name":"updateNotice","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 修改公告\n\n @param bo 公告信息\n @return 结果\n"},{"name":"deleteNoticeById","paramTypes":["java.lang.Long"],"doc":" 删除公告信息\n\n @param noticeId 公告ID\n @return 结果\n"},{"name":"deleteNoticeByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除公告信息\n\n @param noticeIds 需要删除的公告ID\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysOperLogService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysOperLogService.class new file mode 100644 index 0000000..039fc2a Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysOperLogService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysOperLogService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysOperLogService__Javadoc.json new file mode 100644 index 0000000..c8ca54b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysOperLogService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 操作日志 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"insertOperlog","paramTypes":["org.dromara.system.domain.bo.SysOperLogBo"],"doc":" 新增操作日志\n\n @param bo 操作日志对象\n"},{"name":"selectOperLogList","paramTypes":["org.dromara.system.domain.bo.SysOperLogBo"],"doc":" 查询系统操作日志集合\n\n @param operLog 操作日志对象\n @return 操作日志集合\n"},{"name":"deleteOperLogByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除系统操作日志\n\n @param operIds 需要删除的操作日志ID\n @return 结果\n"},{"name":"selectOperLogById","paramTypes":["java.lang.Long"],"doc":" 查询操作日志详细\n\n @param operId 操作ID\n @return 操作日志对象\n"},{"name":"cleanOperLog","paramTypes":[],"doc":" 清空操作日志\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysOssConfigService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssConfigService.class new file mode 100644 index 0000000..52936d3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssConfigService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysOssConfigService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssConfigService__Javadoc.json new file mode 100644 index 0000000..2042c98 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssConfigService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 对象存储配置Service接口\n\n @author Lion Li\n @author 孤舟烟雨\n @date 2021-08-13\n","fields":[],"enumConstants":[],"methods":[{"name":"init","paramTypes":[],"doc":" 初始化OSS配置\n"},{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询单个\n"},{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo"],"doc":" 根据新增业务对象插入对象存储配置\n\n @param bo 对象存储配置新增业务对象\n @return 结果\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo"],"doc":" 根据编辑业务对象修改对象存储配置\n\n @param bo 对象存储配置编辑业务对象\n @return 结果\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 校验并删除数据\n\n @param ids 主键集合\n @param isValid 是否校验,true-删除前校验,false-不校验\n @return 结果\n"},{"name":"updateOssConfigStatus","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo"],"doc":" 启用停用状态\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysOssService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssService.class new file mode 100644 index 0000000..6f1bce8 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysOssService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssService__Javadoc.json new file mode 100644 index 0000000..6b2915b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysOssService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 文件上传 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysOssBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询OSS对象存储列表\n\n @param sysOss OSS对象存储分页查询对象\n @param pageQuery 分页查询实体类\n @return 结果\n"},{"name":"listByIds","paramTypes":["java.util.Collection"],"doc":" 根据一组 ossIds 获取对应的 SysOssVo 列表\n\n @param ossIds 一组文件在数据库中的唯一标识集合\n @return 包含 SysOssVo 对象的列表\n"},{"name":"getById","paramTypes":["java.lang.Long"],"doc":" 根据 ossId 从缓存或数据库中获取 SysOssVo 对象\n\n @param ossId 文件在数据库中的唯一标识\n @return SysOssVo 对象,包含文件信息\n"},{"name":"upload","paramTypes":["org.springframework.web.multipart.MultipartFile"],"doc":" 上传 MultipartFile 到对象存储服务,并保存文件信息到数据库\n\n @param file 要上传的 MultipartFile 对象\n @return 上传成功后的 SysOssVo 对象,包含文件信息\n"},{"name":"upload","paramTypes":["java.io.File"],"doc":" 上传文件到对象存储服务,并保存文件信息到数据库\n\n @param file 要上传的文件对象\n @return 上传成功后的 SysOssVo 对象,包含文件信息\n"},{"name":"download","paramTypes":["java.lang.Long","jakarta.servlet.http.HttpServletResponse"],"doc":" 文件下载方法,支持一次性下载完整文件\n\n @param ossId OSS对象ID\n @param response HttpServletResponse对象,用于设置响应头和向客户端发送文件内容\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 删除OSS对象存储\n\n @param ids OSS对象ID串\n @param isValid 判断是否需要校验\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysPermissionService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysPermissionService.class new file mode 100644 index 0000000..7d8af2e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysPermissionService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysPermissionService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysPermissionService__Javadoc.json new file mode 100644 index 0000000..28377d6 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysPermissionService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户权限处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"getRolePermission","paramTypes":["java.lang.Long"],"doc":" 获取角色数据权限\n\n @param userId 用户id\n @return 角色权限信息\n"},{"name":"getMenuPermission","paramTypes":["java.lang.Long"],"doc":" 获取菜单数据权限\n\n @param userId 用户id\n @return 菜单权限信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysPostService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysPostService.class new file mode 100644 index 0000000..ca8b322 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysPostService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysPostService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysPostService__Javadoc.json new file mode 100644 index 0000000..c5d3a4e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysPostService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 岗位信息 服务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectPostList","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 查询岗位信息集合\n\n @param post 岗位信息\n @return 岗位列表\n"},{"name":"selectPostsByUserId","paramTypes":["java.lang.Long"],"doc":" 查询用户所属岗位组\n\n @param userId 用户ID\n @return 岗位ID\n"},{"name":"selectPostAll","paramTypes":[],"doc":" 查询所有岗位\n\n @return 岗位列表\n"},{"name":"selectPostById","paramTypes":["java.lang.Long"],"doc":" 通过岗位ID查询岗位信息\n\n @param postId 岗位ID\n @return 角色对象信息\n"},{"name":"selectPostListByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID获取岗位选择框列表\n\n @param userId 用户ID\n @return 选中岗位ID列表\n"},{"name":"selectPostByIds","paramTypes":["java.util.List"],"doc":" 通过岗位ID串查询岗位\n\n @param postIds 岗位id串\n @return 岗位列表信息\n"},{"name":"checkPostNameUnique","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 校验岗位名称\n\n @param post 岗位信息\n @return 结果\n"},{"name":"checkPostCodeUnique","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 校验岗位编码\n\n @param post 岗位信息\n @return 结果\n"},{"name":"countUserPostById","paramTypes":["java.lang.Long"],"doc":" 通过岗位ID查询岗位使用数量\n\n @param postId 岗位ID\n @return 结果\n"},{"name":"countPostByDeptId","paramTypes":["java.lang.Long"],"doc":" 通过部门ID查询岗位使用数量\n\n @param deptId 部门id\n @return 结果\n"},{"name":"deletePostById","paramTypes":["java.lang.Long"],"doc":" 删除岗位信息\n\n @param postId 岗位ID\n @return 结果\n"},{"name":"deletePostByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除岗位信息\n\n @param postIds 需要删除的岗位ID\n @return 结果\n"},{"name":"insertPost","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 新增保存岗位信息\n\n @param bo 岗位信息\n @return 结果\n"},{"name":"updatePost","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 修改保存岗位信息\n\n @param bo 岗位信息\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysRoleService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysRoleService.class new file mode 100644 index 0000000..4227163 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysRoleService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysRoleService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysRoleService__Javadoc.json new file mode 100644 index 0000000..eb487b8 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysRoleService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色业务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectRoleList","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 根据条件分页查询角色数据\n\n @param role 角色信息\n @return 角色数据集合信息\n"},{"name":"selectRolesByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询角色列表\n\n @param userId 用户ID\n @return 角色列表\n"},{"name":"selectRolesAuthByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询角色列表(包含被授权状态)\n\n @param userId 用户ID\n @return 角色列表\n"},{"name":"selectRolePermissionByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询角色权限\n\n @param userId 用户ID\n @return 权限列表\n"},{"name":"selectRoleAll","paramTypes":[],"doc":" 查询所有角色\n\n @return 角色列表\n"},{"name":"selectRoleListByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID获取角色选择框列表\n\n @param userId 用户ID\n @return 选中角色ID列表\n"},{"name":"selectRoleById","paramTypes":["java.lang.Long"],"doc":" 通过角色ID查询角色\n\n @param roleId 角色ID\n @return 角色对象信息\n"},{"name":"selectRoleByIds","paramTypes":["java.util.List"],"doc":" 通过角色ID串查询角色\n\n @param roleIds 角色ID串\n @return 角色列表信息\n"},{"name":"checkRoleNameUnique","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 校验角色名称是否唯一\n\n @param role 角色信息\n @return 结果\n"},{"name":"checkRoleKeyUnique","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 校验角色权限是否唯一\n\n @param role 角色信息\n @return 结果\n"},{"name":"checkRoleAllowed","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 校验角色是否允许操作\n\n @param role 角色信息\n"},{"name":"checkRoleDataScope","paramTypes":["java.lang.Long"],"doc":" 校验角色是否有数据权限\n\n @param roleId 角色id\n"},{"name":"countUserRoleByRoleId","paramTypes":["java.lang.Long"],"doc":" 通过角色ID查询角色使用数量\n\n @param roleId 角色ID\n @return 结果\n"},{"name":"insertRole","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 新增保存角色信息\n\n @param bo 角色信息\n @return 结果\n"},{"name":"updateRole","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 修改保存角色信息\n\n @param bo 角色信息\n @return 结果\n"},{"name":"updateRoleStatus","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 修改角色状态\n\n @param roleId 角色ID\n @param status 角色状态\n @return 结果\n"},{"name":"authDataScope","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 修改数据权限信息\n\n @param bo 角色信息\n @return 结果\n"},{"name":"deleteRoleById","paramTypes":["java.lang.Long"],"doc":" 通过角色ID删除角色\n\n @param roleId 角色ID\n @return 结果\n"},{"name":"deleteRoleByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除角色信息\n\n @param roleIds 需要删除的角色ID\n @return 结果\n"},{"name":"deleteAuthUser","paramTypes":["org.dromara.system.domain.SysUserRole"],"doc":" 取消授权用户角色\n\n @param userRole 用户和角色关联信息\n @return 结果\n"},{"name":"deleteAuthUsers","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 批量取消授权用户角色\n\n @param roleId 角色ID\n @param userIds 需要取消授权的用户数据ID\n @return 结果\n"},{"name":"insertAuthUsers","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 批量选择授权用户角色\n\n @param roleId 角色ID\n @param userIds 需要删除的用户数据ID\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysSocialService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysSocialService.class new file mode 100644 index 0000000..c611416 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysSocialService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysSocialService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysSocialService__Javadoc.json new file mode 100644 index 0000000..957e734 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysSocialService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 社会化关系Service接口\n\n @author thiszhc\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.String"],"doc":" 查询社会化关系\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysSocialBo"],"doc":" 查询社会化关系列表\n"},{"name":"queryListByUserId","paramTypes":["java.lang.Long"],"doc":" 查询社会化关系列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysSocialBo"],"doc":" 新增授权关系\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysSocialBo"],"doc":" 更新社会化关系\n"},{"name":"deleteWithValidById","paramTypes":["java.lang.Long"],"doc":" 删除社会化关系信息\n"},{"name":"selectByAuthId","paramTypes":["java.lang.String"],"doc":" 根据 authId 查询\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantPackageService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantPackageService.class new file mode 100644 index 0000000..8a91eee Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantPackageService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantPackageService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantPackageService__Javadoc.json new file mode 100644 index 0000000..232146e --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantPackageService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户套餐Service接口\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询租户套餐\n"},{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询租户套餐列表\n"},{"name":"selectList","paramTypes":[],"doc":" 查询租户套餐已启用列表\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 查询租户套餐列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 新增租户套餐\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 修改租户套餐\n"},{"name":"checkPackageNameUnique","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 校验套餐名称是否唯一\n"},{"name":"updatePackageStatus","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 修改套餐状态\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 校验并批量删除租户套餐信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantService.class new file mode 100644 index 0000000..1fa2184 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantService__Javadoc.json new file mode 100644 index 0000000..c8031f1 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysTenantService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户Service接口\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询租户\n"},{"name":"queryByTenantId","paramTypes":["java.lang.String"],"doc":" 基于租户ID查询租户\n"},{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysTenantBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询租户列表\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 查询租户列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 新增租户\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 修改租户\n"},{"name":"updateTenantStatus","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 修改租户状态\n"},{"name":"checkTenantAllowed","paramTypes":["java.lang.String"],"doc":" 校验租户是否允许操作\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 校验并批量删除租户信息\n"},{"name":"checkCompanyNameUnique","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 校验企业名称是否唯一\n"},{"name":"checkAccountBalance","paramTypes":["java.lang.String"],"doc":" 校验账号余额\n"},{"name":"checkExpireTime","paramTypes":["java.lang.String"],"doc":" 校验有效期\n"},{"name":"syncTenantPackage","paramTypes":["java.lang.String","java.lang.Long"],"doc":" 同步租户套餐\n"},{"name":"syncTenantDict","paramTypes":[],"doc":" 同步租户字典\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysUserService.class b/ruoyi-system/target/classes/org/dromara/system/service/ISysUserService.class new file mode 100644 index 0000000..f2f1b6f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/ISysUserService.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/ISysUserService__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/ISysUserService__Javadoc.json new file mode 100644 index 0000000..fb9ef4d --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/ISysUserService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户 业务层\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectUserExportList","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 根据条件分页查询用户列表\n\n @param user 用户信息\n @return 用户信息集合信息\n"},{"name":"selectAllocatedList","paramTypes":["org.dromara.system.domain.bo.SysUserBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 根据条件分页查询已分配用户角色列表\n\n @param user 用户信息\n @return 用户信息集合信息\n"},{"name":"selectUnallocatedList","paramTypes":["org.dromara.system.domain.bo.SysUserBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 根据条件分页查询未分配用户角色列表\n\n @param user 用户信息\n @return 用户信息集合信息\n"},{"name":"selectUserByUserName","paramTypes":["java.lang.String"],"doc":" 通过用户名查询用户\n\n @param userName 用户名\n @return 用户对象信息\n"},{"name":"selectUserByPhonenumber","paramTypes":["java.lang.String"],"doc":" 通过手机号查询用户\n\n @param phonenumber 手机号\n @return 用户对象信息\n"},{"name":"selectUserById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID查询用户\n\n @param userId 用户ID\n @return 用户对象信息\n"},{"name":"selectUserByIds","paramTypes":["java.util.List","java.lang.Long"],"doc":" 通过用户ID串查询用户\n\n @param userIds 用户ID串\n @param deptId 部门id\n @return 用户列表信息\n"},{"name":"selectUserRoleGroup","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询用户所属角色组\n\n @param userId 用户ID\n @return 结果\n"},{"name":"selectUserPostGroup","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询用户所属岗位组\n\n @param userId 用户ID\n @return 结果\n"},{"name":"checkUserNameUnique","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 校验用户名称是否唯一\n\n @param user 用户信息\n @return 结果\n"},{"name":"checkPhoneUnique","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 校验手机号码是否唯一\n\n @param user 用户信息\n @return 结果\n"},{"name":"checkEmailUnique","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 校验email是否唯一\n\n @param user 用户信息\n @return 结果\n"},{"name":"checkUserAllowed","paramTypes":["java.lang.Long"],"doc":" 校验用户是否允许操作\n\n @param userId 用户ID\n"},{"name":"checkUserDataScope","paramTypes":["java.lang.Long"],"doc":" 校验用户是否有数据权限\n\n @param userId 用户id\n"},{"name":"insertUser","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 新增用户信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"registerUser","paramTypes":["org.dromara.system.domain.bo.SysUserBo","java.lang.String"],"doc":" 注册用户信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"updateUser","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 修改用户信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"insertUserAuth","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 用户授权角色\n\n @param userId 用户ID\n @param roleIds 角色组\n"},{"name":"updateUserStatus","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 修改用户状态\n\n @param userId 用户ID\n @param status 帐号状态\n @return 结果\n"},{"name":"updateUserProfile","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 修改用户基本信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"updateUserAvatar","paramTypes":["java.lang.Long","java.lang.Long"],"doc":" 修改用户头像\n\n @param userId 用户ID\n @param avatar 头像地址\n @return 结果\n"},{"name":"resetUserPwd","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 重置用户密码\n\n @param userId 用户ID\n @param password 密码\n @return 结果\n"},{"name":"deleteUserById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID删除用户\n\n @param userId 用户ID\n @return 结果\n"},{"name":"deleteUserByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除用户信息\n\n @param userIds 需要删除的用户ID\n @return 结果\n"},{"name":"selectUserListByDept","paramTypes":["java.lang.Long"],"doc":" 通过部门id查询当前部门所有用户\n\n @param deptId 部门id\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysClientServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysClientServiceImpl.class new file mode 100644 index 0000000..8f6c889 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysClientServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysClientServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysClientServiceImpl__Javadoc.json new file mode 100644 index 0000000..e3a7310 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysClientServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 客户端管理Service业务层处理\n\n @author Michelle.Chung\n @date 2023-06-18\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询客户端管理\n"},{"name":"queryByClientId","paramTypes":["java.lang.String"],"doc":" 查询客户端管理\n"},{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysClientBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询客户端管理列表\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 查询客户端管理列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 新增客户端管理\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysClientBo"],"doc":" 修改客户端管理\n"},{"name":"updateClientStatus","paramTypes":["java.lang.String","java.lang.String"],"doc":" 修改状态\n"},{"name":"validEntityBeforeSave","paramTypes":["org.dromara.system.domain.SysClient"],"doc":" 保存前的数据校验\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 批量删除客户端管理\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysConfigServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysConfigServiceImpl.class new file mode 100644 index 0000000..aaa90cf Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysConfigServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysConfigServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysConfigServiceImpl__Javadoc.json new file mode 100644 index 0000000..20a5467 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysConfigServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 参数配置 服务层实现\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectConfigById","paramTypes":["java.lang.Long"],"doc":" 查询参数配置信息\n\n @param configId 参数配置ID\n @return 参数配置信息\n"},{"name":"selectConfigByKey","paramTypes":["java.lang.String"],"doc":" 根据键名查询参数配置信息\n\n @param configKey 参数key\n @return 参数键值\n"},{"name":"selectRegisterEnabled","paramTypes":["java.lang.String"],"doc":" 获取注册开关\n @param tenantId 租户id\n @return true开启,false关闭\n"},{"name":"selectConfigList","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 查询参数配置列表\n\n @param config 参数配置信息\n @return 参数配置集合\n"},{"name":"insertConfig","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 新增参数配置\n\n @param bo 参数配置信息\n @return 结果\n"},{"name":"updateConfig","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 修改参数配置\n\n @param bo 参数配置信息\n @return 结果\n"},{"name":"deleteConfigByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除参数信息\n\n @param configIds 需要删除的参数ID\n"},{"name":"resetConfigCache","paramTypes":[],"doc":" 重置参数缓存数据\n"},{"name":"checkConfigKeyUnique","paramTypes":["org.dromara.system.domain.bo.SysConfigBo"],"doc":" 校验参数键名是否唯一\n\n @param config 参数配置信息\n @return 结果\n"},{"name":"getConfigValue","paramTypes":["java.lang.String"],"doc":" 根据参数 key 获取参数值\n\n @param configKey 参数 key\n @return 参数值\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDataScopeServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDataScopeServiceImpl.class new file mode 100644 index 0000000..b7e561b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDataScopeServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDataScopeServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDataScopeServiceImpl__Javadoc.json new file mode 100644 index 0000000..3642df8 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDataScopeServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 数据权限 实现\n

\n 注意: 此Service内不允许调用标注`数据权限`注解的方法\n 例如: deptMapper.selectList 此 selectList 方法标注了`数据权限`注解 会出现循环解析的问题\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"getRoleCustom","paramTypes":["java.lang.Long"],"doc":" 获取角色自定义权限\n\n @param roleId 角色Id\n @return 部门Id组\n"},{"name":"getDeptAndChild","paramTypes":["java.lang.Long"],"doc":" 获取部门及以下权限\n\n @param deptId 部门Id\n @return 部门Id组\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDeptServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDeptServiceImpl.class new file mode 100644 index 0000000..145b37b Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDeptServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDeptServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDeptServiceImpl__Javadoc.json new file mode 100644 index 0000000..10fd830 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDeptServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 部门管理 服务实现\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDeptList","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 查询部门管理数据\n\n @param dept 部门信息\n @return 部门信息集合\n"},{"name":"selectDeptTreeList","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 查询部门树结构信息\n\n @param bo 部门信息\n @return 部门树信息集合\n"},{"name":"buildDeptTreeSelect","paramTypes":["java.util.List"],"doc":" 构建前端所需要下拉树结构\n\n @param depts 部门列表\n @return 下拉树结构列表\n"},{"name":"selectDeptListByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询部门树信息\n\n @param roleId 角色ID\n @return 选中部门列表\n"},{"name":"selectDeptById","paramTypes":["java.lang.Long"],"doc":" 根据部门ID查询信息\n\n @param deptId 部门ID\n @return 部门信息\n"},{"name":"selectDeptNameByIds","paramTypes":["java.lang.String"],"doc":" 通过部门ID查询部门名称\n\n @param deptIds 部门ID串逗号分隔\n @return 部门名称串逗号分隔\n"},{"name":"selectDeptLeaderById","paramTypes":["java.lang.Long"],"doc":" 根据部门ID查询部门负责人\n\n @param deptId 部门ID,用于指定需要查询的部门\n @return 返回该部门的负责人ID\n"},{"name":"selectDeptsByList","paramTypes":[],"doc":" 查询部门\n\n @return 部门列表\n"},{"name":"selectNormalChildrenDeptById","paramTypes":["java.lang.Long"],"doc":" 根据ID查询所有子部门数(正常状态)\n\n @param deptId 部门ID\n @return 子部门数\n"},{"name":"hasChildByDeptId","paramTypes":["java.lang.Long"],"doc":" 是否存在子节点\n\n @param deptId 部门ID\n @return 结果\n"},{"name":"checkDeptExistUser","paramTypes":["java.lang.Long"],"doc":" 查询部门是否存在用户\n\n @param deptId 部门ID\n @return 结果 true 存在 false 不存在\n"},{"name":"checkDeptNameUnique","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 校验部门名称是否唯一\n\n @param dept 部门信息\n @return 结果\n"},{"name":"checkDeptDataScope","paramTypes":["java.lang.Long"],"doc":" 校验部门是否有数据权限\n\n @param deptId 部门id\n"},{"name":"insertDept","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 新增保存部门信息\n\n @param bo 部门信息\n @return 结果\n"},{"name":"updateDept","paramTypes":["org.dromara.system.domain.bo.SysDeptBo"],"doc":" 修改保存部门信息\n\n @param bo 部门信息\n @return 结果\n"},{"name":"updateParentDeptStatusNormal","paramTypes":["org.dromara.system.domain.SysDept"],"doc":" 修改该部门的父级部门状态\n\n @param dept 当前部门\n"},{"name":"updateDeptChildren","paramTypes":["java.lang.Long","java.lang.String","java.lang.String"],"doc":" 修改子元素关系\n\n @param deptId 被修改的部门ID\n @param newAncestors 新的父ID集合\n @param oldAncestors 旧的父ID集合\n"},{"name":"deleteDeptById","paramTypes":["java.lang.Long"],"doc":" 删除部门管理信息\n\n @param deptId 部门ID\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictDataServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictDataServiceImpl.class new file mode 100644 index 0000000..ec36e6e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictDataServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictDataServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictDataServiceImpl__Javadoc.json new file mode 100644 index 0000000..4618d7b --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictDataServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典 业务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDictDataList","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 根据条件分页查询字典数据\n\n @param dictData 字典数据信息\n @return 字典数据集合信息\n"},{"name":"selectDictLabel","paramTypes":["java.lang.String","java.lang.String"],"doc":" 根据字典类型和字典键值查询字典数据信息\n\n @param dictType 字典类型\n @param dictValue 字典键值\n @return 字典标签\n"},{"name":"selectDictDataById","paramTypes":["java.lang.Long"],"doc":" 根据字典数据ID查询信息\n\n @param dictCode 字典数据ID\n @return 字典数据\n"},{"name":"deleteDictDataByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除字典数据信息\n\n @param dictCodes 需要删除的字典数据ID\n"},{"name":"insertDictData","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 新增保存字典数据信息\n\n @param bo 字典数据信息\n @return 结果\n"},{"name":"updateDictData","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 修改保存字典数据信息\n\n @param bo 字典数据信息\n @return 结果\n"},{"name":"checkDictDataUnique","paramTypes":["org.dromara.system.domain.bo.SysDictDataBo"],"doc":" 校验字典键值是否唯一\n\n @param dict 字典数据\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictTypeServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictTypeServiceImpl.class new file mode 100644 index 0000000..3bfe78f Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictTypeServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictTypeServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictTypeServiceImpl__Javadoc.json new file mode 100644 index 0000000..65a26e5 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysDictTypeServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 字典 业务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectDictTypeList","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 根据条件分页查询字典类型\n\n @param dictType 字典类型信息\n @return 字典类型集合信息\n"},{"name":"selectDictTypeAll","paramTypes":[],"doc":" 根据所有字典类型\n\n @return 字典类型集合信息\n"},{"name":"selectDictDataByType","paramTypes":["java.lang.String"],"doc":" 根据字典类型查询字典数据\n\n @param dictType 字典类型\n @return 字典数据集合信息\n"},{"name":"selectDictTypeById","paramTypes":["java.lang.Long"],"doc":" 根据字典类型ID查询信息\n\n @param dictId 字典类型ID\n @return 字典类型\n"},{"name":"selectDictTypeByType","paramTypes":["java.lang.String"],"doc":" 根据字典类型查询信息\n\n @param dictType 字典类型\n @return 字典类型\n"},{"name":"deleteDictTypeByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除字典类型信息\n\n @param dictIds 需要删除的字典ID\n"},{"name":"resetDictCache","paramTypes":[],"doc":" 重置字典缓存数据\n"},{"name":"insertDictType","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 新增保存字典类型信息\n\n @param bo 字典类型信息\n @return 结果\n"},{"name":"updateDictType","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 修改保存字典类型信息\n\n @param bo 字典类型信息\n @return 结果\n"},{"name":"checkDictTypeUnique","paramTypes":["org.dromara.system.domain.bo.SysDictTypeBo"],"doc":" 校验字典类型称是否唯一\n\n @param dictType 字典类型\n @return 结果\n"},{"name":"getDictLabel","paramTypes":["java.lang.String","java.lang.String","java.lang.String"],"doc":" 根据字典类型和字典值获取字典标签\n\n @param dictType 字典类型\n @param dictValue 字典值\n @param separator 分隔符\n @return 字典标签\n"},{"name":"getDictValue","paramTypes":["java.lang.String","java.lang.String","java.lang.String"],"doc":" 根据字典类型和字典标签获取字典值\n\n @param dictType 字典类型\n @param dictLabel 字典标签\n @param separator 分隔符\n @return 字典值\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysLogininforServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysLogininforServiceImpl.class new file mode 100644 index 0000000..7a1d858 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysLogininforServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysLogininforServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysLogininforServiceImpl__Javadoc.json new file mode 100644 index 0000000..09c76e2 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysLogininforServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 系统访问日志情况信息 服务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"recordLogininfor","paramTypes":["org.dromara.common.log.event.LogininforEvent"],"doc":" 记录登录信息\n\n @param logininforEvent 登录事件\n"},{"name":"insertLogininfor","paramTypes":["org.dromara.system.domain.bo.SysLogininforBo"],"doc":" 新增系统登录日志\n\n @param bo 访问日志对象\n"},{"name":"selectLogininforList","paramTypes":["org.dromara.system.domain.bo.SysLogininforBo"],"doc":" 查询系统登录日志集合\n\n @param logininfor 访问日志对象\n @return 登录记录集合\n"},{"name":"deleteLogininforByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除系统登录日志\n\n @param infoIds 需要删除的登录日志ID\n @return 结果\n"},{"name":"cleanLogininfor","paramTypes":[],"doc":" 清空系统登录日志\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysMenuServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysMenuServiceImpl.class new file mode 100644 index 0000000..8a801ee Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysMenuServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysMenuServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysMenuServiceImpl__Javadoc.json new file mode 100644 index 0000000..c203852 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysMenuServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 菜单 业务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectMenuList","paramTypes":["java.lang.Long"],"doc":" 根据用户查询系统菜单列表\n\n @param userId 用户ID\n @return 菜单列表\n"},{"name":"selectMenuList","paramTypes":["org.dromara.system.domain.bo.SysMenuBo","java.lang.Long"],"doc":" 查询系统菜单列表\n\n @param menu 菜单信息\n @return 菜单列表\n"},{"name":"selectMenuPermsByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询权限\n\n @param userId 用户ID\n @return 权限列表\n"},{"name":"selectMenuPermsByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询权限\n\n @param roleId 角色ID\n @return 权限列表\n"},{"name":"selectMenuTreeByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询菜单\n\n @param userId 用户名称\n @return 菜单列表\n"},{"name":"selectMenuListByRoleId","paramTypes":["java.lang.Long"],"doc":" 根据角色ID查询菜单树信息\n\n @param roleId 角色ID\n @return 选中菜单列表\n"},{"name":"selectMenuListByPackageId","paramTypes":["java.lang.Long"],"doc":" 根据租户套餐ID查询菜单树信息\n\n @param packageId 租户套餐ID\n @return 选中菜单列表\n"},{"name":"buildMenus","paramTypes":["java.util.List"],"doc":" 构建前端路由所需要的菜单\n 路由name命名规则 path首字母转大写 + id\n\n @param menus 菜单列表\n @return 路由列表\n"},{"name":"buildMenuTreeSelect","paramTypes":["java.util.List"],"doc":" 构建前端所需要下拉树结构\n\n @param menus 菜单列表\n @return 下拉树结构列表\n"},{"name":"selectMenuById","paramTypes":["java.lang.Long"],"doc":" 根据菜单ID查询信息\n\n @param menuId 菜单ID\n @return 菜单信息\n"},{"name":"hasChildByMenuId","paramTypes":["java.lang.Long"],"doc":" 是否存在菜单子节点\n\n @param menuId 菜单ID\n @return 结果\n"},{"name":"checkMenuExistRole","paramTypes":["java.lang.Long"],"doc":" 查询菜单使用数量\n\n @param menuId 菜单ID\n @return 结果\n"},{"name":"insertMenu","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 新增保存菜单信息\n\n @param bo 菜单信息\n @return 结果\n"},{"name":"updateMenu","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 修改保存菜单信息\n\n @param bo 菜单信息\n @return 结果\n"},{"name":"deleteMenuById","paramTypes":["java.lang.Long"],"doc":" 删除菜单管理信息\n\n @param menuId 菜单ID\n @return 结果\n"},{"name":"checkMenuNameUnique","paramTypes":["org.dromara.system.domain.bo.SysMenuBo"],"doc":" 校验菜单名称是否唯一\n\n @param menu 菜单信息\n @return 结果\n"},{"name":"getChildPerms","paramTypes":["java.util.List","int"],"doc":" 根据父节点的ID获取所有子节点\n\n @param list 分类表\n @param parentId 传入的父节点ID\n @return String\n"},{"name":"recursionFn","paramTypes":["java.util.List","org.dromara.system.domain.SysMenu"],"doc":" 递归列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysNoticeServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysNoticeServiceImpl.class new file mode 100644 index 0000000..fa1dae0 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysNoticeServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysNoticeServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysNoticeServiceImpl__Javadoc.json new file mode 100644 index 0000000..b758050 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysNoticeServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 公告 服务层实现\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectNoticeById","paramTypes":["java.lang.Long"],"doc":" 查询公告信息\n\n @param noticeId 公告ID\n @return 公告信息\n"},{"name":"selectNoticeList","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 查询公告列表\n\n @param notice 公告信息\n @return 公告集合\n"},{"name":"insertNotice","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 新增公告\n\n @param bo 公告信息\n @return 结果\n"},{"name":"updateNotice","paramTypes":["org.dromara.system.domain.bo.SysNoticeBo"],"doc":" 修改公告\n\n @param bo 公告信息\n @return 结果\n"},{"name":"deleteNoticeById","paramTypes":["java.lang.Long"],"doc":" 删除公告对象\n\n @param noticeId 公告ID\n @return 结果\n"},{"name":"deleteNoticeByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除公告信息\n\n @param noticeIds 需要删除的公告ID\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOperLogServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOperLogServiceImpl.class new file mode 100644 index 0000000..8318061 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOperLogServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOperLogServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOperLogServiceImpl__Javadoc.json new file mode 100644 index 0000000..c1d4d71 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOperLogServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 操作日志 服务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"recordOper","paramTypes":["org.dromara.common.log.event.OperLogEvent"],"doc":" 操作日志记录\n\n @param operLogEvent 操作日志事件\n"},{"name":"insertOperlog","paramTypes":["org.dromara.system.domain.bo.SysOperLogBo"],"doc":" 新增操作日志\n\n @param bo 操作日志对象\n"},{"name":"selectOperLogList","paramTypes":["org.dromara.system.domain.bo.SysOperLogBo"],"doc":" 查询系统操作日志集合\n\n @param operLog 操作日志对象\n @return 操作日志集合\n"},{"name":"deleteOperLogByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除系统操作日志\n\n @param operIds 需要删除的操作日志ID\n @return 结果\n"},{"name":"selectOperLogById","paramTypes":["java.lang.Long"],"doc":" 查询操作日志详细\n\n @param operId 操作ID\n @return 操作日志对象\n"},{"name":"cleanOperLog","paramTypes":[],"doc":" 清空操作日志\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssConfigServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssConfigServiceImpl.class new file mode 100644 index 0000000..c401e98 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssConfigServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssConfigServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssConfigServiceImpl__Javadoc.json new file mode 100644 index 0000000..0fd8b80 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssConfigServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 对象存储配置Service业务层处理\n\n @author Lion Li\n @author 孤舟烟雨\n @date 2021-08-13\n","fields":[],"enumConstants":[],"methods":[{"name":"init","paramTypes":[],"doc":" 项目启动时,初始化参数到缓存,加载配置类\n"},{"name":"validEntityBeforeSave","paramTypes":["org.dromara.system.domain.SysOssConfig"],"doc":" 保存前的数据校验\n"},{"name":"checkConfigKeyUnique","paramTypes":["org.dromara.system.domain.SysOssConfig"],"doc":" 判断configKey是否唯一\n"},{"name":"updateOssConfigStatus","paramTypes":["org.dromara.system.domain.bo.SysOssConfigBo"],"doc":" 启用禁用状态\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssServiceImpl.class new file mode 100644 index 0000000..180f9ec Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssServiceImpl__Javadoc.json new file mode 100644 index 0000000..5142f0a --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysOssServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 文件上传 服务层实现\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysOssBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询OSS对象存储列表\n\n @param bo OSS对象存储分页查询对象\n @param pageQuery 分页查询实体类\n @return 结果\n"},{"name":"listByIds","paramTypes":["java.util.Collection"],"doc":" 根据一组 ossIds 获取对应的 SysOssVo 列表\n\n @param ossIds 一组文件在数据库中的唯一标识集合\n @return 包含 SysOssVo 对象的列表\n"},{"name":"selectUrlByIds","paramTypes":["java.lang.String"],"doc":" 根据一组 ossIds 获取对应文件的 URL 列表\n\n @param ossIds 以逗号分隔的 ossId 字符串\n @return 以逗号分隔的文件 URL 字符串\n"},{"name":"getById","paramTypes":["java.lang.Long"],"doc":" 根据 ossId 从缓存或数据库中获取 SysOssVo 对象\n\n @param ossId 文件在数据库中的唯一标识\n @return SysOssVo 对象,包含文件信息\n"},{"name":"download","paramTypes":["java.lang.Long","jakarta.servlet.http.HttpServletResponse"],"doc":" 文件下载方法,支持一次性下载完整文件\n\n @param ossId OSS对象ID\n @param response HttpServletResponse对象,用于设置响应头和向客户端发送文件内容\n"},{"name":"upload","paramTypes":["org.springframework.web.multipart.MultipartFile"],"doc":" 上传 MultipartFile 到对象存储服务,并保存文件信息到数据库\n\n @param file 要上传的 MultipartFile 对象\n @return 上传成功后的 SysOssVo 对象,包含文件信息\n @throws ServiceException 如果上传过程中发生异常,则抛出 ServiceException 异常\n"},{"name":"upload","paramTypes":["java.io.File"],"doc":" 上传文件到对象存储服务,并保存文件信息到数据库\n\n @param file 要上传的文件对象\n @return 上传成功后的 SysOssVo 对象,包含文件信息\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 删除OSS对象存储\n\n @param ids OSS对象ID串\n @param isValid 判断是否需要校验\n @return 结果\n"},{"name":"matchingUrl","paramTypes":["org.dromara.system.domain.vo.SysOssVo"],"doc":" 桶类型为 private 的URL 修改为临时URL时长为120s\n\n @param oss OSS对象\n @return oss 匹配Url的OSS对象\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPermissionServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPermissionServiceImpl.class new file mode 100644 index 0000000..88ee2d6 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPermissionServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPermissionServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPermissionServiceImpl__Javadoc.json new file mode 100644 index 0000000..10187cc --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPermissionServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户权限处理\n\n @author ruoyi\n","fields":[],"enumConstants":[],"methods":[{"name":"getRolePermission","paramTypes":["java.lang.Long"],"doc":" 获取角色数据权限\n\n @param userId 用户id\n @return 角色权限信息\n"},{"name":"getMenuPermission","paramTypes":["java.lang.Long"],"doc":" 获取菜单数据权限\n\n @param userId 用户id\n @return 菜单权限信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPostServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPostServiceImpl.class new file mode 100644 index 0000000..0d023b3 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPostServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPostServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPostServiceImpl__Javadoc.json new file mode 100644 index 0000000..39f6714 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysPostServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 岗位信息 服务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectPostList","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 查询岗位信息集合\n\n @param post 岗位信息\n @return 岗位信息集合\n"},{"name":"selectPostsByUserId","paramTypes":["java.lang.Long"],"doc":" 查询用户所属岗位组\n\n @param userId 用户ID\n @return 岗位ID\n"},{"name":"buildQueryWrapper","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 根据查询条件构建查询包装器\n\n @param bo 查询条件对象\n @return 构建好的查询包装器\n"},{"name":"selectPostAll","paramTypes":[],"doc":" 查询所有岗位\n\n @return 岗位列表\n"},{"name":"selectPostById","paramTypes":["java.lang.Long"],"doc":" 通过岗位ID查询岗位信息\n\n @param postId 岗位ID\n @return 角色对象信息\n"},{"name":"selectPostListByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID获取岗位选择框列表\n\n @param userId 用户ID\n @return 选中岗位ID列表\n"},{"name":"selectPostByIds","paramTypes":["java.util.List"],"doc":" 通过岗位ID串查询岗位\n\n @param postIds 岗位id串\n @return 岗位列表信息\n"},{"name":"checkPostNameUnique","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 校验岗位名称是否唯一\n\n @param post 岗位信息\n @return 结果\n"},{"name":"checkPostCodeUnique","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 校验岗位编码是否唯一\n\n @param post 岗位信息\n @return 结果\n"},{"name":"countUserPostById","paramTypes":["java.lang.Long"],"doc":" 通过岗位ID查询岗位使用数量\n\n @param postId 岗位ID\n @return 结果\n"},{"name":"countPostByDeptId","paramTypes":["java.lang.Long"],"doc":" 通过部门ID查询岗位使用数量\n\n @param deptId 部门id\n @return 结果\n"},{"name":"deletePostById","paramTypes":["java.lang.Long"],"doc":" 删除岗位信息\n\n @param postId 岗位ID\n @return 结果\n"},{"name":"deletePostByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除岗位信息\n\n @param postIds 需要删除的岗位ID\n @return 结果\n"},{"name":"insertPost","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 新增保存岗位信息\n\n @param bo 岗位信息\n @return 结果\n"},{"name":"updatePost","paramTypes":["org.dromara.system.domain.bo.SysPostBo"],"doc":" 修改保存岗位信息\n\n @param bo 岗位信息\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysRoleServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysRoleServiceImpl.class new file mode 100644 index 0000000..4f57bd5 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysRoleServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysRoleServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysRoleServiceImpl__Javadoc.json new file mode 100644 index 0000000..5014e90 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysRoleServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 角色 业务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectRoleList","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 根据条件分页查询角色数据\n\n @param role 角色信息\n @return 角色数据集合信息\n"},{"name":"selectRolesByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询角色\n\n @param userId 用户ID\n @return 角色列表\n"},{"name":"selectRolesAuthByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询角色列表(包含被授权状态)\n\n @param userId 用户ID\n @return 角色列表\n"},{"name":"selectRolePermissionByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID查询权限\n\n @param userId 用户ID\n @return 权限列表\n"},{"name":"selectRoleAll","paramTypes":[],"doc":" 查询所有角色\n\n @return 角色列表\n"},{"name":"selectRoleListByUserId","paramTypes":["java.lang.Long"],"doc":" 根据用户ID获取角色选择框列表\n\n @param userId 用户ID\n @return 选中角色ID列表\n"},{"name":"selectRoleById","paramTypes":["java.lang.Long"],"doc":" 通过角色ID查询角色\n\n @param roleId 角色ID\n @return 角色对象信息\n"},{"name":"selectRoleByIds","paramTypes":["java.util.List"],"doc":" 通过角色ID串查询角色\n\n @param roleIds 角色ID串\n @return 角色列表信息\n"},{"name":"checkRoleNameUnique","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 校验角色名称是否唯一\n\n @param role 角色信息\n @return 结果\n"},{"name":"checkRoleKeyUnique","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 校验角色权限是否唯一\n\n @param role 角色信息\n @return 结果\n"},{"name":"checkRoleAllowed","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 校验角色是否允许操作\n\n @param role 角色信息\n"},{"name":"checkRoleDataScope","paramTypes":["java.lang.Long"],"doc":" 校验角色是否有数据权限\n\n @param roleId 角色id\n"},{"name":"countUserRoleByRoleId","paramTypes":["java.lang.Long"],"doc":" 通过角色ID查询角色使用数量\n\n @param roleId 角色ID\n @return 结果\n"},{"name":"insertRole","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 新增保存角色信息\n\n @param bo 角色信息\n @return 结果\n"},{"name":"updateRole","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 修改保存角色信息\n\n @param bo 角色信息\n @return 结果\n"},{"name":"updateRoleStatus","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 修改角色状态\n\n @param roleId 角色ID\n @param status 角色状态\n @return 结果\n"},{"name":"authDataScope","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 修改数据权限信息\n\n @param bo 角色信息\n @return 结果\n"},{"name":"insertRoleMenu","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 新增角色菜单信息\n\n @param role 角色对象\n"},{"name":"insertRoleDept","paramTypes":["org.dromara.system.domain.bo.SysRoleBo"],"doc":" 新增角色部门信息(数据权限)\n\n @param role 角色对象\n"},{"name":"deleteRoleById","paramTypes":["java.lang.Long"],"doc":" 通过角色ID删除角色\n\n @param roleId 角色ID\n @return 结果\n"},{"name":"deleteRoleByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除角色信息\n\n @param roleIds 需要删除的角色ID\n @return 结果\n"},{"name":"deleteAuthUser","paramTypes":["org.dromara.system.domain.SysUserRole"],"doc":" 取消授权用户角色\n\n @param userRole 用户和角色关联信息\n @return 结果\n"},{"name":"deleteAuthUsers","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 批量取消授权用户角色\n\n @param roleId 角色ID\n @param userIds 需要取消授权的用户数据ID\n @return 结果\n"},{"name":"insertAuthUsers","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 批量选择授权用户角色\n\n @param roleId 角色ID\n @param userIds 需要授权的用户数据ID\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSensitiveServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSensitiveServiceImpl.class new file mode 100644 index 0000000..68e90ce Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSensitiveServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSensitiveServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSensitiveServiceImpl__Javadoc.json new file mode 100644 index 0000000..2161096 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSensitiveServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 脱敏服务\n 默认管理员不过滤\n 需自行根据业务重写实现\n\n @author Lion Li\n @version 3.6.0\n","fields":[],"enumConstants":[],"methods":[{"name":"isSensitive","paramTypes":["java.lang.String[]","java.lang.String[]"],"doc":" 是否脱敏\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSocialServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSocialServiceImpl.class new file mode 100644 index 0000000..60f465c Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSocialServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSocialServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSocialServiceImpl__Javadoc.json new file mode 100644 index 0000000..baf131c --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysSocialServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 社会化关系Service业务层处理\n\n @author thiszhc\n @date 2023-06-12\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.String"],"doc":" 查询社会化关系\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysSocialBo"],"doc":" 授权列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysSocialBo"],"doc":" 新增社会化关系\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysSocialBo"],"doc":" 更新社会化关系\n"},{"name":"validEntityBeforeSave","paramTypes":["org.dromara.system.domain.SysSocial"],"doc":" 保存前的数据校验\n"},{"name":"deleteWithValidById","paramTypes":["java.lang.Long"],"doc":" 删除社会化关系\n"},{"name":"selectByAuthId","paramTypes":["java.lang.String"],"doc":" 根据 authId 查询用户信息\n\n @param authId 认证id\n @return 授权信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.class new file mode 100644 index 0000000..208fa6e Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl__Javadoc.json new file mode 100644 index 0000000..72f6c9c --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTaskAssigneeServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 工作流设计器获取任务执行人\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectRolesByTaskAssigneeList","paramTypes":["org.dromara.common.core.domain.model.TaskAssigneeBody"],"doc":" 查询角色并返回任务指派的列表,支持分页\n\n @param taskQuery 查询条件\n @return 办理人\n"},{"name":"selectPostsByTaskAssigneeList","paramTypes":["org.dromara.common.core.domain.model.TaskAssigneeBody"],"doc":" 查询岗位并返回任务指派的列表,支持分页\n\n @param taskQuery 查询条件\n @return 办理人\n"},{"name":"selectDeptsByTaskAssigneeList","paramTypes":["org.dromara.common.core.domain.model.TaskAssigneeBody"],"doc":" 查询部门并返回任务指派的列表,支持分页\n\n @param taskQuery 查询条件\n @return 办理人\n"},{"name":"selectUsersByTaskAssigneeList","paramTypes":["org.dromara.common.core.domain.model.TaskAssigneeBody"],"doc":" 查询用户并返回任务指派的列表,支持分页\n\n @param taskQuery 查询条件\n @return 办理人\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantPackageServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantPackageServiceImpl.class new file mode 100644 index 0000000..cf5c3d0 Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantPackageServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantPackageServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantPackageServiceImpl__Javadoc.json new file mode 100644 index 0000000..e87d560 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantPackageServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户套餐Service业务层处理\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询租户套餐\n"},{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询租户套餐列表\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 查询租户套餐列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 新增租户套餐\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 修改租户套餐\n"},{"name":"checkPackageNameUnique","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 校验套餐名称是否唯一\n"},{"name":"updatePackageStatus","paramTypes":["org.dromara.system.domain.bo.SysTenantPackageBo"],"doc":" 修改套餐状态\n\n @param bo 套餐信息\n @return 结果\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 批量删除租户套餐\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantServiceImpl.class new file mode 100644 index 0000000..db0c47d Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantServiceImpl__Javadoc.json new file mode 100644 index 0000000..22f0cdc --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysTenantServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 租户Service业务层处理\n\n @author Michelle.Chung\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询租户\n"},{"name":"queryByTenantId","paramTypes":["java.lang.String"],"doc":" 基于租户ID查询租户\n"},{"name":"queryPageList","paramTypes":["org.dromara.system.domain.bo.SysTenantBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询租户列表\n"},{"name":"queryList","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 查询租户列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 新增租户\n"},{"name":"generateTenantId","paramTypes":["java.util.List"],"doc":" 生成租户id\n\n @param tenantIds 已有租户id列表\n @return 租户id\n"},{"name":"createTenantRole","paramTypes":["java.lang.String","java.lang.Long"],"doc":" 根据租户菜单创建租户角色\n\n @param tenantId 租户编号\n @param packageId 租户套餐id\n @return 角色id\n"},{"name":"updateByBo","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 修改租户\n"},{"name":"updateTenantStatus","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 修改租户状态\n\n @param bo 租户信息\n @return 结果\n"},{"name":"checkTenantAllowed","paramTypes":["java.lang.String"],"doc":" 校验租户是否允许操作\n\n @param tenantId 租户ID\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.Collection","java.lang.Boolean"],"doc":" 批量删除租户\n"},{"name":"checkCompanyNameUnique","paramTypes":["org.dromara.system.domain.bo.SysTenantBo"],"doc":" 校验企业名称是否唯一\n"},{"name":"checkAccountBalance","paramTypes":["java.lang.String"],"doc":" 校验账号余额\n"},{"name":"checkExpireTime","paramTypes":["java.lang.String"],"doc":" 校验有效期\n"},{"name":"syncTenantPackage","paramTypes":["java.lang.String","java.lang.Long"],"doc":" 同步租户套餐\n"},{"name":"syncTenantDict","paramTypes":[],"doc":" 同步租户字典\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysUserServiceImpl.class b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysUserServiceImpl.class new file mode 100644 index 0000000..72ed6ea Binary files /dev/null and b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysUserServiceImpl.class differ diff --git a/ruoyi-system/target/classes/org/dromara/system/service/impl/SysUserServiceImpl__Javadoc.json b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysUserServiceImpl__Javadoc.json new file mode 100644 index 0000000..133a226 --- /dev/null +++ b/ruoyi-system/target/classes/org/dromara/system/service/impl/SysUserServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 用户 业务层处理\n\n @author Lion Li\n","fields":[],"enumConstants":[],"methods":[{"name":"selectUserExportList","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 根据条件分页查询用户列表\n\n @param user 用户信息\n @return 用户信息集合信息\n"},{"name":"selectAllocatedList","paramTypes":["org.dromara.system.domain.bo.SysUserBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 根据条件分页查询已分配用户角色列表\n\n @param user 用户信息\n @return 用户信息集合信息\n"},{"name":"selectUnallocatedList","paramTypes":["org.dromara.system.domain.bo.SysUserBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 根据条件分页查询未分配用户角色列表\n\n @param user 用户信息\n @return 用户信息集合信息\n"},{"name":"selectUserByUserName","paramTypes":["java.lang.String"],"doc":" 通过用户名查询用户\n\n @param userName 用户名\n @return 用户对象信息\n"},{"name":"selectUserByPhonenumber","paramTypes":["java.lang.String"],"doc":" 通过手机号查询用户\n\n @param phonenumber 手机号\n @return 用户对象信息\n"},{"name":"selectUserById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID查询用户\n\n @param userId 用户ID\n @return 用户对象信息\n"},{"name":"selectUserByIds","paramTypes":["java.util.List","java.lang.Long"],"doc":" 通过用户ID串查询用户\n\n @param userIds 用户ID串\n @param deptId 部门id\n @return 用户列表信息\n"},{"name":"selectUserRoleGroup","paramTypes":["java.lang.Long"],"doc":" 查询用户所属角色组\n\n @param userId 用户ID\n @return 结果\n"},{"name":"selectUserPostGroup","paramTypes":["java.lang.Long"],"doc":" 查询用户所属岗位组\n\n @param userId 用户ID\n @return 结果\n"},{"name":"checkUserNameUnique","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 校验用户名称是否唯一\n\n @param user 用户信息\n @return 结果\n"},{"name":"checkPhoneUnique","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 校验手机号码是否唯一\n\n @param user 用户信息\n"},{"name":"checkEmailUnique","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 校验email是否唯一\n\n @param user 用户信息\n"},{"name":"checkUserAllowed","paramTypes":["java.lang.Long"],"doc":" 校验用户是否允许操作\n\n @param userId 用户ID\n"},{"name":"checkUserDataScope","paramTypes":["java.lang.Long"],"doc":" 校验用户是否有数据权限\n\n @param userId 用户id\n"},{"name":"insertUser","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 新增保存用户信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"registerUser","paramTypes":["org.dromara.system.domain.bo.SysUserBo","java.lang.String"],"doc":" 注册用户信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"updateUser","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 修改保存用户信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"insertUserAuth","paramTypes":["java.lang.Long","java.lang.Long[]"],"doc":" 用户授权角色\n\n @param userId 用户ID\n @param roleIds 角色组\n"},{"name":"updateUserStatus","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 修改用户状态\n\n @param userId 用户ID\n @param status 帐号状态\n @return 结果\n"},{"name":"updateUserProfile","paramTypes":["org.dromara.system.domain.bo.SysUserBo"],"doc":" 修改用户基本信息\n\n @param user 用户信息\n @return 结果\n"},{"name":"updateUserAvatar","paramTypes":["java.lang.Long","java.lang.Long"],"doc":" 修改用户头像\n\n @param userId 用户ID\n @param avatar 头像地址\n @return 结果\n"},{"name":"resetUserPwd","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 重置用户密码\n\n @param userId 用户ID\n @param password 密码\n @return 结果\n"},{"name":"insertUserRole","paramTypes":["org.dromara.system.domain.bo.SysUserBo","boolean"],"doc":" 新增用户角色信息\n\n @param user 用户对象\n @param clear 清除已存在的关联数据\n"},{"name":"insertUserPost","paramTypes":["org.dromara.system.domain.bo.SysUserBo","boolean"],"doc":" 新增用户岗位信息\n\n @param user 用户对象\n @param clear 清除已存在的关联数据\n"},{"name":"insertUserRole","paramTypes":["java.lang.Long","java.lang.Long[]","boolean"],"doc":" 新增用户角色信息\n\n @param userId 用户ID\n @param roleIds 角色组\n @param clear 清除已存在的关联数据\n"},{"name":"deleteUserById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID删除用户\n\n @param userId 用户ID\n @return 结果\n"},{"name":"deleteUserByIds","paramTypes":["java.lang.Long[]"],"doc":" 批量删除用户信息\n\n @param userIds 需要删除的用户ID\n @return 结果\n"},{"name":"selectUserListByDept","paramTypes":["java.lang.Long"],"doc":" 通过部门id查询当前部门所有用户\n\n @param deptId 部门ID\n @return 用户信息集合信息\n"},{"name":"selectUserNameById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID查询用户账户\n\n @param userId 用户ID\n @return 用户账户\n"},{"name":"selectNicknameById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID查询用户账户\n\n @param userId 用户ID\n @return 用户账户\n"},{"name":"selectNicknameByIds","paramTypes":["java.lang.String"],"doc":" 通过用户ID查询用户账户\n\n @param userIds 用户ID 多个用逗号隔开\n @return 用户账户\n"},{"name":"selectPhonenumberById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID查询用户手机号\n\n @param userId 用户id\n @return 用户手机号\n"},{"name":"selectEmailById","paramTypes":["java.lang.Long"],"doc":" 通过用户ID查询用户邮箱\n\n @param userId 用户id\n @return 用户邮箱\n"},{"name":"selectListByIds","paramTypes":["java.util.List"],"doc":" 通过用户ID查询用户列表\n\n @param userIds 用户ids\n @return 用户列表\n"},{"name":"selectUserIdsByRoleIds","paramTypes":["java.util.List"],"doc":" 通过角色ID查询用户ID\n\n @param roleIds 角色ids\n @return 用户ids\n"},{"name":"selectUsersByRoleIds","paramTypes":["java.util.List"],"doc":" 通过角色ID查询用户\n\n @param roleIds 角色ids\n @return 用户\n"},{"name":"selectUsersByDeptIds","paramTypes":["java.util.List"],"doc":" 通过部门ID查询用户\n\n @param deptIds 部门ids\n @return 用户\n"},{"name":"selectUsersByPostIds","paramTypes":["java.util.List"],"doc":" 通过岗位ID查询用户\n\n @param postIds 岗位ids\n @return 用户\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-system/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__2.java b/ruoyi-system/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__2.java new file mode 100644 index 0000000..a9ef3df --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__2.java @@ -0,0 +1,14 @@ +package io.github.linpeilie; + +import org.mapstruct.Builder; +import org.mapstruct.MapperConfig; +import org.mapstruct.ReportingPolicy; + +@MapperConfig( + componentModel = "spring-lazy", + uses = {ConverterMapperAdapter__2.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE, + builder = @Builder(buildMethod = "build", disableBuilder = true) +) +public interface AutoMapperConfig__2 { +} diff --git a/ruoyi-system/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__2.java b/ruoyi-system/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__2.java new file mode 100644 index 0000000..210a58d --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__2.java @@ -0,0 +1,10 @@ +package io.github.linpeilie; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ConverterMapperAdapter__2 { + @Autowired + private Converter converter; +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapper.java new file mode 100644 index 0000000..45d1917 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.common.log.event; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysOperLogBo; +import org.dromara.system.domain.bo.SysOperLogBoToOperLogEventMapper; +import org.dromara.system.domain.bo.SysOperLogBoToSysOperLogMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOperLogBoToSysOperLogMapper.class,SysOperLogBoToOperLogEventMapper.class}, + imports = {} +) +public interface OperLogEventToSysOperLogBoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapperImpl.java new file mode 100644 index 0000000..c8248dd --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/common/log/event/OperLogEventToSysOperLogBoMapperImpl.java @@ -0,0 +1,84 @@ +package org.dromara.common.log.event; + +import java.util.Arrays; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.bo.SysOperLogBo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class OperLogEventToSysOperLogBoMapperImpl implements OperLogEventToSysOperLogBoMapper { + + @Override + public SysOperLogBo convert(OperLogEvent arg0) { + if ( arg0 == null ) { + return null; + } + + SysOperLogBo sysOperLogBo = new SysOperLogBo(); + + sysOperLogBo.setOperId( arg0.getOperId() ); + sysOperLogBo.setTenantId( arg0.getTenantId() ); + sysOperLogBo.setTitle( arg0.getTitle() ); + sysOperLogBo.setBusinessType( arg0.getBusinessType() ); + Integer[] businessTypes = arg0.getBusinessTypes(); + if ( businessTypes != null ) { + sysOperLogBo.setBusinessTypes( Arrays.copyOf( businessTypes, businessTypes.length ) ); + } + sysOperLogBo.setMethod( arg0.getMethod() ); + sysOperLogBo.setRequestMethod( arg0.getRequestMethod() ); + sysOperLogBo.setOperatorType( arg0.getOperatorType() ); + sysOperLogBo.setOperName( arg0.getOperName() ); + sysOperLogBo.setDeptName( arg0.getDeptName() ); + sysOperLogBo.setOperUrl( arg0.getOperUrl() ); + sysOperLogBo.setOperIp( arg0.getOperIp() ); + sysOperLogBo.setOperLocation( arg0.getOperLocation() ); + sysOperLogBo.setOperParam( arg0.getOperParam() ); + sysOperLogBo.setJsonResult( arg0.getJsonResult() ); + sysOperLogBo.setStatus( arg0.getStatus() ); + sysOperLogBo.setErrorMsg( arg0.getErrorMsg() ); + sysOperLogBo.setOperTime( arg0.getOperTime() ); + sysOperLogBo.setCostTime( arg0.getCostTime() ); + + return sysOperLogBo; + } + + @Override + public SysOperLogBo convert(OperLogEvent arg0, SysOperLogBo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOperId( arg0.getOperId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setTitle( arg0.getTitle() ); + arg1.setBusinessType( arg0.getBusinessType() ); + Integer[] businessTypes = arg0.getBusinessTypes(); + if ( businessTypes != null ) { + arg1.setBusinessTypes( Arrays.copyOf( businessTypes, businessTypes.length ) ); + } + else { + arg1.setBusinessTypes( null ); + } + arg1.setMethod( arg0.getMethod() ); + arg1.setRequestMethod( arg0.getRequestMethod() ); + arg1.setOperatorType( arg0.getOperatorType() ); + arg1.setOperName( arg0.getOperName() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setOperUrl( arg0.getOperUrl() ); + arg1.setOperIp( arg0.getOperIp() ); + arg1.setOperLocation( arg0.getOperLocation() ); + arg1.setOperParam( arg0.getOperParam() ); + arg1.setJsonResult( arg0.getJsonResult() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setErrorMsg( arg0.getErrorMsg() ); + arg1.setOperTime( arg0.getOperTime() ); + arg1.setCostTime( arg0.getCostTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysClientToSysClientVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysClientToSysClientVoMapper.java new file mode 100644 index 0000000..fc090a9 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysClientToSysClientVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysClientBoToSysClientMapper; +import org.dromara.system.domain.vo.SysClientVo; +import org.dromara.system.domain.vo.SysClientVoToSysClientMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysClientVoToSysClientMapper.class,SysClientBoToSysClientMapper.class}, + imports = {} +) +public interface SysClientToSysClientVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysClientToSysClientVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysClientToSysClientVoMapperImpl.java new file mode 100644 index 0000000..48d08ae --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysClientToSysClientVoMapperImpl.java @@ -0,0 +1,54 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysClientVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysClientToSysClientVoMapperImpl implements SysClientToSysClientVoMapper { + + @Override + public SysClientVo convert(SysClient arg0) { + if ( arg0 == null ) { + return null; + } + + SysClientVo sysClientVo = new SysClientVo(); + + sysClientVo.setId( arg0.getId() ); + sysClientVo.setClientId( arg0.getClientId() ); + sysClientVo.setClientKey( arg0.getClientKey() ); + sysClientVo.setClientSecret( arg0.getClientSecret() ); + sysClientVo.setGrantType( arg0.getGrantType() ); + sysClientVo.setDeviceType( arg0.getDeviceType() ); + sysClientVo.setActiveTimeout( arg0.getActiveTimeout() ); + sysClientVo.setTimeout( arg0.getTimeout() ); + sysClientVo.setStatus( arg0.getStatus() ); + + return sysClientVo; + } + + @Override + public SysClientVo convert(SysClient arg0, SysClientVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setClientId( arg0.getClientId() ); + arg1.setClientKey( arg0.getClientKey() ); + arg1.setClientSecret( arg0.getClientSecret() ); + arg1.setGrantType( arg0.getGrantType() ); + arg1.setDeviceType( arg0.getDeviceType() ); + arg1.setActiveTimeout( arg0.getActiveTimeout() ); + arg1.setTimeout( arg0.getTimeout() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysConfigToSysConfigVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysConfigToSysConfigVoMapper.java new file mode 100644 index 0000000..71e0312 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysConfigToSysConfigVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysConfigBoToSysConfigMapper; +import org.dromara.system.domain.vo.SysConfigVo; +import org.dromara.system.domain.vo.SysConfigVoToSysConfigMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysConfigVoToSysConfigMapper.class,SysConfigBoToSysConfigMapper.class}, + imports = {} +) +public interface SysConfigToSysConfigVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysConfigToSysConfigVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysConfigToSysConfigVoMapperImpl.java new file mode 100644 index 0000000..ea34707 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysConfigToSysConfigVoMapperImpl.java @@ -0,0 +1,50 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysConfigVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysConfigToSysConfigVoMapperImpl implements SysConfigToSysConfigVoMapper { + + @Override + public SysConfigVo convert(SysConfig arg0) { + if ( arg0 == null ) { + return null; + } + + SysConfigVo sysConfigVo = new SysConfigVo(); + + sysConfigVo.setConfigId( arg0.getConfigId() ); + sysConfigVo.setConfigName( arg0.getConfigName() ); + sysConfigVo.setConfigKey( arg0.getConfigKey() ); + sysConfigVo.setConfigValue( arg0.getConfigValue() ); + sysConfigVo.setConfigType( arg0.getConfigType() ); + sysConfigVo.setRemark( arg0.getRemark() ); + sysConfigVo.setCreateTime( arg0.getCreateTime() ); + + return sysConfigVo; + } + + @Override + public SysConfigVo convert(SysConfig arg0, SysConfigVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setConfigId( arg0.getConfigId() ); + arg1.setConfigName( arg0.getConfigName() ); + arg1.setConfigKey( arg0.getConfigKey() ); + arg1.setConfigValue( arg0.getConfigValue() ); + arg1.setConfigType( arg0.getConfigType() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDeptToSysDeptVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDeptToSysDeptVoMapper.java new file mode 100644 index 0000000..2865e4e --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDeptToSysDeptVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysDeptBoToSysDeptMapper; +import org.dromara.system.domain.vo.SysDeptVo; +import org.dromara.system.domain.vo.SysDeptVoToSysDeptMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysDeptVoToSysDeptMapper.class,SysDeptBoToSysDeptMapper.class}, + imports = {} +) +public interface SysDeptToSysDeptVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDeptToSysDeptVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDeptToSysDeptVoMapperImpl.java new file mode 100644 index 0000000..091475d --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDeptToSysDeptVoMapperImpl.java @@ -0,0 +1,58 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysDeptVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDeptToSysDeptVoMapperImpl implements SysDeptToSysDeptVoMapper { + + @Override + public SysDeptVo convert(SysDept arg0) { + if ( arg0 == null ) { + return null; + } + + SysDeptVo sysDeptVo = new SysDeptVo(); + + sysDeptVo.setDeptId( arg0.getDeptId() ); + sysDeptVo.setParentId( arg0.getParentId() ); + sysDeptVo.setAncestors( arg0.getAncestors() ); + sysDeptVo.setDeptName( arg0.getDeptName() ); + sysDeptVo.setDeptCategory( arg0.getDeptCategory() ); + sysDeptVo.setOrderNum( arg0.getOrderNum() ); + sysDeptVo.setLeader( arg0.getLeader() ); + sysDeptVo.setPhone( arg0.getPhone() ); + sysDeptVo.setEmail( arg0.getEmail() ); + sysDeptVo.setStatus( arg0.getStatus() ); + sysDeptVo.setCreateTime( arg0.getCreateTime() ); + + return sysDeptVo; + } + + @Override + public SysDeptVo convert(SysDept arg0, SysDeptVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setDeptId( arg0.getDeptId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setAncestors( arg0.getAncestors() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setDeptCategory( arg0.getDeptCategory() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setLeader( arg0.getLeader() ); + arg1.setPhone( arg0.getPhone() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictDataToSysDictDataVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictDataToSysDictDataVoMapper.java new file mode 100644 index 0000000..9b80d1b --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictDataToSysDictDataVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysDictDataBoToSysDictDataMapper; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.dromara.system.domain.vo.SysDictDataVoToSysDictDataMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysDictDataBoToSysDictDataMapper.class,SysDictDataVoToSysDictDataMapper.class}, + imports = {} +) +public interface SysDictDataToSysDictDataVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictDataToSysDictDataVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictDataToSysDictDataVoMapperImpl.java new file mode 100644 index 0000000..0aa354e --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictDataToSysDictDataVoMapperImpl.java @@ -0,0 +1,56 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysDictDataVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDictDataToSysDictDataVoMapperImpl implements SysDictDataToSysDictDataVoMapper { + + @Override + public SysDictDataVo convert(SysDictData arg0) { + if ( arg0 == null ) { + return null; + } + + SysDictDataVo sysDictDataVo = new SysDictDataVo(); + + sysDictDataVo.setDictCode( arg0.getDictCode() ); + sysDictDataVo.setDictSort( arg0.getDictSort() ); + sysDictDataVo.setDictLabel( arg0.getDictLabel() ); + sysDictDataVo.setDictValue( arg0.getDictValue() ); + sysDictDataVo.setDictType( arg0.getDictType() ); + sysDictDataVo.setCssClass( arg0.getCssClass() ); + sysDictDataVo.setListClass( arg0.getListClass() ); + sysDictDataVo.setIsDefault( arg0.getIsDefault() ); + sysDictDataVo.setRemark( arg0.getRemark() ); + sysDictDataVo.setCreateTime( arg0.getCreateTime() ); + + return sysDictDataVo; + } + + @Override + public SysDictDataVo convert(SysDictData arg0, SysDictDataVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setDictCode( arg0.getDictCode() ); + arg1.setDictSort( arg0.getDictSort() ); + arg1.setDictLabel( arg0.getDictLabel() ); + arg1.setDictValue( arg0.getDictValue() ); + arg1.setDictType( arg0.getDictType() ); + arg1.setCssClass( arg0.getCssClass() ); + arg1.setListClass( arg0.getListClass() ); + arg1.setIsDefault( arg0.getIsDefault() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapper.java new file mode 100644 index 0000000..8efdcae --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysDictTypeBoToSysDictTypeMapper; +import org.dromara.system.domain.vo.SysDictTypeVo; +import org.dromara.system.domain.vo.SysDictTypeVoToSysDictTypeMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysDictTypeBoToSysDictTypeMapper.class,SysDictTypeVoToSysDictTypeMapper.class}, + imports = {} +) +public interface SysDictTypeToSysDictTypeVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapperImpl.java new file mode 100644 index 0000000..fddd9b2 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysDictTypeToSysDictTypeVoMapperImpl.java @@ -0,0 +1,46 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysDictTypeVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDictTypeToSysDictTypeVoMapperImpl implements SysDictTypeToSysDictTypeVoMapper { + + @Override + public SysDictTypeVo convert(SysDictType arg0) { + if ( arg0 == null ) { + return null; + } + + SysDictTypeVo sysDictTypeVo = new SysDictTypeVo(); + + sysDictTypeVo.setDictId( arg0.getDictId() ); + sysDictTypeVo.setDictName( arg0.getDictName() ); + sysDictTypeVo.setDictType( arg0.getDictType() ); + sysDictTypeVo.setRemark( arg0.getRemark() ); + sysDictTypeVo.setCreateTime( arg0.getCreateTime() ); + + return sysDictTypeVo; + } + + @Override + public SysDictTypeVo convert(SysDictType arg0, SysDictTypeVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setDictId( arg0.getDictId() ); + arg1.setDictName( arg0.getDictName() ); + arg1.setDictType( arg0.getDictType() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysLogininforToSysLogininforVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysLogininforToSysLogininforVoMapper.java new file mode 100644 index 0000000..4ebbb5c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysLogininforToSysLogininforVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysLogininforBoToSysLogininforMapper; +import org.dromara.system.domain.vo.SysLogininforVo; +import org.dromara.system.domain.vo.SysLogininforVoToSysLogininforMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysLogininforBoToSysLogininforMapper.class,SysLogininforVoToSysLogininforMapper.class}, + imports = {} +) +public interface SysLogininforToSysLogininforVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysLogininforToSysLogininforVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysLogininforToSysLogininforVoMapperImpl.java new file mode 100644 index 0000000..46a54f2 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysLogininforToSysLogininforVoMapperImpl.java @@ -0,0 +1,60 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysLogininforVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysLogininforToSysLogininforVoMapperImpl implements SysLogininforToSysLogininforVoMapper { + + @Override + public SysLogininforVo convert(SysLogininfor arg0) { + if ( arg0 == null ) { + return null; + } + + SysLogininforVo sysLogininforVo = new SysLogininforVo(); + + sysLogininforVo.setInfoId( arg0.getInfoId() ); + sysLogininforVo.setTenantId( arg0.getTenantId() ); + sysLogininforVo.setUserName( arg0.getUserName() ); + sysLogininforVo.setClientKey( arg0.getClientKey() ); + sysLogininforVo.setDeviceType( arg0.getDeviceType() ); + sysLogininforVo.setStatus( arg0.getStatus() ); + sysLogininforVo.setIpaddr( arg0.getIpaddr() ); + sysLogininforVo.setLoginLocation( arg0.getLoginLocation() ); + sysLogininforVo.setBrowser( arg0.getBrowser() ); + sysLogininforVo.setOs( arg0.getOs() ); + sysLogininforVo.setMsg( arg0.getMsg() ); + sysLogininforVo.setLoginTime( arg0.getLoginTime() ); + + return sysLogininforVo; + } + + @Override + public SysLogininforVo convert(SysLogininfor arg0, SysLogininforVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setInfoId( arg0.getInfoId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setClientKey( arg0.getClientKey() ); + arg1.setDeviceType( arg0.getDeviceType() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setIpaddr( arg0.getIpaddr() ); + arg1.setLoginLocation( arg0.getLoginLocation() ); + arg1.setBrowser( arg0.getBrowser() ); + arg1.setOs( arg0.getOs() ); + arg1.setMsg( arg0.getMsg() ); + arg1.setLoginTime( arg0.getLoginTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysMenuToSysMenuVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysMenuToSysMenuVoMapper.java new file mode 100644 index 0000000..fdb9a6c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysMenuToSysMenuVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysMenuBoToSysMenuMapper; +import org.dromara.system.domain.vo.SysMenuVo; +import org.dromara.system.domain.vo.SysMenuVoToSysMenuMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysMenuVoToSysMenuMapper.class,SysMenuBoToSysMenuMapper.class}, + imports = {} +) +public interface SysMenuToSysMenuVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysMenuToSysMenuVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysMenuToSysMenuVoMapperImpl.java new file mode 100644 index 0000000..0364691 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysMenuToSysMenuVoMapperImpl.java @@ -0,0 +1,88 @@ +package org.dromara.system.domain; + +import java.util.List; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysMenuVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysMenuToSysMenuVoMapperImpl implements SysMenuToSysMenuVoMapper { + + @Override + public SysMenuVo convert(SysMenu arg0) { + if ( arg0 == null ) { + return null; + } + + SysMenuVo sysMenuVo = new SysMenuVo(); + + sysMenuVo.setMenuId( arg0.getMenuId() ); + sysMenuVo.setMenuName( arg0.getMenuName() ); + sysMenuVo.setParentId( arg0.getParentId() ); + sysMenuVo.setOrderNum( arg0.getOrderNum() ); + sysMenuVo.setPath( arg0.getPath() ); + sysMenuVo.setComponent( arg0.getComponent() ); + sysMenuVo.setQueryParam( arg0.getQueryParam() ); + sysMenuVo.setIsFrame( arg0.getIsFrame() ); + sysMenuVo.setIsCache( arg0.getIsCache() ); + sysMenuVo.setMenuType( arg0.getMenuType() ); + sysMenuVo.setVisible( arg0.getVisible() ); + sysMenuVo.setStatus( arg0.getStatus() ); + sysMenuVo.setPerms( arg0.getPerms() ); + sysMenuVo.setIcon( arg0.getIcon() ); + sysMenuVo.setCreateDept( arg0.getCreateDept() ); + sysMenuVo.setRemark( arg0.getRemark() ); + sysMenuVo.setCreateTime( arg0.getCreateTime() ); + sysMenuVo.setChildren( convert( arg0.getChildren() ) ); + + return sysMenuVo; + } + + @Override + public SysMenuVo convert(SysMenu arg0, SysMenuVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setMenuId( arg0.getMenuId() ); + arg1.setMenuName( arg0.getMenuName() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setPath( arg0.getPath() ); + arg1.setComponent( arg0.getComponent() ); + arg1.setQueryParam( arg0.getQueryParam() ); + arg1.setIsFrame( arg0.getIsFrame() ); + arg1.setIsCache( arg0.getIsCache() ); + arg1.setMenuType( arg0.getMenuType() ); + arg1.setVisible( arg0.getVisible() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setPerms( arg0.getPerms() ); + arg1.setIcon( arg0.getIcon() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateTime( arg0.getCreateTime() ); + if ( arg1.getChildren() != null ) { + List list = convert( arg0.getChildren() ); + if ( list != null ) { + arg1.getChildren().clear(); + arg1.getChildren().addAll( list ); + } + else { + arg1.setChildren( null ); + } + } + else { + List list = convert( arg0.getChildren() ); + if ( list != null ) { + arg1.setChildren( list ); + } + } + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysNoticeToSysNoticeVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysNoticeToSysNoticeVoMapper.java new file mode 100644 index 0000000..0f5301c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysNoticeToSysNoticeVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysNoticeBoToSysNoticeMapper; +import org.dromara.system.domain.vo.SysNoticeVo; +import org.dromara.system.domain.vo.SysNoticeVoToSysNoticeMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysNoticeVoToSysNoticeMapper.class,SysNoticeBoToSysNoticeMapper.class}, + imports = {} +) +public interface SysNoticeToSysNoticeVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysNoticeToSysNoticeVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysNoticeToSysNoticeVoMapperImpl.java new file mode 100644 index 0000000..4ae5f05 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysNoticeToSysNoticeVoMapperImpl.java @@ -0,0 +1,52 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysNoticeVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysNoticeToSysNoticeVoMapperImpl implements SysNoticeToSysNoticeVoMapper { + + @Override + public SysNoticeVo convert(SysNotice arg0) { + if ( arg0 == null ) { + return null; + } + + SysNoticeVo sysNoticeVo = new SysNoticeVo(); + + sysNoticeVo.setNoticeId( arg0.getNoticeId() ); + sysNoticeVo.setNoticeTitle( arg0.getNoticeTitle() ); + sysNoticeVo.setNoticeType( arg0.getNoticeType() ); + sysNoticeVo.setNoticeContent( arg0.getNoticeContent() ); + sysNoticeVo.setStatus( arg0.getStatus() ); + sysNoticeVo.setRemark( arg0.getRemark() ); + sysNoticeVo.setCreateBy( arg0.getCreateBy() ); + sysNoticeVo.setCreateTime( arg0.getCreateTime() ); + + return sysNoticeVo; + } + + @Override + public SysNoticeVo convert(SysNotice arg0, SysNoticeVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setNoticeId( arg0.getNoticeId() ); + arg1.setNoticeTitle( arg0.getNoticeTitle() ); + arg1.setNoticeType( arg0.getNoticeType() ); + arg1.setNoticeContent( arg0.getNoticeContent() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOperLogToSysOperLogVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOperLogToSysOperLogVoMapper.java new file mode 100644 index 0000000..80832b2 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOperLogToSysOperLogVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysOperLogBoToSysOperLogMapper; +import org.dromara.system.domain.vo.SysOperLogVo; +import org.dromara.system.domain.vo.SysOperLogVoToSysOperLogMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOperLogVoToSysOperLogMapper.class,SysOperLogBoToSysOperLogMapper.class}, + imports = {} +) +public interface SysOperLogToSysOperLogVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOperLogToSysOperLogVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOperLogToSysOperLogVoMapperImpl.java new file mode 100644 index 0000000..7c0879e --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOperLogToSysOperLogVoMapperImpl.java @@ -0,0 +1,72 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysOperLogVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOperLogToSysOperLogVoMapperImpl implements SysOperLogToSysOperLogVoMapper { + + @Override + public SysOperLogVo convert(SysOperLog arg0) { + if ( arg0 == null ) { + return null; + } + + SysOperLogVo sysOperLogVo = new SysOperLogVo(); + + sysOperLogVo.setOperId( arg0.getOperId() ); + sysOperLogVo.setTenantId( arg0.getTenantId() ); + sysOperLogVo.setTitle( arg0.getTitle() ); + sysOperLogVo.setBusinessType( arg0.getBusinessType() ); + sysOperLogVo.setMethod( arg0.getMethod() ); + sysOperLogVo.setRequestMethod( arg0.getRequestMethod() ); + sysOperLogVo.setOperatorType( arg0.getOperatorType() ); + sysOperLogVo.setOperName( arg0.getOperName() ); + sysOperLogVo.setDeptName( arg0.getDeptName() ); + sysOperLogVo.setOperUrl( arg0.getOperUrl() ); + sysOperLogVo.setOperIp( arg0.getOperIp() ); + sysOperLogVo.setOperLocation( arg0.getOperLocation() ); + sysOperLogVo.setOperParam( arg0.getOperParam() ); + sysOperLogVo.setJsonResult( arg0.getJsonResult() ); + sysOperLogVo.setStatus( arg0.getStatus() ); + sysOperLogVo.setErrorMsg( arg0.getErrorMsg() ); + sysOperLogVo.setOperTime( arg0.getOperTime() ); + sysOperLogVo.setCostTime( arg0.getCostTime() ); + + return sysOperLogVo; + } + + @Override + public SysOperLogVo convert(SysOperLog arg0, SysOperLogVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOperId( arg0.getOperId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setTitle( arg0.getTitle() ); + arg1.setBusinessType( arg0.getBusinessType() ); + arg1.setMethod( arg0.getMethod() ); + arg1.setRequestMethod( arg0.getRequestMethod() ); + arg1.setOperatorType( arg0.getOperatorType() ); + arg1.setOperName( arg0.getOperName() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setOperUrl( arg0.getOperUrl() ); + arg1.setOperIp( arg0.getOperIp() ); + arg1.setOperLocation( arg0.getOperLocation() ); + arg1.setOperParam( arg0.getOperParam() ); + arg1.setJsonResult( arg0.getJsonResult() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setErrorMsg( arg0.getErrorMsg() ); + arg1.setOperTime( arg0.getOperTime() ); + arg1.setCostTime( arg0.getCostTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapper.java new file mode 100644 index 0000000..c9dadc7 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysOssConfigBoToSysOssConfigMapper; +import org.dromara.system.domain.vo.SysOssConfigVo; +import org.dromara.system.domain.vo.SysOssConfigVoToSysOssConfigMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOssConfigBoToSysOssConfigMapper.class,SysOssConfigVoToSysOssConfigMapper.class}, + imports = {} +) +public interface SysOssConfigToSysOssConfigVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapperImpl.java new file mode 100644 index 0000000..646e2be --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssConfigToSysOssConfigVoMapperImpl.java @@ -0,0 +1,64 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysOssConfigVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOssConfigToSysOssConfigVoMapperImpl implements SysOssConfigToSysOssConfigVoMapper { + + @Override + public SysOssConfigVo convert(SysOssConfig arg0) { + if ( arg0 == null ) { + return null; + } + + SysOssConfigVo sysOssConfigVo = new SysOssConfigVo(); + + sysOssConfigVo.setOssConfigId( arg0.getOssConfigId() ); + sysOssConfigVo.setConfigKey( arg0.getConfigKey() ); + sysOssConfigVo.setAccessKey( arg0.getAccessKey() ); + sysOssConfigVo.setSecretKey( arg0.getSecretKey() ); + sysOssConfigVo.setBucketName( arg0.getBucketName() ); + sysOssConfigVo.setPrefix( arg0.getPrefix() ); + sysOssConfigVo.setEndpoint( arg0.getEndpoint() ); + sysOssConfigVo.setDomain( arg0.getDomain() ); + sysOssConfigVo.setIsHttps( arg0.getIsHttps() ); + sysOssConfigVo.setRegion( arg0.getRegion() ); + sysOssConfigVo.setStatus( arg0.getStatus() ); + sysOssConfigVo.setExt1( arg0.getExt1() ); + sysOssConfigVo.setRemark( arg0.getRemark() ); + sysOssConfigVo.setAccessPolicy( arg0.getAccessPolicy() ); + + return sysOssConfigVo; + } + + @Override + public SysOssConfigVo convert(SysOssConfig arg0, SysOssConfigVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOssConfigId( arg0.getOssConfigId() ); + arg1.setConfigKey( arg0.getConfigKey() ); + arg1.setAccessKey( arg0.getAccessKey() ); + arg1.setSecretKey( arg0.getSecretKey() ); + arg1.setBucketName( arg0.getBucketName() ); + arg1.setPrefix( arg0.getPrefix() ); + arg1.setEndpoint( arg0.getEndpoint() ); + arg1.setDomain( arg0.getDomain() ); + arg1.setIsHttps( arg0.getIsHttps() ); + arg1.setRegion( arg0.getRegion() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setExt1( arg0.getExt1() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setAccessPolicy( arg0.getAccessPolicy() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssToSysOssVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssToSysOssVoMapper.java new file mode 100644 index 0000000..6b4dd7e --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssToSysOssVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysOssBoToSysOssMapper; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.domain.vo.SysOssVoToSysOssMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOssBoToSysOssMapper.class,SysOssVoToSysOssMapper.class}, + imports = {} +) +public interface SysOssToSysOssVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssToSysOssVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssToSysOssVoMapperImpl.java new file mode 100644 index 0000000..f90aaee --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysOssToSysOssVoMapperImpl.java @@ -0,0 +1,52 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysOssVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOssToSysOssVoMapperImpl implements SysOssToSysOssVoMapper { + + @Override + public SysOssVo convert(SysOss arg0) { + if ( arg0 == null ) { + return null; + } + + SysOssVo sysOssVo = new SysOssVo(); + + sysOssVo.setOssId( arg0.getOssId() ); + sysOssVo.setFileName( arg0.getFileName() ); + sysOssVo.setOriginalName( arg0.getOriginalName() ); + sysOssVo.setFileSuffix( arg0.getFileSuffix() ); + sysOssVo.setUrl( arg0.getUrl() ); + sysOssVo.setCreateTime( arg0.getCreateTime() ); + sysOssVo.setCreateBy( arg0.getCreateBy() ); + sysOssVo.setService( arg0.getService() ); + + return sysOssVo; + } + + @Override + public SysOssVo convert(SysOss arg0, SysOssVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOssId( arg0.getOssId() ); + arg1.setFileName( arg0.getFileName() ); + arg1.setOriginalName( arg0.getOriginalName() ); + arg1.setFileSuffix( arg0.getFileSuffix() ); + arg1.setUrl( arg0.getUrl() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setService( arg0.getService() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysPostToSysPostVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysPostToSysPostVoMapper.java new file mode 100644 index 0000000..5484c9f --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysPostToSysPostVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysPostBoToSysPostMapper; +import org.dromara.system.domain.vo.SysPostVo; +import org.dromara.system.domain.vo.SysPostVoToSysPostMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysPostBoToSysPostMapper.class,SysPostVoToSysPostMapper.class}, + imports = {} +) +public interface SysPostToSysPostVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysPostToSysPostVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysPostToSysPostVoMapperImpl.java new file mode 100644 index 0000000..8146f76 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysPostToSysPostVoMapperImpl.java @@ -0,0 +1,54 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysPostVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysPostToSysPostVoMapperImpl implements SysPostToSysPostVoMapper { + + @Override + public SysPostVo convert(SysPost arg0) { + if ( arg0 == null ) { + return null; + } + + SysPostVo sysPostVo = new SysPostVo(); + + sysPostVo.setPostId( arg0.getPostId() ); + sysPostVo.setDeptId( arg0.getDeptId() ); + sysPostVo.setPostCode( arg0.getPostCode() ); + sysPostVo.setPostName( arg0.getPostName() ); + sysPostVo.setPostCategory( arg0.getPostCategory() ); + sysPostVo.setPostSort( arg0.getPostSort() ); + sysPostVo.setStatus( arg0.getStatus() ); + sysPostVo.setRemark( arg0.getRemark() ); + sysPostVo.setCreateTime( arg0.getCreateTime() ); + + return sysPostVo; + } + + @Override + public SysPostVo convert(SysPost arg0, SysPostVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setPostId( arg0.getPostId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setPostCode( arg0.getPostCode() ); + arg1.setPostName( arg0.getPostName() ); + arg1.setPostCategory( arg0.getPostCategory() ); + arg1.setPostSort( arg0.getPostSort() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysRoleToSysRoleVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysRoleToSysRoleVoMapper.java new file mode 100644 index 0000000..fecb423 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysRoleToSysRoleVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysRoleBoToSysRoleMapper; +import org.dromara.system.domain.vo.SysRoleVo; +import org.dromara.system.domain.vo.SysRoleVoToSysRoleMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysRoleVoToSysRoleMapper.class,SysRoleBoToSysRoleMapper.class}, + imports = {} +) +public interface SysRoleToSysRoleVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysRoleToSysRoleVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysRoleToSysRoleVoMapperImpl.java new file mode 100644 index 0000000..446b6b4 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysRoleToSysRoleVoMapperImpl.java @@ -0,0 +1,56 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysRoleVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysRoleToSysRoleVoMapperImpl implements SysRoleToSysRoleVoMapper { + + @Override + public SysRoleVo convert(SysRole arg0) { + if ( arg0 == null ) { + return null; + } + + SysRoleVo sysRoleVo = new SysRoleVo(); + + sysRoleVo.setRoleId( arg0.getRoleId() ); + sysRoleVo.setRoleName( arg0.getRoleName() ); + sysRoleVo.setRoleKey( arg0.getRoleKey() ); + sysRoleVo.setRoleSort( arg0.getRoleSort() ); + sysRoleVo.setDataScope( arg0.getDataScope() ); + sysRoleVo.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + sysRoleVo.setDeptCheckStrictly( arg0.getDeptCheckStrictly() ); + sysRoleVo.setStatus( arg0.getStatus() ); + sysRoleVo.setRemark( arg0.getRemark() ); + sysRoleVo.setCreateTime( arg0.getCreateTime() ); + + return sysRoleVo; + } + + @Override + public SysRoleVo convert(SysRole arg0, SysRoleVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setRoleId( arg0.getRoleId() ); + arg1.setRoleName( arg0.getRoleName() ); + arg1.setRoleKey( arg0.getRoleKey() ); + arg1.setRoleSort( arg0.getRoleSort() ); + arg1.setDataScope( arg0.getDataScope() ); + arg1.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + arg1.setDeptCheckStrictly( arg0.getDeptCheckStrictly() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysSocialToSysSocialVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysSocialToSysSocialVoMapper.java new file mode 100644 index 0000000..245ffcf --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysSocialToSysSocialVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysSocialBoToSysSocialMapper; +import org.dromara.system.domain.vo.SysSocialVo; +import org.dromara.system.domain.vo.SysSocialVoToSysSocialMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysSocialBoToSysSocialMapper.class,SysSocialVoToSysSocialMapper.class}, + imports = {} +) +public interface SysSocialToSysSocialVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysSocialToSysSocialVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysSocialToSysSocialVoMapperImpl.java new file mode 100644 index 0000000..2dbf407 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysSocialToSysSocialVoMapperImpl.java @@ -0,0 +1,84 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysSocialVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysSocialToSysSocialVoMapperImpl implements SysSocialToSysSocialVoMapper { + + @Override + public SysSocialVo convert(SysSocial arg0) { + if ( arg0 == null ) { + return null; + } + + SysSocialVo sysSocialVo = new SysSocialVo(); + + sysSocialVo.setId( arg0.getId() ); + sysSocialVo.setUserId( arg0.getUserId() ); + sysSocialVo.setTenantId( arg0.getTenantId() ); + sysSocialVo.setAuthId( arg0.getAuthId() ); + sysSocialVo.setSource( arg0.getSource() ); + sysSocialVo.setAccessToken( arg0.getAccessToken() ); + sysSocialVo.setExpireIn( arg0.getExpireIn() ); + sysSocialVo.setRefreshToken( arg0.getRefreshToken() ); + sysSocialVo.setOpenId( arg0.getOpenId() ); + sysSocialVo.setUserName( arg0.getUserName() ); + sysSocialVo.setNickName( arg0.getNickName() ); + sysSocialVo.setEmail( arg0.getEmail() ); + sysSocialVo.setAvatar( arg0.getAvatar() ); + sysSocialVo.setAccessCode( arg0.getAccessCode() ); + sysSocialVo.setUnionId( arg0.getUnionId() ); + sysSocialVo.setScope( arg0.getScope() ); + sysSocialVo.setTokenType( arg0.getTokenType() ); + sysSocialVo.setIdToken( arg0.getIdToken() ); + sysSocialVo.setMacAlgorithm( arg0.getMacAlgorithm() ); + sysSocialVo.setMacKey( arg0.getMacKey() ); + sysSocialVo.setCode( arg0.getCode() ); + sysSocialVo.setOauthToken( arg0.getOauthToken() ); + sysSocialVo.setOauthTokenSecret( arg0.getOauthTokenSecret() ); + sysSocialVo.setCreateTime( arg0.getCreateTime() ); + + return sysSocialVo; + } + + @Override + public SysSocialVo convert(SysSocial arg0, SysSocialVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setAuthId( arg0.getAuthId() ); + arg1.setSource( arg0.getSource() ); + arg1.setAccessToken( arg0.getAccessToken() ); + arg1.setExpireIn( arg0.getExpireIn() ); + arg1.setRefreshToken( arg0.getRefreshToken() ); + arg1.setOpenId( arg0.getOpenId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setNickName( arg0.getNickName() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setAvatar( arg0.getAvatar() ); + arg1.setAccessCode( arg0.getAccessCode() ); + arg1.setUnionId( arg0.getUnionId() ); + arg1.setScope( arg0.getScope() ); + arg1.setTokenType( arg0.getTokenType() ); + arg1.setIdToken( arg0.getIdToken() ); + arg1.setMacAlgorithm( arg0.getMacAlgorithm() ); + arg1.setMacKey( arg0.getMacKey() ); + arg1.setCode( arg0.getCode() ); + arg1.setOauthToken( arg0.getOauthToken() ); + arg1.setOauthTokenSecret( arg0.getOauthTokenSecret() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapper.java new file mode 100644 index 0000000..a44cdba --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysTenantPackageBoToSysTenantPackageMapper; +import org.dromara.system.domain.vo.SysTenantPackageVo; +import org.dromara.system.domain.vo.SysTenantPackageVoToSysTenantPackageMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysTenantPackageBoToSysTenantPackageMapper.class,SysTenantPackageVoToSysTenantPackageMapper.class}, + imports = {} +) +public interface SysTenantPackageToSysTenantPackageVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapperImpl.java new file mode 100644 index 0000000..d6fa074 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantPackageToSysTenantPackageVoMapperImpl.java @@ -0,0 +1,48 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysTenantPackageVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysTenantPackageToSysTenantPackageVoMapperImpl implements SysTenantPackageToSysTenantPackageVoMapper { + + @Override + public SysTenantPackageVo convert(SysTenantPackage arg0) { + if ( arg0 == null ) { + return null; + } + + SysTenantPackageVo sysTenantPackageVo = new SysTenantPackageVo(); + + sysTenantPackageVo.setPackageId( arg0.getPackageId() ); + sysTenantPackageVo.setPackageName( arg0.getPackageName() ); + sysTenantPackageVo.setMenuIds( arg0.getMenuIds() ); + sysTenantPackageVo.setRemark( arg0.getRemark() ); + sysTenantPackageVo.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + sysTenantPackageVo.setStatus( arg0.getStatus() ); + + return sysTenantPackageVo; + } + + @Override + public SysTenantPackageVo convert(SysTenantPackage arg0, SysTenantPackageVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setPackageId( arg0.getPackageId() ); + arg1.setPackageName( arg0.getPackageName() ); + arg1.setMenuIds( arg0.getMenuIds() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantToSysTenantVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantToSysTenantVoMapper.java new file mode 100644 index 0000000..97ec694 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantToSysTenantVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysTenantBoToSysTenantMapper; +import org.dromara.system.domain.vo.SysTenantVo; +import org.dromara.system.domain.vo.SysTenantVoToSysTenantMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysTenantBoToSysTenantMapper.class,SysTenantVoToSysTenantMapper.class}, + imports = {} +) +public interface SysTenantToSysTenantVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantToSysTenantVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantToSysTenantVoMapperImpl.java new file mode 100644 index 0000000..48be927 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysTenantToSysTenantVoMapperImpl.java @@ -0,0 +1,64 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysTenantVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysTenantToSysTenantVoMapperImpl implements SysTenantToSysTenantVoMapper { + + @Override + public SysTenantVo convert(SysTenant arg0) { + if ( arg0 == null ) { + return null; + } + + SysTenantVo sysTenantVo = new SysTenantVo(); + + sysTenantVo.setId( arg0.getId() ); + sysTenantVo.setTenantId( arg0.getTenantId() ); + sysTenantVo.setContactUserName( arg0.getContactUserName() ); + sysTenantVo.setContactPhone( arg0.getContactPhone() ); + sysTenantVo.setCompanyName( arg0.getCompanyName() ); + sysTenantVo.setLicenseNumber( arg0.getLicenseNumber() ); + sysTenantVo.setAddress( arg0.getAddress() ); + sysTenantVo.setDomain( arg0.getDomain() ); + sysTenantVo.setIntro( arg0.getIntro() ); + sysTenantVo.setRemark( arg0.getRemark() ); + sysTenantVo.setPackageId( arg0.getPackageId() ); + sysTenantVo.setExpireTime( arg0.getExpireTime() ); + sysTenantVo.setAccountCount( arg0.getAccountCount() ); + sysTenantVo.setStatus( arg0.getStatus() ); + + return sysTenantVo; + } + + @Override + public SysTenantVo convert(SysTenant arg0, SysTenantVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setContactUserName( arg0.getContactUserName() ); + arg1.setContactPhone( arg0.getContactPhone() ); + arg1.setCompanyName( arg0.getCompanyName() ); + arg1.setLicenseNumber( arg0.getLicenseNumber() ); + arg1.setAddress( arg0.getAddress() ); + arg1.setDomain( arg0.getDomain() ); + arg1.setIntro( arg0.getIntro() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setPackageId( arg0.getPackageId() ); + arg1.setExpireTime( arg0.getExpireTime() ); + arg1.setAccountCount( arg0.getAccountCount() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysUserToSysUserVoMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysUserToSysUserVoMapper.java new file mode 100644 index 0000000..a0ef501 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysUserToSysUserVoMapper.java @@ -0,0 +1,17 @@ +package org.dromara.system.domain; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.bo.SysUserBoToSysUserMapper; +import org.dromara.system.domain.vo.SysRoleVoToSysRoleMapper; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.domain.vo.SysUserVoToSysUserMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysRoleVoToSysRoleMapper.class,SysRoleToSysRoleVoMapper.class,SysUserVoToSysUserMapper.class,SysUserBoToSysUserMapper.class}, + imports = {} +) +public interface SysUserToSysUserVoMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysUserToSysUserVoMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysUserToSysUserVoMapperImpl.java new file mode 100644 index 0000000..b59fdeb --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/SysUserToSysUserVoMapperImpl.java @@ -0,0 +1,68 @@ +package org.dromara.system.domain; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.vo.SysUserVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysUserToSysUserVoMapperImpl implements SysUserToSysUserVoMapper { + + @Override + public SysUserVo convert(SysUser arg0) { + if ( arg0 == null ) { + return null; + } + + SysUserVo sysUserVo = new SysUserVo(); + + sysUserVo.setUserId( arg0.getUserId() ); + sysUserVo.setTenantId( arg0.getTenantId() ); + sysUserVo.setDeptId( arg0.getDeptId() ); + sysUserVo.setUserName( arg0.getUserName() ); + sysUserVo.setNickName( arg0.getNickName() ); + sysUserVo.setUserType( arg0.getUserType() ); + sysUserVo.setEmail( arg0.getEmail() ); + sysUserVo.setPhonenumber( arg0.getPhonenumber() ); + sysUserVo.setSex( arg0.getSex() ); + sysUserVo.setAvatar( arg0.getAvatar() ); + sysUserVo.setPassword( arg0.getPassword() ); + sysUserVo.setStatus( arg0.getStatus() ); + sysUserVo.setLoginIp( arg0.getLoginIp() ); + sysUserVo.setLoginDate( arg0.getLoginDate() ); + sysUserVo.setRemark( arg0.getRemark() ); + sysUserVo.setCreateTime( arg0.getCreateTime() ); + + return sysUserVo; + } + + @Override + public SysUserVo convert(SysUser arg0, SysUserVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setUserId( arg0.getUserId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setNickName( arg0.getNickName() ); + arg1.setUserType( arg0.getUserType() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setPhonenumber( arg0.getPhonenumber() ); + arg1.setSex( arg0.getSex() ); + arg1.setAvatar( arg0.getAvatar() ); + arg1.setPassword( arg0.getPassword() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setLoginIp( arg0.getLoginIp() ); + arg1.setLoginDate( arg0.getLoginDate() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysClientBoToSysClientMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysClientBoToSysClientMapper.java new file mode 100644 index 0000000..2d7ad5c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysClientBoToSysClientMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysClient; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysClientBoToSysClientMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysClientBoToSysClientMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysClientBoToSysClientMapperImpl.java new file mode 100644 index 0000000..a4a7c25 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysClientBoToSysClientMapperImpl.java @@ -0,0 +1,88 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysClient; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysClientBoToSysClientMapperImpl implements SysClientBoToSysClientMapper { + + @Override + public SysClient convert(SysClientBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysClient sysClient = new SysClient(); + + sysClient.setSearchValue( arg0.getSearchValue() ); + sysClient.setCreateDept( arg0.getCreateDept() ); + sysClient.setCreateBy( arg0.getCreateBy() ); + sysClient.setCreateTime( arg0.getCreateTime() ); + sysClient.setUpdateBy( arg0.getUpdateBy() ); + sysClient.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysClient.setParams( new LinkedHashMap( map ) ); + } + sysClient.setId( arg0.getId() ); + sysClient.setClientId( arg0.getClientId() ); + sysClient.setClientKey( arg0.getClientKey() ); + sysClient.setClientSecret( arg0.getClientSecret() ); + sysClient.setGrantType( arg0.getGrantType() ); + sysClient.setDeviceType( arg0.getDeviceType() ); + sysClient.setActiveTimeout( arg0.getActiveTimeout() ); + sysClient.setTimeout( arg0.getTimeout() ); + sysClient.setStatus( arg0.getStatus() ); + + return sysClient; + } + + @Override + public SysClient convert(SysClientBo arg0, SysClient arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setId( arg0.getId() ); + arg1.setClientId( arg0.getClientId() ); + arg1.setClientKey( arg0.getClientKey() ); + arg1.setClientSecret( arg0.getClientSecret() ); + arg1.setGrantType( arg0.getGrantType() ); + arg1.setDeviceType( arg0.getDeviceType() ); + arg1.setActiveTimeout( arg0.getActiveTimeout() ); + arg1.setTimeout( arg0.getTimeout() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapper.java new file mode 100644 index 0000000..4c1a2cc --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysConfig; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysConfigBoToSysConfigMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapperImpl.java new file mode 100644 index 0000000..20aa6d8 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysConfigBoToSysConfigMapperImpl.java @@ -0,0 +1,82 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysConfig; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysConfigBoToSysConfigMapperImpl implements SysConfigBoToSysConfigMapper { + + @Override + public SysConfig convert(SysConfigBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysConfig sysConfig = new SysConfig(); + + sysConfig.setSearchValue( arg0.getSearchValue() ); + sysConfig.setCreateDept( arg0.getCreateDept() ); + sysConfig.setCreateBy( arg0.getCreateBy() ); + sysConfig.setCreateTime( arg0.getCreateTime() ); + sysConfig.setUpdateBy( arg0.getUpdateBy() ); + sysConfig.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysConfig.setParams( new LinkedHashMap( map ) ); + } + sysConfig.setConfigId( arg0.getConfigId() ); + sysConfig.setConfigName( arg0.getConfigName() ); + sysConfig.setConfigKey( arg0.getConfigKey() ); + sysConfig.setConfigValue( arg0.getConfigValue() ); + sysConfig.setConfigType( arg0.getConfigType() ); + sysConfig.setRemark( arg0.getRemark() ); + + return sysConfig; + } + + @Override + public SysConfig convert(SysConfigBo arg0, SysConfig arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setConfigId( arg0.getConfigId() ); + arg1.setConfigName( arg0.getConfigName() ); + arg1.setConfigKey( arg0.getConfigKey() ); + arg1.setConfigValue( arg0.getConfigValue() ); + arg1.setConfigType( arg0.getConfigType() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapper.java new file mode 100644 index 0000000..bfd2fe0 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysDept; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysDeptBoToSysDeptMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapperImpl.java new file mode 100644 index 0000000..c8b1f3f --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDeptBoToSysDeptMapperImpl.java @@ -0,0 +1,88 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysDept; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDeptBoToSysDeptMapperImpl implements SysDeptBoToSysDeptMapper { + + @Override + public SysDept convert(SysDeptBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysDept sysDept = new SysDept(); + + sysDept.setSearchValue( arg0.getSearchValue() ); + sysDept.setCreateDept( arg0.getCreateDept() ); + sysDept.setCreateBy( arg0.getCreateBy() ); + sysDept.setCreateTime( arg0.getCreateTime() ); + sysDept.setUpdateBy( arg0.getUpdateBy() ); + sysDept.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysDept.setParams( new LinkedHashMap( map ) ); + } + sysDept.setDeptId( arg0.getDeptId() ); + sysDept.setParentId( arg0.getParentId() ); + sysDept.setDeptName( arg0.getDeptName() ); + sysDept.setDeptCategory( arg0.getDeptCategory() ); + sysDept.setOrderNum( arg0.getOrderNum() ); + sysDept.setLeader( arg0.getLeader() ); + sysDept.setPhone( arg0.getPhone() ); + sysDept.setEmail( arg0.getEmail() ); + sysDept.setStatus( arg0.getStatus() ); + + return sysDept; + } + + @Override + public SysDept convert(SysDeptBo arg0, SysDept arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setDeptId( arg0.getDeptId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setDeptCategory( arg0.getDeptCategory() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setLeader( arg0.getLeader() ); + arg1.setPhone( arg0.getPhone() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapper.java new file mode 100644 index 0000000..4464117 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysDictData; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysDictDataBoToSysDictDataMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapperImpl.java new file mode 100644 index 0000000..cc75584 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictDataBoToSysDictDataMapperImpl.java @@ -0,0 +1,88 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysDictData; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDictDataBoToSysDictDataMapperImpl implements SysDictDataBoToSysDictDataMapper { + + @Override + public SysDictData convert(SysDictDataBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysDictData sysDictData = new SysDictData(); + + sysDictData.setSearchValue( arg0.getSearchValue() ); + sysDictData.setCreateDept( arg0.getCreateDept() ); + sysDictData.setCreateBy( arg0.getCreateBy() ); + sysDictData.setCreateTime( arg0.getCreateTime() ); + sysDictData.setUpdateBy( arg0.getUpdateBy() ); + sysDictData.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysDictData.setParams( new LinkedHashMap( map ) ); + } + sysDictData.setDictCode( arg0.getDictCode() ); + sysDictData.setDictSort( arg0.getDictSort() ); + sysDictData.setDictLabel( arg0.getDictLabel() ); + sysDictData.setDictValue( arg0.getDictValue() ); + sysDictData.setDictType( arg0.getDictType() ); + sysDictData.setCssClass( arg0.getCssClass() ); + sysDictData.setListClass( arg0.getListClass() ); + sysDictData.setIsDefault( arg0.getIsDefault() ); + sysDictData.setRemark( arg0.getRemark() ); + + return sysDictData; + } + + @Override + public SysDictData convert(SysDictDataBo arg0, SysDictData arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setDictCode( arg0.getDictCode() ); + arg1.setDictSort( arg0.getDictSort() ); + arg1.setDictLabel( arg0.getDictLabel() ); + arg1.setDictValue( arg0.getDictValue() ); + arg1.setDictType( arg0.getDictType() ); + arg1.setCssClass( arg0.getCssClass() ); + arg1.setListClass( arg0.getListClass() ); + arg1.setIsDefault( arg0.getIsDefault() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapper.java new file mode 100644 index 0000000..6d97997 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysDictType; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysDictTypeBoToSysDictTypeMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapperImpl.java new file mode 100644 index 0000000..682863c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysDictTypeBoToSysDictTypeMapperImpl.java @@ -0,0 +1,78 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysDictType; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDictTypeBoToSysDictTypeMapperImpl implements SysDictTypeBoToSysDictTypeMapper { + + @Override + public SysDictType convert(SysDictTypeBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysDictType sysDictType = new SysDictType(); + + sysDictType.setSearchValue( arg0.getSearchValue() ); + sysDictType.setCreateDept( arg0.getCreateDept() ); + sysDictType.setCreateBy( arg0.getCreateBy() ); + sysDictType.setCreateTime( arg0.getCreateTime() ); + sysDictType.setUpdateBy( arg0.getUpdateBy() ); + sysDictType.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysDictType.setParams( new LinkedHashMap( map ) ); + } + sysDictType.setDictId( arg0.getDictId() ); + sysDictType.setDictName( arg0.getDictName() ); + sysDictType.setDictType( arg0.getDictType() ); + sysDictType.setRemark( arg0.getRemark() ); + + return sysDictType; + } + + @Override + public SysDictType convert(SysDictTypeBo arg0, SysDictType arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setDictId( arg0.getDictId() ); + arg1.setDictName( arg0.getDictName() ); + arg1.setDictType( arg0.getDictType() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapper.java new file mode 100644 index 0000000..a8b1ffd --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysLogininfor; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysLogininforBoToSysLogininforMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapperImpl.java new file mode 100644 index 0000000..4e8016d --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysLogininforBoToSysLogininforMapperImpl.java @@ -0,0 +1,60 @@ +package org.dromara.system.domain.bo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysLogininfor; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysLogininforBoToSysLogininforMapperImpl implements SysLogininforBoToSysLogininforMapper { + + @Override + public SysLogininfor convert(SysLogininforBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysLogininfor sysLogininfor = new SysLogininfor(); + + sysLogininfor.setInfoId( arg0.getInfoId() ); + sysLogininfor.setTenantId( arg0.getTenantId() ); + sysLogininfor.setUserName( arg0.getUserName() ); + sysLogininfor.setClientKey( arg0.getClientKey() ); + sysLogininfor.setDeviceType( arg0.getDeviceType() ); + sysLogininfor.setStatus( arg0.getStatus() ); + sysLogininfor.setIpaddr( arg0.getIpaddr() ); + sysLogininfor.setLoginLocation( arg0.getLoginLocation() ); + sysLogininfor.setBrowser( arg0.getBrowser() ); + sysLogininfor.setOs( arg0.getOs() ); + sysLogininfor.setMsg( arg0.getMsg() ); + sysLogininfor.setLoginTime( arg0.getLoginTime() ); + + return sysLogininfor; + } + + @Override + public SysLogininfor convert(SysLogininforBo arg0, SysLogininfor arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setInfoId( arg0.getInfoId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setClientKey( arg0.getClientKey() ); + arg1.setDeviceType( arg0.getDeviceType() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setIpaddr( arg0.getIpaddr() ); + arg1.setLoginLocation( arg0.getLoginLocation() ); + arg1.setBrowser( arg0.getBrowser() ); + arg1.setOs( arg0.getOs() ); + arg1.setMsg( arg0.getMsg() ); + arg1.setLoginTime( arg0.getLoginTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapper.java new file mode 100644 index 0000000..168c344 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysMenu; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysMenuBoToSysMenuMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapperImpl.java new file mode 100644 index 0000000..04c6d2c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysMenuBoToSysMenuMapperImpl.java @@ -0,0 +1,100 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysMenu; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysMenuBoToSysMenuMapperImpl implements SysMenuBoToSysMenuMapper { + + @Override + public SysMenu convert(SysMenuBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysMenu sysMenu = new SysMenu(); + + sysMenu.setSearchValue( arg0.getSearchValue() ); + sysMenu.setCreateDept( arg0.getCreateDept() ); + sysMenu.setCreateBy( arg0.getCreateBy() ); + sysMenu.setCreateTime( arg0.getCreateTime() ); + sysMenu.setUpdateBy( arg0.getUpdateBy() ); + sysMenu.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysMenu.setParams( new LinkedHashMap( map ) ); + } + sysMenu.setMenuId( arg0.getMenuId() ); + sysMenu.setParentId( arg0.getParentId() ); + sysMenu.setMenuName( arg0.getMenuName() ); + sysMenu.setOrderNum( arg0.getOrderNum() ); + sysMenu.setPath( arg0.getPath() ); + sysMenu.setComponent( arg0.getComponent() ); + sysMenu.setQueryParam( arg0.getQueryParam() ); + sysMenu.setIsFrame( arg0.getIsFrame() ); + sysMenu.setIsCache( arg0.getIsCache() ); + sysMenu.setMenuType( arg0.getMenuType() ); + sysMenu.setVisible( arg0.getVisible() ); + sysMenu.setStatus( arg0.getStatus() ); + sysMenu.setPerms( arg0.getPerms() ); + sysMenu.setIcon( arg0.getIcon() ); + sysMenu.setRemark( arg0.getRemark() ); + + return sysMenu; + } + + @Override + public SysMenu convert(SysMenuBo arg0, SysMenu arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setMenuId( arg0.getMenuId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setMenuName( arg0.getMenuName() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setPath( arg0.getPath() ); + arg1.setComponent( arg0.getComponent() ); + arg1.setQueryParam( arg0.getQueryParam() ); + arg1.setIsFrame( arg0.getIsFrame() ); + arg1.setIsCache( arg0.getIsCache() ); + arg1.setMenuType( arg0.getMenuType() ); + arg1.setVisible( arg0.getVisible() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setPerms( arg0.getPerms() ); + arg1.setIcon( arg0.getIcon() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapper.java new file mode 100644 index 0000000..acf92e4 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysNotice; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysNoticeBoToSysNoticeMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapperImpl.java new file mode 100644 index 0000000..64bd84d --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysNoticeBoToSysNoticeMapperImpl.java @@ -0,0 +1,82 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysNotice; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysNoticeBoToSysNoticeMapperImpl implements SysNoticeBoToSysNoticeMapper { + + @Override + public SysNotice convert(SysNoticeBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysNotice sysNotice = new SysNotice(); + + sysNotice.setSearchValue( arg0.getSearchValue() ); + sysNotice.setCreateDept( arg0.getCreateDept() ); + sysNotice.setCreateBy( arg0.getCreateBy() ); + sysNotice.setCreateTime( arg0.getCreateTime() ); + sysNotice.setUpdateBy( arg0.getUpdateBy() ); + sysNotice.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysNotice.setParams( new LinkedHashMap( map ) ); + } + sysNotice.setNoticeId( arg0.getNoticeId() ); + sysNotice.setNoticeTitle( arg0.getNoticeTitle() ); + sysNotice.setNoticeType( arg0.getNoticeType() ); + sysNotice.setNoticeContent( arg0.getNoticeContent() ); + sysNotice.setStatus( arg0.getStatus() ); + sysNotice.setRemark( arg0.getRemark() ); + + return sysNotice; + } + + @Override + public SysNotice convert(SysNoticeBo arg0, SysNotice arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setNoticeId( arg0.getNoticeId() ); + arg1.setNoticeTitle( arg0.getNoticeTitle() ); + arg1.setNoticeType( arg0.getNoticeType() ); + arg1.setNoticeContent( arg0.getNoticeContent() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapper.java new file mode 100644 index 0000000..83fb424 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.common.log.event.OperLogEvent; +import org.dromara.common.log.event.OperLogEventToSysOperLogBoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOperLogBoToSysOperLogMapper.class,OperLogEventToSysOperLogBoMapper.class}, + imports = {} +) +public interface SysOperLogBoToOperLogEventMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapperImpl.java new file mode 100644 index 0000000..90b8609 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToOperLogEventMapperImpl.java @@ -0,0 +1,84 @@ +package org.dromara.system.domain.bo; + +import java.util.Arrays; +import javax.annotation.processing.Generated; +import org.dromara.common.log.event.OperLogEvent; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOperLogBoToOperLogEventMapperImpl implements SysOperLogBoToOperLogEventMapper { + + @Override + public OperLogEvent convert(SysOperLogBo arg0) { + if ( arg0 == null ) { + return null; + } + + OperLogEvent operLogEvent = new OperLogEvent(); + + operLogEvent.setOperId( arg0.getOperId() ); + operLogEvent.setTenantId( arg0.getTenantId() ); + operLogEvent.setTitle( arg0.getTitle() ); + operLogEvent.setBusinessType( arg0.getBusinessType() ); + Integer[] businessTypes = arg0.getBusinessTypes(); + if ( businessTypes != null ) { + operLogEvent.setBusinessTypes( Arrays.copyOf( businessTypes, businessTypes.length ) ); + } + operLogEvent.setMethod( arg0.getMethod() ); + operLogEvent.setRequestMethod( arg0.getRequestMethod() ); + operLogEvent.setOperatorType( arg0.getOperatorType() ); + operLogEvent.setOperName( arg0.getOperName() ); + operLogEvent.setDeptName( arg0.getDeptName() ); + operLogEvent.setOperUrl( arg0.getOperUrl() ); + operLogEvent.setOperIp( arg0.getOperIp() ); + operLogEvent.setOperLocation( arg0.getOperLocation() ); + operLogEvent.setOperParam( arg0.getOperParam() ); + operLogEvent.setJsonResult( arg0.getJsonResult() ); + operLogEvent.setStatus( arg0.getStatus() ); + operLogEvent.setErrorMsg( arg0.getErrorMsg() ); + operLogEvent.setOperTime( arg0.getOperTime() ); + operLogEvent.setCostTime( arg0.getCostTime() ); + + return operLogEvent; + } + + @Override + public OperLogEvent convert(SysOperLogBo arg0, OperLogEvent arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOperId( arg0.getOperId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setTitle( arg0.getTitle() ); + arg1.setBusinessType( arg0.getBusinessType() ); + Integer[] businessTypes = arg0.getBusinessTypes(); + if ( businessTypes != null ) { + arg1.setBusinessTypes( Arrays.copyOf( businessTypes, businessTypes.length ) ); + } + else { + arg1.setBusinessTypes( null ); + } + arg1.setMethod( arg0.getMethod() ); + arg1.setRequestMethod( arg0.getRequestMethod() ); + arg1.setOperatorType( arg0.getOperatorType() ); + arg1.setOperName( arg0.getOperName() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setOperUrl( arg0.getOperUrl() ); + arg1.setOperIp( arg0.getOperIp() ); + arg1.setOperLocation( arg0.getOperLocation() ); + arg1.setOperParam( arg0.getOperParam() ); + arg1.setJsonResult( arg0.getJsonResult() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setErrorMsg( arg0.getErrorMsg() ); + arg1.setOperTime( arg0.getOperTime() ); + arg1.setCostTime( arg0.getCostTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapper.java new file mode 100644 index 0000000..c6085c5 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.common.log.event.OperLogEventToSysOperLogBoMapper; +import org.dromara.system.domain.SysOperLog; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOperLogBoToOperLogEventMapper.class,OperLogEventToSysOperLogBoMapper.class}, + imports = {} +) +public interface SysOperLogBoToSysOperLogMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapperImpl.java new file mode 100644 index 0000000..e7e2fb3 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOperLogBoToSysOperLogMapperImpl.java @@ -0,0 +1,72 @@ +package org.dromara.system.domain.bo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysOperLog; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOperLogBoToSysOperLogMapperImpl implements SysOperLogBoToSysOperLogMapper { + + @Override + public SysOperLog convert(SysOperLogBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysOperLog sysOperLog = new SysOperLog(); + + sysOperLog.setOperId( arg0.getOperId() ); + sysOperLog.setTenantId( arg0.getTenantId() ); + sysOperLog.setTitle( arg0.getTitle() ); + sysOperLog.setBusinessType( arg0.getBusinessType() ); + sysOperLog.setMethod( arg0.getMethod() ); + sysOperLog.setRequestMethod( arg0.getRequestMethod() ); + sysOperLog.setOperatorType( arg0.getOperatorType() ); + sysOperLog.setOperName( arg0.getOperName() ); + sysOperLog.setDeptName( arg0.getDeptName() ); + sysOperLog.setOperUrl( arg0.getOperUrl() ); + sysOperLog.setOperIp( arg0.getOperIp() ); + sysOperLog.setOperLocation( arg0.getOperLocation() ); + sysOperLog.setOperParam( arg0.getOperParam() ); + sysOperLog.setJsonResult( arg0.getJsonResult() ); + sysOperLog.setStatus( arg0.getStatus() ); + sysOperLog.setErrorMsg( arg0.getErrorMsg() ); + sysOperLog.setOperTime( arg0.getOperTime() ); + sysOperLog.setCostTime( arg0.getCostTime() ); + + return sysOperLog; + } + + @Override + public SysOperLog convert(SysOperLogBo arg0, SysOperLog arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOperId( arg0.getOperId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setTitle( arg0.getTitle() ); + arg1.setBusinessType( arg0.getBusinessType() ); + arg1.setMethod( arg0.getMethod() ); + arg1.setRequestMethod( arg0.getRequestMethod() ); + arg1.setOperatorType( arg0.getOperatorType() ); + arg1.setOperName( arg0.getOperName() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setOperUrl( arg0.getOperUrl() ); + arg1.setOperIp( arg0.getOperIp() ); + arg1.setOperLocation( arg0.getOperLocation() ); + arg1.setOperParam( arg0.getOperParam() ); + arg1.setJsonResult( arg0.getJsonResult() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setErrorMsg( arg0.getErrorMsg() ); + arg1.setOperTime( arg0.getOperTime() ); + arg1.setCostTime( arg0.getCostTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssBoToSysOssMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssBoToSysOssMapper.java new file mode 100644 index 0000000..f15455c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssBoToSysOssMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysOss; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysOssBoToSysOssMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssBoToSysOssMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssBoToSysOssMapperImpl.java new file mode 100644 index 0000000..9791806 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssBoToSysOssMapperImpl.java @@ -0,0 +1,82 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysOss; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOssBoToSysOssMapperImpl implements SysOssBoToSysOssMapper { + + @Override + public SysOss convert(SysOssBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysOss sysOss = new SysOss(); + + sysOss.setSearchValue( arg0.getSearchValue() ); + sysOss.setCreateDept( arg0.getCreateDept() ); + sysOss.setCreateBy( arg0.getCreateBy() ); + sysOss.setCreateTime( arg0.getCreateTime() ); + sysOss.setUpdateBy( arg0.getUpdateBy() ); + sysOss.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysOss.setParams( new LinkedHashMap( map ) ); + } + sysOss.setOssId( arg0.getOssId() ); + sysOss.setFileName( arg0.getFileName() ); + sysOss.setOriginalName( arg0.getOriginalName() ); + sysOss.setFileSuffix( arg0.getFileSuffix() ); + sysOss.setUrl( arg0.getUrl() ); + sysOss.setService( arg0.getService() ); + + return sysOss; + } + + @Override + public SysOss convert(SysOssBo arg0, SysOss arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setOssId( arg0.getOssId() ); + arg1.setFileName( arg0.getFileName() ); + arg1.setOriginalName( arg0.getOriginalName() ); + arg1.setFileSuffix( arg0.getFileSuffix() ); + arg1.setUrl( arg0.getUrl() ); + arg1.setService( arg0.getService() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapper.java new file mode 100644 index 0000000..00b057c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysOssConfig; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysOssConfigBoToSysOssConfigMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapperImpl.java new file mode 100644 index 0000000..cdab913 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysOssConfigBoToSysOssConfigMapperImpl.java @@ -0,0 +1,98 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysOssConfig; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOssConfigBoToSysOssConfigMapperImpl implements SysOssConfigBoToSysOssConfigMapper { + + @Override + public SysOssConfig convert(SysOssConfigBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysOssConfig sysOssConfig = new SysOssConfig(); + + sysOssConfig.setSearchValue( arg0.getSearchValue() ); + sysOssConfig.setCreateDept( arg0.getCreateDept() ); + sysOssConfig.setCreateBy( arg0.getCreateBy() ); + sysOssConfig.setCreateTime( arg0.getCreateTime() ); + sysOssConfig.setUpdateBy( arg0.getUpdateBy() ); + sysOssConfig.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysOssConfig.setParams( new LinkedHashMap( map ) ); + } + sysOssConfig.setOssConfigId( arg0.getOssConfigId() ); + sysOssConfig.setConfigKey( arg0.getConfigKey() ); + sysOssConfig.setAccessKey( arg0.getAccessKey() ); + sysOssConfig.setSecretKey( arg0.getSecretKey() ); + sysOssConfig.setBucketName( arg0.getBucketName() ); + sysOssConfig.setPrefix( arg0.getPrefix() ); + sysOssConfig.setEndpoint( arg0.getEndpoint() ); + sysOssConfig.setDomain( arg0.getDomain() ); + sysOssConfig.setIsHttps( arg0.getIsHttps() ); + sysOssConfig.setRegion( arg0.getRegion() ); + sysOssConfig.setStatus( arg0.getStatus() ); + sysOssConfig.setExt1( arg0.getExt1() ); + sysOssConfig.setRemark( arg0.getRemark() ); + sysOssConfig.setAccessPolicy( arg0.getAccessPolicy() ); + + return sysOssConfig; + } + + @Override + public SysOssConfig convert(SysOssConfigBo arg0, SysOssConfig arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setOssConfigId( arg0.getOssConfigId() ); + arg1.setConfigKey( arg0.getConfigKey() ); + arg1.setAccessKey( arg0.getAccessKey() ); + arg1.setSecretKey( arg0.getSecretKey() ); + arg1.setBucketName( arg0.getBucketName() ); + arg1.setPrefix( arg0.getPrefix() ); + arg1.setEndpoint( arg0.getEndpoint() ); + arg1.setDomain( arg0.getDomain() ); + arg1.setIsHttps( arg0.getIsHttps() ); + arg1.setRegion( arg0.getRegion() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setExt1( arg0.getExt1() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setAccessPolicy( arg0.getAccessPolicy() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysPostBoToSysPostMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysPostBoToSysPostMapper.java new file mode 100644 index 0000000..0bb039d --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysPostBoToSysPostMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysPost; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysPostBoToSysPostMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysPostBoToSysPostMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysPostBoToSysPostMapperImpl.java new file mode 100644 index 0000000..d377bc9 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysPostBoToSysPostMapperImpl.java @@ -0,0 +1,86 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysPost; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysPostBoToSysPostMapperImpl implements SysPostBoToSysPostMapper { + + @Override + public SysPost convert(SysPostBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysPost sysPost = new SysPost(); + + sysPost.setSearchValue( arg0.getSearchValue() ); + sysPost.setCreateDept( arg0.getCreateDept() ); + sysPost.setCreateBy( arg0.getCreateBy() ); + sysPost.setCreateTime( arg0.getCreateTime() ); + sysPost.setUpdateBy( arg0.getUpdateBy() ); + sysPost.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysPost.setParams( new LinkedHashMap( map ) ); + } + sysPost.setPostId( arg0.getPostId() ); + sysPost.setDeptId( arg0.getDeptId() ); + sysPost.setPostCode( arg0.getPostCode() ); + sysPost.setPostName( arg0.getPostName() ); + sysPost.setPostCategory( arg0.getPostCategory() ); + sysPost.setPostSort( arg0.getPostSort() ); + sysPost.setStatus( arg0.getStatus() ); + sysPost.setRemark( arg0.getRemark() ); + + return sysPost; + } + + @Override + public SysPost convert(SysPostBo arg0, SysPost arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setPostId( arg0.getPostId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setPostCode( arg0.getPostCode() ); + arg1.setPostName( arg0.getPostName() ); + arg1.setPostCategory( arg0.getPostCategory() ); + arg1.setPostSort( arg0.getPostSort() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapper.java new file mode 100644 index 0000000..ba1446d --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysRole; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysRoleBoToSysRoleMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapperImpl.java new file mode 100644 index 0000000..a10d3a5 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysRoleBoToSysRoleMapperImpl.java @@ -0,0 +1,88 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysRole; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysRoleBoToSysRoleMapperImpl implements SysRoleBoToSysRoleMapper { + + @Override + public SysRole convert(SysRoleBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysRole sysRole = new SysRole(); + + sysRole.setSearchValue( arg0.getSearchValue() ); + sysRole.setCreateDept( arg0.getCreateDept() ); + sysRole.setCreateBy( arg0.getCreateBy() ); + sysRole.setCreateTime( arg0.getCreateTime() ); + sysRole.setUpdateBy( arg0.getUpdateBy() ); + sysRole.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysRole.setParams( new LinkedHashMap( map ) ); + } + sysRole.setRoleId( arg0.getRoleId() ); + sysRole.setRoleName( arg0.getRoleName() ); + sysRole.setRoleKey( arg0.getRoleKey() ); + sysRole.setRoleSort( arg0.getRoleSort() ); + sysRole.setDataScope( arg0.getDataScope() ); + sysRole.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + sysRole.setDeptCheckStrictly( arg0.getDeptCheckStrictly() ); + sysRole.setStatus( arg0.getStatus() ); + sysRole.setRemark( arg0.getRemark() ); + + return sysRole; + } + + @Override + public SysRole convert(SysRoleBo arg0, SysRole arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setRoleId( arg0.getRoleId() ); + arg1.setRoleName( arg0.getRoleName() ); + arg1.setRoleKey( arg0.getRoleKey() ); + arg1.setRoleSort( arg0.getRoleSort() ); + arg1.setDataScope( arg0.getDataScope() ); + arg1.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + arg1.setDeptCheckStrictly( arg0.getDeptCheckStrictly() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapper.java new file mode 100644 index 0000000..000b1a8 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysSocial; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysSocialBoToSysSocialMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapperImpl.java new file mode 100644 index 0000000..c059134 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysSocialBoToSysSocialMapperImpl.java @@ -0,0 +1,116 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysSocial; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysSocialBoToSysSocialMapperImpl implements SysSocialBoToSysSocialMapper { + + @Override + public SysSocial convert(SysSocialBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysSocial sysSocial = new SysSocial(); + + sysSocial.setSearchValue( arg0.getSearchValue() ); + sysSocial.setCreateDept( arg0.getCreateDept() ); + sysSocial.setCreateBy( arg0.getCreateBy() ); + sysSocial.setCreateTime( arg0.getCreateTime() ); + sysSocial.setUpdateBy( arg0.getUpdateBy() ); + sysSocial.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysSocial.setParams( new LinkedHashMap( map ) ); + } + sysSocial.setTenantId( arg0.getTenantId() ); + sysSocial.setId( arg0.getId() ); + sysSocial.setUserId( arg0.getUserId() ); + sysSocial.setAuthId( arg0.getAuthId() ); + sysSocial.setSource( arg0.getSource() ); + sysSocial.setAccessToken( arg0.getAccessToken() ); + sysSocial.setExpireIn( arg0.getExpireIn() ); + sysSocial.setRefreshToken( arg0.getRefreshToken() ); + sysSocial.setOpenId( arg0.getOpenId() ); + sysSocial.setUserName( arg0.getUserName() ); + sysSocial.setNickName( arg0.getNickName() ); + sysSocial.setEmail( arg0.getEmail() ); + sysSocial.setAvatar( arg0.getAvatar() ); + sysSocial.setAccessCode( arg0.getAccessCode() ); + sysSocial.setUnionId( arg0.getUnionId() ); + sysSocial.setScope( arg0.getScope() ); + sysSocial.setTokenType( arg0.getTokenType() ); + sysSocial.setIdToken( arg0.getIdToken() ); + sysSocial.setMacAlgorithm( arg0.getMacAlgorithm() ); + sysSocial.setMacKey( arg0.getMacKey() ); + sysSocial.setCode( arg0.getCode() ); + sysSocial.setOauthToken( arg0.getOauthToken() ); + sysSocial.setOauthTokenSecret( arg0.getOauthTokenSecret() ); + + return sysSocial; + } + + @Override + public SysSocial convert(SysSocialBo arg0, SysSocial arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setTenantId( arg0.getTenantId() ); + arg1.setId( arg0.getId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setAuthId( arg0.getAuthId() ); + arg1.setSource( arg0.getSource() ); + arg1.setAccessToken( arg0.getAccessToken() ); + arg1.setExpireIn( arg0.getExpireIn() ); + arg1.setRefreshToken( arg0.getRefreshToken() ); + arg1.setOpenId( arg0.getOpenId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setNickName( arg0.getNickName() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setAvatar( arg0.getAvatar() ); + arg1.setAccessCode( arg0.getAccessCode() ); + arg1.setUnionId( arg0.getUnionId() ); + arg1.setScope( arg0.getScope() ); + arg1.setTokenType( arg0.getTokenType() ); + arg1.setIdToken( arg0.getIdToken() ); + arg1.setMacAlgorithm( arg0.getMacAlgorithm() ); + arg1.setMacKey( arg0.getMacKey() ); + arg1.setCode( arg0.getCode() ); + arg1.setOauthToken( arg0.getOauthToken() ); + arg1.setOauthTokenSecret( arg0.getOauthTokenSecret() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapper.java new file mode 100644 index 0000000..f1a2f20 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysTenant; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysTenantBoToSysTenantMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapperImpl.java new file mode 100644 index 0000000..9646013 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantBoToSysTenantMapperImpl.java @@ -0,0 +1,98 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysTenant; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysTenantBoToSysTenantMapperImpl implements SysTenantBoToSysTenantMapper { + + @Override + public SysTenant convert(SysTenantBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysTenant sysTenant = new SysTenant(); + + sysTenant.setSearchValue( arg0.getSearchValue() ); + sysTenant.setCreateDept( arg0.getCreateDept() ); + sysTenant.setCreateBy( arg0.getCreateBy() ); + sysTenant.setCreateTime( arg0.getCreateTime() ); + sysTenant.setUpdateBy( arg0.getUpdateBy() ); + sysTenant.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysTenant.setParams( new LinkedHashMap( map ) ); + } + sysTenant.setId( arg0.getId() ); + sysTenant.setTenantId( arg0.getTenantId() ); + sysTenant.setContactUserName( arg0.getContactUserName() ); + sysTenant.setContactPhone( arg0.getContactPhone() ); + sysTenant.setCompanyName( arg0.getCompanyName() ); + sysTenant.setLicenseNumber( arg0.getLicenseNumber() ); + sysTenant.setAddress( arg0.getAddress() ); + sysTenant.setDomain( arg0.getDomain() ); + sysTenant.setIntro( arg0.getIntro() ); + sysTenant.setRemark( arg0.getRemark() ); + sysTenant.setPackageId( arg0.getPackageId() ); + sysTenant.setExpireTime( arg0.getExpireTime() ); + sysTenant.setAccountCount( arg0.getAccountCount() ); + sysTenant.setStatus( arg0.getStatus() ); + + return sysTenant; + } + + @Override + public SysTenant convert(SysTenantBo arg0, SysTenant arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setId( arg0.getId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setContactUserName( arg0.getContactUserName() ); + arg1.setContactPhone( arg0.getContactPhone() ); + arg1.setCompanyName( arg0.getCompanyName() ); + arg1.setLicenseNumber( arg0.getLicenseNumber() ); + arg1.setAddress( arg0.getAddress() ); + arg1.setDomain( arg0.getDomain() ); + arg1.setIntro( arg0.getIntro() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setPackageId( arg0.getPackageId() ); + arg1.setExpireTime( arg0.getExpireTime() ); + arg1.setAccountCount( arg0.getAccountCount() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapper.java new file mode 100644 index 0000000..b0870b9 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapper.java @@ -0,0 +1,27 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysTenantPackage; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysTenantPackageBoToSysTenantPackageMapper extends BaseMapper { + @Mapping( + target = "menuIds", + expression = "java(org.dromara.common.core.utils.StringUtils.join(source.getMenuIds(), \",\"))" + ) + SysTenantPackage convert(SysTenantPackageBo source); + + @Mapping( + target = "menuIds", + expression = "java(org.dromara.common.core.utils.StringUtils.join(source.getMenuIds(), \",\"))" + ) + SysTenantPackage convert(SysTenantPackageBo source, @MappingTarget SysTenantPackage target); +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapperImpl.java new file mode 100644 index 0000000..7d728bd --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysTenantPackageBoToSysTenantPackageMapperImpl.java @@ -0,0 +1,84 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysTenantPackage; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysTenantPackageBoToSysTenantPackageMapperImpl implements SysTenantPackageBoToSysTenantPackageMapper { + + @Override + public SysTenantPackage convert(SysTenantPackageBo source) { + if ( source == null ) { + return null; + } + + SysTenantPackage sysTenantPackage = new SysTenantPackage(); + + sysTenantPackage.setSearchValue( source.getSearchValue() ); + sysTenantPackage.setCreateDept( source.getCreateDept() ); + sysTenantPackage.setCreateBy( source.getCreateBy() ); + sysTenantPackage.setCreateTime( source.getCreateTime() ); + sysTenantPackage.setUpdateBy( source.getUpdateBy() ); + sysTenantPackage.setUpdateTime( source.getUpdateTime() ); + Map map = source.getParams(); + if ( map != null ) { + sysTenantPackage.setParams( new LinkedHashMap( map ) ); + } + sysTenantPackage.setPackageId( source.getPackageId() ); + sysTenantPackage.setPackageName( source.getPackageName() ); + sysTenantPackage.setRemark( source.getRemark() ); + sysTenantPackage.setMenuCheckStrictly( source.getMenuCheckStrictly() ); + sysTenantPackage.setStatus( source.getStatus() ); + + sysTenantPackage.setMenuIds( org.dromara.common.core.utils.StringUtils.join(source.getMenuIds(), ",") ); + + return sysTenantPackage; + } + + @Override + public SysTenantPackage convert(SysTenantPackageBo source, SysTenantPackage target) { + if ( source == null ) { + return target; + } + + target.setSearchValue( source.getSearchValue() ); + target.setCreateDept( source.getCreateDept() ); + target.setCreateBy( source.getCreateBy() ); + target.setCreateTime( source.getCreateTime() ); + target.setUpdateBy( source.getUpdateBy() ); + target.setUpdateTime( source.getUpdateTime() ); + if ( target.getParams() != null ) { + Map map = source.getParams(); + if ( map != null ) { + target.getParams().clear(); + target.getParams().putAll( map ); + } + else { + target.setParams( null ); + } + } + else { + Map map = source.getParams(); + if ( map != null ) { + target.setParams( new LinkedHashMap( map ) ); + } + } + target.setPackageId( source.getPackageId() ); + target.setPackageName( source.getPackageName() ); + target.setRemark( source.getRemark() ); + target.setMenuCheckStrictly( source.getMenuCheckStrictly() ); + target.setStatus( source.getStatus() ); + + target.setMenuIds( org.dromara.common.core.utils.StringUtils.join(source.getMenuIds(), ",") ); + + return target; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysUserBoToSysUserMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysUserBoToSysUserMapper.java new file mode 100644 index 0000000..4bab795 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysUserBoToSysUserMapper.java @@ -0,0 +1,14 @@ +package org.dromara.system.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysUser; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {}, + imports = {} +) +public interface SysUserBoToSysUserMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysUserBoToSysUserMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysUserBoToSysUserMapperImpl.java new file mode 100644 index 0000000..e34f145 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/bo/SysUserBoToSysUserMapperImpl.java @@ -0,0 +1,92 @@ +package org.dromara.system.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysUser; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysUserBoToSysUserMapperImpl implements SysUserBoToSysUserMapper { + + @Override + public SysUser convert(SysUserBo arg0) { + if ( arg0 == null ) { + return null; + } + + SysUser sysUser = new SysUser(); + + sysUser.setSearchValue( arg0.getSearchValue() ); + sysUser.setCreateDept( arg0.getCreateDept() ); + sysUser.setCreateBy( arg0.getCreateBy() ); + sysUser.setCreateTime( arg0.getCreateTime() ); + sysUser.setUpdateBy( arg0.getUpdateBy() ); + sysUser.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + sysUser.setParams( new LinkedHashMap( map ) ); + } + sysUser.setUserId( arg0.getUserId() ); + sysUser.setDeptId( arg0.getDeptId() ); + sysUser.setUserName( arg0.getUserName() ); + sysUser.setNickName( arg0.getNickName() ); + sysUser.setUserType( arg0.getUserType() ); + sysUser.setEmail( arg0.getEmail() ); + sysUser.setPhonenumber( arg0.getPhonenumber() ); + sysUser.setSex( arg0.getSex() ); + sysUser.setPassword( arg0.getPassword() ); + sysUser.setStatus( arg0.getStatus() ); + sysUser.setRemark( arg0.getRemark() ); + + return sysUser; + } + + @Override + public SysUser convert(SysUserBo arg0, SysUser arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setUserId( arg0.getUserId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setNickName( arg0.getNickName() ); + arg1.setUserType( arg0.getUserType() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setPhonenumber( arg0.getPhonenumber() ); + arg1.setSex( arg0.getSex() ); + arg1.setPassword( arg0.getPassword() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysClientVoToSysClientMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysClientVoToSysClientMapper.java new file mode 100644 index 0000000..557a27a --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysClientVoToSysClientMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysClient; +import org.dromara.system.domain.SysClientToSysClientVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysClientToSysClientVoMapper.class}, + imports = {} +) +public interface SysClientVoToSysClientMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysClientVoToSysClientMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysClientVoToSysClientMapperImpl.java new file mode 100644 index 0000000..fc7c15c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysClientVoToSysClientMapperImpl.java @@ -0,0 +1,54 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysClient; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysClientVoToSysClientMapperImpl implements SysClientVoToSysClientMapper { + + @Override + public SysClient convert(SysClientVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysClient sysClient = new SysClient(); + + sysClient.setId( arg0.getId() ); + sysClient.setClientId( arg0.getClientId() ); + sysClient.setClientKey( arg0.getClientKey() ); + sysClient.setClientSecret( arg0.getClientSecret() ); + sysClient.setGrantType( arg0.getGrantType() ); + sysClient.setDeviceType( arg0.getDeviceType() ); + sysClient.setActiveTimeout( arg0.getActiveTimeout() ); + sysClient.setTimeout( arg0.getTimeout() ); + sysClient.setStatus( arg0.getStatus() ); + + return sysClient; + } + + @Override + public SysClient convert(SysClientVo arg0, SysClient arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setClientId( arg0.getClientId() ); + arg1.setClientKey( arg0.getClientKey() ); + arg1.setClientSecret( arg0.getClientSecret() ); + arg1.setGrantType( arg0.getGrantType() ); + arg1.setDeviceType( arg0.getDeviceType() ); + arg1.setActiveTimeout( arg0.getActiveTimeout() ); + arg1.setTimeout( arg0.getTimeout() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapper.java new file mode 100644 index 0000000..f261273 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysConfig; +import org.dromara.system.domain.SysConfigToSysConfigVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysConfigToSysConfigVoMapper.class}, + imports = {} +) +public interface SysConfigVoToSysConfigMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapperImpl.java new file mode 100644 index 0000000..5431684 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysConfigVoToSysConfigMapperImpl.java @@ -0,0 +1,50 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysConfig; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysConfigVoToSysConfigMapperImpl implements SysConfigVoToSysConfigMapper { + + @Override + public SysConfig convert(SysConfigVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysConfig sysConfig = new SysConfig(); + + sysConfig.setCreateTime( arg0.getCreateTime() ); + sysConfig.setConfigId( arg0.getConfigId() ); + sysConfig.setConfigName( arg0.getConfigName() ); + sysConfig.setConfigKey( arg0.getConfigKey() ); + sysConfig.setConfigValue( arg0.getConfigValue() ); + sysConfig.setConfigType( arg0.getConfigType() ); + sysConfig.setRemark( arg0.getRemark() ); + + return sysConfig; + } + + @Override + public SysConfig convert(SysConfigVo arg0, SysConfig arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setConfigId( arg0.getConfigId() ); + arg1.setConfigName( arg0.getConfigName() ); + arg1.setConfigKey( arg0.getConfigKey() ); + arg1.setConfigValue( arg0.getConfigValue() ); + arg1.setConfigType( arg0.getConfigType() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapper.java new file mode 100644 index 0000000..be96648 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysDept; +import org.dromara.system.domain.SysDeptToSysDeptVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysDeptToSysDeptVoMapper.class}, + imports = {} +) +public interface SysDeptVoToSysDeptMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapperImpl.java new file mode 100644 index 0000000..298c7b0 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDeptVoToSysDeptMapperImpl.java @@ -0,0 +1,58 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysDept; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDeptVoToSysDeptMapperImpl implements SysDeptVoToSysDeptMapper { + + @Override + public SysDept convert(SysDeptVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysDept sysDept = new SysDept(); + + sysDept.setCreateTime( arg0.getCreateTime() ); + sysDept.setDeptId( arg0.getDeptId() ); + sysDept.setParentId( arg0.getParentId() ); + sysDept.setDeptName( arg0.getDeptName() ); + sysDept.setDeptCategory( arg0.getDeptCategory() ); + sysDept.setOrderNum( arg0.getOrderNum() ); + sysDept.setLeader( arg0.getLeader() ); + sysDept.setPhone( arg0.getPhone() ); + sysDept.setEmail( arg0.getEmail() ); + sysDept.setStatus( arg0.getStatus() ); + sysDept.setAncestors( arg0.getAncestors() ); + + return sysDept; + } + + @Override + public SysDept convert(SysDeptVo arg0, SysDept arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setDeptCategory( arg0.getDeptCategory() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setLeader( arg0.getLeader() ); + arg1.setPhone( arg0.getPhone() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setAncestors( arg0.getAncestors() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapper.java new file mode 100644 index 0000000..36739b3 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysDictData; +import org.dromara.system.domain.SysDictDataToSysDictDataVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysDictDataToSysDictDataVoMapper.class}, + imports = {} +) +public interface SysDictDataVoToSysDictDataMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapperImpl.java new file mode 100644 index 0000000..4fbeba0 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictDataVoToSysDictDataMapperImpl.java @@ -0,0 +1,56 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysDictData; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDictDataVoToSysDictDataMapperImpl implements SysDictDataVoToSysDictDataMapper { + + @Override + public SysDictData convert(SysDictDataVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysDictData sysDictData = new SysDictData(); + + sysDictData.setCreateTime( arg0.getCreateTime() ); + sysDictData.setDictCode( arg0.getDictCode() ); + sysDictData.setDictSort( arg0.getDictSort() ); + sysDictData.setDictLabel( arg0.getDictLabel() ); + sysDictData.setDictValue( arg0.getDictValue() ); + sysDictData.setDictType( arg0.getDictType() ); + sysDictData.setCssClass( arg0.getCssClass() ); + sysDictData.setListClass( arg0.getListClass() ); + sysDictData.setIsDefault( arg0.getIsDefault() ); + sysDictData.setRemark( arg0.getRemark() ); + + return sysDictData; + } + + @Override + public SysDictData convert(SysDictDataVo arg0, SysDictData arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setDictCode( arg0.getDictCode() ); + arg1.setDictSort( arg0.getDictSort() ); + arg1.setDictLabel( arg0.getDictLabel() ); + arg1.setDictValue( arg0.getDictValue() ); + arg1.setDictType( arg0.getDictType() ); + arg1.setCssClass( arg0.getCssClass() ); + arg1.setListClass( arg0.getListClass() ); + arg1.setIsDefault( arg0.getIsDefault() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapper.java new file mode 100644 index 0000000..18bb820 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysDictType; +import org.dromara.system.domain.SysDictTypeToSysDictTypeVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysDictTypeToSysDictTypeVoMapper.class}, + imports = {} +) +public interface SysDictTypeVoToSysDictTypeMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapperImpl.java new file mode 100644 index 0000000..ccaa496 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysDictTypeVoToSysDictTypeMapperImpl.java @@ -0,0 +1,46 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysDictType; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysDictTypeVoToSysDictTypeMapperImpl implements SysDictTypeVoToSysDictTypeMapper { + + @Override + public SysDictType convert(SysDictTypeVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysDictType sysDictType = new SysDictType(); + + sysDictType.setCreateTime( arg0.getCreateTime() ); + sysDictType.setDictId( arg0.getDictId() ); + sysDictType.setDictName( arg0.getDictName() ); + sysDictType.setDictType( arg0.getDictType() ); + sysDictType.setRemark( arg0.getRemark() ); + + return sysDictType; + } + + @Override + public SysDictType convert(SysDictTypeVo arg0, SysDictType arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setDictId( arg0.getDictId() ); + arg1.setDictName( arg0.getDictName() ); + arg1.setDictType( arg0.getDictType() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapper.java new file mode 100644 index 0000000..e74b079 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysLogininfor; +import org.dromara.system.domain.SysLogininforToSysLogininforVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysLogininforToSysLogininforVoMapper.class}, + imports = {} +) +public interface SysLogininforVoToSysLogininforMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapperImpl.java new file mode 100644 index 0000000..154240a --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysLogininforVoToSysLogininforMapperImpl.java @@ -0,0 +1,60 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysLogininfor; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysLogininforVoToSysLogininforMapperImpl implements SysLogininforVoToSysLogininforMapper { + + @Override + public SysLogininfor convert(SysLogininforVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysLogininfor sysLogininfor = new SysLogininfor(); + + sysLogininfor.setInfoId( arg0.getInfoId() ); + sysLogininfor.setTenantId( arg0.getTenantId() ); + sysLogininfor.setUserName( arg0.getUserName() ); + sysLogininfor.setClientKey( arg0.getClientKey() ); + sysLogininfor.setDeviceType( arg0.getDeviceType() ); + sysLogininfor.setStatus( arg0.getStatus() ); + sysLogininfor.setIpaddr( arg0.getIpaddr() ); + sysLogininfor.setLoginLocation( arg0.getLoginLocation() ); + sysLogininfor.setBrowser( arg0.getBrowser() ); + sysLogininfor.setOs( arg0.getOs() ); + sysLogininfor.setMsg( arg0.getMsg() ); + sysLogininfor.setLoginTime( arg0.getLoginTime() ); + + return sysLogininfor; + } + + @Override + public SysLogininfor convert(SysLogininforVo arg0, SysLogininfor arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setInfoId( arg0.getInfoId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setClientKey( arg0.getClientKey() ); + arg1.setDeviceType( arg0.getDeviceType() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setIpaddr( arg0.getIpaddr() ); + arg1.setLoginLocation( arg0.getLoginLocation() ); + arg1.setBrowser( arg0.getBrowser() ); + arg1.setOs( arg0.getOs() ); + arg1.setMsg( arg0.getMsg() ); + arg1.setLoginTime( arg0.getLoginTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapper.java new file mode 100644 index 0000000..7e8ce2b --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysMenu; +import org.dromara.system.domain.SysMenuToSysMenuVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysMenuToSysMenuVoMapper.class,SysMenuToSysMenuVoMapper.class}, + imports = {} +) +public interface SysMenuVoToSysMenuMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapperImpl.java new file mode 100644 index 0000000..2052ea1 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysMenuVoToSysMenuMapperImpl.java @@ -0,0 +1,88 @@ +package org.dromara.system.domain.vo; + +import java.util.List; +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysMenu; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysMenuVoToSysMenuMapperImpl implements SysMenuVoToSysMenuMapper { + + @Override + public SysMenu convert(SysMenuVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysMenu sysMenu = new SysMenu(); + + sysMenu.setCreateDept( arg0.getCreateDept() ); + sysMenu.setCreateTime( arg0.getCreateTime() ); + sysMenu.setMenuId( arg0.getMenuId() ); + sysMenu.setParentId( arg0.getParentId() ); + sysMenu.setMenuName( arg0.getMenuName() ); + sysMenu.setOrderNum( arg0.getOrderNum() ); + sysMenu.setPath( arg0.getPath() ); + sysMenu.setComponent( arg0.getComponent() ); + sysMenu.setQueryParam( arg0.getQueryParam() ); + sysMenu.setIsFrame( arg0.getIsFrame() ); + sysMenu.setIsCache( arg0.getIsCache() ); + sysMenu.setMenuType( arg0.getMenuType() ); + sysMenu.setVisible( arg0.getVisible() ); + sysMenu.setStatus( arg0.getStatus() ); + sysMenu.setPerms( arg0.getPerms() ); + sysMenu.setIcon( arg0.getIcon() ); + sysMenu.setRemark( arg0.getRemark() ); + sysMenu.setChildren( convert( arg0.getChildren() ) ); + + return sysMenu; + } + + @Override + public SysMenu convert(SysMenuVo arg0, SysMenu arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setMenuId( arg0.getMenuId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setMenuName( arg0.getMenuName() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setPath( arg0.getPath() ); + arg1.setComponent( arg0.getComponent() ); + arg1.setQueryParam( arg0.getQueryParam() ); + arg1.setIsFrame( arg0.getIsFrame() ); + arg1.setIsCache( arg0.getIsCache() ); + arg1.setMenuType( arg0.getMenuType() ); + arg1.setVisible( arg0.getVisible() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setPerms( arg0.getPerms() ); + arg1.setIcon( arg0.getIcon() ); + arg1.setRemark( arg0.getRemark() ); + if ( arg1.getChildren() != null ) { + List list = convert( arg0.getChildren() ); + if ( list != null ) { + arg1.getChildren().clear(); + arg1.getChildren().addAll( list ); + } + else { + arg1.setChildren( null ); + } + } + else { + List list = convert( arg0.getChildren() ); + if ( list != null ) { + arg1.setChildren( list ); + } + } + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapper.java new file mode 100644 index 0000000..9f8c7c2 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysNotice; +import org.dromara.system.domain.SysNoticeToSysNoticeVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysNoticeToSysNoticeVoMapper.class}, + imports = {} +) +public interface SysNoticeVoToSysNoticeMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapperImpl.java new file mode 100644 index 0000000..121a291 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysNoticeVoToSysNoticeMapperImpl.java @@ -0,0 +1,52 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysNotice; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysNoticeVoToSysNoticeMapperImpl implements SysNoticeVoToSysNoticeMapper { + + @Override + public SysNotice convert(SysNoticeVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysNotice sysNotice = new SysNotice(); + + sysNotice.setCreateBy( arg0.getCreateBy() ); + sysNotice.setCreateTime( arg0.getCreateTime() ); + sysNotice.setNoticeId( arg0.getNoticeId() ); + sysNotice.setNoticeTitle( arg0.getNoticeTitle() ); + sysNotice.setNoticeType( arg0.getNoticeType() ); + sysNotice.setNoticeContent( arg0.getNoticeContent() ); + sysNotice.setStatus( arg0.getStatus() ); + sysNotice.setRemark( arg0.getRemark() ); + + return sysNotice; + } + + @Override + public SysNotice convert(SysNoticeVo arg0, SysNotice arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setNoticeId( arg0.getNoticeId() ); + arg1.setNoticeTitle( arg0.getNoticeTitle() ); + arg1.setNoticeType( arg0.getNoticeType() ); + arg1.setNoticeContent( arg0.getNoticeContent() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapper.java new file mode 100644 index 0000000..01acc3c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysOperLog; +import org.dromara.system.domain.SysOperLogToSysOperLogVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOperLogToSysOperLogVoMapper.class}, + imports = {} +) +public interface SysOperLogVoToSysOperLogMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapperImpl.java new file mode 100644 index 0000000..7dd949b --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOperLogVoToSysOperLogMapperImpl.java @@ -0,0 +1,72 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysOperLog; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOperLogVoToSysOperLogMapperImpl implements SysOperLogVoToSysOperLogMapper { + + @Override + public SysOperLog convert(SysOperLogVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysOperLog sysOperLog = new SysOperLog(); + + sysOperLog.setOperId( arg0.getOperId() ); + sysOperLog.setTenantId( arg0.getTenantId() ); + sysOperLog.setTitle( arg0.getTitle() ); + sysOperLog.setBusinessType( arg0.getBusinessType() ); + sysOperLog.setMethod( arg0.getMethod() ); + sysOperLog.setRequestMethod( arg0.getRequestMethod() ); + sysOperLog.setOperatorType( arg0.getOperatorType() ); + sysOperLog.setOperName( arg0.getOperName() ); + sysOperLog.setDeptName( arg0.getDeptName() ); + sysOperLog.setOperUrl( arg0.getOperUrl() ); + sysOperLog.setOperIp( arg0.getOperIp() ); + sysOperLog.setOperLocation( arg0.getOperLocation() ); + sysOperLog.setOperParam( arg0.getOperParam() ); + sysOperLog.setJsonResult( arg0.getJsonResult() ); + sysOperLog.setStatus( arg0.getStatus() ); + sysOperLog.setErrorMsg( arg0.getErrorMsg() ); + sysOperLog.setOperTime( arg0.getOperTime() ); + sysOperLog.setCostTime( arg0.getCostTime() ); + + return sysOperLog; + } + + @Override + public SysOperLog convert(SysOperLogVo arg0, SysOperLog arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOperId( arg0.getOperId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setTitle( arg0.getTitle() ); + arg1.setBusinessType( arg0.getBusinessType() ); + arg1.setMethod( arg0.getMethod() ); + arg1.setRequestMethod( arg0.getRequestMethod() ); + arg1.setOperatorType( arg0.getOperatorType() ); + arg1.setOperName( arg0.getOperName() ); + arg1.setDeptName( arg0.getDeptName() ); + arg1.setOperUrl( arg0.getOperUrl() ); + arg1.setOperIp( arg0.getOperIp() ); + arg1.setOperLocation( arg0.getOperLocation() ); + arg1.setOperParam( arg0.getOperParam() ); + arg1.setJsonResult( arg0.getJsonResult() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setErrorMsg( arg0.getErrorMsg() ); + arg1.setOperTime( arg0.getOperTime() ); + arg1.setCostTime( arg0.getCostTime() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapper.java new file mode 100644 index 0000000..62ccea8 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysOssConfig; +import org.dromara.system.domain.SysOssConfigToSysOssConfigVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOssConfigToSysOssConfigVoMapper.class}, + imports = {} +) +public interface SysOssConfigVoToSysOssConfigMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapperImpl.java new file mode 100644 index 0000000..3e826da --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssConfigVoToSysOssConfigMapperImpl.java @@ -0,0 +1,64 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysOssConfig; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOssConfigVoToSysOssConfigMapperImpl implements SysOssConfigVoToSysOssConfigMapper { + + @Override + public SysOssConfig convert(SysOssConfigVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysOssConfig sysOssConfig = new SysOssConfig(); + + sysOssConfig.setOssConfigId( arg0.getOssConfigId() ); + sysOssConfig.setConfigKey( arg0.getConfigKey() ); + sysOssConfig.setAccessKey( arg0.getAccessKey() ); + sysOssConfig.setSecretKey( arg0.getSecretKey() ); + sysOssConfig.setBucketName( arg0.getBucketName() ); + sysOssConfig.setPrefix( arg0.getPrefix() ); + sysOssConfig.setEndpoint( arg0.getEndpoint() ); + sysOssConfig.setDomain( arg0.getDomain() ); + sysOssConfig.setIsHttps( arg0.getIsHttps() ); + sysOssConfig.setRegion( arg0.getRegion() ); + sysOssConfig.setStatus( arg0.getStatus() ); + sysOssConfig.setExt1( arg0.getExt1() ); + sysOssConfig.setRemark( arg0.getRemark() ); + sysOssConfig.setAccessPolicy( arg0.getAccessPolicy() ); + + return sysOssConfig; + } + + @Override + public SysOssConfig convert(SysOssConfigVo arg0, SysOssConfig arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setOssConfigId( arg0.getOssConfigId() ); + arg1.setConfigKey( arg0.getConfigKey() ); + arg1.setAccessKey( arg0.getAccessKey() ); + arg1.setSecretKey( arg0.getSecretKey() ); + arg1.setBucketName( arg0.getBucketName() ); + arg1.setPrefix( arg0.getPrefix() ); + arg1.setEndpoint( arg0.getEndpoint() ); + arg1.setDomain( arg0.getDomain() ); + arg1.setIsHttps( arg0.getIsHttps() ); + arg1.setRegion( arg0.getRegion() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setExt1( arg0.getExt1() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setAccessPolicy( arg0.getAccessPolicy() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssVoToSysOssMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssVoToSysOssMapper.java new file mode 100644 index 0000000..e64ff14 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssVoToSysOssMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysOss; +import org.dromara.system.domain.SysOssToSysOssVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysOssToSysOssVoMapper.class}, + imports = {} +) +public interface SysOssVoToSysOssMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssVoToSysOssMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssVoToSysOssMapperImpl.java new file mode 100644 index 0000000..4b83093 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysOssVoToSysOssMapperImpl.java @@ -0,0 +1,52 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysOss; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysOssVoToSysOssMapperImpl implements SysOssVoToSysOssMapper { + + @Override + public SysOss convert(SysOssVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysOss sysOss = new SysOss(); + + sysOss.setCreateBy( arg0.getCreateBy() ); + sysOss.setCreateTime( arg0.getCreateTime() ); + sysOss.setOssId( arg0.getOssId() ); + sysOss.setFileName( arg0.getFileName() ); + sysOss.setOriginalName( arg0.getOriginalName() ); + sysOss.setFileSuffix( arg0.getFileSuffix() ); + sysOss.setUrl( arg0.getUrl() ); + sysOss.setService( arg0.getService() ); + + return sysOss; + } + + @Override + public SysOss convert(SysOssVo arg0, SysOss arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setOssId( arg0.getOssId() ); + arg1.setFileName( arg0.getFileName() ); + arg1.setOriginalName( arg0.getOriginalName() ); + arg1.setFileSuffix( arg0.getFileSuffix() ); + arg1.setUrl( arg0.getUrl() ); + arg1.setService( arg0.getService() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysPostVoToSysPostMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysPostVoToSysPostMapper.java new file mode 100644 index 0000000..545ab63 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysPostVoToSysPostMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysPost; +import org.dromara.system.domain.SysPostToSysPostVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysPostToSysPostVoMapper.class}, + imports = {} +) +public interface SysPostVoToSysPostMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysPostVoToSysPostMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysPostVoToSysPostMapperImpl.java new file mode 100644 index 0000000..b91d25b --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysPostVoToSysPostMapperImpl.java @@ -0,0 +1,54 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysPost; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysPostVoToSysPostMapperImpl implements SysPostVoToSysPostMapper { + + @Override + public SysPost convert(SysPostVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysPost sysPost = new SysPost(); + + sysPost.setCreateTime( arg0.getCreateTime() ); + sysPost.setPostId( arg0.getPostId() ); + sysPost.setDeptId( arg0.getDeptId() ); + sysPost.setPostCode( arg0.getPostCode() ); + sysPost.setPostName( arg0.getPostName() ); + sysPost.setPostCategory( arg0.getPostCategory() ); + sysPost.setPostSort( arg0.getPostSort() ); + sysPost.setStatus( arg0.getStatus() ); + sysPost.setRemark( arg0.getRemark() ); + + return sysPost; + } + + @Override + public SysPost convert(SysPostVo arg0, SysPost arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setPostId( arg0.getPostId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setPostCode( arg0.getPostCode() ); + arg1.setPostName( arg0.getPostName() ); + arg1.setPostCategory( arg0.getPostCategory() ); + arg1.setPostSort( arg0.getPostSort() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapper.java new file mode 100644 index 0000000..44543cc --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysRole; +import org.dromara.system.domain.SysRoleToSysRoleVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysRoleToSysRoleVoMapper.class}, + imports = {} +) +public interface SysRoleVoToSysRoleMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapperImpl.java new file mode 100644 index 0000000..7f6cb3c --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysRoleVoToSysRoleMapperImpl.java @@ -0,0 +1,56 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysRole; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysRoleVoToSysRoleMapperImpl implements SysRoleVoToSysRoleMapper { + + @Override + public SysRole convert(SysRoleVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysRole sysRole = new SysRole(); + + sysRole.setCreateTime( arg0.getCreateTime() ); + sysRole.setRoleId( arg0.getRoleId() ); + sysRole.setRoleName( arg0.getRoleName() ); + sysRole.setRoleKey( arg0.getRoleKey() ); + sysRole.setRoleSort( arg0.getRoleSort() ); + sysRole.setDataScope( arg0.getDataScope() ); + sysRole.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + sysRole.setDeptCheckStrictly( arg0.getDeptCheckStrictly() ); + sysRole.setStatus( arg0.getStatus() ); + sysRole.setRemark( arg0.getRemark() ); + + return sysRole; + } + + @Override + public SysRole convert(SysRoleVo arg0, SysRole arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setRoleId( arg0.getRoleId() ); + arg1.setRoleName( arg0.getRoleName() ); + arg1.setRoleKey( arg0.getRoleKey() ); + arg1.setRoleSort( arg0.getRoleSort() ); + arg1.setDataScope( arg0.getDataScope() ); + arg1.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + arg1.setDeptCheckStrictly( arg0.getDeptCheckStrictly() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapper.java new file mode 100644 index 0000000..697f966 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysSocial; +import org.dromara.system.domain.SysSocialToSysSocialVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysSocialToSysSocialVoMapper.class}, + imports = {} +) +public interface SysSocialVoToSysSocialMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapperImpl.java new file mode 100644 index 0000000..2b3e461 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysSocialVoToSysSocialMapperImpl.java @@ -0,0 +1,84 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysSocial; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysSocialVoToSysSocialMapperImpl implements SysSocialVoToSysSocialMapper { + + @Override + public SysSocial convert(SysSocialVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysSocial sysSocial = new SysSocial(); + + sysSocial.setCreateTime( arg0.getCreateTime() ); + sysSocial.setTenantId( arg0.getTenantId() ); + sysSocial.setId( arg0.getId() ); + sysSocial.setUserId( arg0.getUserId() ); + sysSocial.setAuthId( arg0.getAuthId() ); + sysSocial.setSource( arg0.getSource() ); + sysSocial.setAccessToken( arg0.getAccessToken() ); + sysSocial.setExpireIn( arg0.getExpireIn() ); + sysSocial.setRefreshToken( arg0.getRefreshToken() ); + sysSocial.setOpenId( arg0.getOpenId() ); + sysSocial.setUserName( arg0.getUserName() ); + sysSocial.setNickName( arg0.getNickName() ); + sysSocial.setEmail( arg0.getEmail() ); + sysSocial.setAvatar( arg0.getAvatar() ); + sysSocial.setAccessCode( arg0.getAccessCode() ); + sysSocial.setUnionId( arg0.getUnionId() ); + sysSocial.setScope( arg0.getScope() ); + sysSocial.setTokenType( arg0.getTokenType() ); + sysSocial.setIdToken( arg0.getIdToken() ); + sysSocial.setMacAlgorithm( arg0.getMacAlgorithm() ); + sysSocial.setMacKey( arg0.getMacKey() ); + sysSocial.setCode( arg0.getCode() ); + sysSocial.setOauthToken( arg0.getOauthToken() ); + sysSocial.setOauthTokenSecret( arg0.getOauthTokenSecret() ); + + return sysSocial; + } + + @Override + public SysSocial convert(SysSocialVo arg0, SysSocial arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setId( arg0.getId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setAuthId( arg0.getAuthId() ); + arg1.setSource( arg0.getSource() ); + arg1.setAccessToken( arg0.getAccessToken() ); + arg1.setExpireIn( arg0.getExpireIn() ); + arg1.setRefreshToken( arg0.getRefreshToken() ); + arg1.setOpenId( arg0.getOpenId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setNickName( arg0.getNickName() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setAvatar( arg0.getAvatar() ); + arg1.setAccessCode( arg0.getAccessCode() ); + arg1.setUnionId( arg0.getUnionId() ); + arg1.setScope( arg0.getScope() ); + arg1.setTokenType( arg0.getTokenType() ); + arg1.setIdToken( arg0.getIdToken() ); + arg1.setMacAlgorithm( arg0.getMacAlgorithm() ); + arg1.setMacKey( arg0.getMacKey() ); + arg1.setCode( arg0.getCode() ); + arg1.setOauthToken( arg0.getOauthToken() ); + arg1.setOauthTokenSecret( arg0.getOauthTokenSecret() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapper.java new file mode 100644 index 0000000..3592348 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysTenantPackage; +import org.dromara.system.domain.SysTenantPackageToSysTenantPackageVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysTenantPackageToSysTenantPackageVoMapper.class}, + imports = {} +) +public interface SysTenantPackageVoToSysTenantPackageMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapperImpl.java new file mode 100644 index 0000000..db9f29a --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantPackageVoToSysTenantPackageMapperImpl.java @@ -0,0 +1,48 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysTenantPackage; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysTenantPackageVoToSysTenantPackageMapperImpl implements SysTenantPackageVoToSysTenantPackageMapper { + + @Override + public SysTenantPackage convert(SysTenantPackageVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysTenantPackage sysTenantPackage = new SysTenantPackage(); + + sysTenantPackage.setPackageId( arg0.getPackageId() ); + sysTenantPackage.setPackageName( arg0.getPackageName() ); + sysTenantPackage.setMenuIds( arg0.getMenuIds() ); + sysTenantPackage.setRemark( arg0.getRemark() ); + sysTenantPackage.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + sysTenantPackage.setStatus( arg0.getStatus() ); + + return sysTenantPackage; + } + + @Override + public SysTenantPackage convert(SysTenantPackageVo arg0, SysTenantPackage arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setPackageId( arg0.getPackageId() ); + arg1.setPackageName( arg0.getPackageName() ); + arg1.setMenuIds( arg0.getMenuIds() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setMenuCheckStrictly( arg0.getMenuCheckStrictly() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapper.java new file mode 100644 index 0000000..3f92796 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapper.java @@ -0,0 +1,15 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysTenant; +import org.dromara.system.domain.SysTenantToSysTenantVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysTenantToSysTenantVoMapper.class}, + imports = {} +) +public interface SysTenantVoToSysTenantMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapperImpl.java new file mode 100644 index 0000000..a6b7349 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToSysTenantMapperImpl.java @@ -0,0 +1,64 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysTenant; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysTenantVoToSysTenantMapperImpl implements SysTenantVoToSysTenantMapper { + + @Override + public SysTenant convert(SysTenantVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysTenant sysTenant = new SysTenant(); + + sysTenant.setId( arg0.getId() ); + sysTenant.setTenantId( arg0.getTenantId() ); + sysTenant.setContactUserName( arg0.getContactUserName() ); + sysTenant.setContactPhone( arg0.getContactPhone() ); + sysTenant.setCompanyName( arg0.getCompanyName() ); + sysTenant.setLicenseNumber( arg0.getLicenseNumber() ); + sysTenant.setAddress( arg0.getAddress() ); + sysTenant.setDomain( arg0.getDomain() ); + sysTenant.setIntro( arg0.getIntro() ); + sysTenant.setRemark( arg0.getRemark() ); + sysTenant.setPackageId( arg0.getPackageId() ); + sysTenant.setExpireTime( arg0.getExpireTime() ); + sysTenant.setAccountCount( arg0.getAccountCount() ); + sysTenant.setStatus( arg0.getStatus() ); + + return sysTenant; + } + + @Override + public SysTenant convert(SysTenantVo arg0, SysTenant arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setContactUserName( arg0.getContactUserName() ); + arg1.setContactPhone( arg0.getContactPhone() ); + arg1.setCompanyName( arg0.getCompanyName() ); + arg1.setLicenseNumber( arg0.getLicenseNumber() ); + arg1.setAddress( arg0.getAddress() ); + arg1.setDomain( arg0.getDomain() ); + arg1.setIntro( arg0.getIntro() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setPackageId( arg0.getPackageId() ); + arg1.setExpireTime( arg0.getExpireTime() ); + arg1.setAccountCount( arg0.getAccountCount() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysUserVoToSysUserMapper.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysUserVoToSysUserMapper.java new file mode 100644 index 0000000..2a15995 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysUserVoToSysUserMapper.java @@ -0,0 +1,16 @@ +package org.dromara.system.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__2; +import io.github.linpeilie.BaseMapper; +import org.dromara.system.domain.SysRoleToSysRoleVoMapper; +import org.dromara.system.domain.SysUser; +import org.dromara.system.domain.SysUserToSysUserVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__2.class, + uses = {SysRoleVoToSysRoleMapper.class,SysRoleToSysRoleVoMapper.class,SysUserToSysUserVoMapper.class}, + imports = {} +) +public interface SysUserVoToSysUserMapper extends BaseMapper { +} diff --git a/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysUserVoToSysUserMapperImpl.java b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysUserVoToSysUserMapperImpl.java new file mode 100644 index 0000000..3fe06e7 --- /dev/null +++ b/ruoyi-system/target/generated-sources/annotations/org/dromara/system/domain/vo/SysUserVoToSysUserMapperImpl.java @@ -0,0 +1,68 @@ +package org.dromara.system.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.system.domain.SysUser; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:22+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class SysUserVoToSysUserMapperImpl implements SysUserVoToSysUserMapper { + + @Override + public SysUser convert(SysUserVo arg0) { + if ( arg0 == null ) { + return null; + } + + SysUser sysUser = new SysUser(); + + sysUser.setCreateTime( arg0.getCreateTime() ); + sysUser.setTenantId( arg0.getTenantId() ); + sysUser.setUserId( arg0.getUserId() ); + sysUser.setDeptId( arg0.getDeptId() ); + sysUser.setUserName( arg0.getUserName() ); + sysUser.setNickName( arg0.getNickName() ); + sysUser.setUserType( arg0.getUserType() ); + sysUser.setEmail( arg0.getEmail() ); + sysUser.setPhonenumber( arg0.getPhonenumber() ); + sysUser.setSex( arg0.getSex() ); + sysUser.setAvatar( arg0.getAvatar() ); + sysUser.setPassword( arg0.getPassword() ); + sysUser.setStatus( arg0.getStatus() ); + sysUser.setLoginIp( arg0.getLoginIp() ); + sysUser.setLoginDate( arg0.getLoginDate() ); + sysUser.setRemark( arg0.getRemark() ); + + return sysUser; + } + + @Override + public SysUser convert(SysUserVo arg0, SysUser arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setTenantId( arg0.getTenantId() ); + arg1.setUserId( arg0.getUserId() ); + arg1.setDeptId( arg0.getDeptId() ); + arg1.setUserName( arg0.getUserName() ); + arg1.setNickName( arg0.getNickName() ); + arg1.setUserType( arg0.getUserType() ); + arg1.setEmail( arg0.getEmail() ); + arg1.setPhonenumber( arg0.getPhonenumber() ); + arg1.setSex( arg0.getSex() ); + arg1.setAvatar( arg0.getAvatar() ); + arg1.setPassword( arg0.getPassword() ); + arg1.setStatus( arg0.getStatus() ); + arg1.setLoginIp( arg0.getLoginIp() ); + arg1.setLoginDate( arg0.getLoginDate() ); + arg1.setRemark( arg0.getRemark() ); + + return arg1; + } +} diff --git a/ruoyi-workflow/.flattened-pom.xml b/ruoyi-workflow/.flattened-pom.xml new file mode 100644 index 0000000..4d1d442 --- /dev/null +++ b/ruoyi-workflow/.flattened-pom.xml @@ -0,0 +1,72 @@ + + + 4.0.0 + + org.dromara + ruoyi-modules + 5.3.0 + + org.dromara + ruoyi-workflow + 5.3.0 + 工作流模块 + + + org.dromara + ruoyi-common-sse + + + org.dromara + ruoyi-common-doc + + + org.dromara + ruoyi-common-mail + + + org.dromara + ruoyi-common-sms + + + org.dromara + ruoyi-common-mybatis + + + org.dromara + ruoyi-common-web + + + org.dromara + ruoyi-common-log + + + org.dromara + ruoyi-common-idempotent + + + org.dromara + ruoyi-common-excel + + + org.dromara + ruoyi-common-translation + + + org.dromara + ruoyi-common-tenant + + + org.dromara + ruoyi-common-security + + + org.dromara.warm + warm-flow-mybatis-plus-sb3-starter + + + org.dromara.warm + warm-flow-plugin-ui-sb-web + + + diff --git a/ruoyi-workflow/README.md b/ruoyi-workflow/README.md new file mode 100644 index 0000000..59096b1 --- /dev/null +++ b/ruoyi-workflow/README.md @@ -0,0 +1,3 @@ +# 工作流说明 + +工作流目前在未成熟阶段 后续仍会经历重构 甚至重写(生产使用前请慎重考虑后续是否要更新维护) \ No newline at end of file diff --git a/ruoyi-workflow/pom.xml b/ruoyi-workflow/pom.xml new file mode 100644 index 0000000..d195faf --- /dev/null +++ b/ruoyi-workflow/pom.xml @@ -0,0 +1,84 @@ + + + + org.dromara + ruoyi-modules + ${revision} + ../pom.xml + + 4.0.0 + jar + ruoyi-workflow + + + 工作流模块 + + + + + + org.dromara + ruoyi-common-sse + + + + org.dromara + ruoyi-common-doc + + + + org.dromara + ruoyi-common-mail + + + + org.dromara + ruoyi-common-sms + + + + org.dromara + ruoyi-common-mybatis + + + org.dromara + ruoyi-common-web + + + org.dromara + ruoyi-common-log + + + org.dromara + ruoyi-common-idempotent + + + org.dromara + ruoyi-common-excel + + + org.dromara + ruoyi-common-translation + + + org.dromara + ruoyi-common-tenant + + + org.dromara + ruoyi-common-security + + + org.dromara.warm + warm-flow-mybatis-plus-sb3-starter + + + org.dromara.warm + warm-flow-plugin-ui-sb-web + + + + + diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/common/ConditionalOnEnable.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/ConditionalOnEnable.java new file mode 100644 index 0000000..5d24b35 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/ConditionalOnEnable.java @@ -0,0 +1,14 @@ +package org.dromara.workflow.common; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target({ ElementType.TYPE, ElementType.METHOD }) +@ConditionalOnProperty(value = "warm-flow.enabled", havingValue = "true") +public @interface ConditionalOnEnable { +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java new file mode 100644 index 0000000..1b10eb8 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/constant/FlowConstant.java @@ -0,0 +1,66 @@ +package org.dromara.workflow.common.constant; + + +/** + * 工作流常量 + * + * @author may + */ +public interface FlowConstant { + + /** + * 流程发起人 + */ + String INITIATOR = "initiator"; + + /** + * 流程实例id + */ + String PROCESS_INSTANCE_ID = "processInstanceId"; + + /** + * 业务id + */ + String BUSINESS_ID = "businessId"; + + /** + * 任务id + */ + String TASK_ID = "taskId"; + + /** + * 委托 + */ + String DELEGATE_TASK = "delegateTask"; + + /** + * 转办 + */ + String TRANSFER_TASK = "transferTask"; + + /** + * 加签 + */ + String ADD_SIGNATURE = "addSignature"; + + /** + * 减签 + */ + String REDUCTION_SIGNATURE = "reductionSignature"; + + /** + * 流程分类Id转名称 + */ + String CATEGORY_ID_TO_NAME = "category_id_to_name"; + + /** + * 流程分类名称 + */ + String FLOW_CATEGORY_NAME = "flow_category_name#30d"; + + /** + * 默认租户OA申请分类id + */ + Long FLOW_CATEGORY_ID = 100L; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java new file mode 100644 index 0000000..0fe5cfe --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/MessageTypeEnum.java @@ -0,0 +1,53 @@ +package org.dromara.workflow.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 消息类型枚举 + * + * @author may + */ +@Getter +@AllArgsConstructor +public enum MessageTypeEnum { + + /** + * 站内信 + */ + SYSTEM_MESSAGE("1", "站内信"), + + /** + * 邮箱 + */ + EMAIL_MESSAGE("2", "邮箱"), + + /** + * 短信 + */ + SMS_MESSAGE("3", "短信"); + + private final String code; + + private final String desc; + + private static final Map MESSAGE_TYPE_ENUM_MAP = Arrays.stream(values()) + .collect(Collectors.toConcurrentMap(MessageTypeEnum::getCode, Function.identity())); + + /** + * 根据消息类型 code 获取 MessageTypeEnum + * + * @param code 消息类型code + * @return MessageTypeEnum + */ + public static MessageTypeEnum getByCode(String code) { + return MESSAGE_TYPE_ENUM_MAP.getOrDefault(code, null); + } + +} + diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java new file mode 100644 index 0000000..60be92f --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeEnum.java @@ -0,0 +1,109 @@ +package org.dromara.workflow.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.dromara.common.core.exception.ServiceException; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 任务分配人枚举 + * + * @author AprilWind + */ +@Getter +@AllArgsConstructor +public enum TaskAssigneeEnum { + + /** + * 用户 + */ + USER("用户", ""), + + /** + * 角色 + */ + ROLE("角色", "role:"), + + /** + * 部门 + */ + DEPT("部门", "dept:"), + + /** + * 岗位 + */ + POST("岗位", "post:"); + + private final String desc; + private final String code; + + /** + * 根据描述获取对应的枚举类型 + *

+ * 通过传入描述,查找并返回匹配的枚举项。如果未找到匹配项,会抛出 {@link ServiceException}。 + *

+ * + * @param desc 描述,用于匹配对应的枚举项 + * @return TaskAssigneeEnum 返回对应的枚举类型 + * @throws ServiceException 如果未找到匹配的枚举项 + */ + public static TaskAssigneeEnum fromDesc(String desc) { + for (TaskAssigneeEnum type : values()) { + if (type.getDesc().equals(desc)) { + return type; + } + } + throw new ServiceException("未知的办理人类型: " + desc); + } + + /** + * 根据代码获取对应的枚举类型 + *

+ * 通过传入代码,查找并返回匹配的枚举项。如果未找到匹配项,会抛出 {@link ServiceException}。 + *

+ * + * @param code 代码,用于匹配对应的枚举项 + * @return TaskAssigneeEnum 返回对应的枚举类型 + * @throws IllegalArgumentException 如果未找到匹配的枚举项 + */ + public static TaskAssigneeEnum fromCode(String code) { + for (TaskAssigneeEnum type : values()) { + if (type.getCode().equals(code)) { + return type; + } + } + throw new ServiceException("未知的办理人类型代码: " + code); + } + + /** + * 获取所有办理人类型的描述列表 + *

+ * 获取当前枚举类所有项的描述字段列表,通常用于展示选择项。 + *

+ * + * @return List 返回所有办理人类型的描述列表 + */ + public static List getAssigneeTypeList() { + return Arrays.stream(values()) + .map(TaskAssigneeEnum::getDesc) + .collect(Collectors.toList()); + } + + /** + * 获取所有办理人类型的代码列表 + *

+ * 获取当前枚举类所有项的代码字段列表,通常用于程序内部逻辑的判断。 + *

+ * + * @return List 返回所有办理人类型的代码列表 + */ + public static List getAssigneeCodeList() { + return Arrays.stream(values()) + .map(TaskAssigneeEnum::getCode) + .collect(Collectors.toList()); + } +} + diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeType.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeType.java new file mode 100644 index 0000000..eed1b91 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskAssigneeType.java @@ -0,0 +1,49 @@ +package org.dromara.workflow.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 人员类型 + * + * @author AprilWind + */ +@Getter +@AllArgsConstructor +public enum TaskAssigneeType { + + /** + * 待办任务的审批人权限 + *

该权限表示用户是待办任务的审批人,负责审核任务的执行情况。

+ */ + APPROVER("1", "待办任务的审批人权限"), + + /** + * 待办任务的转办人权限 + *

该权限表示用户是待办任务的转办人,负责将任务分配给其他人员。

+ */ + TRANSFER("2", "待办任务的转办人权限"), + + /** + * 待办任务的委托人权限 + *

该权限表示用户是待办任务的委托人,能够委托其他人代为处理任务。

+ */ + DELEGATE("3", "待办任务的委托人权限"), + + /** + * 待办任务的抄送人权限 + *

该权限表示用户是待办任务的抄送人,仅接收任务信息的通知,不参与任务的审批或处理。

+ */ + COPY("4", "待办任务的抄送人权限"); + + /** + * 类型 + */ + private final String code; + + /** + * 描述 + */ + private final String description; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java new file mode 100644 index 0000000..d18ebb0 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/common/enums/TaskStatusEnum.java @@ -0,0 +1,104 @@ +package org.dromara.workflow.common.enums; + +import cn.hutool.core.util.StrUtil; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 任务状态枚举 + * + * @author may + */ +@Getter +@AllArgsConstructor +public enum TaskStatusEnum { + + /** + * 撤销 + */ + CANCEL("cancel", "撤销"), + + /** + * 通过 + */ + PASS("pass", "通过"), + + /** + * 待审核 + */ + WAITING("waiting", "待审核"), + + /** + * 作废 + */ + INVALID("invalid", "作废"), + + /** + * 退回 + */ + BACK("back", "退回"), + + /** + * 终止 + */ + TERMINATION("termination", "终止"), + + /** + * 转办 + */ + TRANSFER("transfer", "转办"), + + /** + * 委托 + */ + DEPUTE("depute", "委托"), + + /** + * 抄送 + */ + COPY("copy", "抄送"), + + /** + * 加签 + */ + SIGN("sign", "加签"), + + /** + * 减签 + */ + SIGN_OFF("sign_off", "减签"), + + /** + * 超时 + */ + TIMEOUT("timeout", "超时"); + + /** + * 状态 + */ + private final String status; + + /** + * 描述 + */ + private final String desc; + + private static final Map STATUS_DESC_MAP = Arrays.stream(values()) + .collect(Collectors.toConcurrentMap(TaskStatusEnum::getStatus, TaskStatusEnum::getDesc)); + + /** + * 任务业务状态 + * + * @param status 状态 + */ + public static String findByStatus(String status) { + // 从缓存中直接获取描述 + return STATUS_DESC_MAP.getOrDefault(status, StrUtil.EMPTY); + } + +} + diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java new file mode 100644 index 0000000..08f1808 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/config/WarmFlowConfig.java @@ -0,0 +1,16 @@ +package org.dromara.workflow.config; + +import org.dromara.workflow.common.ConditionalOnEnable; +import org.springframework.context.annotation.Configuration; + +/** + * warmFlow配置 + * + * @author may + */ +@ConditionalOnEnable +@Configuration +public class WarmFlowConfig { + +} + diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java new file mode 100644 index 0000000..37d414f --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwCategoryController.java @@ -0,0 +1,132 @@ +package org.dromara.workflow.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.lang.tree.Tree; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.web.core.BaseController; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.bo.FlowCategoryBo; +import org.dromara.workflow.domain.vo.FlowCategoryVo; +import org.dromara.workflow.service.IFlwCategoryService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 流程分类 + * + * @author may + */ +@ConditionalOnEnable +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/workflow/category") +public class FlwCategoryController extends BaseController { + + private final IFlwCategoryService flwCategoryService; + + /** + * 查询流程分类列表 + */ + @SaCheckPermission("workflow:category:list") + @GetMapping("/list") + public R> list(FlowCategoryBo bo) { + List list = flwCategoryService.queryList(bo); + return R.ok(list); + } + + /** + * 导出流程分类列表 + */ + @SaCheckPermission("workflow:category:export") + @Log(title = "流程分类", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(FlowCategoryBo bo, HttpServletResponse response) { + List list = flwCategoryService.queryList(bo); + ExcelUtil.exportExcel(list, "流程分类", FlowCategoryVo.class, response); + } + + /** + * 获取流程分类详细信息 + * + * @param categoryId 主键 + */ + @SaCheckPermission("workflow:category:query") + @GetMapping("/{categoryId}") + public R getInfo(@NotNull(message = "主键不能为空") @PathVariable Long categoryId) { + flwCategoryService.checkCategoryDataScope(categoryId); + return R.ok(flwCategoryService.queryById(categoryId)); + } + + /** + * 新增流程分类 + */ + @SaCheckPermission("workflow:category:add") + @Log(title = "流程分类", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody FlowCategoryBo category) { + if (!flwCategoryService.checkCategoryNameUnique(category)) { + return R.fail("新增流程分类'" + category.getCategoryName() + "'失败,流程分类名称已存在"); + } + return toAjax(flwCategoryService.insertByBo(category)); + } + + /** + * 修改流程分类 + */ + @SaCheckPermission("workflow:category:edit") + @Log(title = "流程分类", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody FlowCategoryBo category) { + Long categoryId = category.getCategoryId(); + flwCategoryService.checkCategoryDataScope(categoryId); + if (!flwCategoryService.checkCategoryNameUnique(category)) { + return R.fail("修改流程分类'" + category.getCategoryName() + "'失败,流程分类名称已存在"); + } else if (category.getParentId().equals(categoryId)) { + return R.fail("修改流程分类'" + category.getCategoryName() + "'失败,上级流程分类不能是自己"); + } + return toAjax(flwCategoryService.updateByBo(category)); + } + + /** + * 删除流程分类 + * + * @param categoryId 主键 + */ + @SaCheckPermission("workflow:category:remove") + @Log(title = "流程分类", businessType = BusinessType.DELETE) + @DeleteMapping("/{categoryId}") + public R remove(@PathVariable Long categoryId) { + if (flwCategoryService.hasChildByCategoryId(categoryId)) { + return R.warn("存在下级流程分类,不允许删除"); + } + if (flwCategoryService.checkCategoryExistDefinition(categoryId)) { + return R.warn("流程分类存在流程定义,不允许删除"); + } + return toAjax(flwCategoryService.deleteWithValidById(categoryId)); + } + + /** + * 获取流程分类树列表 + * + * @param categoryBo 流程分类 + */ + @GetMapping("/categoryTree") + public R>> categoryTree(FlowCategoryBo categoryBo) { + return R.ok(flwCategoryService.selectCategoryTreeList(categoryBo)); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java new file mode 100644 index 0000000..10d9de8 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java @@ -0,0 +1,194 @@ +package org.dromara.workflow.controller; + +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.warm.flow.core.entity.Definition; +import org.dromara.warm.flow.core.service.DefService; +import org.dromara.warm.flow.orm.entity.FlowDefinition; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.vo.FlowDefinitionVo; +import org.dromara.workflow.service.IFlwDefinitionService; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + * 流程定义管理 控制层 + * + * @author may + */ +@ConditionalOnEnable +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/workflow/definition") +public class FlwDefinitionController extends BaseController { + + private final DefService defService; + private final IFlwDefinitionService flwDefinitionService; + + /** + * 查询流程定义列表 + * + * @param flowDefinition 参数 + * @param pageQuery 分页 + */ + @GetMapping("/list") + public TableDataInfo list(FlowDefinition flowDefinition, PageQuery pageQuery) { + return flwDefinitionService.queryList(flowDefinition, pageQuery); + } + + /** + * 查询未发布的流程定义列表 + * + * @param flowDefinition 参数 + * @param pageQuery 分页 + */ + @GetMapping("/unPublishList") + public TableDataInfo unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery) { + return flwDefinitionService.unPublishList(flowDefinition, pageQuery); + } + + /** + * 获取流程定义详细信息 + * + * @param id 流程定义id + */ + @GetMapping(value = "/{id}") + public R getInfo(@PathVariable Long id) { + return R.ok(defService.getById(id)); + } + + /** + * 新增流程定义 + * + * @param flowDefinition 参数 + */ + @Log(title = "流程定义", businessType = BusinessType.INSERT) + @PostMapping + @RepeatSubmit() + @Transactional(rollbackFor = Exception.class) + public R add(@RequestBody FlowDefinition flowDefinition) { + return R.ok(defService.checkAndSave(flowDefinition)); + } + + /** + * 修改流程定义 + * + * @param flowDefinition 参数 + */ + @Log(title = "流程定义", businessType = BusinessType.UPDATE) + @PutMapping + @RepeatSubmit() + @Transactional(rollbackFor = Exception.class) + public R edit(@RequestBody FlowDefinition flowDefinition) { + return R.ok(defService.updateById(flowDefinition)); + } + + /** + * 发布流程定义 + * + * @param id 流程定义id + */ + @Log(title = "流程定义", businessType = BusinessType.INSERT) + @PutMapping("/publish/{id}") + @RepeatSubmit() + public R publish(@PathVariable Long id) { + return R.ok(flwDefinitionService.publish(id)); + } + + /** + * 取消发布流程定义 + * + * @param id 流程定义id + */ + @Log(title = "流程定义", businessType = BusinessType.INSERT) + @PutMapping("/unPublish/{id}") + @RepeatSubmit() + @Transactional(rollbackFor = Exception.class) + public R unPublish(@PathVariable Long id) { + return R.ok(defService.unPublish(id)); + } + + /** + * 删除流程定义 + */ + @Log(title = "流程定义", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@PathVariable List ids) { + return toAjax(flwDefinitionService.removeDef(ids)); + } + + /** + * 复制流程定义 + * + * @param id 流程定义id + */ + @Log(title = "流程定义", businessType = BusinessType.INSERT) + @PostMapping("/copy/{id}") + @RepeatSubmit() + @Transactional(rollbackFor = Exception.class) + public R copy(@PathVariable Long id) { + return R.ok(defService.copyDef(id)); + } + + /** + * 导入流程定义 + * + * @param file 文件 + * @param category 分类 + */ + @Log(title = "流程定义", businessType = BusinessType.IMPORT) + @PostMapping("/importDef") + public R importDef(MultipartFile file, String category) { + return R.ok(flwDefinitionService.importJson(file, category)); + } + + /** + * 导出流程定义 + * + * @param id 流程定义id + * @param response 响应 + * @throws IOException 异常 + */ + @Log(title = "流程定义", businessType = BusinessType.EXPORT) + @PostMapping("/exportDef/{id}") + public void exportDef(@PathVariable Long id, HttpServletResponse response) throws IOException { + flwDefinitionService.exportDef(id, response); + } + + /** + * 获取流程定义JSON字符串 + * + * @param id 流程定义id + */ + @GetMapping("/xmlString/{id}") + public R xmlString(@PathVariable Long id) { + return R.ok("操作成功", defService.exportJson(id)); + } + + /** + * 激活/挂起流程定义 + * + * @param id 流程定义id + * @param active 激活/挂起 + */ + @RepeatSubmit() + @PutMapping("/active/{id}") + @Transactional(rollbackFor = Exception.class) + public R active(@PathVariable Long id, @RequestParam boolean active) { + return R.ok(active ? defService.active(id) : defService.unActive(id)); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java new file mode 100644 index 0000000..ae99c16 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwInstanceController.java @@ -0,0 +1,157 @@ +package org.dromara.workflow.controller; + +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.warm.flow.core.service.InsService; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.bo.FlowCancelBo; +import org.dromara.workflow.domain.bo.FlowInstanceBo; +import org.dromara.workflow.domain.bo.FlowInvalidBo; +import org.dromara.workflow.domain.vo.FlowInstanceVo; +import org.dromara.workflow.service.IFlwInstanceService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 流程实例管理 控制层 + * + * @author may + */ +@ConditionalOnEnable +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/workflow/instance") +public class FlwInstanceController extends BaseController { + + private final InsService insService; + private final IFlwInstanceService flwInstanceService; + + /** + * 查询正在运行的流程实例列表 + * + * @param flowInstanceBo 流程实例 + * @param pageQuery 分页 + */ + @GetMapping("/pageByRunning") + public TableDataInfo selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { + return flwInstanceService.selectRunningInstanceList(flowInstanceBo, pageQuery); + } + + /** + * 查询已结束的流程实例列表 + * + * @param flowInstanceBo 流程实例 + * @param pageQuery 分页 + */ + @GetMapping("/pageByFinish") + public TableDataInfo selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { + return flwInstanceService.selectFinishInstanceList(flowInstanceBo, pageQuery); + } + + /** + * 根据业务id查询流程实例详细信息 + * + * @param businessId 业务id + */ + @GetMapping("/getInfo/{businessId}") + public R getInfo(@PathVariable Long businessId) { + return R.ok(flwInstanceService.queryByBusinessId(businessId)); + } + + /** + * 按照业务id删除流程实例 + * + * @param businessIds 业务id + */ + @DeleteMapping("/deleteByBusinessIds/{businessIds}") + public R deleteByBusinessIds(@PathVariable List businessIds) { + return toAjax(flwInstanceService.deleteByBusinessIds(businessIds)); + } + + /** + * 按照实例id删除流程实例 + * + * @param instanceIds 实例id + */ + @DeleteMapping("/deleteByInstanceIds/{instanceIds}") + public R deleteByInstanceIds(@PathVariable List instanceIds) { + return toAjax(flwInstanceService.deleteByInstanceIds(instanceIds)); + } + + /** + * 撤销流程 + * + * @param bo 参数 + */ + @RepeatSubmit() + @PutMapping("/cancelProcessApply") + public R cancelProcessApply(@RequestBody FlowCancelBo bo) { + return toAjax(flwInstanceService.cancelProcessApply(bo)); + } + + /** + * 激活/挂起流程实例 + * + * @param id 流程实例id + * @param active 激活/挂起 + */ + @RepeatSubmit() + @PutMapping("/active/{id}") + public R active(@PathVariable Long id, @RequestParam boolean active) { + return R.ok(active ? insService.active(id) : insService.unActive(id)); + } + + /** + * 获取当前登陆人发起的流程实例 + * + * @param flowInstanceBo 参数 + * @param pageQuery 分页 + */ + @GetMapping("/pageByCurrent") + public TableDataInfo selectCurrentInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { + return flwInstanceService.selectCurrentInstanceList(flowInstanceBo, pageQuery); + } + + /** + * 获取流程图,流程记录 + * + * @param businessId 业务id + */ + @GetMapping("/flowImage/{businessId}") + public R> flowImage(@PathVariable String businessId) { + return R.ok(flwInstanceService.flowImage(businessId)); + } + + /** + * 获取流程变量 + * + * @param instanceId 流程实例id + */ + @GetMapping("/instanceVariable/{instanceId}") + public R> instanceVariable(@PathVariable Long instanceId) { + return R.ok(flwInstanceService.instanceVariable(instanceId)); + } + + /** + * 作废流程 + * + * @param bo 参数 + */ + @Log(title = "流程实例管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/invalid") + public R invalid(@Validated @RequestBody FlowInvalidBo bo) { + return R.ok(flwInstanceService.processInvalid(bo)); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java new file mode 100644 index 0000000..463916b --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/FlwTaskController.java @@ -0,0 +1,201 @@ +package org.dromara.workflow.controller; + +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.domain.dto.StartProcessReturnDTO; +import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.warm.flow.core.entity.Node; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.bo.*; +import org.dromara.workflow.domain.vo.FlowHisTaskVo; +import org.dromara.workflow.domain.vo.FlowTaskVo; +import org.dromara.workflow.service.IFlwTaskService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 任务管理 控制层 + * + * @author may + */ +@ConditionalOnEnable +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/workflow/task") +public class FlwTaskController extends BaseController { + + private final IFlwTaskService flwTaskService; + + /** + * 启动任务 + * + * @param startProcessBo 启动流程参数 + */ + @Log(title = "任务管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/startWorkFlow") + public R startWorkFlow(@Validated(AddGroup.class) @RequestBody StartProcessBo startProcessBo) { + StartProcessReturnDTO startProcessReturn = flwTaskService.startWorkFlow(startProcessBo); + return R.ok("提交成功", startProcessReturn); + } + + /** + * 办理任务 + * + * @param completeTaskBo 办理任务参数 + */ + @Log(title = "任务管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/completeTask") + public R completeTask(@Validated(AddGroup.class) @RequestBody CompleteTaskBo completeTaskBo) { + return toAjax(flwTaskService.completeTask(completeTaskBo)); + } + + /** + * 查询当前用户的待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @GetMapping("/pageByTaskWait") + public TableDataInfo pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + return flwTaskService.pageByTaskWait(flowTaskBo, pageQuery); + } + + /** + * 查询当前用户的已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + + @GetMapping("/pageByTaskFinish") + public TableDataInfo pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + return flwTaskService.pageByTaskFinish(flowTaskBo, pageQuery); + } + + /** + * 查询待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @GetMapping("/pageByAllTaskWait") + public TableDataInfo pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + return flwTaskService.pageByAllTaskWait(flowTaskBo, pageQuery); + } + + /** + * 查询已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @GetMapping("/pageByAllTaskFinish") + public TableDataInfo pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + return flwTaskService.pageByAllTaskFinish(flowTaskBo, pageQuery); + } + + /** + * 查询当前用户的抄送 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @GetMapping("/pageByTaskCopy") + public TableDataInfo pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + return flwTaskService.pageByTaskCopy(flowTaskBo, pageQuery); + } + + /** + * 根据taskId查询代表任务 + * + * @param taskId 任务id + */ + @GetMapping("/getTask/{taskId}") + public R getTask(@PathVariable Long taskId) { + return R.ok(flwTaskService.selectById(taskId)); + } + + /** + * 终止任务 + * + * @param bo 参数 + */ + @Log(title = "任务管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/terminationTask") + public R terminationTask(@RequestBody FlowTerminationBo bo) { + return R.ok(flwTaskService.terminationTask(bo)); + } + + /** + * 任务操作 + * + * @param bo 参数 + * @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature + */ + @Log(title = "任务管理", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PostMapping("/taskOperation/{taskOperation}") + public R taskOperation(@Validated @RequestBody TaskOperationBo bo, @PathVariable String taskOperation) { + return toAjax(flwTaskService.taskOperation(bo, taskOperation)); + } + + /** + * 修改任务办理人 + * + * @param taskIdList 任务id + * @param userId 办理人id + */ + @Log(title = "任务管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/updateAssignee/{userId}") + public R updateAssignee(@RequestBody List taskIdList, @PathVariable String userId) { + return toAjax(flwTaskService.updateAssignee(taskIdList, userId)); + } + + /** + * 驳回审批 + * + * @param bo 参数 + */ + @Log(title = "任务管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("/backProcess") + public R backProcess(@Validated({AddGroup.class}) @RequestBody BackProcessBo bo) { + return toAjax(flwTaskService.backProcess(bo)); + } + + /** + * 获取可驳回的前置节点 + * + * @param definitionId 流程定义id + * @param nowNodeCode 当前节点 + */ + @GetMapping("/getBackTaskNode/{definitionId}/{nowNodeCode}") + public R> getBackTaskNode(@PathVariable Long definitionId, @PathVariable String nowNodeCode) { + return R.ok(flwTaskService.getBackTaskNode(definitionId, nowNodeCode)); + } + + /** + * 获取当前任务的所有办理人 + * + * @param taskId 任务id + */ + @GetMapping("/currentTaskAllUser/{taskId}") + public R> currentTaskAllUser(@PathVariable Long taskId) { + return R.ok(flwTaskService.currentTaskAllUser(taskId)); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java new file mode 100644 index 0000000..98825d9 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/controller/TestLeaveController.java @@ -0,0 +1,108 @@ +package org.dromara.workflow.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.web.core.BaseController; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.bo.TestLeaveBo; +import org.dromara.workflow.domain.vo.TestLeaveVo; +import org.dromara.workflow.service.ITestLeaveService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 请假 + * + * @author may + * @date 2023-07-21 + */ +@ConditionalOnEnable +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/workflow/leave") +public class TestLeaveController extends BaseController { + + private final ITestLeaveService testLeaveService; + + /** + * 查询请假列表 + */ + @SaCheckPermission("workflow:leave:list") + @GetMapping("/list") + public TableDataInfo list(TestLeaveBo bo, PageQuery pageQuery) { + return testLeaveService.queryPageList(bo, pageQuery); + } + + /** + * 导出请假列表 + */ + @SaCheckPermission("workflow:leave:export") + @Log(title = "请假", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(TestLeaveBo bo, HttpServletResponse response) { + List list = testLeaveService.queryList(bo); + ExcelUtil.exportExcel(list, "请假", TestLeaveVo.class, response); + } + + /** + * 获取请假详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("workflow:leave:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(testLeaveService.queryById(id)); + } + + /** + * 新增请假 + */ + @SaCheckPermission("workflow:leave:add") + @Log(title = "请假", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody TestLeaveBo bo) { + return R.ok(testLeaveService.insertByBo(bo)); + } + + /** + * 修改请假 + */ + @SaCheckPermission("workflow:leave:edit") + @Log(title = "请假", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody TestLeaveBo bo) { + return R.ok(testLeaveService.updateByBo(bo)); + } + + /** + * 删除请假 + * + * @param ids 主键串 + */ + @SaCheckPermission("workflow:leave:remove") + @Log(title = "请假", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(testLeaveService.deleteWithValidByIds(List.of(ids))); + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowCategory.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowCategory.java new file mode 100644 index 0000000..86ac1ac --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/FlowCategory.java @@ -0,0 +1,58 @@ +package org.dromara.workflow.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +import java.io.Serial; + +/** + * 流程分类对象 wf_category + * + * @author may + * @date 2023-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("flow_category") +public class FlowCategory extends TenantEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 流程分类ID + */ + @TableId(value = "category_id") + private Long categoryId; + + /** + * 父流程分类id + */ + private Long parentId; + + /** + * 祖级列表 + */ + private String ancestors; + + /** + * 流程分类名称 + */ + private String categoryName; + + /** + * 显示顺序 + */ + private Long orderNum; + + /** + * 删除标志(0代表存在 1代表删除) + */ + @TableLogic + private String delFlag; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java new file mode 100644 index 0000000..7d42a9b --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/TestLeave.java @@ -0,0 +1,63 @@ +package org.dromara.workflow.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.mybatis.core.domain.BaseEntity; + +import java.io.Serial; +import java.util.Date; + +/** + * 请假对象 test_leave + * + * @author may + * @date 2023-07-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("test_leave") +public class TestLeave extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 请假类型 + */ + private String leaveType; + + /** + * 开始时间 + */ + private Date startDate; + + /** + * 结束时间 + */ + private Date endDate; + + /** + * 请假天数 + */ + private Integer leaveDays; + + /** + * 请假原因 + */ + private String remark; + + /** + * 状态 + */ + private String status; + + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java new file mode 100644 index 0000000..3117a33 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/BackProcessBo.java @@ -0,0 +1,71 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + + +/** + * 驳回参数请求 + * + * @author may + */ +@Data +public class BackProcessBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 任务ID + */ + @NotNull(message = "任务ID不能为空", groups = AddGroup.class) + private Long taskId; + + /** + * 附件id + */ + private String fileId; + + /** + * 消息类型 + */ + private List messageType; + + /** + * 驳回的节点id(目前未使用,直接驳回到申请人) + */ + @NotBlank(message = "驳回的节点不能为空", groups = AddGroup.class) + private String nodeCode; + + /** + * 办理意见 + */ + private String message; + + /** + * 通知 + */ + private String notice; + + /** + * 流程变量 + */ + private Map variables; + + public Map getVariables() { + if (variables == null) { + return new HashMap<>(16); + } + variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); + return variables; + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java new file mode 100644 index 0000000..9fdf484 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/CompleteTaskBo.java @@ -0,0 +1,75 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * 办理任务请求对象 + * + * @author may + */ +@Data +public class CompleteTaskBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 任务id + */ + @NotNull(message = "任务id不能为空", groups = {AddGroup.class}) + private Long taskId; + + /** + * 附件id + */ + private String fileId; + + /** + * 抄送人员 + */ + private List flowCopyList; + + /** + * 消息类型 + */ + private List messageType; + + /** + * 办理意见 + */ + private String message; + + /** + * 消息通知 + */ + private String notice; + + /** + * 流程变量 + */ + private Map variables; + + /** + * 扩展变量(此处为逗号分隔的ossId) + * @return + */ + private String ext; + + public Map getVariables() { + if (variables == null) { + return new HashMap<>(16); + } + variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); + return variables; + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCancelBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCancelBo.java new file mode 100644 index 0000000..31742ea --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCancelBo.java @@ -0,0 +1,31 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 撤销任务请求对象 + * + * @author may + */ +@Data +public class FlowCancelBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 任务ID + */ + @NotBlank(message = "业务ID不能为空", groups = AddGroup.class) + private String businessId; + + /** + * 办理意见 + */ + private String message; +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCategoryBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCategoryBo.java new file mode 100644 index 0000000..fd626eb --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCategoryBo.java @@ -0,0 +1,47 @@ +package org.dromara.workflow.domain.bo; + +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.workflow.domain.FlowCategory; + +/** + * 流程分类业务对象 wf_category + * + * @author may + * @date 2023-06-27 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = FlowCategory.class, reverseConvertGenerate = false) +public class FlowCategoryBo extends BaseEntity { + + /** + * 流程分类ID + */ + @NotNull(message = "流程分类ID不能为空", groups = { EditGroup.class }) + private Long categoryId; + + /** + * 父流程分类id + */ + @NotNull(message = "父流程分类id不能为空", groups = {AddGroup.class, EditGroup.class}) + private Long parentId; + + /** + * 流程分类名称 + */ + @NotBlank(message = "流程分类名称不能为空", groups = {AddGroup.class, EditGroup.class}) + private String categoryName; + + /** + * 显示顺序 + */ + private Long orderNum; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCopyBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCopyBo.java new file mode 100644 index 0000000..a45e521 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowCopyBo.java @@ -0,0 +1,30 @@ +package org.dromara.workflow.domain.bo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 抄送 + * + * @author may + */ +@Data +public class FlowCopyBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 用户id + */ + private Long userId; + + /** + * 用户名称 + */ + private String userName; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java new file mode 100644 index 0000000..fb1fe61 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInstanceBo.java @@ -0,0 +1,55 @@ +package org.dromara.workflow.domain.bo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 流程实例请求对象 + * + * @author may + */ +@Data +public class FlowInstanceBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 流程定义名称 + */ + private String flowName; + + /** + * 流程定义编码 + */ + private String flowCode; + + /** + * 任务发起人 + */ + private String startUserId; + + /** + * 业务id + */ + private String businessId; + + /** + * 流程分类id + */ + private String category; + + /** + * 任务名称 + */ + private String nodeName; + + /** + * 申请人Ids + */ + private List createByIds; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInvalidBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInvalidBo.java new file mode 100644 index 0000000..297bd00 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowInvalidBo.java @@ -0,0 +1,31 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 作废请求对象 + * + * @author may + */ +@Data +public class FlowInvalidBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 流程实例id + */ + @NotNull(message = "流程实例id为空", groups = AddGroup.class) + private Long id; + + /** + * 审批意见 + */ + private String comment; +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java new file mode 100644 index 0000000..64dd082 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTaskBo.java @@ -0,0 +1,55 @@ +package org.dromara.workflow.domain.bo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * 任务请求对象 + * + * @author may + */ +@Data +public class FlowTaskBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 任务名称 + */ + private String nodeName; + + /** + * 流程定义名称 + */ + private String flowName; + + /** + * 流程定义编码 + */ + private String flowCode; + + /** + * 流程分类id + */ + private String category; + + /** + * 流程实例id + */ + private Long instanceId; + + /** + * 权限列表 + */ + private List permissionList; + + /** + * 申请人Ids + */ + private List createByIds; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTerminationBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTerminationBo.java new file mode 100644 index 0000000..897fc21 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/FlowTerminationBo.java @@ -0,0 +1,31 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 终止任务请求对象 + * + * @author may + */ +@Data +public class FlowTerminationBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 任务id + */ + @NotNull(message = "任务id为空", groups = AddGroup.class) + private Long taskId; + + /** + * 审批意见 + */ + private String comment; +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java new file mode 100644 index 0000000..ea21a81 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/StartProcessBo.java @@ -0,0 +1,49 @@ +package org.dromara.workflow.domain.bo; + + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; + +import java.io.Serial; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** + * 启动流程对象 + * + * @author may + */ +@Data +public class StartProcessBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 业务唯一值id + */ + @NotBlank(message = "业务ID不能为空", groups = {AddGroup.class}) + private String businessId; + + /** + * 流程定义编码 + */ + @NotBlank(message = "流程定义编码不能为空", groups = {AddGroup.class}) + private String flowCode; + + /** + * 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}} + */ + private Map variables; + + public Map getVariables() { + if (variables == null) { + return new HashMap<>(16); + } + variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue())); + return variables; + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java new file mode 100644 index 0000000..4348e31 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TaskOperationBo.java @@ -0,0 +1,48 @@ +package org.dromara.workflow.domain.bo; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + + +/** + * 任务操作业务对象,用于描述任务委派、转办、加签等操作的必要参数 + * 包含了用户ID、任务ID、任务相关的消息、以及加签/减签的用户ID + * + * @author AprilWind + */ +@Data +public class TaskOperationBo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 委派/转办人的用户ID(必填,准对委派/转办人操作) + */ + @NotNull(message = "委派/转办人id不能为空", groups = {AddGroup.class}) + private String userId; + + /** + * 加签/减签人的用户ID列表(必填,针对加签/减签操作) + */ + @NotNull(message = "加签/减签id不能为空", groups = {EditGroup.class}) + private List userIds; + + /** + * 任务ID(必填) + */ + @NotNull(message = "任务id不能为空") + private Long taskId; + + /** + * 意见或备注信息(可选) + */ + private String message; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java new file mode 100644 index 0000000..a1a4b59 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/bo/TestLeaveBo.java @@ -0,0 +1,79 @@ +package org.dromara.workflow.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.github.linpeilie.annotations.AutoMapper; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.workflow.domain.TestLeave; + +import java.util.Date; + +/** + * 请假业务对象 test_leave + * + * @author may + * @date 2023-07-21 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = TestLeave.class, reverseConvertGenerate = false) +public class TestLeaveBo extends BaseEntity { + + /** + * 主键 + */ + @NotNull(message = "主键不能为空", groups = {EditGroup.class}) + private Long id; + + /** + * 请假类型 + */ + @NotBlank(message = "请假类型不能为空", groups = {AddGroup.class, EditGroup.class}) + private String leaveType; + + /** + * 开始时间 + */ + @NotNull(message = "开始时间不能为空", groups = {AddGroup.class, EditGroup.class}) + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startDate; + + /** + * 结束时间 + */ + @NotNull(message = "结束时间不能为空", groups = {AddGroup.class, EditGroup.class}) + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endDate; + + /** + * 请假天数 + */ + private Integer leaveDays; + + /** + * 开始时间 + */ + private Integer startLeaveDays; + + /** + * 结束时间 + */ + private Integer endLeaveDays; + + /** + * 请假原因 + */ + private String remark; + + /** + * 状态 + */ + private String status; + + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCategoryVo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCategoryVo.java new file mode 100644 index 0000000..c5d2785 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowCategoryVo.java @@ -0,0 +1,67 @@ +package org.dromara.workflow.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.workflow.domain.FlowCategory; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 流程分类视图对象 wf_category + * + * @author may + * @date 2023-06-27 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = FlowCategory.class) +public class FlowCategoryVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 流程分类ID + */ + @ExcelProperty(value = "流程分类ID") + private Long categoryId; + + /** + * 父级id + */ + private Long parentId; + + /** + * 父类别名称 + */ + private String parentName; + + /** + * 祖级列表 + */ + private String ancestors; + + /** + * 流程分类名称 + */ + @ExcelProperty(value = "流程分类名称") + private String categoryName; + + /** + * 显示顺序 + */ + @ExcelProperty(value = "显示顺序") + private Long orderNum; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowDefinitionVo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowDefinitionVo.java new file mode 100644 index 0000000..aef7573 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowDefinitionVo.java @@ -0,0 +1,104 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.workflow.common.constant.FlowConstant; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 流程定义视图 + * + * @author may + */ +@Data +public class FlowDefinitionVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 删除标记 + */ + private String delFlag; + + /** + * 流程定义编码 + */ + private String flowCode; + + /** + * 流程定义名称 + */ + private String flowName; + + /** + * 流程分类id + */ + private String category; + + /** + * 流程分类名称 + */ + @Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") + private String categoryName; + + /** + * 流程版本 + */ + private String version; + + /** + * 是否发布(0未发布 1已发布 9失效) + */ + private Integer isPublish; + + /** + * 审批表单是否自定义(Y是 N否) + */ + private String formCustom; + + /** + * 审批表单路径 + */ + private String formPath; + + /** + * 流程激活状态(0挂起 1激活) + */ + private Integer activityStatus; + + /** + * 监听器类型 + */ + private String listenerType; + + /** + * 监听器路径 + */ + private String listenerPath; + + /** + * 扩展字段,预留给业务系统使用 + */ + private String ext; +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java new file mode 100644 index 0000000..8776a76 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowHisTaskVo.java @@ -0,0 +1,244 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.warm.flow.core.enums.CooperateType; +import org.dromara.workflow.common.constant.FlowConstant; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 历史任务视图 + * + * @author may + */ +@Data +public class FlowHisTaskVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 删除标记 + */ + private String delFlag; + + /** + * 对应flow_definition表的id + */ + private Long definitionId; + + /** + * 流程定义名称 + */ + private String flowName; + + /** + * 流程实例表id + */ + private Long instanceId; + + /** + * 任务表id + */ + private Long taskId; + + /** + * 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签) + */ + private Integer cooperateType; + + /** + * 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签) + */ + private String cooperateTypeName; + + /** + * 业务id + */ + private String businessId; + + /** + * 开始节点编码 + */ + private String nodeCode; + + /** + * 开始节点名称 + */ + private String nodeName; + + /** + * 开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) + */ + private Integer nodeType; + + /** + * 目标节点编码 + */ + private String targetNodeCode; + + /** + * 结束节点名称 + */ + private String targetNodeName; + + /** + * 审批者 + */ + private String approver; + + /** + * 审批者 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "approver") + private String approveName; + + /** + * 协作人(只有转办、会签、票签、委派) + */ + private String collaborator; + + /** + * 权限标识 permissionFlag的list形式 + */ + private List permissionList; + + /** + * 跳转类型(PASS通过 REJECT退回 NONE无动作) + */ + private String skipType; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 任务状态 + */ + private String flowTaskStatus; + + /** + * 流程状态 + */ + private String flowStatusName; + + /** + * 审批意见 + */ + private String message; + + /** + * 业务详情 存业务类的json + */ + private String ext; + + /** + * 创建者 + */ + private String createBy; + + /** + * 申请人 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") + private String createByName; + + /** + * 流程分类id + */ + private String category; + + /** + * 流程分类名称 + */ + @Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") + private String categoryName; + + /** + * 审批表单是否自定义(Y是 N否) + */ + private String formCustom; + + /** + * 审批表单路径 + */ + private String formPath; + + /** + * 流程定义编码 + */ + private String flowCode; + + /** + * 流程版本号 + */ + private String version; + + /** + * 运行时长 + */ + private String runDuration; + + /** + * 设置创建时间并计算任务运行时长 + * + * @param createTime 创建时间 + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + updateRunDuration(); + } + + /** + * 设置更新时间并计算任务运行时长 + * + * @param updateTime 更新时间 + */ + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + updateRunDuration(); + } + + /** + * 更新运行时长 + */ + private void updateRunDuration() { + // 如果创建时间和更新时间均不为空,计算它们之间的时长 + if (this.updateTime != null && this.createTime != null) { + this.runDuration = DateUtils.getTimeDifference(this.updateTime, this.createTime); + } + } + + /** + * 设置协作方式,并通过协作方式获取名称 + */ + public void setCooperateType(Integer cooperateType) { + this.cooperateType = cooperateType; + this.cooperateTypeName = CooperateType.getValueByKey(cooperateType); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java new file mode 100644 index 0000000..75543f4 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowInstanceVo.java @@ -0,0 +1,137 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.workflow.common.constant.FlowConstant; + +import java.util.Date; + +/** + * 流程实例视图 + * + * @author may + */ +@Data +public class FlowInstanceVo { + + private Long id; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 删除标记 + */ + private String delFlag; + + /** + * 对应flow_definition表的id + */ + private Long definitionId; + + /** + * 流程定义名称 + */ + private String flowName; + + /** + * 流程定义编码 + */ + private String flowCode; + + /** + * 业务id + */ + private String businessId; + + /** + * 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) + */ + private Integer nodeType; + + /** + * 流程节点编码 每个流程的nodeCode是唯一的,即definitionId+nodeCode唯一,在数据库层面做了控制 + */ + private String nodeCode; + + /** + * 流程节点名称 + */ + private String nodeName; + + /** + * 流程变量 + */ + private String variable; + + /** + * 流程状态(0待提交 1审批中 2 审批通过 3自动通过 8已完成 9已退回 10失效) + */ + private String flowStatus; + + /** + * 流程状态 + */ + private String flowStatusName; + + /** + * 流程激活状态(0挂起 1激活) + */ + private Integer activityStatus; + + /** + * 审批表单是否自定义(Y是 N否) + */ + private String formCustom; + + /** + * 审批表单路径 + */ + private String formPath; + + /** + * 扩展字段,预留给业务系统使用 + */ + private String ext; + + /** + * 流程定义版本 + */ + private String version; + + /** + * 创建者 + */ + private String createBy; + + /** + * 申请人 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") + private String createByName; + + /** + * 流程分类id + */ + private String category; + + /** + * 流程分类名称 + */ + @Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") + private String categoryName; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java new file mode 100644 index 0000000..3fb08d9 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowTaskVo.java @@ -0,0 +1,176 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.warm.flow.core.entity.User; +import org.dromara.workflow.common.constant.FlowConstant; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 任务视图 + * + * @author may + */ +@Data +public class FlowTaskVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Long id; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 租户ID + */ + private String tenantId; + + /** + * 删除标记 + */ + private String delFlag; + + /** + * 对应flow_definition表的id + */ + private Long definitionId; + + /** + * 流程实例表id + */ + private Long instanceId; + + /** + * 流程定义名称 + */ + private String flowName; + + /** + * 业务id + */ + private String businessId; + + /** + * 节点编码 + */ + private String nodeCode; + + /** + * 节点名称 + */ + private String nodeName; + + /** + * 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关) + */ + private Integer nodeType; + + /** + * 权限标识 permissionFlag的list形式 + */ + private List permissionList; + + /** + * 流程用户列表 + */ + private List userList; + + /** + * 审批表单是否自定义(Y是 N否) + */ + private String formCustom; + + /** + * 审批表单 + */ + private String formPath; + + /** + * 流程定义编码 + */ + private String flowCode; + + /** + * 流程版本号 + */ + private String version; + + /** + * 流程状态 + */ + private String flowStatus; + + /** + * 流程分类id + */ + private String category; + + /** + * 流程分类名称 + */ + @Translation(type = FlowConstant.CATEGORY_ID_TO_NAME, mapper = "category") + private String categoryName; + + /** + * 流程状态 + */ + @Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "flowStatus", other = "wf_business_status") + private String flowStatusName; + + /** + * 办理人类型 + */ + private String type; + + /** + * 办理人ids + */ + private String assigneeIds; + + /** + * 办理人名称 + */ + private String assigneeNames; + + /** + * 抄送人id + */ + private String processedBy; + + /** + * 抄送人名称 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "processedBy") + private String processedByName; + + /** + * 流程签署比例值 大于0为票签,会签 + */ + private BigDecimal nodeRatio; + + /** + * 申请人id + */ + private String createBy; + + /** + * 申请人名称 + */ + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "createBy") + private String createByName; +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowVariableVo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowVariableVo.java new file mode 100644 index 0000000..b4de76e --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/FlowVariableVo.java @@ -0,0 +1,28 @@ +package org.dromara.workflow.domain.vo; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 流程变量 + * + * @author may + */ +@Data +public class FlowVariableVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 变量key + */ + private String key; + + /** + * 变量值 + */ + private String value; +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java new file mode 100644 index 0000000..47886d7 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/domain/vo/TestLeaveVo.java @@ -0,0 +1,70 @@ +package org.dromara.workflow.domain.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.workflow.domain.TestLeave; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + +/** + * 请假视图对象 test_leave + * + * @author may + * @date 2023-07-21 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = TestLeave.class) +public class TestLeaveVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @ExcelProperty(value = "主键") + private Long id; + + /** + * 请假类型 + */ + @ExcelProperty(value = "请假类型") + private String leaveType; + + /** + * 开始时间 + */ + @ExcelProperty(value = "开始时间") + private Date startDate; + + /** + * 结束时间 + */ + @ExcelProperty(value = "结束时间") + private Date endDate; + + /** + * 请假天数 + */ + @ExcelProperty(value = "请假天数") + private Integer leaveDays; + + /** + * 备注 + */ + @ExcelProperty(value = "请假原因") + private String remark; + + /** + * 状态 + */ + @ExcelProperty(value = "状态") + private String status; + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java new file mode 100644 index 0000000..4b215ef --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/FlowProcessEventHandler.java @@ -0,0 +1,82 @@ +package org.dromara.workflow.handler; + +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessDeleteEvent; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 流程监听服务 + * + * @author may + * @date 2024-06-02 + */ +@ConditionalOnEnable +@Slf4j +@Component +public class FlowProcessEventHandler { + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等) + * + * @param flowCode 流程定义编码 + * @param businessId 业务id + * @param status 状态 + * @param submit 当为true时为申请人节点办理 + */ + public void processHandler(String flowCode, String businessId, String status, Map params, boolean submit) { + String tenantId = TenantHelper.getTenantId(); + log.info("发布流程事件,租户ID: {}, 流程状态: {}, 流程编码: {}, 业务ID: {}, 是否申请人节点办理: {}", tenantId, status, flowCode, businessId, submit); + ProcessEvent processEvent = new ProcessEvent(); + processEvent.setTenantId(tenantId); + processEvent.setFlowCode(flowCode); + processEvent.setBusinessId(businessId); + processEvent.setStatus(status); + processEvent.setParams(params); + processEvent.setSubmit(submit); + SpringUtils.context().publishEvent(processEvent); + } + + /** + * 执行办理任务监听 + * + * @param flowCode 流程定义编码 + * @param nodeCode 审批节点编码 + * @param taskId 任务id + * @param businessId 业务id + */ + public void processTaskHandler(String flowCode, String nodeCode, Long taskId, String businessId) { + String tenantId = TenantHelper.getTenantId(); + log.info("发布流程任务事件, 租户ID: {}, 流程编码: {}, 节点编码: {}, 任务ID: {}, 业务ID: {}", tenantId, flowCode, nodeCode, taskId, businessId); + ProcessTaskEvent processTaskEvent = new ProcessTaskEvent(); + processTaskEvent.setTenantId(tenantId); + processTaskEvent.setFlowCode(flowCode); + processTaskEvent.setNodeCode(nodeCode); + processTaskEvent.setTaskId(taskId); + processTaskEvent.setBusinessId(businessId); + SpringUtils.context().publishEvent(processTaskEvent); + } + + /** + * 删除流程监听 + * + * @param flowCode 流程定义编码 + * @param businessId 业务ID + */ + public void processDeleteHandler(String flowCode, String businessId) { + String tenantId = TenantHelper.getTenantId(); + log.info("发布删除流程事件, 租户ID: {}, 流程编码: {}, 业务ID: {}", tenantId, flowCode, businessId); + ProcessDeleteEvent processDeleteEvent = new ProcessDeleteEvent(); + processDeleteEvent.setTenantId(tenantId); + processDeleteEvent.setFlowCode(flowCode); + processDeleteEvent.setBusinessId(businessId); + SpringUtils.context().publishEvent(processDeleteEvent); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java new file mode 100644 index 0000000..c18e4ed --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/handler/WorkflowPermissionHandler.java @@ -0,0 +1,73 @@ +package org.dromara.workflow.handler; + +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.TaskAssigneeEnum; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.warm.flow.core.dto.FlowParams; +import org.dromara.warm.flow.core.handler.PermissionHandler; +import org.dromara.warm.flow.core.service.impl.TaskServiceImpl; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * 办理人权限处理器 + * + * @author AprilWind + */ +@ConditionalOnEnable +@RequiredArgsConstructor +@Component +@Slf4j +public class WorkflowPermissionHandler implements PermissionHandler { + + /** + * 审批前获取当前办理人,办理时会校验的该权限集合 + * 后续在{@link TaskServiceImpl#checkAuth(Task, FlowParams)} 中调用 + * 返回当前用户权限集合 + */ + @Override + public List permissions() { + LoginUser loginUser = LoginHelper.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + return new ArrayList<>(); + } + // 使用一个流来构建权限列表 + return Stream.of( + // 角色权限前缀 + loginUser.getRoles().stream() + .map(role -> TaskAssigneeEnum.ROLE.getCode() + role.getRoleId()), + + // 岗位权限前缀 + Stream.ofNullable(loginUser.getPosts()) + .flatMap(Collection::stream) + .map(post -> TaskAssigneeEnum.POST.getCode() + post.getPostId()), + + // 用户和部门权限 + Stream.of(String.valueOf(loginUser.getUserId()), + TaskAssigneeEnum.DEPT.getCode() + loginUser.getDeptId() + ) + ) + .flatMap(stream -> stream) + .collect(Collectors.toList()); + } + + /** + * 获取当前办理人 + * + * @return 当前办理人 + */ + @Override + public String getHandler() { + return LoginHelper.getUserIdStr(); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java new file mode 100644 index 0000000..b187854 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/listener/WorkflowGlobalListener.java @@ -0,0 +1,130 @@ +package org.dromara.workflow.listener; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.warm.flow.core.dto.FlowParams; +import org.dromara.warm.flow.core.entity.Definition; +import org.dromara.warm.flow.core.entity.Instance; +import org.dromara.warm.flow.core.entity.Task; +import org.dromara.warm.flow.core.listener.GlobalListener; +import org.dromara.warm.flow.core.listener.ListenerVariable; +import org.dromara.warm.flow.orm.entity.FlowTask; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.handler.FlowProcessEventHandler; +import org.dromara.workflow.service.IFlwInstanceService; +import org.dromara.workflow.service.IFlwTaskService; +import org.springframework.stereotype.Component; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 全局任务办理监听 + * + * @author may + */ +@ConditionalOnEnable +@Component +@Slf4j +@RequiredArgsConstructor +public class WorkflowGlobalListener implements GlobalListener { + + private final IFlwTaskService taskService; + private final IFlwInstanceService instanceService; + private final FlowProcessEventHandler flowProcessEventHandler; + + /** + * 创建监听器,任务创建时执行 + * + * @param listenerVariable 监听器变量 + */ + @Override + public void create(ListenerVariable listenerVariable) { + Instance instance = listenerVariable.getInstance(); + Definition definition = listenerVariable.getDefinition(); + String businessId = instance.getBusinessId(); + String flowStatus = instance.getFlowStatus(); + Task task = listenerVariable.getTask(); + if (task != null && BusinessStatusEnum.WAITING.getStatus().equals(flowStatus)) { + // 判断流程状态(发布审批中事件) + flowProcessEventHandler.processTaskHandler(definition.getFlowCode(), task.getNodeCode(), task.getId(), businessId); + } + } + + /** + * 开始监听器,任务开始办理时执行 + * + * @param listenerVariable 监听器变量 + */ + @Override + public void start(ListenerVariable listenerVariable) { + } + + /** + * 分派监听器,动态修改代办任务信息 + * + * @param listenerVariable 监听器变量 + */ + @Override + public void assignment(ListenerVariable listenerVariable) { + } + + /** + * 完成监听器,当前任务完成后执行 + * + * @param listenerVariable 监听器变量 + */ + @Override + public void finish(ListenerVariable listenerVariable) { + Instance instance = listenerVariable.getInstance(); + Definition definition = listenerVariable.getDefinition(); + String businessId = instance.getBusinessId(); + String flowStatus = instance.getFlowStatus(); + Map params = new HashMap<>(); + FlowParams flowParams = listenerVariable.getFlowParams(); + if (ObjectUtil.isNotNull(flowParams)) { + // 历史任务扩展(通常为附件) + params.put("hisTaskExt", flowParams.getHisTaskExt()); + // 办理人 + params.put("handler", flowParams.getHandler()); + // 办理意见 + params.put("message", flowParams.getMessage()); + } + // 判断流程状态(发布:撤销,退回,作废,终止,已完成事件) + String status = determineFlowStatus(instance, flowStatus); + if (StringUtils.isNotBlank(status)) { + flowProcessEventHandler.processHandler(definition.getFlowCode(), businessId, status, params, false); + } + } + + /** + * 根据流程实例和当前流程状态确定最终状态 + * + * @param instance 流程实例 + * @param flowStatus 流程实例当前状态 + * @return 流程最终状态 + */ + private String determineFlowStatus(Instance instance, String flowStatus) { + if (StringUtils.isNotBlank(flowStatus) && BusinessStatusEnum.initialState(flowStatus)) { + log.info("流程实例当前状态: {}", flowStatus); + return flowStatus; + } else { + Long instanceId = instance.getId(); + List flowTasks = taskService.selectByInstId(instanceId); + if (CollUtil.isEmpty(flowTasks)) { + String status = BusinessStatusEnum.FINISH.getStatus(); + // 更新流程状态为已完成 + instanceService.updateStatus(instanceId, status); + log.info("流程已结束,状态更新为: {}", status); + return status; + } + return null; + } + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java new file mode 100644 index 0000000..d2c0b3a --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java @@ -0,0 +1,60 @@ +package org.dromara.workflow.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.dromara.common.mybatis.annotation.DataColumn; +import org.dromara.common.mybatis.annotation.DataPermission; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.workflow.domain.FlowCategory; +import org.dromara.workflow.domain.vo.FlowCategoryVo; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * 流程分类Mapper接口 + * + * @author may + * @date 2023-06-27 + */ +public interface FlwCategoryMapper extends BaseMapperPlus { + + /** + * 统计指定流程分类ID的分类数量 + * + * @param categoryId 流程分类ID + * @return 该流程分类ID的分类数量 + */ + @DataPermission({ + @DataColumn(key = "deptName", value = "createDept") + }) + long countCategoryById(Long categoryId); + + /** + * 根据父流程分类ID查询其所有子流程分类的列表 + * + * @param parentId 父流程分类ID + * @return 包含子流程分类的列表 + */ + default List selectListByParentId(Long parentId) { + return this.selectList(new LambdaQueryWrapper() + .select(FlowCategory::getCategoryId) + .apply(DataBaseHelper.findInSet(parentId, "ancestors"))); + } + + /** + * 根据父流程分类ID查询包括父ID及其所有子流程分类ID的列表 + * + * @param parentId 父流程分类ID + * @return 包含父ID和子流程分类ID的列表 + */ + default List selectCategoryIdsByParentId(Long parentId) { + return Stream.concat( + this.selectListByParentId(parentId).stream() + .map(FlowCategory::getCategoryId), + Stream.of(parentId) + ).collect(Collectors.toList()); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java new file mode 100644 index 0000000..92809c8 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java @@ -0,0 +1,27 @@ +package org.dromara.workflow.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.workflow.domain.bo.FlowInstanceBo; +import org.dromara.workflow.domain.vo.FlowInstanceVo; + +/** + * 实例信息Mapper接口 + * + * @author may + * @date 2024-03-02 + */ +public interface FlwInstanceMapper { + + /** + * 流程实例信息 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 结果 + */ + Page selectInstanceList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java new file mode 100644 index 0000000..fd86c82 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/FlwTaskMapper.java @@ -0,0 +1,57 @@ +package org.dromara.workflow.mapper; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.dromara.workflow.domain.bo.FlowTaskBo; +import org.dromara.workflow.domain.vo.FlowHisTaskVo; +import org.dromara.workflow.domain.vo.FlowTaskVo; + +import java.util.List; + + +/** + * 任务信息Mapper接口 + * + * @author may + * @date 2024-03-02 + */ +public interface FlwTaskMapper { + + /** + * 获取待办信息 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 结果 + */ + Page getListRunTask(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 获取待办信息 + * + * @param queryWrapper 条件 + * @return 结果 + */ + List getListRunTask(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 获取已办 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 结果 + */ + Page getListFinishTask(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 查询当前用户的抄送 + * + * @param page 分页 + * @param queryWrapper 条件 + * @return 结果 + */ + Page getTaskCopyByPage(@Param("page") Page page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper); +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/TestLeaveMapper.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/TestLeaveMapper.java new file mode 100644 index 0000000..cd1edba --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/mapper/TestLeaveMapper.java @@ -0,0 +1,15 @@ +package org.dromara.workflow.mapper; + +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.dromara.workflow.domain.TestLeave; +import org.dromara.workflow.domain.vo.TestLeaveVo; + +/** + * 请假Mapper接口 + * + * @author may + * @date 2023-07-21 + */ +public interface TestLeaveMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java new file mode 100644 index 0000000..91f173d --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwCategoryService.java @@ -0,0 +1,102 @@ +package org.dromara.workflow.service; + +import cn.hutool.core.lang.tree.Tree; +import org.dromara.workflow.domain.bo.FlowCategoryBo; +import org.dromara.workflow.domain.vo.FlowCategoryVo; + +import java.util.List; + +/** + * 流程分类Service接口 + * + * @author may + */ +public interface IFlwCategoryService { + + /** + * 查询流程分类 + * + * @param categoryId 主键 + * @return 流程分类 + */ + FlowCategoryVo queryById(Long categoryId); + + /** + * 根据流程分类ID查询流程分类名称 + * + * @param categoryId 流程分类ID + * @return 流程分类名称 + */ + String selectCategoryNameById(Long categoryId); + + /** + * 查询符合条件的流程分类列表 + * + * @param bo 查询条件 + * @return 流程分类列表 + */ + List queryList(FlowCategoryBo bo); + + /** + * 查询流程分类树结构信息 + * + * @param category 流程分类信息 + * @return 流程分类树信息集合 + */ + List> selectCategoryTreeList(FlowCategoryBo category); + + /** + * 校验流程分类是否有数据权限 + * + * @param categoryId 流程分类ID + */ + void checkCategoryDataScope(Long categoryId); + + /** + * 校验流程分类名称是否唯一 + * + * @param category 流程分类信息 + * @return 结果 + */ + boolean checkCategoryNameUnique(FlowCategoryBo category); + + /** + * 查询流程分类是否存在流程定义 + * + * @param categoryId 流程分类ID + * @return 结果 true 存在 false 不存在 + */ + boolean checkCategoryExistDefinition(Long categoryId); + + /** + * 是否存在流程分类子节点 + * + * @param categoryId 流程分类ID + * @return 结果 + */ + boolean hasChildByCategoryId(Long categoryId); + + /** + * 新增流程分类 + * + * @param bo 流程分类 + * @return 是否新增成功 + */ + int insertByBo(FlowCategoryBo bo); + + /** + * 修改流程分类 + * + * @param bo 流程分类 + * @return 是否修改成功 + */ + int updateByBo(FlowCategoryBo bo); + + /** + * 删除流程分类信息 + * + * @param categoryId 主键 + * @return 是否删除成功 + */ + int deleteWithValidById(Long categoryId); +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java new file mode 100644 index 0000000..1a2d29f --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java @@ -0,0 +1,79 @@ +package org.dromara.workflow.service; + +import jakarta.servlet.http.HttpServletResponse; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.warm.flow.orm.entity.FlowDefinition; +import org.dromara.workflow.domain.vo.FlowDefinitionVo; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + * 流程定义 服务层 + * + * @author may + */ +public interface IFlwDefinitionService { + + /** + * 查询流程定义列表 + * + * @param flowDefinition 参数 + * @param pageQuery 分页 + * @return 返回分页列表 + */ + TableDataInfo queryList(FlowDefinition flowDefinition, PageQuery pageQuery); + + /** + * 查询未发布的流程定义列表 + * + * @param flowDefinition 参数 + * @param pageQuery 分页 + * @return 返回分页列表 + */ + TableDataInfo unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery); + + + /** + * 发布流程定义 + * + * @param id 流程定义id + * @return 结果 + */ + boolean publish(Long id); + + /** + * 导出流程定义 + * + * @param id 流程定义id + * @param response 响应 + * @throws IOException 异常 + */ + void exportDef(Long id, HttpServletResponse response) throws IOException; + + /** + * 导入流程定义 + * + * @param file 文件 + * @param category 分类 + * @return 结果 + */ + boolean importJson(MultipartFile file, String category); + + /** + * 删除流程定义 + * + * @param ids 流程定义id + * @return 结果 + */ + boolean removeDef(List ids); + + /** + * 新增租户流程定义 + * + * @param tenantId 租户id + */ + void syncDef(String tenantId); +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java new file mode 100644 index 0000000..99729c2 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -0,0 +1,159 @@ +package org.dromara.workflow.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.warm.flow.orm.entity.FlowInstance; +import org.dromara.workflow.domain.bo.FlowCancelBo; +import org.dromara.workflow.domain.bo.FlowInstanceBo; +import org.dromara.workflow.domain.bo.FlowInvalidBo; +import org.dromara.workflow.domain.vo.FlowInstanceVo; + +import java.util.List; +import java.util.Map; + +/** + * 流程实例 服务层 + * + * @author may + */ +public interface IFlwInstanceService { + + /** + * 分页查询正在运行的流程实例 + * + * @param flowInstanceBo 流程实例 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery); + + /** + * 分页查询已结束的流程实例 + * + * @param flowInstanceBo 流程实例 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery); + + /** + * 根据业务id查询流程实例详细信息 + * + * @param businessId 业务id + * @return 结果 + */ + FlowInstanceVo queryByBusinessId(Long businessId); + + /** + * 按照业务id查询流程实例 + * + * @param businessId 业务id + * @return 结果 + */ + FlowInstance selectInstByBusinessId(String businessId); + + /** + * 按照实例id查询流程实例 + * + * @param instanceId 实例id + * @return 结果 + */ + FlowInstance selectInstById(Long instanceId); + + /** + * 按照实例id查询流程实例 + * + * @param instanceIds 实例id + * @return 结果 + */ + List selectInstListByIdList(List instanceIds); + + /** + * 按照业务id删除流程实例 + * + * @param businessIds 业务id + * @return 结果 + */ + boolean deleteByBusinessIds(List businessIds); + + /** + * 按照实例id删除流程实例 + * + * @param instanceIds 实例id + * @return 结果 + */ + boolean deleteByInstanceIds(List instanceIds); + + /** + * 撤销流程 + * + * @param bo 参数 + * @return 结果 + */ + boolean cancelProcessApply(FlowCancelBo bo); + + /** + * 获取当前登陆人发起的流程实例 + * + * @param instanceBo 流程实例 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo selectCurrentInstanceList(FlowInstanceBo instanceBo, PageQuery pageQuery); + + /** + * 获取流程图,流程记录 + * + * @param businessId 业务id + * @return 结果 + */ + Map flowImage(String businessId); + + /** + * 按照实例id更新状态 + * + * @param instanceId 实例id + * @param status 状态 + */ + void updateStatus(Long instanceId, String status); + + /** + * 获取流程变量 + * + * @param instanceId 实例id + * @return 结果 + */ + Map instanceVariable(Long instanceId); + + /** + * 设置流程变量 + * + * @param instanceId 实例id + * @param variable 流程变量 + */ + void setVariable(Long instanceId, Map variable); + + /** + * 按任务id查询实例 + * + * @param taskId 任务id + * @return 结果 + */ + FlowInstance selectByTaskId(Long taskId); + + /** + * 按任务id查询实例 + * + * @param taskIdList 任务id + * @return 结果 + */ + List selectByTaskIdList(List taskIdList); + + /** + * 作废流程 + * + * @param bo 流程实例 + * @return 结果 + */ + boolean processInvalid(FlowInvalidBo bo); +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskAssigneeService.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskAssigneeService.java new file mode 100644 index 0000000..116cb74 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskAssigneeService.java @@ -0,0 +1,22 @@ +package org.dromara.workflow.service; + +import org.dromara.common.core.domain.dto.UserDTO; + +import java.util.List; + +/** + * 流程设计器-获取办理人 + * + * @author AprilWind + */ +public interface IFlwTaskAssigneeService { + + /** + * 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表 + * + * @param storageId 包含分配类型和ID的字符串(例如 "user:123" 或 "role:456") + * @return 与分配类型和ID匹配的用户列表,如果格式无效则返回空列表 + */ + List fetchUsersByStorageId(String storageId); + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java new file mode 100644 index 0000000..11034e7 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/IFlwTaskService.java @@ -0,0 +1,191 @@ +package org.dromara.workflow.service; + +import org.dromara.common.core.domain.dto.StartProcessReturnDTO; +import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.warm.flow.core.entity.Node; +import org.dromara.warm.flow.orm.entity.FlowHisTask; +import org.dromara.warm.flow.orm.entity.FlowTask; +import org.dromara.workflow.domain.bo.*; +import org.dromara.workflow.domain.vo.FlowHisTaskVo; +import org.dromara.workflow.domain.vo.FlowTaskVo; + +import java.util.List; +import java.util.Map; + +/** + * 任务 服务层 + * + * @author may + */ +public interface IFlwTaskService { + + /** + * 启动任务 + * + * @param startProcessBo 启动流程参数 + * @return 结果 + */ + StartProcessReturnDTO startWorkFlow(StartProcessBo startProcessBo); + + /** + * 办理任务 + * + * @param completeTaskBo 办理任务参数 + * @return 结果 + */ + boolean completeTask(CompleteTaskBo completeTaskBo); + + /** + * 查询当前用户的待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + /** + * 查询当前租户所有待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + /** + * 查询待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + /** + * 查询已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + /** + * 查询当前用户的抄送 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + * @return 结果 + */ + TableDataInfo pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery); + + /** + * 修改任务办理人 + * + * @param taskIdList 任务id + * @param userId 用户id + * @return 结果 + */ + boolean updateAssignee(List taskIdList, String userId); + + /** + * 驳回审批 + * + * @param bo 参数 + * @return 结果 + */ + boolean backProcess(BackProcessBo bo); + + /** + * 获取可驳回的前置节点 + * + * @param definitionId 流程定义id + * @param nowNodeCode 当前节点 + * @return 结果 + */ + List getBackTaskNode(Long definitionId, String nowNodeCode); + + /** + * 终止任务 + * + * @param bo 参数 + * @return 结果 + */ + boolean terminationTask(FlowTerminationBo bo); + + /** + * 按照任务id查询任务 + * + * @param taskIdList 任务id + * @return 结果 + */ + List selectByIdList(List taskIdList); + + /** + * 按照任务id查询任务 + * + * @param taskId 任务id + * @return 结果 + */ + FlowTaskVo selectById(Long taskId); + + /** + * 按照任务id查询任务 + * + * @param taskIdList 任务id + * @return 结果 + */ + List selectHisTaskByIdList(List taskIdList); + + /** + * 按照任务id查询任务 + * + * @param taskId 任务id + * @return 结果 + */ + FlowHisTask selectHisTaskById(Long taskId); + + /** + * 按照实例id查询任务 + * + * @param instanceIdList 流程实例id + * @return 结果 + */ + List selectByInstIdList(List instanceIdList); + + /** + * 按照实例id查询任务 + * + * @param instanceId 流程实例id + * @return 结果 + */ + List selectByInstId(Long instanceId); + + /** + * 任务操作 + * + * @param bo 参数 + * @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature + * @return 结果 + */ + boolean taskOperation(TaskOperationBo bo, String taskOperation); + + /** + * 获取任务所有办理人 + * + * @param taskIdList 任务id + * @return 结果 + */ + Map> currentTaskAllUser(List taskIdList); + + /** + * 获取当前任务的所有办理人 + * + * @param taskId 任务id + * @return 结果 + */ + List currentTaskAllUser(Long taskId); +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java new file mode 100644 index 0000000..67b50ba --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/ITestLeaveService.java @@ -0,0 +1,47 @@ +package org.dromara.workflow.service; + +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.workflow.domain.bo.TestLeaveBo; +import org.dromara.workflow.domain.vo.TestLeaveVo; + +import java.util.List; + +/** + * 请假Service接口 + * + * @author may + * @date 2023-07-21 + */ +public interface ITestLeaveService { + + /** + * 查询请假 + */ + TestLeaveVo queryById(Long id); + + /** + * 查询请假列表 + */ + TableDataInfo queryPageList(TestLeaveBo bo, PageQuery pageQuery); + + /** + * 查询请假列表 + */ + List queryList(TestLeaveBo bo); + + /** + * 新增请假 + */ + TestLeaveVo insertByBo(TestLeaveBo bo); + + /** + * 修改请假 + */ + TestLeaveVo updateByBo(TestLeaveBo bo); + + /** + * 校验并批量删除请假信息 + */ + Boolean deleteWithValidByIds(List ids); +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java new file mode 100644 index 0000000..8c73b59 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.java @@ -0,0 +1,37 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.convert.Convert; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.translation.annotation.TranslationType; +import org.dromara.common.translation.core.TranslationInterface; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.constant.FlowConstant; +import org.dromara.workflow.service.IFlwCategoryService; +import org.springframework.stereotype.Service; + +/** + * 流程分类名称翻译实现 + * + * @author AprilWind + */ +@ConditionalOnEnable +@Slf4j +@RequiredArgsConstructor +@Service +@TranslationType(type = FlowConstant.CATEGORY_ID_TO_NAME) +public class CategoryNameTranslationImpl implements TranslationInterface { + + private final IFlwCategoryService flwCategoryService; + + @Override + public String translation(Object key, String other) { + Long id = null; + if (key instanceof String categoryId) { + id = Convert.toLong(categoryId); + } else if (key instanceof Long categoryId) { + id = categoryId; + } + return flwCategoryService.selectCategoryNameById(id); + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java new file mode 100644 index 0000000..db1b7b7 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.java @@ -0,0 +1,269 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.*; +import org.dromara.common.mybatis.helper.DataBaseHelper; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.warm.flow.core.service.DefService; +import org.dromara.warm.flow.orm.entity.FlowDefinition; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.constant.FlowConstant; +import org.dromara.workflow.domain.FlowCategory; +import org.dromara.workflow.domain.bo.FlowCategoryBo; +import org.dromara.workflow.domain.vo.FlowCategoryVo; +import org.dromara.workflow.mapper.FlwCategoryMapper; +import org.dromara.workflow.service.IFlwCategoryService; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 流程分类Service业务层处理 + * + * @author may + */ +@ConditionalOnEnable +@RequiredArgsConstructor +@Service +public class FlwCategoryServiceImpl implements IFlwCategoryService { + + private final DefService defService; + private final FlwCategoryMapper baseMapper; + + /** + * 查询流程分类 + * + * @param categoryId 主键 + * @return 流程分类 + */ + @Override + public FlowCategoryVo queryById(Long categoryId) { + FlowCategoryVo category = baseMapper.selectVoById(categoryId); + if (ObjectUtil.isNull(category)) { + return null; + } + FlowCategoryVo parentCategory = baseMapper.selectVoOne(new LambdaQueryWrapper() + .select(FlowCategory::getCategoryName).eq(FlowCategory::getCategoryId, category.getParentId())); + category.setParentName(ObjectUtils.notNullGetter(parentCategory, FlowCategoryVo::getCategoryName)); + return category; + } + + /** + * 根据流程分类ID查询流程分类名称 + * + * @param categoryId 流程分类ID + * @return 流程分类名称 + */ + @Cacheable(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#categoryId") + @Override + public String selectCategoryNameById(Long categoryId) { + if (ObjectUtil.isNull(categoryId)) { + return null; + } + FlowCategory category = baseMapper.selectOne(new LambdaQueryWrapper() + .select(FlowCategory::getCategoryName).eq(FlowCategory::getCategoryId, categoryId)); + return ObjectUtils.notNullGetter(category, FlowCategory::getCategoryName); + } + + /** + * 查询符合条件的流程分类列表 + * + * @param bo 查询条件 + * @return 流程分类列表 + */ + @Override + public List queryList(FlowCategoryBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + /** + * 查询流程分类树结构信息 + * + * @param category 流程分类信息 + * @return 流程分类树信息集合 + */ + @Override + public List> selectCategoryTreeList(FlowCategoryBo category) { + LambdaQueryWrapper lqw = buildQueryWrapper(category); + List categorys = baseMapper.selectVoList(lqw); + if (CollUtil.isEmpty(categorys)) { + return CollUtil.newArrayList(); + } + // 获取当前列表中每一个节点的parentId,然后在列表中查找是否有id与其parentId对应,若无对应,则表明此时节点列表中,该节点在当前列表中属于顶级节点 + List> treeList = CollUtil.newArrayList(); + for (FlowCategoryVo d : categorys) { + String parentId = d.getParentId().toString(); + FlowCategoryVo categoryVo = StreamUtils.findFirst(categorys, it -> it.getCategoryId().toString().equals(parentId)); + if (ObjectUtil.isNull(categoryVo)) { + List> trees = TreeBuildUtils.build(categorys, parentId, (dept, tree) -> + tree.setId(dept.getCategoryId().toString()) + .setParentId(dept.getParentId().toString()) + .setName(dept.getCategoryName()) + .setWeight(dept.getOrderNum())); + Tree tree = StreamUtils.findFirst(trees, it -> it.getId().equals(d.getCategoryId().toString())); + treeList.add(tree); + } + } + return treeList; + } + + /** + * 校验流程分类是否有数据权限 + * + * @param categoryId 流程分类ID + */ + @Override + public void checkCategoryDataScope(Long categoryId) { + if (ObjectUtil.isNull(categoryId)) { + return; + } + if (LoginHelper.isSuperAdmin()) { + return; + } + if (baseMapper.countCategoryById(categoryId) == 0) { + throw new ServiceException("没有权限访问流程分类数据!"); + } + } + + /** + * 校验流程分类名称是否唯一 + * + * @param category 流程分类信息 + * @return 结果 + */ + @Override + public boolean checkCategoryNameUnique(FlowCategoryBo category) { + boolean exist = baseMapper.exists(new LambdaQueryWrapper() + .eq(FlowCategory::getCategoryName, category.getCategoryName()) + .eq(FlowCategory::getParentId, category.getParentId()) + .ne(ObjectUtil.isNotNull(category.getCategoryId()), FlowCategory::getCategoryId, category.getCategoryId())); + return !exist; + } + + /** + * 查询流程分类是否存在流程定义 + * + * @param categoryId 流程分类ID + * @return 结果 true 存在 false 不存在 + */ + @Override + public boolean checkCategoryExistDefinition(Long categoryId) { + FlowDefinition definition = new FlowDefinition(); + definition.setCategory(categoryId.toString()); + return defService.exists(definition); + } + + /** + * 是否存在流程分类子节点 + * + * @param categoryId 流程分类ID + * @return 结果 + */ + @Override + public boolean hasChildByCategoryId(Long categoryId) { + return baseMapper.exists(new LambdaQueryWrapper() + .eq(FlowCategory::getParentId, categoryId)); + } + + private LambdaQueryWrapper buildQueryWrapper(FlowCategoryBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(FlowCategory::getDelFlag, SystemConstants.NORMAL); + lqw.eq(ObjectUtil.isNotNull(bo.getCategoryId()), FlowCategory::getCategoryId, bo.getCategoryId()); + lqw.eq(ObjectUtil.isNotNull(bo.getParentId()), FlowCategory::getParentId, bo.getParentId()); + lqw.like(StringUtils.isNotBlank(bo.getCategoryName()), FlowCategory::getCategoryName, bo.getCategoryName()); + lqw.orderByAsc(FlowCategory::getAncestors); + lqw.orderByAsc(FlowCategory::getParentId); + lqw.orderByAsc(FlowCategory::getOrderNum); + lqw.orderByAsc(FlowCategory::getCategoryId); + return lqw; + } + + /** + * 新增流程分类 + * + * @param bo 流程分类 + * @return 是否新增成功 + */ + @Override + public int insertByBo(FlowCategoryBo bo) { + FlowCategory info = baseMapper.selectById(bo.getParentId()); + FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); + category.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + category.getParentId()); + return baseMapper.insert(category); + } + + /** + * 修改流程分类 + * + * @param bo 流程分类 + * @return 是否修改成功 + */ + @CacheEvict(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#bo.categoryId") + @Override + public int updateByBo(FlowCategoryBo bo) { + FlowCategory category = MapstructUtils.convert(bo, FlowCategory.class); + FlowCategory oldCategory = baseMapper.selectById(category.getCategoryId()); + if (ObjectUtil.isNull(oldCategory)) { + throw new ServiceException("流程分类不存在,无法修改"); + } + if (!oldCategory.getParentId().equals(category.getParentId())) { + // 如果是新父流程分类 则校验是否具有新父流程分类权限 避免越权 + this.checkCategoryDataScope(category.getParentId()); + FlowCategory newParentCategory = baseMapper.selectById(category.getParentId()); + if (ObjectUtil.isNotNull(newParentCategory)) { + String newAncestors = newParentCategory.getAncestors() + StringUtils.SEPARATOR + newParentCategory.getCategoryId(); + String oldAncestors = oldCategory.getAncestors(); + category.setAncestors(newAncestors); + updateCategoryChildren(category.getCategoryId(), newAncestors, oldAncestors); + } + } else { + category.setAncestors(oldCategory.getAncestors()); + } + return baseMapper.updateById(category); + } + + /** + * 修改子元素关系 + * + * @param categoryId 被修改的流程分类ID + * @param newAncestors 新的父ID集合 + * @param oldAncestors 旧的父ID集合 + */ + private void updateCategoryChildren(Long categoryId, String newAncestors, String oldAncestors) { + List children = baseMapper.selectList(new LambdaQueryWrapper() + .apply(DataBaseHelper.findInSet(categoryId, "ancestors"))); + List list = new ArrayList<>(); + for (FlowCategory child : children) { + FlowCategory category = new FlowCategory(); + category.setCategoryId(child.getCategoryId()); + category.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); + list.add(category); + } + if (CollUtil.isNotEmpty(list)) { + baseMapper.updateBatchById(list); + } + } + + /** + * 删除流程分类信息 + * + * @param categoryId 主键 + * @return 是否删除成功 + */ + @CacheEvict(cacheNames = FlowConstant.FLOW_CATEGORY_NAME, key = "#categoryId") + @Override + public int deleteWithValidById(Long categoryId) { + return baseMapper.deleteById(categoryId); + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java new file mode 100644 index 0000000..591339b --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java @@ -0,0 +1,266 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.io.IoUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import jakarta.servlet.http.HttpServletResponse; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.json.utils.JsonUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.warm.flow.core.dto.DefJson; +import org.dromara.warm.flow.core.enums.NodeType; +import org.dromara.warm.flow.core.enums.PublishStatus; +import org.dromara.warm.flow.core.service.DefService; +import org.dromara.warm.flow.orm.entity.FlowDefinition; +import org.dromara.warm.flow.orm.entity.FlowHisTask; +import org.dromara.warm.flow.orm.entity.FlowNode; +import org.dromara.warm.flow.orm.entity.FlowSkip; +import org.dromara.warm.flow.orm.mapper.FlowDefinitionMapper; +import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; +import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; +import org.dromara.warm.flow.orm.mapper.FlowSkipMapper; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.constant.FlowConstant; +import org.dromara.workflow.domain.FlowCategory; +import org.dromara.workflow.domain.vo.FlowDefinitionVo; +import org.dromara.workflow.mapper.FlwCategoryMapper; +import org.dromara.workflow.service.IFlwDefinitionService; +import org.dromara.workflow.utils.WorkflowUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.dromara.common.core.constant.TenantConstants.DEFAULT_TENANT_ID; + +/** + * 流程定义 服务层实现 + * + * @author may + */ +@ConditionalOnEnable +@Slf4j +@RequiredArgsConstructor +@Service +public class FlwDefinitionServiceImpl implements IFlwDefinitionService { + + private final DefService defService; + private final FlowDefinitionMapper flowDefinitionMapper; + private final FlowHisTaskMapper flowHisTaskMapper; + private final FlowNodeMapper flowNodeMapper; + private final FlowSkipMapper flowSkipMapper; + private final FlwCategoryMapper flwCategoryMapper; + + /** + * 查询流程定义列表 + * + * @param flowDefinition 流程定义信息 + * @param pageQuery 分页 + * @return 返回分页列表 + */ + @Override + public TableDataInfo queryList(FlowDefinition flowDefinition, PageQuery pageQuery) { + LambdaQueryWrapper wrapper = buildQueryWrapper(flowDefinition); + wrapper.eq(FlowDefinition::getIsPublish, PublishStatus.PUBLISHED.getKey()); + Page page = flowDefinitionMapper.selectPage(pageQuery.build(), wrapper); + TableDataInfo build = TableDataInfo.build(); + build.setRows(BeanUtil.copyToList(page.getRecords(), FlowDefinitionVo.class)); + build.setTotal(page.getTotal()); + return build; + } + + /** + * 查询未发布的流程定义列表 + * + * @param flowDefinition 流程定义信息 + * @param pageQuery 分页 + * @return 返回分页列表 + */ + @Override + public TableDataInfo unPublishList(FlowDefinition flowDefinition, PageQuery pageQuery) { + LambdaQueryWrapper wrapper = buildQueryWrapper(flowDefinition); + wrapper.in(FlowDefinition::getIsPublish, Arrays.asList(PublishStatus.UNPUBLISHED.getKey(), PublishStatus.EXPIRED.getKey())); + Page page = flowDefinitionMapper.selectPage(pageQuery.build(), wrapper); + TableDataInfo build = TableDataInfo.build(); + build.setRows(BeanUtil.copyToList(page.getRecords(), FlowDefinitionVo.class)); + build.setTotal(page.getTotal()); + return build; + } + + private LambdaQueryWrapper buildQueryWrapper(FlowDefinition flowDefinition) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StringUtils.isNotBlank(flowDefinition.getFlowCode()), FlowDefinition::getFlowCode, flowDefinition.getFlowCode()); + wrapper.like(StringUtils.isNotBlank(flowDefinition.getFlowName()), FlowDefinition::getFlowName, flowDefinition.getFlowName()); + if (StringUtils.isNotBlank(flowDefinition.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowDefinition.getCategory())); + wrapper.in(FlowDefinition::getCategory, StreamUtils.toList(categoryIds, Convert::toStr)); + } + wrapper.orderByDesc(FlowDefinition::getCreateTime); + return wrapper; + } + + /** + * 发布流程定义 + * + * @param id 流程定义id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean publish(Long id) { + List flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper().eq(FlowNode::getDefinitionId, id)); + List errorMsg = new ArrayList<>(); + if (CollUtil.isNotEmpty(flowNodes)) { + for (FlowNode flowNode : flowNodes) { + String applyNodeCode = WorkflowUtils.applyNodeCode(id); + if (StringUtils.isBlank(flowNode.getPermissionFlag()) && !applyNodeCode.equals(flowNode.getNodeCode()) && NodeType.BETWEEN.getKey().equals(flowNode.getNodeType())) { + errorMsg.add(flowNode.getNodeName()); + } + } + if (CollUtil.isNotEmpty(errorMsg)) { + throw new ServiceException("节点【" + StringUtils.join(errorMsg, ",") + "】未配置办理人!"); + } + } + return defService.publish(id); + } + + /** + * 导入流程定义 + * + * @param file 文件 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean importJson(MultipartFile file, String category) { + try { + DefJson defJson = JsonUtils.parseObject(file.getBytes(), DefJson.class); + defJson.setCategory(category); + defService.importDef(defJson); + } catch (IOException e) { + log.error("读取文件流错误: {}", e.getMessage(), e); + throw new IllegalStateException("文件读取失败,请检查文件内容", e); + } + return true; + } + + /** + * 导出流程定义 + * + * @param id 流程定义id + * @param response 响应 + * @throws IOException 异常 + */ + @Override + public void exportDef(Long id, HttpServletResponse response) throws IOException { + byte[] data = defService.exportJson(id).getBytes(StandardCharsets.UTF_8); + // 设置响应头和内容类型 + response.reset(); + response.setCharacterEncoding(StandardCharsets.UTF_8.name()); + response.setContentType("application/text"); + response.setHeader("Content-Disposition", "attachment;"); + response.addHeader("Content-Length", "" + data.length); + IoUtil.write(response.getOutputStream(), false, data); + } + + /** + * 删除流程定义 + * + * @param ids 流程定义id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean removeDef(List ids) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.in(FlowHisTask::getDefinitionId, ids); + List flowHisTasks = flowHisTaskMapper.selectList(wrapper); + if (CollUtil.isNotEmpty(flowHisTasks)) { + List flowDefinitions = flowDefinitionMapper.selectByIds(StreamUtils.toList(flowHisTasks, FlowHisTask::getDefinitionId)); + if (CollUtil.isNotEmpty(flowDefinitions)) { + String join = StreamUtils.join(flowDefinitions, FlowDefinition::getFlowCode); + log.error("流程定义【{}】已被使用不可被删除!", join); + throw new ServiceException("流程定义【" + join + "】已被使用不可被删除!"); + } + } + try { + defService.removeDef(ids); + } catch (Exception e) { + log.error("Error removing flow definitions: {}", e.getMessage(), e); + throw new RuntimeException("Failed to remove flow definitions", e); + } + return true; + } + + /** + * 新增租户流程定义 + * + * @param tenantId 租户id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void syncDef(String tenantId) { + List flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper().eq(FlowDefinition::getTenantId, DEFAULT_TENANT_ID)); + if (CollUtil.isEmpty(flowDefinitions)) { + return; + } + FlowCategory flowCategory = flwCategoryMapper.selectOne(new LambdaQueryWrapper() + .eq(FlowCategory::getTenantId, DEFAULT_TENANT_ID).eq(FlowCategory::getCategoryId, FlowConstant.FLOW_CATEGORY_ID)); + flowCategory.setCategoryId(null); + flowCategory.setTenantId(tenantId); + flwCategoryMapper.insert(flowCategory); + List defIds = StreamUtils.toList(flowDefinitions, FlowDefinition::getId); + List flowNodes = flowNodeMapper.selectList(new LambdaQueryWrapper().in(FlowNode::getDefinitionId, defIds)); + List flowSkips = flowSkipMapper.selectList(new LambdaQueryWrapper().in(FlowSkip::getDefinitionId, defIds)); + for (FlowDefinition definition : flowDefinitions) { + FlowDefinition flowDefinition = BeanUtil.toBean(definition, FlowDefinition.class); + flowDefinition.setId(null); + flowDefinition.setTenantId(tenantId); + flowDefinition.setIsPublish(0); + flowDefinition.setCategory(String.valueOf(flowCategory.getCategoryId())); + int insert = flowDefinitionMapper.insert(flowDefinition); + if (insert <= 0) { + log.info("同步流程定义【{}】失败!", definition.getFlowCode()); + continue; + } + log.info("同步流程定义【{}】成功!", definition.getFlowCode()); + Long definitionId = flowDefinition.getId(); + if (CollUtil.isNotEmpty(flowNodes)) { + List nodes = StreamUtils.filter(flowNodes, node -> node.getDefinitionId().equals(definition.getId())); + if (CollUtil.isNotEmpty(nodes)) { + List flowNodeList = BeanUtil.copyToList(nodes, FlowNode.class); + flowNodeList.forEach(e -> { + e.setId(null); + e.setDefinitionId(definitionId); + e.setTenantId(tenantId); + e.setPermissionFlag(null); + }); + flowNodeMapper.insertOrUpdate(flowNodeList); + } + } + if (CollUtil.isNotEmpty(flowSkips)) { + List skips = StreamUtils.filter(flowSkips, skip -> skip.getDefinitionId().equals(definition.getId())); + if (CollUtil.isNotEmpty(skips)) { + List flowSkipList = BeanUtil.copyToList(skips, FlowSkip.class); + flowSkipList.forEach(e -> { + e.setId(null); + e.setDefinitionId(definitionId); + e.setTenantId(tenantId); + }); + flowSkipMapper.insertOrUpdate(flowSkipList); + } + } + } + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java new file mode 100644 index 0000000..db8ab71 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -0,0 +1,451 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.warm.flow.core.FlowEngine; +import org.dromara.warm.flow.core.constant.ExceptionCons; +import org.dromara.warm.flow.core.dto.FlowParams; +import org.dromara.warm.flow.core.entity.Definition; +import org.dromara.warm.flow.core.entity.Instance; +import org.dromara.warm.flow.core.entity.Task; +import org.dromara.warm.flow.core.enums.NodeType; +import org.dromara.warm.flow.core.service.ChartService; +import org.dromara.warm.flow.core.service.DefService; +import org.dromara.warm.flow.core.service.InsService; +import org.dromara.warm.flow.core.service.TaskService; +import org.dromara.warm.flow.orm.entity.FlowHisTask; +import org.dromara.warm.flow.orm.entity.FlowInstance; +import org.dromara.warm.flow.orm.entity.FlowTask; +import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; +import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.TaskStatusEnum; +import org.dromara.workflow.domain.bo.FlowCancelBo; +import org.dromara.workflow.domain.bo.FlowInstanceBo; +import org.dromara.workflow.domain.bo.FlowInvalidBo; +import org.dromara.workflow.domain.vo.FlowHisTaskVo; +import org.dromara.workflow.domain.vo.FlowInstanceVo; +import org.dromara.workflow.domain.vo.FlowVariableVo; +import org.dromara.workflow.handler.FlowProcessEventHandler; +import org.dromara.workflow.mapper.FlwCategoryMapper; +import org.dromara.workflow.mapper.FlwInstanceMapper; +import org.dromara.workflow.service.IFlwInstanceService; +import org.dromara.workflow.service.IFlwTaskService; +import org.dromara.workflow.utils.WorkflowUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 流程实例 服务层实现 + * + * @author may + */ +@ConditionalOnEnable +@Slf4j +@RequiredArgsConstructor +@Service +public class FlwInstanceServiceImpl implements IFlwInstanceService { + + private final InsService insService; + private final DefService defService; + private final ChartService chartService; + private final TaskService taskService; + private final FlowHisTaskMapper flowHisTaskMapper; + private final FlowInstanceMapper flowInstanceMapper; + private final FlowProcessEventHandler flowProcessEventHandler; + private final IFlwTaskService flwTaskService; + private final FlwInstanceMapper flwInstanceMapper; + private final FlwCategoryMapper flwCategoryMapper; + + /** + * 分页查询正在运行的流程实例 + * + * @param flowInstanceBo 流程实例 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo selectRunningInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(flowInstanceBo); + queryWrapper.in("fi.flow_status", BusinessStatusEnum.runningStatus()); + Page page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper); + return TableDataInfo.build(page); + } + + /** + * 分页查询已结束的流程实例 + * + * @param flowInstanceBo 流程实例 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo selectFinishInstanceList(FlowInstanceBo flowInstanceBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(flowInstanceBo); + queryWrapper.in("fi.flow_status", BusinessStatusEnum.finishStatus()); + Page page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper); + return TableDataInfo.build(page); + } + + /** + * 根据业务id查询流程实例详细信息 + * + * @param businessId 业务id + * @return 结果 + */ + @Override + public FlowInstanceVo queryByBusinessId(Long businessId) { + FlowInstance instance = this.selectInstByBusinessId(String.valueOf(businessId)); + FlowInstanceVo instanceVo = BeanUtil.toBean(instance, FlowInstanceVo.class); + Definition definition = defService.getById(instanceVo.getDefinitionId()); + instanceVo.setFlowName(definition.getFlowName()); + instanceVo.setFlowCode(definition.getFlowCode()); + instanceVo.setVersion(definition.getVersion()); + instanceVo.setFormCustom(definition.getFormCustom()); + instanceVo.setFormPath(definition.getFormPath()); + instanceVo.setCategory(definition.getCategory()); + return instanceVo; + } + + /** + * 通用查询条件 + * + * @param flowInstanceBo 查询条件 + * @return 查询条件构造方法 + */ + private QueryWrapper buildQueryWrapper(FlowInstanceBo flowInstanceBo) { + QueryWrapper queryWrapper = Wrappers.query(); + queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getNodeName()), "fi.node_name", flowInstanceBo.getNodeName()); + queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowName()), "fd.flow_name", flowInstanceBo.getFlowName()); + queryWrapper.like(StringUtils.isNotBlank(flowInstanceBo.getFlowCode()), "fd.flow_code", flowInstanceBo.getFlowCode()); + if (StringUtils.isNotBlank(flowInstanceBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowInstanceBo.getCategory())); + queryWrapper.in("fd.category", StreamUtils.toList(categoryIds, Convert::toStr)); + } + queryWrapper.eq(StringUtils.isNotBlank(flowInstanceBo.getBusinessId()), "fi.business_id", flowInstanceBo.getBusinessId()); + queryWrapper.in(CollUtil.isNotEmpty(flowInstanceBo.getCreateByIds()), "fi.create_by", flowInstanceBo.getCreateByIds()); + queryWrapper.eq("fi.del_flag", "0"); + queryWrapper.orderByDesc("fi.create_time"); + return queryWrapper; + } + + /** + * 根据业务id查询流程实例 + * + * @param businessId 业务id + */ + @Override + public FlowInstance selectInstByBusinessId(String businessId) { + return flowInstanceMapper.selectOne(new LambdaQueryWrapper().eq(FlowInstance::getBusinessId, businessId)); + } + + /** + * 按照实例id查询流程实例 + * + * @param instanceId 实例id + */ + @Override + public FlowInstance selectInstById(Long instanceId) { + return flowInstanceMapper.selectById(instanceId); + } + + /** + * 按照实例id查询流程实例 + * + * @param instanceIds 实例id + */ + @Override + public List selectInstListByIdList(List instanceIds) { + return flowInstanceMapper.selectByIds(instanceIds); + } + + /** + * 按照业务id删除流程实例 + * + * @param businessIds 业务id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deleteByBusinessIds(List businessIds) { + List flowInstances = flowInstanceMapper.selectList(new LambdaQueryWrapper().in(FlowInstance::getBusinessId, businessIds)); + if (CollUtil.isEmpty(flowInstances)) { + log.warn("未找到对应的流程实例信息,无法执行删除操作。"); + return false; + } + return insService.remove(StreamUtils.toList(flowInstances, FlowInstance::getId)); + } + + /** + * 按照实例id删除流程实例 + * + * @param instanceIds 实例id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean deleteByInstanceIds(List instanceIds) { + // 获取实例信息 + List instances = insService.getByIds(instanceIds); + if (CollUtil.isEmpty(instances)) { + log.warn("未找到对应的流程实例信息,无法执行删除操作。"); + return false; + } + // 获取定义信息 + Map definitionMap = defService.getByIds( + StreamUtils.toList(instances, Instance::getDefinitionId) + ).stream().collect(Collectors.toMap(Definition::getId, definition -> definition)); + + // 逐一触发删除事件 + instances.forEach(instance -> { + Definition definition = definitionMap.get(instance.getDefinitionId()); + if (ObjectUtil.isNull(definition)) { + log.warn("实例 ID: {} 对应的流程定义信息未找到,跳过删除事件触发。", instance.getId()); + return; + } + flowProcessEventHandler.processDeleteHandler(definition.getFlowCode(), instance.getBusinessId()); + }); + + // 删除实例 + return insService.remove(instanceIds); + } + + /** + * 撤销流程 + * + * @param bo 参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean cancelProcessApply(FlowCancelBo bo) { + try { + Instance instance = selectInstByBusinessId(bo.getBusinessId()); + if (instance == null) { + throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); + } + Definition definition = defService.getById(instance.getDefinitionId()); + if (definition == null) { + throw new ServiceException(ExceptionCons.NOT_FOUNT_DEF); + } + String message = bo.getMessage(); + BusinessStatusEnum.checkCancelStatus(instance.getFlowStatus()); + String applyNodeCode = WorkflowUtils.applyNodeCode(definition.getId()); + //撤销 + WorkflowUtils.backTask(message, instance.getId(), applyNodeCode, BusinessStatusEnum.CANCEL.getStatus(), BusinessStatusEnum.CANCEL.getStatus()); + //判断或签节点是否有多个,只保留一个 + List currentTaskList = taskService.list(FlowEngine.newTask().setInstanceId(instance.getId())); + if (CollUtil.isNotEmpty(currentTaskList)) { + if (currentTaskList.size() > 1) { + currentTaskList.remove(0); + WorkflowUtils.deleteRunTask(StreamUtils.toList(currentTaskList, Task::getId)); + } + } + + } catch (Exception e) { + log.error("撤销失败: {}", e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + return true; + } + + /** + * 获取当前登陆人发起的流程实例 + * + * @param instanceBo 流程实例 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo selectCurrentInstanceList(FlowInstanceBo instanceBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(instanceBo); + queryWrapper.eq("fi.create_by", LoginHelper.getUserIdStr()); + Page page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper); + return TableDataInfo.build(page); + } + + /** + * 获取流程图,流程记录 + * + * @param businessId 业务id + */ + @Override + public Map flowImage(String businessId) { + FlowInstance flowInstance = this.selectInstByBusinessId(businessId); + if (ObjectUtil.isNull(flowInstance)) { + throw new ServiceException(ExceptionCons.NOT_FOUNT_INSTANCE); + } + Long instanceId = flowInstance.getId(); + //运行中的任务 + List list = new ArrayList<>(); + List flowTaskList = flwTaskService.selectByInstId(instanceId); + if (CollUtil.isNotEmpty(flowTaskList)) { + List flowHisTaskVos = BeanUtil.copyToList(flowTaskList, FlowHisTaskVo.class); + for (FlowHisTaskVo flowHisTaskVo : flowHisTaskVos) { + flowHisTaskVo.setFlowStatus(TaskStatusEnum.WAITING.getStatus()); + flowHisTaskVo.setUpdateTime(null); + flowHisTaskVo.setRunDuration(null); + List allUser = flwTaskService.currentTaskAllUser(flowHisTaskVo.getId()); + if (CollUtil.isNotEmpty(allUser)) { + String join = StreamUtils.join(allUser, e -> String.valueOf(e.getUserId())); + flowHisTaskVo.setApprover(join); + } + if (BusinessStatusEnum.isDraftOrCancelOrBack(flowInstance.getFlowStatus())) { + flowHisTaskVo.setApprover(LoginHelper.getUserIdStr()); + flowHisTaskVo.setApproveName(LoginHelper.getLoginUser().getNickname()); + } + } + list.addAll(flowHisTaskVos); + } + //历史任务 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(FlowHisTask::getInstanceId, instanceId); + wrapper.eq(FlowHisTask::getNodeType, NodeType.BETWEEN.getKey()); + wrapper.orderByDesc(FlowHisTask::getCreateTime).orderByDesc(FlowHisTask::getUpdateTime); + List flowHisTasks = flowHisTaskMapper.selectList(wrapper); + if (CollUtil.isNotEmpty(flowHisTasks)) { + list.addAll(BeanUtil.copyToList(flowHisTasks, FlowHisTaskVo.class)); + } + String flowChart = chartService.chartIns(instanceId); + return Map.of("list", list, "image", flowChart); + } + + /** + * 按照实例id更新状态 + * + * @param instanceId 实例id + * @param status 状态 + */ + @Override + public void updateStatus(Long instanceId, String status) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.set(FlowInstance::getFlowStatus, status); + wrapper.eq(FlowInstance::getId, instanceId); + flowInstanceMapper.update(wrapper); + } + + /** + * 获取流程变量 + * + * @param instanceId 实例id + */ + @Override + public Map instanceVariable(Long instanceId) { + Map map = new HashMap<>(); + FlowInstance flowInstance = flowInstanceMapper.selectById(instanceId); + Map variableMap = flowInstance.getVariableMap(); + List list = new ArrayList<>(); + if (CollUtil.isNotEmpty(variableMap)) { + for (Map.Entry entry : variableMap.entrySet()) { + FlowVariableVo flowVariableVo = new FlowVariableVo(); + flowVariableVo.setKey(entry.getKey()); + flowVariableVo.setValue(entry.getValue().toString()); + list.add(flowVariableVo); + } + } + map.put("variableList", list); + map.put("variable", flowInstance.getVariable()); + return map; + } + + /** + * 设置流程变量 + * + * @param instanceId 实例id + * @param variable 流程变量 + */ + @Override + public void setVariable(Long instanceId, Map variable) { + Instance instance = insService.getById(instanceId); + if (instance != null) { + taskService.mergeVariable(instance, variable); + } + } + + /** + * 按任务id查询实例 + * + * @param taskId 任务id + */ + @Override + public FlowInstance selectByTaskId(Long taskId) { + Task task = taskService.getById(taskId); + if (task == null) { + FlowHisTask flowHisTask = flwTaskService.selectHisTaskById(taskId); + if (flowHisTask != null) { + return this.selectInstById(flowHisTask.getInstanceId()); + } + } else { + return this.selectInstById(task.getInstanceId()); + } + return null; + } + + /** + * 按任务id查询实例 + * + * @param taskIdList 任务id + */ + @Override + public List selectByTaskIdList(List taskIdList) { + if (CollUtil.isEmpty(taskIdList)) { + return Collections.emptyList(); + } + Set instanceIds = new HashSet<>(); + List flowTaskList = flwTaskService.selectByIdList(taskIdList); + for (FlowTask flowTask : flowTaskList) { + instanceIds.add(flowTask.getInstanceId()); + } + List flowHisTaskList = flwTaskService.selectHisTaskByIdList(taskIdList); + for (FlowHisTask flowHisTask : flowHisTaskList) { + instanceIds.add(flowHisTask.getInstanceId()); + } + if (!instanceIds.isEmpty()) { + return this.selectInstListByIdList(new ArrayList<>(instanceIds)); + } + return Collections.emptyList(); + } + + /** + * 作废流程 + * + * @param bo 参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean processInvalid(FlowInvalidBo bo) { + try { + Instance instance = insService.getById(bo.getId()); + if (instance != null) { + BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); + } + List flowTaskList = flwTaskService.selectByInstId(bo.getId()); + for (FlowTask flowTask : flowTaskList) { + FlowParams flowParams = new FlowParams(); + flowParams.message(bo.getComment()); + flowParams.flowStatus(BusinessStatusEnum.INVALID.getStatus()) + .hisStatus(TaskStatusEnum.INVALID.getStatus()); + flowParams.ignore(true); + taskService.termination(flowTask.getId(), flowParams); + } + return true; + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java new file mode 100644 index 0000000..5877bb5 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.java @@ -0,0 +1,165 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.dto.DeptDTO; +import org.dromara.common.core.domain.dto.TaskAssigneeDTO; +import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.domain.model.TaskAssigneeBody; +import org.dromara.common.core.enums.FormatsType; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.DeptService; +import org.dromara.common.core.service.TaskAssigneeService; +import org.dromara.common.core.service.UserService; +import org.dromara.common.core.utils.DateUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.warm.flow.ui.dto.HandlerFunDto; +import org.dromara.warm.flow.ui.dto.HandlerQuery; +import org.dromara.warm.flow.ui.dto.TreeFunDto; +import org.dromara.warm.flow.ui.service.HandlerSelectService; +import org.dromara.warm.flow.ui.vo.HandlerSelectVo; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.TaskAssigneeEnum; +import org.dromara.workflow.service.IFlwTaskAssigneeService; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +/** + * 流程设计器-获取办理人权限设置列表 + * + * @author AprilWind + */ +@ConditionalOnEnable +@Slf4j +@RequiredArgsConstructor +@Service +public class FlwTaskAssigneeServiceImpl implements IFlwTaskAssigneeService, HandlerSelectService { + + private static final String DEFAULT_GROUP_NAME = "默认分组"; + private final TaskAssigneeService taskAssigneeService; + private final UserService userService; + private final DeptService deptService; + + /** + * 获取办理人权限设置列表tabs页签 + * + * @return tabs页签 + */ + @Override + public List getHandlerType() { + return TaskAssigneeEnum.getAssigneeTypeList(); + } + + /** + * 获取办理列表, 同时构建左侧部门树状结构 + * + * @param query 查询条件 + * @return HandlerSelectVo + */ + @Override + public HandlerSelectVo getHandlerSelect(HandlerQuery query) { + // 获取任务办理类型 + TaskAssigneeEnum type = TaskAssigneeEnum.fromDesc(query.getHandlerType()); + // 转换查询条件为 TaskAssigneeBody + TaskAssigneeBody taskQuery = BeanUtil.toBean(query, TaskAssigneeBody.class); + + // 统一查询并构建业务数据 + TaskAssigneeDTO dto = fetchTaskAssigneeData(type, taskQuery); + List depts = fetchDeptData(type); + + return getHandlerSelectVo(buildHandlerData(dto, type), buildDeptTree(depts)); + } + + /** + * 根据任务办理类型查询对应的数据 + */ + private TaskAssigneeDTO fetchTaskAssigneeData(TaskAssigneeEnum type, TaskAssigneeBody taskQuery) { + return switch (type) { + case USER -> taskAssigneeService.selectUsersByTaskAssigneeList(taskQuery); + case ROLE -> taskAssigneeService.selectRolesByTaskAssigneeList(taskQuery); + case DEPT -> taskAssigneeService.selectDeptsByTaskAssigneeList(taskQuery); + case POST -> taskAssigneeService.selectPostsByTaskAssigneeList(taskQuery); + default -> throw new ServiceException("Unsupported handler type"); + }; + } + + /** + * 根据任务办理类型获取部门数据 + */ + private List fetchDeptData(TaskAssigneeEnum type) { + if (type == TaskAssigneeEnum.USER || type == TaskAssigneeEnum.DEPT || type == TaskAssigneeEnum.POST) { + return deptService.selectDeptsByList(); + } + return new ArrayList<>(); + } + + /** + * 构建部门树状结构 + */ + private TreeFunDto buildDeptTree(List depts) { + return new TreeFunDto<>(depts) + .setId(dept -> String.valueOf(dept.getDeptId())) + .setName(DeptDTO::getDeptName) + .setParentId(dept -> String.valueOf(dept.getParentId())); + } + + /** + * 构建任务办理人数据 + */ + private HandlerFunDto buildHandlerData(TaskAssigneeDTO dto, TaskAssigneeEnum type) { + return new HandlerFunDto<>(dto.getList(), dto.getTotal()) + .setStorageId(assignee -> type.getCode() + assignee.getStorageId()) + .setHandlerCode(assignee -> StringUtils.blankToDefault(assignee.getHandlerCode(), "无")) + .setHandlerName(assignee -> StringUtils.blankToDefault(assignee.getHandlerName(), "无")) + .setGroupName(assignee -> StringUtils.defaultIfBlank( + Optional.ofNullable(assignee.getGroupName()) + .map(deptService::selectDeptNameByIds) + .orElse(DEFAULT_GROUP_NAME), DEFAULT_GROUP_NAME)) + .setCreateTime(assignee -> DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_HH_MM_SS, assignee.getCreateTime())); + } + + /** + * 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表 + * + * @param storageId 包含分配类型和ID的字符串(例如 "user:123" 或 "role:456") + * @return 与分配类型和ID匹配的用户列表,如果格式无效则返回空列表 + */ + @Override + public List fetchUsersByStorageId(String storageId) { + List list = new ArrayList<>(); + for (String str : storageId.split(StrUtil.COMMA)) { + String[] parts = str.split(StrUtil.COLON, 2); + if (parts.length < 2) { + list.addAll(getUsersByType(TaskAssigneeEnum.USER, List.of(Long.valueOf(parts[0])))); + } else { + list.addAll(getUsersByType(TaskAssigneeEnum.fromCode(parts[0] + StrUtil.COLON), List.of(Long.valueOf(parts[1])))); + } + } + return list; + } + + /** + * 根据指定的任务分配类型(TaskAssigneeEnum)和 ID 列表,获取对应的用户信息列表 + * + * @param type 任务分配类型,表示用户、角色、部门或其他(TaskAssigneeEnum 枚举值) + * @param ids 与指定分配类型关联的 ID 列表(例如用户ID、角色ID、部门ID等) + * @return 返回包含用户信息的列表。如果类型为用户(USER),则通过用户ID列表查询; + * 如果类型为角色(ROLE),则通过角色ID列表查询; + * 如果类型为部门(DEPT),则通过部门ID列表查询; + * 如果类型为岗位(POST)或无法识别的类型,则返回空列表 + */ + private List getUsersByType(TaskAssigneeEnum type, List ids) { + return switch (type) { + case USER -> userService.selectListByIds(ids); + case ROLE -> userService.selectUsersByRoleIds(ids); + case DEPT -> userService.selectUsersByDeptIds(ids); + case POST -> userService.selectUsersByPostIds(ids); + }; + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java new file mode 100644 index 0000000..21a54d7 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/FlwTaskServiceImpl.java @@ -0,0 +1,687 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.dto.StartProcessReturnDTO; +import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.service.UserService; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.ValidatorUtils; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.warm.flow.core.dto.FlowParams; +import org.dromara.warm.flow.core.entity.*; +import org.dromara.warm.flow.core.enums.NodeType; +import org.dromara.warm.flow.core.enums.SkipType; +import org.dromara.warm.flow.core.service.*; +import org.dromara.warm.flow.orm.entity.*; +import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; +import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; +import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.common.enums.TaskAssigneeType; +import org.dromara.workflow.common.enums.TaskStatusEnum; +import org.dromara.workflow.domain.bo.*; +import org.dromara.workflow.domain.vo.FlowHisTaskVo; +import org.dromara.workflow.domain.vo.FlowTaskVo; +import org.dromara.workflow.handler.FlowProcessEventHandler; +import org.dromara.workflow.handler.WorkflowPermissionHandler; +import org.dromara.workflow.mapper.FlwCategoryMapper; +import org.dromara.workflow.mapper.FlwTaskMapper; +import org.dromara.workflow.service.IFlwTaskService; +import org.dromara.workflow.utils.WorkflowUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +import static org.dromara.workflow.common.constant.FlowConstant.*; + +/** + * 任务 服务层实现 + * + * @author may + */ +@ConditionalOnEnable +@Slf4j +@RequiredArgsConstructor +@Service +public class FlwTaskServiceImpl implements IFlwTaskService { + + private final TaskService taskService; + private final InsService insService; + private final DefService defService; + private final HisTaskService hisTaskService; + private final NodeService nodeService; + private final FlowInstanceMapper flowInstanceMapper; + private final FlowTaskMapper flowTaskMapper; + private final FlowHisTaskMapper flowHisTaskMapper; + private final IdentifierGenerator identifierGenerator; + private final FlowProcessEventHandler flowProcessEventHandler; + private final UserService userService; + private final FlwTaskMapper flwTaskMapper; + private final FlwCategoryMapper flwCategoryMapper; + + /** + * 启动任务 + * + * @param startProcessBo 启动流程参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public StartProcessReturnDTO startWorkFlow(StartProcessBo startProcessBo) { + String businessId = startProcessBo.getBusinessId(); + if (StringUtils.isBlank(businessId)) { + throw new ServiceException("启动工作流时必须包含业务ID"); + } + // 启动流程实例(提交申请) + Map variables = startProcessBo.getVariables(); + // 流程发起人 + variables.put(INITIATOR, LoginHelper.getUserIdStr()); + // 业务id + variables.put(BUSINESS_ID, businessId); + FlowInstance flowInstance = flowInstanceMapper.selectOne(new LambdaQueryWrapper<>(FlowInstance.class) + .eq(FlowInstance::getBusinessId, businessId)); + if (ObjectUtil.isNotNull(flowInstance)) { + BusinessStatusEnum.checkStartStatus(flowInstance.getFlowStatus()); + List taskList = taskService.list(new FlowTask().setInstanceId(flowInstance.getId())); + StartProcessReturnDTO dto = new StartProcessReturnDTO(); + dto.setProcessInstanceId(taskList.get(0).getInstanceId()); + dto.setTaskId(taskList.get(0).getId()); + return dto; + } + FlowParams flowParams = new FlowParams(); + flowParams.flowCode(startProcessBo.getFlowCode()); + flowParams.variable(startProcessBo.getVariables()); + flowParams.flowStatus(BusinessStatusEnum.DRAFT.getStatus()); + Instance instance; + try { + instance = insService.start(businessId, flowParams); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } + // 申请人执行流程 + List taskList = taskService.list(new FlowTask().setInstanceId(instance.getId())); + if (taskList.size() > 1) { + throw new ServiceException("请检查流程第一个环节是否为申请人!"); + } + StartProcessReturnDTO dto = new StartProcessReturnDTO(); + dto.setProcessInstanceId(instance.getId()); + dto.setTaskId(taskList.get(0).getId()); + return dto; + } + + /** + * 办理任务 + * + * @param completeTaskBo 办理任务参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean completeTask(CompleteTaskBo completeTaskBo) { + try { + // 获取任务ID并查询对应的流程任务和实例信息 + Long taskId = completeTaskBo.getTaskId(); + List messageType = completeTaskBo.getMessageType(); + String notice = completeTaskBo.getNotice(); + // 获取抄送人 + List flowCopyList = completeTaskBo.getFlowCopyList(); + FlowTask flowTask = flowTaskMapper.selectById(taskId); + if (ObjectUtil.isNull(flowTask)) { + throw new ServiceException("流程任务不存在或任务已审批!"); + } + Instance ins = insService.getById(flowTask.getInstanceId()); + // 获取流程定义信息 + Definition definition = defService.getById(flowTask.getDefinitionId()); + // 检查流程状态是否为草稿、已撤销或已退回状态,若是则执行流程提交监听 + if (BusinessStatusEnum.isDraftOrCancelOrBack(ins.getFlowStatus())) { + flowProcessEventHandler.processHandler(definition.getFlowCode(), ins.getBusinessId(), ins.getFlowStatus(), null, true); + } + // 构建流程参数,包括变量、跳转类型、消息、处理人、权限等信息 + FlowParams flowParams = new FlowParams(); + flowParams.variable(completeTaskBo.getVariables()); + flowParams.skipType(SkipType.PASS.getKey()); + flowParams.message(completeTaskBo.getMessage()); + flowParams.flowStatus(BusinessStatusEnum.WAITING.getStatus()).hisStatus(TaskStatusEnum.PASS.getStatus()); + + flowParams.hisTaskExt(completeTaskBo.getFileId()); + // 执行任务跳转,并根据返回的处理人设置下一步处理人 + Instance instance = taskService.skip(taskId, flowParams); + this.setHandler(instance, flowTask, flowCopyList); + // 消息通知 + WorkflowUtils.sendMessage(definition.getFlowName(), ins.getId(), messageType, notice); + return true; + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + } + + /** + * 设置办理人 + * + * @param instance 实例 + * @param task (当前任务)未办理的任务 + * @param flowCopyList 抄送人 + */ + private void setHandler(Instance instance, FlowTask task, List flowCopyList) { + if (ObjectUtil.isNull(instance)) { + return; + } + // 添加抄送人 + this.setCopy(task, flowCopyList); + // 根据流程实例ID查询所有关联的任务 + List flowTasks = this.selectByInstId(instance.getId()); + if (CollUtil.isEmpty(flowTasks)) { + return; + } + List taskIdList = StreamUtils.toList(flowTasks, FlowTask::getId); + // 获取与当前任务关联的用户列表 + List associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(taskIdList); + if (CollUtil.isEmpty(associatedUsers)) { + return; + } + List userList = new ArrayList<>(); + // 遍历任务列表,处理每个任务的办理人 + for (FlowTask flowTask : flowTasks) { + List users = StreamUtils.filter(associatedUsers, user -> Objects.equals(user.getAssociated(), flowTask.getId())); + if (CollUtil.isNotEmpty(users)) { + userList.addAll(WorkflowUtils.buildUser(users, flowTask.getId())); + } + } + // 批量删除现有任务的办理人记录 + WorkflowUtils.getFlowUserService().deleteByTaskIds(taskIdList); + // 确保要保存的 userList 不为空 + if (CollUtil.isEmpty(userList)) { + return; + } + WorkflowUtils.getFlowUserService().saveBatch(userList); + } + + /** + * 添加抄送人 + * + * @param task 任务信息 + * @param flowCopyList 抄送人 + */ + public void setCopy(FlowTask task, List flowCopyList) { + if (CollUtil.isEmpty(flowCopyList)) { + return; + } + // 添加抄送人记录 + FlowHisTask flowHisTask = flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class).eq(FlowHisTask::getTaskId, task.getId())).get(0); + FlowNode flowNode = new FlowNode(); + flowNode.setNodeCode(flowHisTask.getTargetNodeCode()); + flowNode.setNodeName(flowHisTask.getTargetNodeName()); + //生成新的任务id + long taskId = identifierGenerator.nextId(null).longValue(); + task.setId(taskId); + task.setNodeName("【抄送】" + task.getNodeName()); + Date updateTime = new Date(flowHisTask.getUpdateTime().getTime() - 1000); + FlowParams flowParams = FlowParams.build(); + flowParams.skipType(SkipType.NONE.getKey()); + flowParams.hisStatus(TaskStatusEnum.COPY.getStatus()); + flowParams.message("【抄送给】" + StreamUtils.join(flowCopyList, FlowCopyBo::getUserName)); + HisTask hisTask = hisTaskService.setSkipHisTask(task, flowNode, flowParams); + hisTask.setCreateTime(updateTime); + hisTask.setUpdateTime(updateTime); + hisTaskService.save(hisTask); + List userList = flowCopyList.stream() + .map(flowCopy -> { + FlowUser flowUser = new FlowUser(); + flowUser.setType(TaskAssigneeType.COPY.getCode()); + flowUser.setProcessedBy(String.valueOf(flowCopy.getUserId())); + flowUser.setAssociated(taskId); + return flowUser; + }).collect(Collectors.toList()); + // 批量保存抄送人员 + WorkflowUtils.getFlowUserService().saveBatch(userList); + } + + /** + * 查询当前用户的待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); + queryWrapper.in("t.processed_by", SpringUtils.getBean(WorkflowPermissionHandler.class).permissions()); + queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); + Page page = this.getFlowTaskVoPage(pageQuery, queryWrapper); + return TableDataInfo.build(page); + } + + /** + * 查询当前用户的已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); + queryWrapper.in("t.approver", LoginHelper.getUserIdStr()); + queryWrapper.orderByDesc("t.create_time").orderByDesc("t.update_time"); + Page page = flwTaskMapper.getListFinishTask(pageQuery.build(), queryWrapper); + return TableDataInfo.build(page); + } + + /** + * 查询待办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo pageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); + Page page = getFlowTaskVoPage(pageQuery, queryWrapper); + return TableDataInfo.build(page); + } + + private Page getFlowTaskVoPage(PageQuery pageQuery, QueryWrapper queryWrapper) { + Page page = flwTaskMapper.getListRunTask(pageQuery.build(), queryWrapper); + List records = page.getRecords(); + if (CollUtil.isNotEmpty(records)) { + List taskIds = StreamUtils.toList(records, FlowTaskVo::getId); + Map> listMap = currentTaskAllUser(taskIds); + records.forEach(t -> { + List userList = listMap.getOrDefault(t.getId(), Collections.emptyList()); + if (CollUtil.isNotEmpty(userList)) { + t.setAssigneeIds(StreamUtils.join(userList, e -> String.valueOf(e.getUserId()))); + t.setAssigneeNames(StreamUtils.join(userList, UserDTO::getNickName)); + } + }); + } + return page; + } + + /** + * 查询已办任务 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo pageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + Page page = flwTaskMapper.getListFinishTask(pageQuery.build(), queryWrapper); + return TableDataInfo.build(page); + } + + /** + * 查询当前用户的抄送 + * + * @param flowTaskBo 参数 + * @param pageQuery 分页 + */ + @Override + public TableDataInfo pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { + QueryWrapper queryWrapper = buildQueryWrapper(flowTaskBo); + queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); + Page page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper); + return TableDataInfo.build(page); + } + + private QueryWrapper buildQueryWrapper(FlowTaskBo flowTaskBo) { + QueryWrapper wrapper = Wrappers.query(); + wrapper.like(StringUtils.isNotBlank(flowTaskBo.getNodeName()), "t.node_name", flowTaskBo.getNodeName()); + wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName()); + wrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode()); + wrapper.in(CollUtil.isNotEmpty(flowTaskBo.getCreateByIds()), "t.create_by", flowTaskBo.getCreateByIds()); + if (StringUtils.isNotBlank(flowTaskBo.getCategory())) { + List categoryIds = flwCategoryMapper.selectCategoryIdsByParentId(Convert.toLong(flowTaskBo.getCategory())); + wrapper.in("t.category", StreamUtils.toList(categoryIds, Convert::toStr)); + } + wrapper.orderByDesc("t.create_time"); + return wrapper; + } + + /** + * 驳回任务 + * + * @param bo 参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean backProcess(BackProcessBo bo) { + try { + Long taskId = bo.getTaskId(); + String notice = bo.getNotice(); + List messageType = bo.getMessageType(); + String message = bo.getMessage(); + FlowTask task = flowTaskMapper.selectById(taskId); + if (ObjectUtil.isNull(task)) { + throw new ServiceException("任务不存在!"); + } + Instance inst = insService.getById(task.getInstanceId()); + BusinessStatusEnum.checkBackStatus(inst.getFlowStatus()); + Long definitionId = task.getDefinitionId(); + Definition definition = defService.getById(definitionId); + String applyNodeCode = WorkflowUtils.applyNodeCode(definitionId); + FlowParams flowParams = FlowParams.build(); + flowParams.nodeCode(bo.getNodeCode()); + flowParams.message(message); + flowParams.skipType(SkipType.REJECT.getKey()); + flowParams.flowStatus(applyNodeCode.equals(bo.getNodeCode()) ? TaskStatusEnum.BACK.getStatus() : TaskStatusEnum.WAITING.getStatus()) + .hisStatus(TaskStatusEnum.BACK.getStatus()); + flowParams.hisTaskExt(bo.getFileId()); + taskService.skip(task.getId(), flowParams); + + Instance instance = insService.getById(inst.getId()); + this.setHandler(instance, task, null); + // 消息通知 + WorkflowUtils.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice); + return true; + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + } + + /** + * 获取可驳回的前置节点 + * + * @param definitionId 流程定义id + * @param nowNodeCode 当前节点 + */ + @Override + public List getBackTaskNode(Long definitionId, String nowNodeCode) { + List nodeCodes = nodeService.getByNodeCodes(Collections.singletonList(nowNodeCode), definitionId); + if (!CollUtil.isNotEmpty(nodeCodes)) { + return nodeCodes; + } + //判断是否配置了固定驳回节点 + Node node = nodeCodes.get(0); + if (StringUtils.isNotBlank(node.getAnyNodeSkip())) { + return nodeService.getByNodeCodes(Collections.singletonList(node.getAnyNodeSkip()), definitionId); + } + //获取可驳回的前置节点 + List nodes = nodeService.previousNodeList(definitionId, nowNodeCode); + if (CollUtil.isNotEmpty(nodes)) { + return StreamUtils.filter(nodes, e -> NodeType.BETWEEN.getKey().equals(e.getNodeType())); + } + return nodes; + } + + /** + * 终止任务 + * + * @param bo 参数 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean terminationTask(FlowTerminationBo bo) { + try { + Long taskId = bo.getTaskId(); + Task task = taskService.getById(taskId); + if (task == null) { + throw new ServiceException("任务不存在!"); + } + Instance instance = insService.getById(task.getInstanceId()); + if (ObjectUtil.isNotNull(instance)) { + BusinessStatusEnum.checkInvalidStatus(instance.getFlowStatus()); + } + FlowParams flowParams = new FlowParams(); + flowParams.message(bo.getComment()); + flowParams.flowStatus(BusinessStatusEnum.TERMINATION.getStatus()) + .hisStatus(TaskStatusEnum.TERMINATION.getStatus()); + taskService.termination(taskId, flowParams); + return true; + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + } + + /** + * 按照任务id查询任务 + * + * @param taskIdList 任务id + */ + @Override + public List selectByIdList(List taskIdList) { + return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) + .in(FlowTask::getId, taskIdList)); + } + + /** + * 按照任务id查询任务 + * + * @param taskId 任务id + */ + @Override + public FlowTaskVo selectById(Long taskId) { + Task task = taskService.getById(taskId); + if (ObjectUtil.isNull(task)) { + return null; + } + FlowTaskVo flowTaskVo = BeanUtil.toBean(task, FlowTaskVo.class); + Instance instance = insService.getById(task.getInstanceId()); + Definition definition = defService.getById(task.getDefinitionId()); + flowTaskVo.setFlowStatus(instance.getFlowStatus()); + flowTaskVo.setVersion(definition.getVersion()); + flowTaskVo.setFlowCode(definition.getFlowCode()); + flowTaskVo.setFlowName(definition.getFlowName()); + flowTaskVo.setBusinessId(instance.getBusinessId()); + List nodeList = nodeService.getByNodeCodes(Collections.singletonList(flowTaskVo.getNodeCode()), instance.getDefinitionId()); + if (CollUtil.isNotEmpty(nodeList)) { + Node node = nodeList.get(0); + flowTaskVo.setNodeRatio(node.getNodeRatio()); + } + return flowTaskVo; + } + + /** + * 按照任务id查询任务 + * + * @param taskIdList 任务id + * @return 结果 + */ + @Override + public List selectHisTaskByIdList(List taskIdList) { + return flowHisTaskMapper.selectList(new LambdaQueryWrapper<>(FlowHisTask.class) + .in(FlowHisTask::getId, taskIdList)); + } + + /** + * 按照任务id查询任务 + * + * @param taskId 任务id + * @return 结果 + */ + @Override + public FlowHisTask selectHisTaskById(Long taskId) { + return flowHisTaskMapper.selectOne(new LambdaQueryWrapper<>(FlowHisTask.class) + .eq(FlowHisTask::getId, taskId)); + } + + /** + * 按照实例id查询任务 + * + * @param instanceIdList 流程实例id + */ + @Override + public List selectByInstIdList(List instanceIdList) { + return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) + .in(FlowTask::getInstanceId, instanceIdList)); + } + + /** + * 按照实例id查询任务 + * + * @param instanceId 流程实例id + */ + @Override + public List selectByInstId(Long instanceId) { + return flowTaskMapper.selectList(new LambdaQueryWrapper<>(FlowTask.class) + .eq(FlowTask::getInstanceId, instanceId)); + } + + /** + * 任务操作 + * + * @param bo 参数 + * @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean taskOperation(TaskOperationBo bo, String taskOperation) { + FlowParams flowParams = new FlowParams(); + flowParams.message(bo.getMessage()); + if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) { + flowParams.ignore(true); + } + + // 根据操作类型构建 FlowParams + switch (taskOperation) { + case DELEGATE_TASK, TRANSFER_TASK -> { + ValidatorUtils.validate(bo, AddGroup.class); + flowParams.addHandlers(Collections.singletonList(bo.getUserId())); + } + case ADD_SIGNATURE -> { + ValidatorUtils.validate(bo, EditGroup.class); + flowParams.addHandlers(bo.getUserIds()); + } + case REDUCTION_SIGNATURE -> { + ValidatorUtils.validate(bo, EditGroup.class); + flowParams.reductionHandlers(bo.getUserIds()); + } + default -> { + log.error("Invalid operation type:{} ", taskOperation); + throw new ServiceException("Invalid operation type " + taskOperation); + } + } + + Long taskId = bo.getTaskId(); + FlowTaskVo flowTaskVo = selectById(taskId); + if ("addSignature".equals(taskOperation) || "reductionSignature".equals(taskOperation)) { + if (flowTaskVo.getNodeRatio().compareTo(BigDecimal.ZERO) == 0) { + throw new ServiceException(flowTaskVo.getNodeName() + "不是会签节点!"); + } + } + // 设置任务状态并执行对应的任务操作 + switch (taskOperation) { + //委派任务 + case DELEGATE_TASK -> { + flowParams.hisStatus(TaskStatusEnum.DEPUTE.getStatus()); + return taskService.depute(taskId, flowParams); + } + //转办任务 + case TRANSFER_TASK -> { + flowParams.hisStatus(TaskStatusEnum.TRANSFER.getStatus()); + return taskService.transfer(taskId, flowParams); + } + //加签,增加办理人 + case ADD_SIGNATURE -> { + flowParams.hisStatus(TaskStatusEnum.SIGN.getStatus()); + return taskService.addSignature(taskId, flowParams); + } + //减签,减少办理人 + case REDUCTION_SIGNATURE -> { + flowParams.hisStatus(TaskStatusEnum.SIGN_OFF.getStatus()); + return taskService.reductionSignature(taskId, flowParams); + } + default -> { + log.error("Invalid operation type:{} ", taskOperation); + throw new ServiceException("Invalid operation type " + taskOperation); + } + } + } + + /** + * 修改任务办理人(此方法将会批量修改所有任务的办理人) + * + * @param taskIdList 任务id + * @param userId 用户id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateAssignee(List taskIdList, String userId) { + if (CollUtil.isEmpty(taskIdList)) { + return false; + } + try { + List flowTasks = this.selectByIdList(taskIdList); + // 批量删除现有任务的办理人记录 + if (CollUtil.isNotEmpty(flowTasks)) { + WorkflowUtils.getFlowUserService().deleteByTaskIds(StreamUtils.toList(flowTasks, FlowTask::getId)); + List userList = flowTasks.stream() + .map(flowTask -> { + FlowUser flowUser = new FlowUser(); + flowUser.setType(TaskAssigneeType.APPROVER.getCode()); + flowUser.setProcessedBy(userId); + flowUser.setAssociated(flowTask.getId()); + return flowUser; + }) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(userList)) { + WorkflowUtils.getFlowUserService().saveBatch(userList); + } + } + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new ServiceException(e.getMessage()); + } + return true; + } + + /** + * 获取任务所有办理人 + * + * @param taskIdList 任务id + */ + @Override + public Map> currentTaskAllUser(List taskIdList) { + Map> map = new HashMap<>(); + // 获取与当前任务关联的用户列表 + List associatedUsers = WorkflowUtils.getFlowUserService().getByAssociateds(taskIdList); + Map> listMap = StreamUtils.groupByKey(associatedUsers, User::getAssociated); + for (Map.Entry> entry : listMap.entrySet()) { + List value = entry.getValue(); + if (CollUtil.isNotEmpty(value)) { + List userDTOS = userService.selectListByIds(StreamUtils.toList(value, e -> Long.valueOf(e.getProcessedBy()))); + map.put(entry.getKey(), userDTOS); + } + } + return map; + } + + /** + * 获取当前任务的所有办理人 + * + * @param taskId 任务id + */ + @Override + public List currentTaskAllUser(Long taskId) { + // 获取与当前任务关联的用户列表 + List userList = WorkflowUtils.getFlowUserService().getByAssociateds(Collections.singletonList(taskId)); + if (CollUtil.isEmpty(userList)) { + return Collections.emptyList(); + } + return userService.selectListByIds(StreamUtils.toList(userList, e -> Long.valueOf(e.getProcessedBy()))); + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java new file mode 100644 index 0000000..2c43173 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -0,0 +1,188 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessDeleteEvent; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.service.WorkflowService; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.TestLeave; +import org.dromara.workflow.domain.bo.TestLeaveBo; +import org.dromara.workflow.domain.vo.TestLeaveVo; +import org.dromara.workflow.mapper.TestLeaveMapper; +import org.dromara.workflow.service.ITestLeaveService; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +/** + * 请假Service业务层处理 + * + * @author may + * @date 2023-07-21 + */ +@ConditionalOnEnable +@RequiredArgsConstructor +@Service +@Slf4j +public class TestLeaveServiceImpl implements ITestLeaveService { + + private final TestLeaveMapper baseMapper; + private final WorkflowService workflowService; + + /** + * 查询请假 + */ + @Override + public TestLeaveVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 查询请假列表 + */ + @Override + public TableDataInfo queryPageList(TestLeaveBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询请假列表 + */ + @Override + public List queryList(TestLeaveBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(TestLeaveBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getLeaveType()), TestLeave::getLeaveType, bo.getLeaveType()); + lqw.ge(bo.getStartLeaveDays() != null, TestLeave::getLeaveDays, bo.getStartLeaveDays()); + lqw.le(bo.getEndLeaveDays() != null, TestLeave::getLeaveDays, bo.getEndLeaveDays()); + lqw.orderByDesc(BaseEntity::getCreateTime); + return lqw; + } + + /** + * 新增请假 + */ + @Override + public TestLeaveVo insertByBo(TestLeaveBo bo) { + long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true); + // 截止日期也算一天 + bo.setLeaveDays((int) day + 1); + TestLeave add = MapstructUtils.convert(bo, TestLeave.class); + if (StringUtils.isBlank(add.getStatus())) { + add.setStatus(BusinessStatusEnum.DRAFT.getStatus()); + } + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return MapstructUtils.convert(add, TestLeaveVo.class); + } + + /** + * 修改请假 + */ + @Override + public TestLeaveVo updateByBo(TestLeaveBo bo) { + TestLeave update = MapstructUtils.convert(bo, TestLeave.class); + baseMapper.updateById(update); + return MapstructUtils.convert(update, TestLeaveVo.class); + } + + /** + * 批量删除请假 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(List ids) { + workflowService.deleteInstance(ids); + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等) + * 正常使用只需#processEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processEvent 参数 + */ + @EventListener(condition = "#processEvent.flowCode.startsWith('leave')") + public void processHandler(ProcessEvent processEvent) { + log.info("当前任务执行了{}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessId())); + testLeave.setStatus(processEvent.getStatus()); + // 用于例如审批附件 审批意见等 存储到业务表内 自行根据业务实现存储流程 + Map params = processEvent.getParams(); + if (MapUtil.isNotEmpty(params)) { + // 历史任务扩展(通常为附件) + String hisTaskExt = Convert.toStr(params.get("hisTaskExt")); + // 办理人 + String handler = Convert.toStr(params.get("handler")); + // 办理意见 + String message = Convert.toStr(params.get("message")); + } + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } + baseMapper.updateById(testLeave); + } + + /** + * 执行办理任务监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processTaskEvent 参数 + */ + @EventListener(condition = "#processTaskEvent.flowCode.startsWith('leave')") + public void processTaskHandler(ProcessTaskEvent processTaskEvent) { + log.info("当前任务执行了{}", processTaskEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessId())); + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + baseMapper.updateById(testLeave); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.startsWith('leave')") + public void processDeleteHandler(ProcessDeleteEvent processDeleteEvent) { + log.info("监听删除流程事件,当前任务执行了{}", processDeleteEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processDeleteEvent.getBusinessId())); + if (ObjectUtil.isNull(testLeave)) { + return; + } + baseMapper.deleteById(testLeave.getId()); + } + +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java new file mode 100644 index 0000000..f8a20b5 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/WorkflowServiceImpl.java @@ -0,0 +1,132 @@ +package org.dromara.workflow.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.dto.CompleteTaskDTO; +import org.dromara.common.core.domain.dto.StartProcessDTO; +import org.dromara.common.core.domain.dto.StartProcessReturnDTO; +import org.dromara.common.core.service.WorkflowService; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.warm.flow.orm.entity.FlowInstance; +import org.dromara.workflow.common.ConditionalOnEnable; +import org.dromara.workflow.domain.bo.CompleteTaskBo; +import org.dromara.workflow.domain.bo.StartProcessBo; +import org.dromara.workflow.service.IFlwDefinitionService; +import org.dromara.workflow.service.IFlwInstanceService; +import org.dromara.workflow.service.IFlwTaskService; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * 通用 工作流服务实现 + * + * @author may + */ +@ConditionalOnEnable +@RequiredArgsConstructor +@Service +public class WorkflowServiceImpl implements WorkflowService { + + private final IFlwInstanceService flwInstanceService; + private final IFlwDefinitionService flwDefinitionService; + private final IFlwTaskService flwTaskService; + + /** + * 删除流程实例 + * + * @param businessIds 业务id + * @return 结果 + */ + @Override + public boolean deleteInstance(List businessIds) { + return flwInstanceService.deleteByBusinessIds(businessIds); + } + + /** + * 获取当前流程状态 + * + * @param taskId 任务id + */ + @Override + public String getBusinessStatusByTaskId(Long taskId) { + FlowInstance flowInstance = flwInstanceService.selectByTaskId(taskId); + return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY; + } + + /** + * 获取当前流程状态 + * + * @param businessId 业务id + */ + @Override + public String getBusinessStatus(String businessId) { + FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId); + return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getFlowStatus() : StringUtils.EMPTY; + } + + /** + * 设置流程变量 + * + * @param instanceId 流程实例id + * @param variables 流程变量 + */ + @Override + public void setVariable(Long instanceId, Map variables) { + flwInstanceService.setVariable(instanceId, variables); + } + + /** + * 获取流程变量 + * + * @param instanceId 流程实例id + */ + @Override + public Map instanceVariable(Long instanceId) { + return flwInstanceService.instanceVariable(instanceId); + } + + /** + * 按照业务id查询流程实例id + * + * @param businessId 业务id + * @return 结果 + */ + @Override + public Long getInstanceIdByBusinessId(String businessId) { + FlowInstance flowInstance = flwInstanceService.selectInstByBusinessId(businessId); + return ObjectUtil.isNotNull(flowInstance) ? flowInstance.getId() : null; + } + + /** + * 新增租户流程定义 + * + * @param tenantId 租户id + */ + @Override + public void syncDef(String tenantId) { + flwDefinitionService.syncDef(tenantId); + } + + /** + * 启动流程 + * + * @param startProcess 参数 + */ + @Override + public StartProcessReturnDTO startWorkFlow(StartProcessDTO startProcess) { + return flwTaskService.startWorkFlow(BeanUtil.toBean(startProcess, StartProcessBo.class)); + } + + /** + * 办理任务 + * + * @param completeTask 参数 + */ + @Override + public boolean completeTask(CompleteTaskDTO completeTask) { + return flwTaskService.completeTask(BeanUtil.toBean(completeTask, CompleteTaskBo.class)); + } +} diff --git a/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java b/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java new file mode 100644 index 0000000..e48ffc8 --- /dev/null +++ b/ruoyi-workflow/src/main/java/org/dromara/workflow/utils/WorkflowUtils.java @@ -0,0 +1,206 @@ +package org.dromara.workflow.utils; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.dromara.common.core.domain.dto.UserDTO; +import org.dromara.common.core.utils.SpringUtils; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mail.utils.MailUtils; +import org.dromara.common.sse.dto.SseMessageDto; +import org.dromara.common.sse.utils.SseMessageUtils; +import org.dromara.warm.flow.core.constant.ExceptionCons; +import org.dromara.warm.flow.core.dto.FlowParams; +import org.dromara.warm.flow.core.entity.Node; +import org.dromara.warm.flow.core.entity.Task; +import org.dromara.warm.flow.core.entity.User; +import org.dromara.warm.flow.core.enums.NodeType; +import org.dromara.warm.flow.core.enums.SkipType; +import org.dromara.warm.flow.core.service.NodeService; +import org.dromara.warm.flow.core.service.TaskService; +import org.dromara.warm.flow.core.service.UserService; +import org.dromara.warm.flow.core.utils.AssertUtil; +import org.dromara.warm.flow.orm.entity.FlowNode; +import org.dromara.warm.flow.orm.entity.FlowTask; +import org.dromara.warm.flow.orm.entity.FlowUser; +import org.dromara.warm.flow.orm.mapper.FlowNodeMapper; +import org.dromara.warm.flow.orm.mapper.FlowTaskMapper; +import org.dromara.workflow.common.enums.MessageTypeEnum; +import org.dromara.workflow.service.IFlwTaskAssigneeService; +import org.dromara.workflow.service.IFlwTaskService; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + + +/** + * 工作流工具 + * + * @author may + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class WorkflowUtils { + + private static final IFlwTaskAssigneeService TASK_ASSIGNEE_SERVICE = SpringUtils.getBean(IFlwTaskAssigneeService.class); + private static final IFlwTaskService FLW_TASK_SERVICE = SpringUtils.getBean(IFlwTaskService.class); + private static final FlowNodeMapper FLOW_NODE_MAPPER = SpringUtils.getBean(FlowNodeMapper.class); + private static final FlowTaskMapper FLOW_TASK_MAPPER = SpringUtils.getBean(FlowTaskMapper.class); + private static final UserService USER_SERVICE = SpringUtils.getBean(UserService.class); + private static final TaskService TASK_SERVICE = SpringUtils.getBean(TaskService.class); + private static final NodeService NODE_SERVICE = SpringUtils.getBean(NodeService.class); + + /** + * 获取工作流用户service + */ + public static UserService getFlowUserService() { + return USER_SERVICE; + } + + /** + * 构建工作流用户 + * + * @param userList 办理用户 + * @param taskId 任务ID + * @return 用户 + */ + public static Set buildUser(List userList, Long taskId) { + if (CollUtil.isEmpty(userList)) { + return Set.of(); + } + Set list = new HashSet<>(); + Set processedBySet = new HashSet<>(); + for (User user : userList) { + // 根据 processedBy 前缀判断处理人类型,分别获取用户列表 + List users = TASK_ASSIGNEE_SERVICE.fetchUsersByStorageId(user.getProcessedBy()); + // 转换为 FlowUser 并添加到结果集合 + if (CollUtil.isNotEmpty(users)) { + users.forEach(dto -> { + String processedBy = String.valueOf(dto.getUserId()); + if (!processedBySet.contains(processedBy)) { + FlowUser flowUser = new FlowUser(); + flowUser.setType(user.getType()); + flowUser.setProcessedBy(processedBy); + flowUser.setAssociated(taskId); + list.add(flowUser); + processedBySet.add(processedBy); + } + }); + } + } + return list; + } + + /** + * 发送消息 + * + * @param flowName 流程定义名称 + * @param messageType 消息类型 + * @param message 消息内容,为空则发送默认配置的消息内容 + */ + public static void sendMessage(String flowName, Long instId, List messageType, String message) { + List userList = new ArrayList<>(); + List list = FLW_TASK_SERVICE.selectByInstId(instId); + if (StringUtils.isBlank(message)) { + message = "有新的【" + flowName + "】单据已经提交至您,请您及时处理。"; + } + for (Task task : list) { + List users = FLW_TASK_SERVICE.currentTaskAllUser(task.getId()); + if (CollUtil.isNotEmpty(users)) { + userList.addAll(users); + } + } + if (CollUtil.isNotEmpty(userList)) { + for (String code : messageType) { + MessageTypeEnum messageTypeEnum = MessageTypeEnum.getByCode(code); + if (ObjectUtil.isNotEmpty(messageTypeEnum)) { + switch (messageTypeEnum) { + case SYSTEM_MESSAGE: + SseMessageDto dto = new SseMessageDto(); + dto.setUserIds(StreamUtils.toList(userList, UserDTO::getUserId).stream().distinct().collect(Collectors.toList())); + dto.setMessage(message); + SseMessageUtils.publishMessage(dto); + break; + case EMAIL_MESSAGE: + MailUtils.sendText(StreamUtils.join(userList, UserDTO::getEmail), "单据审批提醒", message); + break; + case SMS_MESSAGE: + //todo 短信发送 + break; + default: + throw new IllegalStateException("Unexpected value: " + messageTypeEnum); + } + } + } + } + } + + /** + * 驳回 + * + * @param message 审批意见 + * @param instanceId 流程实例id + * @param targetNodeCode 目标节点 + * @param flowStatus 流程状态 + * @param flowHisStatus 节点操作状态 + */ + public static void backTask(String message, Long instanceId, String targetNodeCode, String flowStatus, String flowHisStatus) { + List list = FLW_TASK_SERVICE.selectByInstId(instanceId); + if (CollUtil.isNotEmpty(list)) { + List tasks = StreamUtils.filter(list, e -> e.getNodeCode().equals(targetNodeCode)); + if (list.size() == tasks.size()) { + return; + } + } + for (FlowTask task : list) { + List userList = FLW_TASK_SERVICE.currentTaskAllUser(task.getId()); + FlowParams flowParams = FlowParams.build(); + flowParams.nodeCode(targetNodeCode); + flowParams.message(message); + flowParams.skipType(SkipType.PASS.getKey()); + flowParams.flowStatus(flowStatus).hisStatus(flowHisStatus); + flowParams.ignore(true); + //解决会签没权限问题 + if (CollUtil.isNotEmpty(userList)) { + flowParams.handler(userList.get(0).getUserId().toString()); + } + TASK_SERVICE.skip(task.getId(), flowParams); + } + //解决会签多人审批问题 + backTask(message, instanceId, targetNodeCode, flowStatus, flowHisStatus); + } + + /** + * 申请人节点编码 + * + * @param definitionId 流程定义id + * @return 申请人节点编码 + */ + public static String applyNodeCode(Long definitionId) { + //获取已发布的流程节点 + List flowNodes = FLOW_NODE_MAPPER.selectList(new LambdaQueryWrapper().eq(FlowNode::getDefinitionId, definitionId)); + AssertUtil.isTrue(CollUtil.isEmpty(flowNodes), ExceptionCons.NOT_PUBLISH_NODE); + Node startNode = flowNodes.stream().filter(t -> NodeType.isStart(t.getNodeType())).findFirst().orElse(null); + AssertUtil.isNull(startNode, ExceptionCons.LOST_START_NODE); + Node nextNode = NODE_SERVICE.getNextNode(definitionId, startNode.getNodeCode(), null, SkipType.PASS.getKey()); + return nextNode.getNodeCode(); + } + + /** + * 删除运行中的任务 + * + * @param taskIds 任务id + */ + public static void deleteRunTask(List taskIds) { + if (CollUtil.isEmpty(taskIds)) { + return; + } + USER_SERVICE.deleteByTaskIds(taskIds); + FLOW_TASK_MAPPER.deleteByIds(taskIds); + } +} diff --git a/ruoyi-workflow/src/main/resources/mapper/package-info.md b/ruoyi-workflow/src/main/resources/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-workflow/src/main/resources/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml b/ruoyi-workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml new file mode 100644 index 0000000..e9918f1 --- /dev/null +++ b/ruoyi-workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml b/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml new file mode 100644 index 0000000..30e2267 --- /dev/null +++ b/ruoyi-workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml b/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml new file mode 100644 index 0000000..73e4ec7 --- /dev/null +++ b/ruoyi-workflow/src/main/resources/mapper/workflow/FlwTaskMapper.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + diff --git a/ruoyi-workflow/src/main/resources/mapper/workflow/TestLeaveMapper.xml b/ruoyi-workflow/src/main/resources/mapper/workflow/TestLeaveMapper.xml new file mode 100644 index 0000000..d52f6b0 --- /dev/null +++ b/ruoyi-workflow/src/main/resources/mapper/workflow/TestLeaveMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-workflow/target/classes/META-INF/mps/autoMapper b/ruoyi-workflow/target/classes/META-INF/mps/autoMapper new file mode 100644 index 0000000..a8ba0c9 --- /dev/null +++ b/ruoyi-workflow/target/classes/META-INF/mps/autoMapper @@ -0,0 +1,4 @@ +org.dromara.workflow.domain.vo.FlowCategoryVo +org.dromara.workflow.domain.vo.TestLeaveVo +org.dromara.workflow.domain.bo.TestLeaveBo +org.dromara.workflow.domain.bo.FlowCategoryBo \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/io/github/linpeilie/AutoMapperConfig__1.class b/ruoyi-workflow/target/classes/io/github/linpeilie/AutoMapperConfig__1.class new file mode 100644 index 0000000..e54d47e Binary files /dev/null and b/ruoyi-workflow/target/classes/io/github/linpeilie/AutoMapperConfig__1.class differ diff --git a/ruoyi-workflow/target/classes/io/github/linpeilie/ConverterMapperAdapter__1.class b/ruoyi-workflow/target/classes/io/github/linpeilie/ConverterMapperAdapter__1.class new file mode 100644 index 0000000..78df314 Binary files /dev/null and b/ruoyi-workflow/target/classes/io/github/linpeilie/ConverterMapperAdapter__1.class differ diff --git a/ruoyi-workflow/target/classes/mapper/package-info.md b/ruoyi-workflow/target/classes/mapper/package-info.md new file mode 100644 index 0000000..c938b1e --- /dev/null +++ b/ruoyi-workflow/target/classes/mapper/package-info.md @@ -0,0 +1,3 @@ +java包使用 `.` 分割 resource 目录使用 `/` 分割 +
+此文件目的 防止文件夹粘连找不到 `xml` 文件 \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/mapper/workflow/FlwCategoryMapper.xml b/ruoyi-workflow/target/classes/mapper/workflow/FlwCategoryMapper.xml new file mode 100644 index 0000000..e9918f1 --- /dev/null +++ b/ruoyi-workflow/target/classes/mapper/workflow/FlwCategoryMapper.xml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/ruoyi-workflow/target/classes/mapper/workflow/FlwInstanceMapper.xml b/ruoyi-workflow/target/classes/mapper/workflow/FlwInstanceMapper.xml new file mode 100644 index 0000000..30e2267 --- /dev/null +++ b/ruoyi-workflow/target/classes/mapper/workflow/FlwInstanceMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/ruoyi-workflow/target/classes/mapper/workflow/FlwTaskMapper.xml b/ruoyi-workflow/target/classes/mapper/workflow/FlwTaskMapper.xml new file mode 100644 index 0000000..73e4ec7 --- /dev/null +++ b/ruoyi-workflow/target/classes/mapper/workflow/FlwTaskMapper.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + diff --git a/ruoyi-workflow/target/classes/mapper/workflow/TestLeaveMapper.xml b/ruoyi-workflow/target/classes/mapper/workflow/TestLeaveMapper.xml new file mode 100644 index 0000000..d52f6b0 --- /dev/null +++ b/ruoyi-workflow/target/classes/mapper/workflow/TestLeaveMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/ConditionalOnEnable.class b/ruoyi-workflow/target/classes/org/dromara/workflow/common/ConditionalOnEnable.class new file mode 100644 index 0000000..e47d3b3 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/common/ConditionalOnEnable.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/constant/FlowConstant.class b/ruoyi-workflow/target/classes/org/dromara/workflow/common/constant/FlowConstant.class new file mode 100644 index 0000000..2ab706c Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/common/constant/FlowConstant.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/constant/FlowConstant__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/common/constant/FlowConstant__Javadoc.json new file mode 100644 index 0000000..9e6505c --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/common/constant/FlowConstant__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 工作流常量\n\n @author may\n","fields":[{"name":"INITIATOR","doc":" 流程发起人\n"},{"name":"PROCESS_INSTANCE_ID","doc":" 流程实例id\n"},{"name":"BUSINESS_ID","doc":" 业务id\n"},{"name":"TASK_ID","doc":" 任务id\n"},{"name":"DELEGATE_TASK","doc":" 委托\n"},{"name":"TRANSFER_TASK","doc":" 转办\n"},{"name":"ADD_SIGNATURE","doc":" 加签\n"},{"name":"REDUCTION_SIGNATURE","doc":" 减签\n"},{"name":"CATEGORY_ID_TO_NAME","doc":" 流程分类Id转名称\n"},{"name":"FLOW_CATEGORY_NAME","doc":" 流程分类名称\n"},{"name":"FLOW_CATEGORY_ID","doc":" 默认租户OA申请分类id\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/MessageTypeEnum.class b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/MessageTypeEnum.class new file mode 100644 index 0000000..3f4225b Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/MessageTypeEnum.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/MessageTypeEnum__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/MessageTypeEnum__Javadoc.json new file mode 100644 index 0000000..63afe2d --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/MessageTypeEnum__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 消息类型枚举\n\n @author may\n","fields":[],"enumConstants":[{"name":"SYSTEM_MESSAGE","doc":" 站内信\n"},{"name":"EMAIL_MESSAGE","doc":" 邮箱\n"},{"name":"SMS_MESSAGE","doc":" 短信\n"}],"methods":[{"name":"getByCode","paramTypes":["java.lang.String"],"doc":" 根据消息类型 code 获取 MessageTypeEnum\n\n @param code 消息类型code\n @return MessageTypeEnum\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeEnum.class b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeEnum.class new file mode 100644 index 0000000..ae408f9 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeEnum.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeEnum__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeEnum__Javadoc.json new file mode 100644 index 0000000..50f9943 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeEnum__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务分配人枚举\n\n @author AprilWind\n","fields":[],"enumConstants":[{"name":"USER","doc":" 用户\n"},{"name":"ROLE","doc":" 角色\n"},{"name":"DEPT","doc":" 部门\n"},{"name":"POST","doc":" 岗位\n"}],"methods":[{"name":"fromDesc","paramTypes":["java.lang.String"],"doc":" 根据描述获取对应的枚举类型\n

\n 通过传入描述,查找并返回匹配的枚举项。如果未找到匹配项,会抛出 {@link ServiceException}。\n

\n\n @param desc 描述,用于匹配对应的枚举项\n @return TaskAssigneeEnum 返回对应的枚举类型\n @throws ServiceException 如果未找到匹配的枚举项\n"},{"name":"fromCode","paramTypes":["java.lang.String"],"doc":" 根据代码获取对应的枚举类型\n

\n 通过传入代码,查找并返回匹配的枚举项。如果未找到匹配项,会抛出 {@link ServiceException}。\n

\n\n @param code 代码,用于匹配对应的枚举项\n @return TaskAssigneeEnum 返回对应的枚举类型\n @throws IllegalArgumentException 如果未找到匹配的枚举项\n"},{"name":"getAssigneeTypeList","paramTypes":[],"doc":" 获取所有办理人类型的描述列表\n

\n 获取当前枚举类所有项的描述字段列表,通常用于展示选择项。\n

\n\n @return List 返回所有办理人类型的描述列表\n"},{"name":"getAssigneeCodeList","paramTypes":[],"doc":" 获取所有办理人类型的代码列表\n

\n 获取当前枚举类所有项的代码字段列表,通常用于程序内部逻辑的判断。\n

\n\n @return List 返回所有办理人类型的代码列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeType.class b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeType.class new file mode 100644 index 0000000..363d612 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeType.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeType__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeType__Javadoc.json new file mode 100644 index 0000000..e4087a5 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskAssigneeType__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 人员类型\n\n @author AprilWind\n","fields":[{"name":"code","doc":" 类型\n"},{"name":"description","doc":" 描述\n"}],"enumConstants":[{"name":"APPROVER","doc":" 待办任务的审批人权限\n

该权限表示用户是待办任务的审批人,负责审核任务的执行情况。

\n"},{"name":"TRANSFER","doc":" 待办任务的转办人权限\n

该权限表示用户是待办任务的转办人,负责将任务分配给其他人员。

\n"},{"name":"DELEGATE","doc":" 待办任务的委托人权限\n

该权限表示用户是待办任务的委托人,能够委托其他人代为处理任务。

\n"},{"name":"COPY","doc":" 待办任务的抄送人权限\n

该权限表示用户是待办任务的抄送人,仅接收任务信息的通知,不参与任务的审批或处理。

\n"}],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskStatusEnum.class b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskStatusEnum.class new file mode 100644 index 0000000..3930119 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskStatusEnum.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskStatusEnum__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskStatusEnum__Javadoc.json new file mode 100644 index 0000000..b986b91 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/common/enums/TaskStatusEnum__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务状态枚举\n\n @author may\n","fields":[{"name":"status","doc":" 状态\n"},{"name":"desc","doc":" 描述\n"}],"enumConstants":[{"name":"CANCEL","doc":" 撤销\n"},{"name":"PASS","doc":" 通过\n"},{"name":"WAITING","doc":" 待审核\n"},{"name":"INVALID","doc":" 作废\n"},{"name":"BACK","doc":" 退回\n"},{"name":"TERMINATION","doc":" 终止\n"},{"name":"TRANSFER","doc":" 转办\n"},{"name":"DEPUTE","doc":" 委托\n"},{"name":"COPY","doc":" 抄送\n"},{"name":"SIGN","doc":" 加签\n"},{"name":"SIGN_OFF","doc":" 减签\n"},{"name":"TIMEOUT","doc":" 超时\n"}],"methods":[{"name":"findByStatus","paramTypes":["java.lang.String"],"doc":" 任务业务状态\n\n @param status 状态\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/config/WarmFlowConfig.class b/ruoyi-workflow/target/classes/org/dromara/workflow/config/WarmFlowConfig.class new file mode 100644 index 0000000..c97c4f3 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/config/WarmFlowConfig.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/config/WarmFlowConfig__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/config/WarmFlowConfig__Javadoc.json new file mode 100644 index 0000000..ca6ff73 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/config/WarmFlowConfig__Javadoc.json @@ -0,0 +1 @@ +{"doc":" warmFlow配置\n\n @author may\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwCategoryController.class b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwCategoryController.class new file mode 100644 index 0000000..772c8c3 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwCategoryController.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwCategoryController__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwCategoryController__Javadoc.json new file mode 100644 index 0000000..cafc100 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwCategoryController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 查询流程分类列表\n"},{"name":"export","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出流程分类列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取流程分类详细信息\n\n @param categoryId 主键\n"},{"name":"add","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 新增流程分类\n"},{"name":"edit","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 修改流程分类\n"},{"name":"remove","paramTypes":["java.lang.Long"],"doc":" 删除流程分类\n\n @param categoryId 主键\n"},{"name":"categoryTree","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 获取流程分类树列表\n\n @param categoryBo 流程分类\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwDefinitionController.class b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwDefinitionController.class new file mode 100644 index 0000000..fa9c3bd Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwDefinitionController.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwDefinitionController__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwDefinitionController__Javadoc.json new file mode 100644 index 0000000..057763f --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwDefinitionController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程定义管理 控制层\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询流程定义列表\n\n @param flowDefinition 参数\n @param pageQuery 分页\n"},{"name":"unPublishList","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询未发布的流程定义列表\n\n @param flowDefinition 参数\n @param pageQuery 分页\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取流程定义详细信息\n\n @param id 流程定义id\n"},{"name":"add","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition"],"doc":" 新增流程定义\n\n @param flowDefinition 参数\n"},{"name":"edit","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition"],"doc":" 修改流程定义\n\n @param flowDefinition 参数\n"},{"name":"publish","paramTypes":["java.lang.Long"],"doc":" 发布流程定义\n\n @param id 流程定义id\n"},{"name":"unPublish","paramTypes":["java.lang.Long"],"doc":" 取消发布流程定义\n\n @param id 流程定义id\n"},{"name":"remove","paramTypes":["java.util.List"],"doc":" 删除流程定义\n"},{"name":"copy","paramTypes":["java.lang.Long"],"doc":" 复制流程定义\n\n @param id 流程定义id\n"},{"name":"importDef","paramTypes":["org.springframework.web.multipart.MultipartFile","java.lang.String"],"doc":" 导入流程定义\n\n @param file 文件\n @param category 分类\n"},{"name":"exportDef","paramTypes":["java.lang.Long","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出流程定义\n\n @param id 流程定义id\n @param response 响应\n @throws IOException 异常\n"},{"name":"xmlString","paramTypes":["java.lang.Long"],"doc":" 获取流程定义JSON字符串\n\n @param id 流程定义id\n"},{"name":"active","paramTypes":["java.lang.Long","boolean"],"doc":" 激活/挂起流程定义\n\n @param id 流程定义id\n @param active 激活/挂起\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwInstanceController.class b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwInstanceController.class new file mode 100644 index 0000000..90dd4fa Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwInstanceController.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwInstanceController__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwInstanceController__Javadoc.json new file mode 100644 index 0000000..b3fa247 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwInstanceController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程实例管理 控制层\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"selectRunningInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询正在运行的流程实例列表\n\n @param flowInstanceBo 流程实例\n @param pageQuery 分页\n"},{"name":"selectFinishInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询已结束的流程实例列表\n\n @param flowInstanceBo 流程实例\n @param pageQuery 分页\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 根据业务id查询流程实例详细信息\n\n @param businessId 业务id\n"},{"name":"deleteByBusinessIds","paramTypes":["java.util.List"],"doc":" 按照业务id删除流程实例\n\n @param businessIds 业务id\n"},{"name":"deleteByInstanceIds","paramTypes":["java.util.List"],"doc":" 按照实例id删除流程实例\n\n @param instanceIds 实例id\n"},{"name":"cancelProcessApply","paramTypes":["org.dromara.workflow.domain.bo.FlowCancelBo"],"doc":" 撤销流程\n\n @param bo 参数\n"},{"name":"active","paramTypes":["java.lang.Long","boolean"],"doc":" 激活/挂起流程实例\n\n @param id 流程实例id\n @param active 激活/挂起\n"},{"name":"selectCurrentInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取当前登陆人发起的流程实例\n\n @param flowInstanceBo 参数\n @param pageQuery 分页\n"},{"name":"flowImage","paramTypes":["java.lang.String"],"doc":" 获取流程图,流程记录\n\n @param businessId 业务id\n"},{"name":"instanceVariable","paramTypes":["java.lang.Long"],"doc":" 获取流程变量\n\n @param instanceId 流程实例id\n"},{"name":"invalid","paramTypes":["org.dromara.workflow.domain.bo.FlowInvalidBo"],"doc":" 作废流程\n\n @param bo 参数\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwTaskController.class b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwTaskController.class new file mode 100644 index 0000000..bf51ac9 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwTaskController.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwTaskController__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwTaskController__Javadoc.json new file mode 100644 index 0000000..fd7bb9b --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/FlwTaskController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务管理 控制层\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"startWorkFlow","paramTypes":["org.dromara.workflow.domain.bo.StartProcessBo"],"doc":" 启动任务\n\n @param startProcessBo 启动流程参数\n"},{"name":"completeTask","paramTypes":["org.dromara.workflow.domain.bo.CompleteTaskBo"],"doc":" 办理任务\n\n @param completeTaskBo 办理任务参数\n"},{"name":"pageByTaskWait","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的待办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByTaskFinish","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的已办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByAllTaskWait","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询待办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByAllTaskFinish","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询已办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByTaskCopy","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的抄送\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"getTask","paramTypes":["java.lang.Long"],"doc":" 根据taskId查询代表任务\n\n @param taskId 任务id\n"},{"name":"terminationTask","paramTypes":["org.dromara.workflow.domain.bo.FlowTerminationBo"],"doc":" 终止任务\n\n @param bo 参数\n"},{"name":"taskOperation","paramTypes":["org.dromara.workflow.domain.bo.TaskOperationBo","java.lang.String"],"doc":" 任务操作\n\n @param bo 参数\n @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature\n"},{"name":"updateAssignee","paramTypes":["java.util.List","java.lang.String"],"doc":" 修改任务办理人\n\n @param taskIdList 任务id\n @param userId 办理人id\n"},{"name":"backProcess","paramTypes":["org.dromara.workflow.domain.bo.BackProcessBo"],"doc":" 驳回审批\n\n @param bo 参数\n"},{"name":"getBackTaskNode","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 获取可驳回的前置节点\n\n @param definitionId 流程定义id\n @param nowNodeCode 当前节点\n"},{"name":"currentTaskAllUser","paramTypes":["java.lang.Long"],"doc":" 获取当前任务的所有办理人\n\n @param taskId 任务id\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/TestLeaveController.class b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/TestLeaveController.class new file mode 100644 index 0000000..da84d8a Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/TestLeaveController.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/controller/TestLeaveController__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/TestLeaveController__Javadoc.json new file mode 100644 index 0000000..fb9170d --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/controller/TestLeaveController__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 请假\n\n @author may\n @date 2023-07-21\n","fields":[],"enumConstants":[],"methods":[{"name":"list","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询请假列表\n"},{"name":"export","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出请假列表\n"},{"name":"getInfo","paramTypes":["java.lang.Long"],"doc":" 获取请假详细信息\n\n @param id 主键\n"},{"name":"add","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 新增请假\n"},{"name":"edit","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 修改请假\n"},{"name":"remove","paramTypes":["java.lang.Long[]"],"doc":" 删除请假\n\n @param ids 主键串\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategory.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategory.class new file mode 100644 index 0000000..f230cdf Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategory.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapper.class new file mode 100644 index 0000000..f64ebaa Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapperImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapperImpl.class new file mode 100644 index 0000000..b943a5c Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapperImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategory__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategory__Javadoc.json new file mode 100644 index 0000000..faf3850 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/FlowCategory__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类对象 wf_category\n\n @author may\n @date 2023-06-27\n","fields":[{"name":"categoryId","doc":" 流程分类ID\n"},{"name":"parentId","doc":" 父流程分类id\n"},{"name":"ancestors","doc":" 祖级列表\n"},{"name":"categoryName","doc":" 流程分类名称\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"delFlag","doc":" 删除标志(0代表存在 1代表删除)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeave.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeave.class new file mode 100644 index 0000000..954575e Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeave.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapper.class new file mode 100644 index 0000000..7b8835d Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapperImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapperImpl.class new file mode 100644 index 0000000..be2e26a Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapperImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeave__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeave__Javadoc.json new file mode 100644 index 0000000..43d440f --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/TestLeave__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 请假对象 test_leave\n\n @author may\n @date 2023-07-21\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"leaveType","doc":" 请假类型\n"},{"name":"startDate","doc":" 开始时间\n"},{"name":"endDate","doc":" 结束时间\n"},{"name":"leaveDays","doc":" 请假天数\n"},{"name":"remark","doc":" 请假原因\n"},{"name":"status","doc":" 状态\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/BackProcessBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/BackProcessBo.class new file mode 100644 index 0000000..c422e6e Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/BackProcessBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/BackProcessBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/BackProcessBo__Javadoc.json new file mode 100644 index 0000000..7653b3e --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/BackProcessBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 驳回参数请求\n\n @author may\n","fields":[{"name":"taskId","doc":" 任务ID\n"},{"name":"fileId","doc":" 附件id\n"},{"name":"messageType","doc":" 消息类型\n"},{"name":"nodeCode","doc":" 驳回的节点id(目前未使用,直接驳回到申请人)\n"},{"name":"message","doc":" 办理意见\n"},{"name":"notice","doc":" 通知\n"},{"name":"variables","doc":" 流程变量\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/CompleteTaskBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/CompleteTaskBo.class new file mode 100644 index 0000000..b8e30bc Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/CompleteTaskBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/CompleteTaskBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/CompleteTaskBo__Javadoc.json new file mode 100644 index 0000000..f6569be --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/CompleteTaskBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 办理任务请求对象\n\n @author may\n","fields":[{"name":"taskId","doc":" 任务id\n"},{"name":"fileId","doc":" 附件id\n"},{"name":"flowCopyList","doc":" 抄送人员\n"},{"name":"messageType","doc":" 消息类型\n"},{"name":"message","doc":" 办理意见\n"},{"name":"notice","doc":" 消息通知\n"},{"name":"variables","doc":" 流程变量\n"},{"name":"ext","doc":" 扩展变量(此处为逗号分隔的ossId)\n @return\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCancelBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCancelBo.class new file mode 100644 index 0000000..e69308a Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCancelBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCancelBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCancelBo__Javadoc.json new file mode 100644 index 0000000..aadef34 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCancelBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 撤销任务请求对象\n\n @author may\n","fields":[{"name":"businessId","doc":" 任务ID\n"},{"name":"message","doc":" 办理意见\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBo.class new file mode 100644 index 0000000..12aad45 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapper.class new file mode 100644 index 0000000..c75f6a4 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapperImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapperImpl.class new file mode 100644 index 0000000..062c0ea Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapperImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBo__Javadoc.json new file mode 100644 index 0000000..f97cf30 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCategoryBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类业务对象 wf_category\n\n @author may\n @date 2023-06-27\n","fields":[{"name":"categoryId","doc":" 流程分类ID\n"},{"name":"parentId","doc":" 父流程分类id\n"},{"name":"categoryName","doc":" 流程分类名称\n"},{"name":"orderNum","doc":" 显示顺序\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCopyBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCopyBo.class new file mode 100644 index 0000000..83786f2 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCopyBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCopyBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCopyBo__Javadoc.json new file mode 100644 index 0000000..e18e987 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowCopyBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 抄送\n\n @author may\n","fields":[{"name":"userId","doc":" 用户id\n"},{"name":"userName","doc":" 用户名称\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInstanceBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInstanceBo.class new file mode 100644 index 0000000..9de88ff Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInstanceBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInstanceBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInstanceBo__Javadoc.json new file mode 100644 index 0000000..d1cf7f6 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInstanceBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程实例请求对象\n\n @author may\n","fields":[{"name":"flowName","doc":" 流程定义名称\n"},{"name":"flowCode","doc":" 流程定义编码\n"},{"name":"startUserId","doc":" 任务发起人\n"},{"name":"businessId","doc":" 业务id\n"},{"name":"category","doc":" 流程分类id\n"},{"name":"nodeName","doc":" 任务名称\n"},{"name":"createByIds","doc":" 申请人Ids\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInvalidBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInvalidBo.class new file mode 100644 index 0000000..38cb44a Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInvalidBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInvalidBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInvalidBo__Javadoc.json new file mode 100644 index 0000000..ee3f3e4 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowInvalidBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 作废请求对象\n\n @author may\n","fields":[{"name":"id","doc":" 流程实例id\n"},{"name":"comment","doc":" 审批意见\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTaskBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTaskBo.class new file mode 100644 index 0000000..30c94b4 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTaskBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTaskBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTaskBo__Javadoc.json new file mode 100644 index 0000000..36f70c1 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTaskBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务请求对象\n\n @author may\n","fields":[{"name":"nodeName","doc":" 任务名称\n"},{"name":"flowName","doc":" 流程定义名称\n"},{"name":"flowCode","doc":" 流程定义编码\n"},{"name":"category","doc":" 流程分类id\n"},{"name":"instanceId","doc":" 流程实例id\n"},{"name":"permissionList","doc":" 权限列表\n"},{"name":"createByIds","doc":" 申请人Ids\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTerminationBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTerminationBo.class new file mode 100644 index 0000000..7dc36c2 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTerminationBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTerminationBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTerminationBo__Javadoc.json new file mode 100644 index 0000000..f5b241b --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/FlowTerminationBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 终止任务请求对象\n\n @author may\n","fields":[{"name":"taskId","doc":" 任务id\n"},{"name":"comment","doc":" 审批意见\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/StartProcessBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/StartProcessBo.class new file mode 100644 index 0000000..cc8abe1 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/StartProcessBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/StartProcessBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/StartProcessBo__Javadoc.json new file mode 100644 index 0000000..e451fa9 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/StartProcessBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 启动流程对象\n\n @author may\n","fields":[{"name":"businessId","doc":" 业务唯一值id\n"},{"name":"flowCode","doc":" 流程定义编码\n"},{"name":"variables","doc":" 流程变量,前端会提交一个元素{'entity': {业务详情数据对象}}\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TaskOperationBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TaskOperationBo.class new file mode 100644 index 0000000..fe162eb Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TaskOperationBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TaskOperationBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TaskOperationBo__Javadoc.json new file mode 100644 index 0000000..df5cd3e --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TaskOperationBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务操作业务对象,用于描述任务委派、转办、加签等操作的必要参数\n 包含了用户ID、任务ID、任务相关的消息、以及加签/减签的用户ID\n\n @author AprilWind\n","fields":[{"name":"userId","doc":" 委派/转办人的用户ID(必填,准对委派/转办人操作)\n"},{"name":"userIds","doc":" 加签/减签人的用户ID列表(必填,针对加签/减签操作)\n"},{"name":"taskId","doc":" 任务ID(必填)\n"},{"name":"message","doc":" 意见或备注信息(可选)\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBo.class new file mode 100644 index 0000000..290abb8 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapper.class new file mode 100644 index 0000000..274958b Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapperImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapperImpl.class new file mode 100644 index 0000000..243b5b5 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapperImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBo__Javadoc.json new file mode 100644 index 0000000..b166d3d --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/bo/TestLeaveBo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 请假业务对象 test_leave\n\n @author may\n @date 2023-07-21\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"leaveType","doc":" 请假类型\n"},{"name":"startDate","doc":" 开始时间\n"},{"name":"endDate","doc":" 结束时间\n"},{"name":"leaveDays","doc":" 请假天数\n"},{"name":"startLeaveDays","doc":" 开始时间\n"},{"name":"endLeaveDays","doc":" 结束时间\n"},{"name":"remark","doc":" 请假原因\n"},{"name":"status","doc":" 状态\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVo.class new file mode 100644 index 0000000..fa8c999 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapper.class new file mode 100644 index 0000000..3f5f52a Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapperImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapperImpl.class new file mode 100644 index 0000000..48354de Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapperImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVo__Javadoc.json new file mode 100644 index 0000000..015539f --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowCategoryVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类视图对象 wf_category\n\n @author may\n @date 2023-06-27\n","fields":[{"name":"categoryId","doc":" 流程分类ID\n"},{"name":"parentId","doc":" 父级id\n"},{"name":"parentName","doc":" 父类别名称\n"},{"name":"ancestors","doc":" 祖级列表\n"},{"name":"categoryName","doc":" 流程分类名称\n"},{"name":"orderNum","doc":" 显示顺序\n"},{"name":"createTime","doc":" 创建时间\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowDefinitionVo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowDefinitionVo.class new file mode 100644 index 0000000..1f31d9b Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowDefinitionVo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowDefinitionVo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowDefinitionVo__Javadoc.json new file mode 100644 index 0000000..b2ca213 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowDefinitionVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程定义视图\n\n @author may\n","fields":[{"name":"createTime","doc":" 创建时间\n"},{"name":"updateTime","doc":" 更新时间\n"},{"name":"tenantId","doc":" 租户ID\n"},{"name":"delFlag","doc":" 删除标记\n"},{"name":"flowCode","doc":" 流程定义编码\n"},{"name":"flowName","doc":" 流程定义名称\n"},{"name":"category","doc":" 流程分类id\n"},{"name":"categoryName","doc":" 流程分类名称\n"},{"name":"version","doc":" 流程版本\n"},{"name":"isPublish","doc":" 是否发布(0未发布 1已发布 9失效)\n"},{"name":"formCustom","doc":" 审批表单是否自定义(Y是 N否)\n"},{"name":"formPath","doc":" 审批表单路径\n"},{"name":"activityStatus","doc":" 流程激活状态(0挂起 1激活)\n"},{"name":"listenerType","doc":" 监听器类型\n"},{"name":"listenerPath","doc":" 监听器路径\n"},{"name":"ext","doc":" 扩展字段,预留给业务系统使用\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowHisTaskVo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowHisTaskVo.class new file mode 100644 index 0000000..c27727d Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowHisTaskVo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowHisTaskVo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowHisTaskVo__Javadoc.json new file mode 100644 index 0000000..ac31010 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowHisTaskVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 历史任务视图\n\n @author may\n","fields":[{"name":"createTime","doc":" 创建时间\n"},{"name":"updateTime","doc":" 更新时间\n"},{"name":"tenantId","doc":" 租户ID\n"},{"name":"delFlag","doc":" 删除标记\n"},{"name":"definitionId","doc":" 对应flow_definition表的id\n"},{"name":"flowName","doc":" 流程定义名称\n"},{"name":"instanceId","doc":" 流程实例表id\n"},{"name":"taskId","doc":" 任务表id\n"},{"name":"cooperateType","doc":" 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)\n"},{"name":"cooperateTypeName","doc":" 协作方式(1审批 2转办 3委派 4会签 5票签 6加签 7减签)\n"},{"name":"businessId","doc":" 业务id\n"},{"name":"nodeCode","doc":" 开始节点编码\n"},{"name":"nodeName","doc":" 开始节点名称\n"},{"name":"nodeType","doc":" 开始节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)\n"},{"name":"targetNodeCode","doc":" 目标节点编码\n"},{"name":"targetNodeName","doc":" 结束节点名称\n"},{"name":"approver","doc":" 审批者\n"},{"name":"approveName","doc":" 审批者\n"},{"name":"collaborator","doc":" 协作人(只有转办、会签、票签、委派)\n"},{"name":"permissionList","doc":" 权限标识 permissionFlag的list形式\n"},{"name":"skipType","doc":" 跳转类型(PASS通过 REJECT退回 NONE无动作)\n"},{"name":"flowStatus","doc":" 流程状态\n"},{"name":"flowTaskStatus","doc":" 任务状态\n"},{"name":"flowStatusName","doc":" 流程状态\n"},{"name":"message","doc":" 审批意见\n"},{"name":"ext","doc":" 业务详情 存业务类的json\n"},{"name":"createBy","doc":" 创建者\n"},{"name":"createByName","doc":" 申请人\n"},{"name":"category","doc":" 流程分类id\n"},{"name":"categoryName","doc":" 流程分类名称\n"},{"name":"formCustom","doc":" 审批表单是否自定义(Y是 N否)\n"},{"name":"formPath","doc":" 审批表单路径\n"},{"name":"flowCode","doc":" 流程定义编码\n"},{"name":"version","doc":" 流程版本号\n"},{"name":"runDuration","doc":" 运行时长\n"}],"enumConstants":[],"methods":[{"name":"setCreateTime","paramTypes":["java.util.Date"],"doc":" 设置创建时间并计算任务运行时长\n\n @param createTime 创建时间\n"},{"name":"setUpdateTime","paramTypes":["java.util.Date"],"doc":" 设置更新时间并计算任务运行时长\n\n @param updateTime 更新时间\n"},{"name":"updateRunDuration","paramTypes":[],"doc":" 更新运行时长\n"},{"name":"setCooperateType","paramTypes":["java.lang.Integer"],"doc":" 设置协作方式,并通过协作方式获取名称\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowInstanceVo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowInstanceVo.class new file mode 100644 index 0000000..3d51038 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowInstanceVo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowInstanceVo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowInstanceVo__Javadoc.json new file mode 100644 index 0000000..7f49ed0 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowInstanceVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程实例视图\n\n @author may\n","fields":[{"name":"createTime","doc":" 创建时间\n"},{"name":"updateTime","doc":" 更新时间\n"},{"name":"tenantId","doc":" 租户ID\n"},{"name":"delFlag","doc":" 删除标记\n"},{"name":"definitionId","doc":" 对应flow_definition表的id\n"},{"name":"flowName","doc":" 流程定义名称\n"},{"name":"flowCode","doc":" 流程定义编码\n"},{"name":"businessId","doc":" 业务id\n"},{"name":"nodeType","doc":" 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)\n"},{"name":"nodeCode","doc":" 流程节点编码 每个流程的nodeCode是唯一的,即definitionId+nodeCode唯一,在数据库层面做了控制\n"},{"name":"nodeName","doc":" 流程节点名称\n"},{"name":"variable","doc":" 流程变量\n"},{"name":"flowStatus","doc":" 流程状态(0待提交 1审批中 2 审批通过 3自动通过 8已完成 9已退回 10失效)\n"},{"name":"flowStatusName","doc":" 流程状态\n"},{"name":"activityStatus","doc":" 流程激活状态(0挂起 1激活)\n"},{"name":"formCustom","doc":" 审批表单是否自定义(Y是 N否)\n"},{"name":"formPath","doc":" 审批表单路径\n"},{"name":"ext","doc":" 扩展字段,预留给业务系统使用\n"},{"name":"version","doc":" 流程定义版本\n"},{"name":"createBy","doc":" 创建者\n"},{"name":"createByName","doc":" 申请人\n"},{"name":"category","doc":" 流程分类id\n"},{"name":"categoryName","doc":" 流程分类名称\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowTaskVo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowTaskVo.class new file mode 100644 index 0000000..935b42d Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowTaskVo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowTaskVo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowTaskVo__Javadoc.json new file mode 100644 index 0000000..66a1c30 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowTaskVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务视图\n\n @author may\n","fields":[{"name":"createTime","doc":" 创建时间\n"},{"name":"updateTime","doc":" 更新时间\n"},{"name":"tenantId","doc":" 租户ID\n"},{"name":"delFlag","doc":" 删除标记\n"},{"name":"definitionId","doc":" 对应flow_definition表的id\n"},{"name":"instanceId","doc":" 流程实例表id\n"},{"name":"flowName","doc":" 流程定义名称\n"},{"name":"businessId","doc":" 业务id\n"},{"name":"nodeCode","doc":" 节点编码\n"},{"name":"nodeName","doc":" 节点名称\n"},{"name":"nodeType","doc":" 节点类型(0开始节点 1中间节点 2结束节点 3互斥网关 4并行网关)\n"},{"name":"permissionList","doc":" 权限标识 permissionFlag的list形式\n"},{"name":"userList","doc":" 流程用户列表\n"},{"name":"formCustom","doc":" 审批表单是否自定义(Y是 N否)\n"},{"name":"formPath","doc":" 审批表单\n"},{"name":"flowCode","doc":" 流程定义编码\n"},{"name":"version","doc":" 流程版本号\n"},{"name":"flowStatus","doc":" 流程状态\n"},{"name":"category","doc":" 流程分类id\n"},{"name":"categoryName","doc":" 流程分类名称\n"},{"name":"flowStatusName","doc":" 流程状态\n"},{"name":"type","doc":" 办理人类型\n"},{"name":"assigneeIds","doc":" 办理人ids\n"},{"name":"assigneeNames","doc":" 办理人名称\n"},{"name":"processedBy","doc":" 抄送人id\n"},{"name":"processedByName","doc":" 抄送人名称\n"},{"name":"nodeRatio","doc":" 流程签署比例值 大于0为票签,会签\n"},{"name":"createBy","doc":" 申请人id\n"},{"name":"createByName","doc":" 申请人名称\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowVariableVo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowVariableVo.class new file mode 100644 index 0000000..13bf138 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowVariableVo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowVariableVo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowVariableVo__Javadoc.json new file mode 100644 index 0000000..7bddab6 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/FlowVariableVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程变量\n\n @author may\n","fields":[{"name":"key","doc":" 变量key\n"},{"name":"value","doc":" 变量值\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVo.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVo.class new file mode 100644 index 0000000..3ee750d Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVo.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapper.class new file mode 100644 index 0000000..bcb0985 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapperImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapperImpl.class new file mode 100644 index 0000000..f27a5b9 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapperImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVo__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVo__Javadoc.json new file mode 100644 index 0000000..24a15a2 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/domain/vo/TestLeaveVo__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 请假视图对象 test_leave\n\n @author may\n @date 2023-07-21\n","fields":[{"name":"id","doc":" 主键\n"},{"name":"leaveType","doc":" 请假类型\n"},{"name":"startDate","doc":" 开始时间\n"},{"name":"endDate","doc":" 结束时间\n"},{"name":"leaveDays","doc":" 请假天数\n"},{"name":"remark","doc":" 备注\n"},{"name":"status","doc":" 状态\n"}],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/handler/FlowProcessEventHandler.class b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/FlowProcessEventHandler.class new file mode 100644 index 0000000..0051772 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/FlowProcessEventHandler.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/handler/FlowProcessEventHandler__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/FlowProcessEventHandler__Javadoc.json new file mode 100644 index 0000000..c9f4672 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/FlowProcessEventHandler__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程监听服务\n\n @author may\n @date 2024-06-02\n","fields":[],"enumConstants":[],"methods":[{"name":"processHandler","paramTypes":["java.lang.String","java.lang.String","java.lang.String","java.util.Map","boolean"],"doc":" 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等)\n\n @param flowCode 流程定义编码\n @param businessId 业务id\n @param status 状态\n @param submit 当为true时为申请人节点办理\n"},{"name":"processTaskHandler","paramTypes":["java.lang.String","java.lang.String","java.lang.Long","java.lang.String"],"doc":" 执行办理任务监听\n\n @param flowCode 流程定义编码\n @param nodeCode 审批节点编码\n @param taskId 任务id\n @param businessId 业务id\n"},{"name":"processDeleteHandler","paramTypes":["java.lang.String","java.lang.String"],"doc":" 删除流程监听\n\n @param flowCode 流程定义编码\n @param businessId 业务ID\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/handler/WorkflowPermissionHandler.class b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/WorkflowPermissionHandler.class new file mode 100644 index 0000000..ce23572 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/WorkflowPermissionHandler.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/handler/WorkflowPermissionHandler__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/WorkflowPermissionHandler__Javadoc.json new file mode 100644 index 0000000..551084c --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/handler/WorkflowPermissionHandler__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 办理人权限处理器\n\n @author AprilWind\n","fields":[],"enumConstants":[],"methods":[{"name":"permissions","paramTypes":[],"doc":" 审批前获取当前办理人,办理时会校验的该权限集合\n 后续在{@link TaskServiceImpl#checkAuth(Task, FlowParams)} 中调用\n 返回当前用户权限集合\n"},{"name":"getHandler","paramTypes":[],"doc":" 获取当前办理人\n\n @return 当前办理人\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/listener/WorkflowGlobalListener.class b/ruoyi-workflow/target/classes/org/dromara/workflow/listener/WorkflowGlobalListener.class new file mode 100644 index 0000000..99b176d Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/listener/WorkflowGlobalListener.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/listener/WorkflowGlobalListener__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/listener/WorkflowGlobalListener__Javadoc.json new file mode 100644 index 0000000..3c064e2 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/listener/WorkflowGlobalListener__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 全局任务办理监听\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"create","paramTypes":["org.dromara.warm.flow.core.listener.ListenerVariable"],"doc":" 创建监听器,任务创建时执行\n\n @param listenerVariable 监听器变量\n"},{"name":"start","paramTypes":["org.dromara.warm.flow.core.listener.ListenerVariable"],"doc":" 开始监听器,任务开始办理时执行\n\n @param listenerVariable 监听器变量\n"},{"name":"assignment","paramTypes":["org.dromara.warm.flow.core.listener.ListenerVariable"],"doc":" 分派监听器,动态修改代办任务信息\n\n @param listenerVariable 监听器变量\n"},{"name":"finish","paramTypes":["org.dromara.warm.flow.core.listener.ListenerVariable"],"doc":" 完成监听器,当前任务完成后执行\n\n @param listenerVariable 监听器变量\n"},{"name":"determineFlowStatus","paramTypes":["org.dromara.warm.flow.core.entity.Instance","java.lang.String"],"doc":" 根据流程实例和当前流程状态确定最终状态\n\n @param instance 流程实例\n @param flowStatus 流程实例当前状态\n @return 流程最终状态\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwCategoryMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwCategoryMapper.class new file mode 100644 index 0000000..8d78c1b Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwCategoryMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwCategoryMapper__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwCategoryMapper__Javadoc.json new file mode 100644 index 0000000..d7cf4c4 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwCategoryMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类Mapper接口\n\n @author may\n @date 2023-06-27\n","fields":[],"enumConstants":[],"methods":[{"name":"countCategoryById","paramTypes":["java.lang.Long"],"doc":" 统计指定流程分类ID的分类数量\n\n @param categoryId 流程分类ID\n @return 该流程分类ID的分类数量\n"},{"name":"selectListByParentId","paramTypes":["java.lang.Long"],"doc":" 根据父流程分类ID查询其所有子流程分类的列表\n\n @param parentId 父流程分类ID\n @return 包含子流程分类的列表\n"},{"name":"selectCategoryIdsByParentId","paramTypes":["java.lang.Long"],"doc":" 根据父流程分类ID查询包括父ID及其所有子流程分类ID的列表\n\n @param parentId 父流程分类ID\n @return 包含父ID和子流程分类ID的列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwInstanceMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwInstanceMapper.class new file mode 100644 index 0000000..db971ce Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwInstanceMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwInstanceMapper__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwInstanceMapper__Javadoc.json new file mode 100644 index 0000000..efd99b7 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwInstanceMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 实例信息Mapper接口\n\n @author may\n @date 2024-03-02\n","fields":[],"enumConstants":[],"methods":[{"name":"selectInstanceList","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 流程实例信息\n\n @param page 分页\n @param queryWrapper 条件\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwTaskMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwTaskMapper.class new file mode 100644 index 0000000..e96893e Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwTaskMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwTaskMapper__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwTaskMapper__Javadoc.json new file mode 100644 index 0000000..8df4379 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/FlwTaskMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务信息Mapper接口\n\n @author may\n @date 2024-03-02\n","fields":[],"enumConstants":[],"methods":[{"name":"getListRunTask","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 获取待办信息\n\n @param page 分页\n @param queryWrapper 条件\n @return 结果\n"},{"name":"getListRunTask","paramTypes":["com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 获取待办信息\n\n @param queryWrapper 条件\n @return 结果\n"},{"name":"getListFinishTask","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.Wrapper"],"doc":" 获取已办\n\n @param page 分页\n @param queryWrapper 条件\n @return 结果\n"},{"name":"getTaskCopyByPage","paramTypes":["com.baomidou.mybatisplus.extension.plugins.pagination.Page","com.baomidou.mybatisplus.core.conditions.query.QueryWrapper"],"doc":" 查询当前用户的抄送\n\n @param page 分页\n @param queryWrapper 条件\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/TestLeaveMapper.class b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/TestLeaveMapper.class new file mode 100644 index 0000000..b57ed0b Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/TestLeaveMapper.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/TestLeaveMapper__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/TestLeaveMapper__Javadoc.json new file mode 100644 index 0000000..db395c4 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/mapper/TestLeaveMapper__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 请假Mapper接口\n\n @author may\n @date 2023-07-21\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwCategoryService.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwCategoryService.class new file mode 100644 index 0000000..9321488 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwCategoryService.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwCategoryService__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwCategoryService__Javadoc.json new file mode 100644 index 0000000..ebe4543 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwCategoryService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类Service接口\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询流程分类\n\n @param categoryId 主键\n @return 流程分类\n"},{"name":"selectCategoryNameById","paramTypes":["java.lang.Long"],"doc":" 根据流程分类ID查询流程分类名称\n\n @param categoryId 流程分类ID\n @return 流程分类名称\n"},{"name":"queryList","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 查询符合条件的流程分类列表\n\n @param bo 查询条件\n @return 流程分类列表\n"},{"name":"selectCategoryTreeList","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 查询流程分类树结构信息\n\n @param category 流程分类信息\n @return 流程分类树信息集合\n"},{"name":"checkCategoryDataScope","paramTypes":["java.lang.Long"],"doc":" 校验流程分类是否有数据权限\n\n @param categoryId 流程分类ID\n"},{"name":"checkCategoryNameUnique","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 校验流程分类名称是否唯一\n\n @param category 流程分类信息\n @return 结果\n"},{"name":"checkCategoryExistDefinition","paramTypes":["java.lang.Long"],"doc":" 查询流程分类是否存在流程定义\n\n @param categoryId 流程分类ID\n @return 结果 true 存在 false 不存在\n"},{"name":"hasChildByCategoryId","paramTypes":["java.lang.Long"],"doc":" 是否存在流程分类子节点\n\n @param categoryId 流程分类ID\n @return 结果\n"},{"name":"insertByBo","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 新增流程分类\n\n @param bo 流程分类\n @return 是否新增成功\n"},{"name":"updateByBo","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 修改流程分类\n\n @param bo 流程分类\n @return 是否修改成功\n"},{"name":"deleteWithValidById","paramTypes":["java.lang.Long"],"doc":" 删除流程分类信息\n\n @param categoryId 主键\n @return 是否删除成功\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwDefinitionService.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwDefinitionService.class new file mode 100644 index 0000000..56d01e2 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwDefinitionService.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwDefinitionService__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwDefinitionService__Javadoc.json new file mode 100644 index 0000000..a6c6193 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwDefinitionService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程定义 服务层\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"queryList","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询流程定义列表\n\n @param flowDefinition 参数\n @param pageQuery 分页\n @return 返回分页列表\n"},{"name":"unPublishList","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询未发布的流程定义列表\n\n @param flowDefinition 参数\n @param pageQuery 分页\n @return 返回分页列表\n"},{"name":"publish","paramTypes":["java.lang.Long"],"doc":" 发布流程定义\n\n @param id 流程定义id\n @return 结果\n"},{"name":"exportDef","paramTypes":["java.lang.Long","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出流程定义\n\n @param id 流程定义id\n @param response 响应\n @throws IOException 异常\n"},{"name":"importJson","paramTypes":["org.springframework.web.multipart.MultipartFile","java.lang.String"],"doc":" 导入流程定义\n\n @param file 文件\n @param category 分类\n @return 结果\n"},{"name":"removeDef","paramTypes":["java.util.List"],"doc":" 删除流程定义\n\n @param ids 流程定义id\n @return 结果\n"},{"name":"syncDef","paramTypes":["java.lang.String"],"doc":" 新增租户流程定义\n\n @param tenantId 租户id\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwInstanceService.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwInstanceService.class new file mode 100644 index 0000000..fae3415 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwInstanceService.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwInstanceService__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwInstanceService__Javadoc.json new file mode 100644 index 0000000..9fd9f71 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwInstanceService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程实例 服务层\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"selectRunningInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 分页查询正在运行的流程实例\n\n @param flowInstanceBo 流程实例\n @param pageQuery 分页\n @return 结果\n"},{"name":"selectFinishInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 分页查询已结束的流程实例\n\n @param flowInstanceBo 流程实例\n @param pageQuery 分页\n @return 结果\n"},{"name":"queryByBusinessId","paramTypes":["java.lang.Long"],"doc":" 根据业务id查询流程实例详细信息\n\n @param businessId 业务id\n @return 结果\n"},{"name":"selectInstByBusinessId","paramTypes":["java.lang.String"],"doc":" 按照业务id查询流程实例\n\n @param businessId 业务id\n @return 结果\n"},{"name":"selectInstById","paramTypes":["java.lang.Long"],"doc":" 按照实例id查询流程实例\n\n @param instanceId 实例id\n @return 结果\n"},{"name":"selectInstListByIdList","paramTypes":["java.util.List"],"doc":" 按照实例id查询流程实例\n\n @param instanceIds 实例id\n @return 结果\n"},{"name":"deleteByBusinessIds","paramTypes":["java.util.List"],"doc":" 按照业务id删除流程实例\n\n @param businessIds 业务id\n @return 结果\n"},{"name":"deleteByInstanceIds","paramTypes":["java.util.List"],"doc":" 按照实例id删除流程实例\n\n @param instanceIds 实例id\n @return 结果\n"},{"name":"cancelProcessApply","paramTypes":["org.dromara.workflow.domain.bo.FlowCancelBo"],"doc":" 撤销流程\n\n @param bo 参数\n @return 结果\n"},{"name":"selectCurrentInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取当前登陆人发起的流程实例\n\n @param instanceBo 流程实例\n @param pageQuery 分页\n @return 结果\n"},{"name":"flowImage","paramTypes":["java.lang.String"],"doc":" 获取流程图,流程记录\n\n @param businessId 业务id\n @return 结果\n"},{"name":"updateStatus","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 按照实例id更新状态\n\n @param instanceId 实例id\n @param status 状态\n"},{"name":"instanceVariable","paramTypes":["java.lang.Long"],"doc":" 获取流程变量\n\n @param instanceId 实例id\n @return 结果\n"},{"name":"setVariable","paramTypes":["java.lang.Long","java.util.Map"],"doc":" 设置流程变量\n\n @param instanceId 实例id\n @param variable 流程变量\n"},{"name":"selectByTaskId","paramTypes":["java.lang.Long"],"doc":" 按任务id查询实例\n\n @param taskId 任务id\n @return 结果\n"},{"name":"selectByTaskIdList","paramTypes":["java.util.List"],"doc":" 按任务id查询实例\n\n @param taskIdList 任务id\n @return 结果\n"},{"name":"processInvalid","paramTypes":["org.dromara.workflow.domain.bo.FlowInvalidBo"],"doc":" 作废流程\n\n @param bo 流程实例\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskAssigneeService.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskAssigneeService.class new file mode 100644 index 0000000..8a7ca24 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskAssigneeService.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskAssigneeService__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskAssigneeService__Javadoc.json new file mode 100644 index 0000000..108355c --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskAssigneeService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程设计器-获取办理人\n\n @author AprilWind\n","fields":[],"enumConstants":[],"methods":[{"name":"fetchUsersByStorageId","paramTypes":["java.lang.String"],"doc":" 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表\n\n @param storageId 包含分配类型和ID的字符串(例如 \"user:123\" 或 \"role:456\")\n @return 与分配类型和ID匹配的用户列表,如果格式无效则返回空列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskService.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskService.class new file mode 100644 index 0000000..5e54cd2 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskService.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskService__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskService__Javadoc.json new file mode 100644 index 0000000..125ced5 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/IFlwTaskService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务 服务层\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"startWorkFlow","paramTypes":["org.dromara.workflow.domain.bo.StartProcessBo"],"doc":" 启动任务\n\n @param startProcessBo 启动流程参数\n @return 结果\n"},{"name":"completeTask","paramTypes":["org.dromara.workflow.domain.bo.CompleteTaskBo"],"doc":" 办理任务\n\n @param completeTaskBo 办理任务参数\n @return 结果\n"},{"name":"pageByTaskWait","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的待办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n @return 结果\n"},{"name":"pageByTaskFinish","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前租户所有待办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n @return 结果\n"},{"name":"pageByAllTaskWait","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询待办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n @return 结果\n"},{"name":"pageByAllTaskFinish","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询已办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n @return 结果\n"},{"name":"pageByTaskCopy","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的抄送\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n @return 结果\n"},{"name":"updateAssignee","paramTypes":["java.util.List","java.lang.String"],"doc":" 修改任务办理人\n\n @param taskIdList 任务id\n @param userId 用户id\n @return 结果\n"},{"name":"backProcess","paramTypes":["org.dromara.workflow.domain.bo.BackProcessBo"],"doc":" 驳回审批\n\n @param bo 参数\n @return 结果\n"},{"name":"getBackTaskNode","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 获取可驳回的前置节点\n\n @param definitionId 流程定义id\n @param nowNodeCode 当前节点\n @return 结果\n"},{"name":"terminationTask","paramTypes":["org.dromara.workflow.domain.bo.FlowTerminationBo"],"doc":" 终止任务\n\n @param bo 参数\n @return 结果\n"},{"name":"selectByIdList","paramTypes":["java.util.List"],"doc":" 按照任务id查询任务\n\n @param taskIdList 任务id\n @return 结果\n"},{"name":"selectById","paramTypes":["java.lang.Long"],"doc":" 按照任务id查询任务\n\n @param taskId 任务id\n @return 结果\n"},{"name":"selectHisTaskByIdList","paramTypes":["java.util.List"],"doc":" 按照任务id查询任务\n\n @param taskIdList 任务id\n @return 结果\n"},{"name":"selectHisTaskById","paramTypes":["java.lang.Long"],"doc":" 按照任务id查询任务\n\n @param taskId 任务id\n @return 结果\n"},{"name":"selectByInstIdList","paramTypes":["java.util.List"],"doc":" 按照实例id查询任务\n\n @param instanceIdList 流程实例id\n @return 结果\n"},{"name":"selectByInstId","paramTypes":["java.lang.Long"],"doc":" 按照实例id查询任务\n\n @param instanceId 流程实例id\n @return 结果\n"},{"name":"taskOperation","paramTypes":["org.dromara.workflow.domain.bo.TaskOperationBo","java.lang.String"],"doc":" 任务操作\n\n @param bo 参数\n @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature\n @return 结果\n"},{"name":"currentTaskAllUser","paramTypes":["java.util.List"],"doc":" 获取任务所有办理人\n\n @param taskIdList 任务id\n @return 结果\n"},{"name":"currentTaskAllUser","paramTypes":["java.lang.Long"],"doc":" 获取当前任务的所有办理人\n\n @param taskId 任务id\n @return 结果\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/ITestLeaveService.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/ITestLeaveService.class new file mode 100644 index 0000000..369b231 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/ITestLeaveService.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/ITestLeaveService__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/ITestLeaveService__Javadoc.json new file mode 100644 index 0000000..2529ce8 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/ITestLeaveService__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 请假Service接口\n\n @author may\n @date 2023-07-21\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询请假\n"},{"name":"queryPageList","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询请假列表\n"},{"name":"queryList","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 查询请假列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 新增请假\n"},{"name":"updateByBo","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 修改请假\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.List"],"doc":" 校验并批量删除请假信息\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.class new file mode 100644 index 0000000..7400487 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/CategoryNameTranslationImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/CategoryNameTranslationImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/CategoryNameTranslationImpl__Javadoc.json new file mode 100644 index 0000000..38fe619 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/CategoryNameTranslationImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类名称翻译实现\n\n @author AprilWind\n","fields":[],"enumConstants":[],"methods":[],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.class new file mode 100644 index 0000000..fc592e6 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwCategoryServiceImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwCategoryServiceImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwCategoryServiceImpl__Javadoc.json new file mode 100644 index 0000000..b89b897 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwCategoryServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程分类Service业务层处理\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询流程分类\n\n @param categoryId 主键\n @return 流程分类\n"},{"name":"selectCategoryNameById","paramTypes":["java.lang.Long"],"doc":" 根据流程分类ID查询流程分类名称\n\n @param categoryId 流程分类ID\n @return 流程分类名称\n"},{"name":"queryList","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 查询符合条件的流程分类列表\n\n @param bo 查询条件\n @return 流程分类列表\n"},{"name":"selectCategoryTreeList","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 查询流程分类树结构信息\n\n @param category 流程分类信息\n @return 流程分类树信息集合\n"},{"name":"checkCategoryDataScope","paramTypes":["java.lang.Long"],"doc":" 校验流程分类是否有数据权限\n\n @param categoryId 流程分类ID\n"},{"name":"checkCategoryNameUnique","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 校验流程分类名称是否唯一\n\n @param category 流程分类信息\n @return 结果\n"},{"name":"checkCategoryExistDefinition","paramTypes":["java.lang.Long"],"doc":" 查询流程分类是否存在流程定义\n\n @param categoryId 流程分类ID\n @return 结果 true 存在 false 不存在\n"},{"name":"hasChildByCategoryId","paramTypes":["java.lang.Long"],"doc":" 是否存在流程分类子节点\n\n @param categoryId 流程分类ID\n @return 结果\n"},{"name":"insertByBo","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 新增流程分类\n\n @param bo 流程分类\n @return 是否新增成功\n"},{"name":"updateByBo","paramTypes":["org.dromara.workflow.domain.bo.FlowCategoryBo"],"doc":" 修改流程分类\n\n @param bo 流程分类\n @return 是否修改成功\n"},{"name":"updateCategoryChildren","paramTypes":["java.lang.Long","java.lang.String","java.lang.String"],"doc":" 修改子元素关系\n\n @param categoryId 被修改的流程分类ID\n @param newAncestors 新的父ID集合\n @param oldAncestors 旧的父ID集合\n"},{"name":"deleteWithValidById","paramTypes":["java.lang.Long"],"doc":" 删除流程分类信息\n\n @param categoryId 主键\n @return 是否删除成功\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.class new file mode 100644 index 0000000..34b901d Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl__Javadoc.json new file mode 100644 index 0000000..d9c0d3b --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程定义 服务层实现\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"queryList","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询流程定义列表\n\n @param flowDefinition 流程定义信息\n @param pageQuery 分页\n @return 返回分页列表\n"},{"name":"unPublishList","paramTypes":["org.dromara.warm.flow.orm.entity.FlowDefinition","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询未发布的流程定义列表\n\n @param flowDefinition 流程定义信息\n @param pageQuery 分页\n @return 返回分页列表\n"},{"name":"publish","paramTypes":["java.lang.Long"],"doc":" 发布流程定义\n\n @param id 流程定义id\n"},{"name":"importJson","paramTypes":["org.springframework.web.multipart.MultipartFile","java.lang.String"],"doc":" 导入流程定义\n\n @param file 文件\n"},{"name":"exportDef","paramTypes":["java.lang.Long","jakarta.servlet.http.HttpServletResponse"],"doc":" 导出流程定义\n\n @param id 流程定义id\n @param response 响应\n @throws IOException 异常\n"},{"name":"removeDef","paramTypes":["java.util.List"],"doc":" 删除流程定义\n\n @param ids 流程定义id\n"},{"name":"syncDef","paramTypes":["java.lang.String"],"doc":" 新增租户流程定义\n\n @param tenantId 租户id\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.class new file mode 100644 index 0000000..e811de2 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwInstanceServiceImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwInstanceServiceImpl__Javadoc.json new file mode 100644 index 0000000..7e4647d --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwInstanceServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程实例 服务层实现\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"selectRunningInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 分页查询正在运行的流程实例\n\n @param flowInstanceBo 流程实例\n @param pageQuery 分页\n"},{"name":"selectFinishInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 分页查询已结束的流程实例\n\n @param flowInstanceBo 流程实例\n @param pageQuery 分页\n"},{"name":"queryByBusinessId","paramTypes":["java.lang.Long"],"doc":" 根据业务id查询流程实例详细信息\n\n @param businessId 业务id\n @return 结果\n"},{"name":"buildQueryWrapper","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo"],"doc":" 通用查询条件\n\n @param flowInstanceBo 查询条件\n @return 查询条件构造方法\n"},{"name":"selectInstByBusinessId","paramTypes":["java.lang.String"],"doc":" 根据业务id查询流程实例\n\n @param businessId 业务id\n"},{"name":"selectInstById","paramTypes":["java.lang.Long"],"doc":" 按照实例id查询流程实例\n\n @param instanceId 实例id\n"},{"name":"selectInstListByIdList","paramTypes":["java.util.List"],"doc":" 按照实例id查询流程实例\n\n @param instanceIds 实例id\n"},{"name":"deleteByBusinessIds","paramTypes":["java.util.List"],"doc":" 按照业务id删除流程实例\n\n @param businessIds 业务id\n"},{"name":"deleteByInstanceIds","paramTypes":["java.util.List"],"doc":" 按照实例id删除流程实例\n\n @param instanceIds 实例id\n"},{"name":"cancelProcessApply","paramTypes":["org.dromara.workflow.domain.bo.FlowCancelBo"],"doc":" 撤销流程\n\n @param bo 参数\n"},{"name":"selectCurrentInstanceList","paramTypes":["org.dromara.workflow.domain.bo.FlowInstanceBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 获取当前登陆人发起的流程实例\n\n @param instanceBo 流程实例\n @param pageQuery 分页\n"},{"name":"flowImage","paramTypes":["java.lang.String"],"doc":" 获取流程图,流程记录\n\n @param businessId 业务id\n"},{"name":"updateStatus","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 按照实例id更新状态\n\n @param instanceId 实例id\n @param status 状态\n"},{"name":"instanceVariable","paramTypes":["java.lang.Long"],"doc":" 获取流程变量\n\n @param instanceId 实例id\n"},{"name":"setVariable","paramTypes":["java.lang.Long","java.util.Map"],"doc":" 设置流程变量\n\n @param instanceId 实例id\n @param variable 流程变量\n"},{"name":"selectByTaskId","paramTypes":["java.lang.Long"],"doc":" 按任务id查询实例\n\n @param taskId 任务id\n"},{"name":"selectByTaskIdList","paramTypes":["java.util.List"],"doc":" 按任务id查询实例\n\n @param taskIdList 任务id\n"},{"name":"processInvalid","paramTypes":["org.dromara.workflow.domain.bo.FlowInvalidBo"],"doc":" 作废流程\n\n @param bo 参数\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl$1.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl$1.class new file mode 100644 index 0000000..847b61f Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl$1.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.class new file mode 100644 index 0000000..11cd0d0 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl__Javadoc.json new file mode 100644 index 0000000..8235720 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskAssigneeServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 流程设计器-获取办理人权限设置列表\n\n @author AprilWind\n","fields":[],"enumConstants":[],"methods":[{"name":"getHandlerType","paramTypes":[],"doc":" 获取办理人权限设置列表tabs页签\n\n @return tabs页签\n"},{"name":"getHandlerSelect","paramTypes":["org.dromara.warm.flow.ui.dto.HandlerQuery"],"doc":" 获取办理列表, 同时构建左侧部门树状结构\n\n @param query 查询条件\n @return HandlerSelectVo\n"},{"name":"fetchTaskAssigneeData","paramTypes":["org.dromara.workflow.common.enums.TaskAssigneeEnum","org.dromara.common.core.domain.model.TaskAssigneeBody"],"doc":" 根据任务办理类型查询对应的数据\n"},{"name":"fetchDeptData","paramTypes":["org.dromara.workflow.common.enums.TaskAssigneeEnum"],"doc":" 根据任务办理类型获取部门数据\n"},{"name":"buildDeptTree","paramTypes":["java.util.List"],"doc":" 构建部门树状结构\n"},{"name":"buildHandlerData","paramTypes":["org.dromara.common.core.domain.dto.TaskAssigneeDTO","org.dromara.workflow.common.enums.TaskAssigneeEnum"],"doc":" 构建任务办理人数据\n"},{"name":"fetchUsersByStorageId","paramTypes":["java.lang.String"],"doc":" 根据存储标识符(storageId)解析分配类型和ID,并获取对应的用户列表\n\n @param storageId 包含分配类型和ID的字符串(例如 \"user:123\" 或 \"role:456\")\n @return 与分配类型和ID匹配的用户列表,如果格式无效则返回空列表\n"},{"name":"getUsersByType","paramTypes":["org.dromara.workflow.common.enums.TaskAssigneeEnum","java.util.List"],"doc":" 根据指定的任务分配类型(TaskAssigneeEnum)和 ID 列表,获取对应的用户信息列表\n\n @param type 任务分配类型,表示用户、角色、部门或其他(TaskAssigneeEnum 枚举值)\n @param ids 与指定分配类型关联的 ID 列表(例如用户ID、角色ID、部门ID等)\n @return 返回包含用户信息的列表。如果类型为用户(USER),则通过用户ID列表查询;\n 如果类型为角色(ROLE),则通过角色ID列表查询;\n 如果类型为部门(DEPT),则通过部门ID列表查询;\n 如果类型为岗位(POST)或无法识别的类型,则返回空列表\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskServiceImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskServiceImpl.class new file mode 100644 index 0000000..b171ab0 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskServiceImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskServiceImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskServiceImpl__Javadoc.json new file mode 100644 index 0000000..0062fe1 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/FlwTaskServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 任务 服务层实现\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"startWorkFlow","paramTypes":["org.dromara.workflow.domain.bo.StartProcessBo"],"doc":" 启动任务\n\n @param startProcessBo 启动流程参数\n"},{"name":"completeTask","paramTypes":["org.dromara.workflow.domain.bo.CompleteTaskBo"],"doc":" 办理任务\n\n @param completeTaskBo 办理任务参数\n"},{"name":"setHandler","paramTypes":["org.dromara.warm.flow.core.entity.Instance","org.dromara.warm.flow.orm.entity.FlowTask","java.util.List"],"doc":" 设置办理人\n\n @param instance 实例\n @param task (当前任务)未办理的任务\n @param flowCopyList 抄送人\n"},{"name":"setCopy","paramTypes":["org.dromara.warm.flow.orm.entity.FlowTask","java.util.List"],"doc":" 添加抄送人\n\n @param task 任务信息\n @param flowCopyList 抄送人\n"},{"name":"pageByTaskWait","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的待办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByTaskFinish","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的已办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByAllTaskWait","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询待办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByAllTaskFinish","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询已办任务\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"pageByTaskCopy","paramTypes":["org.dromara.workflow.domain.bo.FlowTaskBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询当前用户的抄送\n\n @param flowTaskBo 参数\n @param pageQuery 分页\n"},{"name":"backProcess","paramTypes":["org.dromara.workflow.domain.bo.BackProcessBo"],"doc":" 驳回任务\n\n @param bo 参数\n"},{"name":"getBackTaskNode","paramTypes":["java.lang.Long","java.lang.String"],"doc":" 获取可驳回的前置节点\n\n @param definitionId 流程定义id\n @param nowNodeCode 当前节点\n"},{"name":"terminationTask","paramTypes":["org.dromara.workflow.domain.bo.FlowTerminationBo"],"doc":" 终止任务\n\n @param bo 参数\n"},{"name":"selectByIdList","paramTypes":["java.util.List"],"doc":" 按照任务id查询任务\n\n @param taskIdList 任务id\n"},{"name":"selectById","paramTypes":["java.lang.Long"],"doc":" 按照任务id查询任务\n\n @param taskId 任务id\n"},{"name":"selectHisTaskByIdList","paramTypes":["java.util.List"],"doc":" 按照任务id查询任务\n\n @param taskIdList 任务id\n @return 结果\n"},{"name":"selectHisTaskById","paramTypes":["java.lang.Long"],"doc":" 按照任务id查询任务\n\n @param taskId 任务id\n @return 结果\n"},{"name":"selectByInstIdList","paramTypes":["java.util.List"],"doc":" 按照实例id查询任务\n\n @param instanceIdList 流程实例id\n"},{"name":"selectByInstId","paramTypes":["java.lang.Long"],"doc":" 按照实例id查询任务\n\n @param instanceId 流程实例id\n"},{"name":"taskOperation","paramTypes":["org.dromara.workflow.domain.bo.TaskOperationBo","java.lang.String"],"doc":" 任务操作\n\n @param bo 参数\n @param taskOperation 操作类型,委派 delegateTask、转办 transferTask、加签 addSignature、减签 reductionSignature\n"},{"name":"updateAssignee","paramTypes":["java.util.List","java.lang.String"],"doc":" 修改任务办理人(此方法将会批量修改所有任务的办理人)\n\n @param taskIdList 任务id\n @param userId 用户id\n"},{"name":"currentTaskAllUser","paramTypes":["java.util.List"],"doc":" 获取任务所有办理人\n\n @param taskIdList 任务id\n"},{"name":"currentTaskAllUser","paramTypes":["java.lang.Long"],"doc":" 获取当前任务的所有办理人\n\n @param taskId 任务id\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/TestLeaveServiceImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/TestLeaveServiceImpl.class new file mode 100644 index 0000000..bb82944 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/TestLeaveServiceImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/TestLeaveServiceImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/TestLeaveServiceImpl__Javadoc.json new file mode 100644 index 0000000..ec2e5c3 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/TestLeaveServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 请假Service业务层处理\n\n @author may\n @date 2023-07-21\n","fields":[],"enumConstants":[],"methods":[{"name":"queryById","paramTypes":["java.lang.Long"],"doc":" 查询请假\n"},{"name":"queryPageList","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo","org.dromara.common.mybatis.core.page.PageQuery"],"doc":" 查询请假列表\n"},{"name":"queryList","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 查询请假列表\n"},{"name":"insertByBo","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 新增请假\n"},{"name":"updateByBo","paramTypes":["org.dromara.workflow.domain.bo.TestLeaveBo"],"doc":" 修改请假\n"},{"name":"deleteWithValidByIds","paramTypes":["java.util.List"],"doc":" 批量删除请假\n"},{"name":"processHandler","paramTypes":["org.dromara.common.core.domain.event.ProcessEvent"],"doc":" 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成等)\n 正常使用只需#processEvent.flowCode=='leave1'\n 示例为了方便则使用startsWith匹配了全部示例key\n\n @param processEvent 参数\n"},{"name":"processTaskHandler","paramTypes":["org.dromara.common.core.domain.event.ProcessTaskEvent"],"doc":" 执行办理任务监听\n 示例:也可通过 @EventListener(condition = \"#processTaskEvent.flowCode=='leave1'\")进行判断\n 在方法中判断流程节点key\n if (\"xxx\".equals(processTaskEvent.getNodeCode())) {\n //执行业务逻辑\n }\n\n @param processTaskEvent 参数\n"},{"name":"processDeleteHandler","paramTypes":["org.dromara.common.core.domain.event.ProcessDeleteEvent"],"doc":" 监听删除流程事件\n 正常使用只需#processDeleteEvent.flowCode=='leave1'\n 示例为了方便则使用startsWith匹配了全部示例key\n\n @param processDeleteEvent 参数\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/WorkflowServiceImpl.class b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/WorkflowServiceImpl.class new file mode 100644 index 0000000..a177431 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/WorkflowServiceImpl.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/WorkflowServiceImpl__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/WorkflowServiceImpl__Javadoc.json new file mode 100644 index 0000000..92b7d79 --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/service/impl/WorkflowServiceImpl__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 通用 工作流服务实现\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"deleteInstance","paramTypes":["java.util.List"],"doc":" 删除流程实例\n\n @param businessIds 业务id\n @return 结果\n"},{"name":"getBusinessStatusByTaskId","paramTypes":["java.lang.Long"],"doc":" 获取当前流程状态\n\n @param taskId 任务id\n"},{"name":"getBusinessStatus","paramTypes":["java.lang.String"],"doc":" 获取当前流程状态\n\n @param businessId 业务id\n"},{"name":"setVariable","paramTypes":["java.lang.Long","java.util.Map"],"doc":" 设置流程变量\n\n @param instanceId 流程实例id\n @param variables 流程变量\n"},{"name":"instanceVariable","paramTypes":["java.lang.Long"],"doc":" 获取流程变量\n\n @param instanceId 流程实例id\n"},{"name":"getInstanceIdByBusinessId","paramTypes":["java.lang.String"],"doc":" 按照业务id查询流程实例id\n\n @param businessId 业务id\n @return 结果\n"},{"name":"syncDef","paramTypes":["java.lang.String"],"doc":" 新增租户流程定义\n\n @param tenantId 租户id\n"},{"name":"startWorkFlow","paramTypes":["org.dromara.common.core.domain.dto.StartProcessDTO"],"doc":" 启动流程\n\n @param startProcess 参数\n"},{"name":"completeTask","paramTypes":["org.dromara.common.core.domain.dto.CompleteTaskDTO"],"doc":" 办理任务\n\n @param completeTask 参数\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils$1.class b/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils$1.class new file mode 100644 index 0000000..a42aff0 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils$1.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils.class b/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils.class new file mode 100644 index 0000000..82f9b77 Binary files /dev/null and b/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils.class differ diff --git a/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils__Javadoc.json b/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils__Javadoc.json new file mode 100644 index 0000000..7e5651a --- /dev/null +++ b/ruoyi-workflow/target/classes/org/dromara/workflow/utils/WorkflowUtils__Javadoc.json @@ -0,0 +1 @@ +{"doc":" 工作流工具\n\n @author may\n","fields":[],"enumConstants":[],"methods":[{"name":"getFlowUserService","paramTypes":[],"doc":" 获取工作流用户service\n"},{"name":"buildUser","paramTypes":["java.util.List","java.lang.Long"],"doc":" 构建工作流用户\n\n @param userList 办理用户\n @param taskId 任务ID\n @return 用户\n"},{"name":"sendMessage","paramTypes":["java.lang.String","java.lang.Long","java.util.List","java.lang.String"],"doc":" 发送消息\n\n @param flowName 流程定义名称\n @param messageType 消息类型\n @param message 消息内容,为空则发送默认配置的消息内容\n"},{"name":"backTask","paramTypes":["java.lang.String","java.lang.Long","java.lang.String","java.lang.String","java.lang.String"],"doc":" 驳回\n\n @param message 审批意见\n @param instanceId 流程实例id\n @param targetNodeCode 目标节点\n @param flowStatus 流程状态\n @param flowHisStatus 节点操作状态\n"},{"name":"applyNodeCode","paramTypes":["java.lang.Long"],"doc":" 申请人节点编码\n\n @param definitionId 流程定义id\n @return 申请人节点编码\n"},{"name":"deleteRunTask","paramTypes":["java.util.List"],"doc":" 删除运行中的任务\n\n @param taskIds 任务id\n"}],"constructors":[]} \ No newline at end of file diff --git a/ruoyi-workflow/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__1.java b/ruoyi-workflow/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__1.java new file mode 100644 index 0000000..d024ba1 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/io/github/linpeilie/AutoMapperConfig__1.java @@ -0,0 +1,14 @@ +package io.github.linpeilie; + +import org.mapstruct.Builder; +import org.mapstruct.MapperConfig; +import org.mapstruct.ReportingPolicy; + +@MapperConfig( + componentModel = "spring-lazy", + uses = {ConverterMapperAdapter__1.class}, + unmappedTargetPolicy = ReportingPolicy.IGNORE, + builder = @Builder(buildMethod = "build", disableBuilder = true) +) +public interface AutoMapperConfig__1 { +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__1.java b/ruoyi-workflow/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__1.java new file mode 100644 index 0000000..a91ceea --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/io/github/linpeilie/ConverterMapperAdapter__1.java @@ -0,0 +1,10 @@ +package io.github.linpeilie; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class ConverterMapperAdapter__1 { + @Autowired + private Converter converter; +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapper.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapper.java new file mode 100644 index 0000000..2ffce1c --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.workflow.domain; + +import io.github.linpeilie.AutoMapperConfig__1; +import io.github.linpeilie.BaseMapper; +import org.dromara.workflow.domain.bo.FlowCategoryBoToFlowCategoryMapper; +import org.dromara.workflow.domain.vo.FlowCategoryVo; +import org.dromara.workflow.domain.vo.FlowCategoryVoToFlowCategoryMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__1.class, + uses = {FlowCategoryVoToFlowCategoryMapper.class,FlowCategoryBoToFlowCategoryMapper.class}, + imports = {} +) +public interface FlowCategoryToFlowCategoryVoMapper extends BaseMapper { +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapperImpl.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapperImpl.java new file mode 100644 index 0000000..556856e --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/FlowCategoryToFlowCategoryVoMapperImpl.java @@ -0,0 +1,48 @@ +package org.dromara.workflow.domain; + +import javax.annotation.processing.Generated; +import org.dromara.workflow.domain.vo.FlowCategoryVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class FlowCategoryToFlowCategoryVoMapperImpl implements FlowCategoryToFlowCategoryVoMapper { + + @Override + public FlowCategoryVo convert(FlowCategory arg0) { + if ( arg0 == null ) { + return null; + } + + FlowCategoryVo flowCategoryVo = new FlowCategoryVo(); + + flowCategoryVo.setCategoryId( arg0.getCategoryId() ); + flowCategoryVo.setParentId( arg0.getParentId() ); + flowCategoryVo.setAncestors( arg0.getAncestors() ); + flowCategoryVo.setCategoryName( arg0.getCategoryName() ); + flowCategoryVo.setOrderNum( arg0.getOrderNum() ); + flowCategoryVo.setCreateTime( arg0.getCreateTime() ); + + return flowCategoryVo; + } + + @Override + public FlowCategoryVo convert(FlowCategory arg0, FlowCategoryVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCategoryId( arg0.getCategoryId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setAncestors( arg0.getAncestors() ); + arg1.setCategoryName( arg0.getCategoryName() ); + arg1.setOrderNum( arg0.getOrderNum() ); + arg1.setCreateTime( arg0.getCreateTime() ); + + return arg1; + } +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapper.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapper.java new file mode 100644 index 0000000..861f016 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapper.java @@ -0,0 +1,16 @@ +package org.dromara.workflow.domain; + +import io.github.linpeilie.AutoMapperConfig__1; +import io.github.linpeilie.BaseMapper; +import org.dromara.workflow.domain.bo.TestLeaveBoToTestLeaveMapper; +import org.dromara.workflow.domain.vo.TestLeaveVo; +import org.dromara.workflow.domain.vo.TestLeaveVoToTestLeaveMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__1.class, + uses = {TestLeaveVoToTestLeaveMapper.class,TestLeaveBoToTestLeaveMapper.class}, + imports = {} +) +public interface TestLeaveToTestLeaveVoMapper extends BaseMapper { +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapperImpl.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapperImpl.java new file mode 100644 index 0000000..4bcc38d --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/TestLeaveToTestLeaveVoMapperImpl.java @@ -0,0 +1,50 @@ +package org.dromara.workflow.domain; + +import javax.annotation.processing.Generated; +import org.dromara.workflow.domain.vo.TestLeaveVo; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestLeaveToTestLeaveVoMapperImpl implements TestLeaveToTestLeaveVoMapper { + + @Override + public TestLeaveVo convert(TestLeave arg0) { + if ( arg0 == null ) { + return null; + } + + TestLeaveVo testLeaveVo = new TestLeaveVo(); + + testLeaveVo.setId( arg0.getId() ); + testLeaveVo.setLeaveType( arg0.getLeaveType() ); + testLeaveVo.setStartDate( arg0.getStartDate() ); + testLeaveVo.setEndDate( arg0.getEndDate() ); + testLeaveVo.setLeaveDays( arg0.getLeaveDays() ); + testLeaveVo.setRemark( arg0.getRemark() ); + testLeaveVo.setStatus( arg0.getStatus() ); + + return testLeaveVo; + } + + @Override + public TestLeaveVo convert(TestLeave arg0, TestLeaveVo arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setLeaveType( arg0.getLeaveType() ); + arg1.setStartDate( arg0.getStartDate() ); + arg1.setEndDate( arg0.getEndDate() ); + arg1.setLeaveDays( arg0.getLeaveDays() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapper.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapper.java new file mode 100644 index 0000000..67d2a59 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapper.java @@ -0,0 +1,14 @@ +package org.dromara.workflow.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__1; +import io.github.linpeilie.BaseMapper; +import org.dromara.workflow.domain.FlowCategory; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__1.class, + uses = {}, + imports = {} +) +public interface FlowCategoryBoToFlowCategoryMapper extends BaseMapper { +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapperImpl.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapperImpl.java new file mode 100644 index 0000000..f70df73 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/FlowCategoryBoToFlowCategoryMapperImpl.java @@ -0,0 +1,78 @@ +package org.dromara.workflow.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.workflow.domain.FlowCategory; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class FlowCategoryBoToFlowCategoryMapperImpl implements FlowCategoryBoToFlowCategoryMapper { + + @Override + public FlowCategory convert(FlowCategoryBo arg0) { + if ( arg0 == null ) { + return null; + } + + FlowCategory flowCategory = new FlowCategory(); + + flowCategory.setSearchValue( arg0.getSearchValue() ); + flowCategory.setCreateDept( arg0.getCreateDept() ); + flowCategory.setCreateBy( arg0.getCreateBy() ); + flowCategory.setCreateTime( arg0.getCreateTime() ); + flowCategory.setUpdateBy( arg0.getUpdateBy() ); + flowCategory.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + flowCategory.setParams( new LinkedHashMap( map ) ); + } + flowCategory.setCategoryId( arg0.getCategoryId() ); + flowCategory.setParentId( arg0.getParentId() ); + flowCategory.setCategoryName( arg0.getCategoryName() ); + flowCategory.setOrderNum( arg0.getOrderNum() ); + + return flowCategory; + } + + @Override + public FlowCategory convert(FlowCategoryBo arg0, FlowCategory arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setCategoryId( arg0.getCategoryId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setCategoryName( arg0.getCategoryName() ); + arg1.setOrderNum( arg0.getOrderNum() ); + + return arg1; + } +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapper.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapper.java new file mode 100644 index 0000000..3335296 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapper.java @@ -0,0 +1,14 @@ +package org.dromara.workflow.domain.bo; + +import io.github.linpeilie.AutoMapperConfig__1; +import io.github.linpeilie.BaseMapper; +import org.dromara.workflow.domain.TestLeave; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__1.class, + uses = {}, + imports = {} +) +public interface TestLeaveBoToTestLeaveMapper extends BaseMapper { +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapperImpl.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapperImpl.java new file mode 100644 index 0000000..7304003 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/bo/TestLeaveBoToTestLeaveMapperImpl.java @@ -0,0 +1,84 @@ +package org.dromara.workflow.domain.bo; + +import java.util.LinkedHashMap; +import java.util.Map; +import javax.annotation.processing.Generated; +import org.dromara.workflow.domain.TestLeave; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestLeaveBoToTestLeaveMapperImpl implements TestLeaveBoToTestLeaveMapper { + + @Override + public TestLeave convert(TestLeaveBo arg0) { + if ( arg0 == null ) { + return null; + } + + TestLeave testLeave = new TestLeave(); + + testLeave.setSearchValue( arg0.getSearchValue() ); + testLeave.setCreateDept( arg0.getCreateDept() ); + testLeave.setCreateBy( arg0.getCreateBy() ); + testLeave.setCreateTime( arg0.getCreateTime() ); + testLeave.setUpdateBy( arg0.getUpdateBy() ); + testLeave.setUpdateTime( arg0.getUpdateTime() ); + Map map = arg0.getParams(); + if ( map != null ) { + testLeave.setParams( new LinkedHashMap( map ) ); + } + testLeave.setId( arg0.getId() ); + testLeave.setLeaveType( arg0.getLeaveType() ); + testLeave.setStartDate( arg0.getStartDate() ); + testLeave.setEndDate( arg0.getEndDate() ); + testLeave.setLeaveDays( arg0.getLeaveDays() ); + testLeave.setRemark( arg0.getRemark() ); + testLeave.setStatus( arg0.getStatus() ); + + return testLeave; + } + + @Override + public TestLeave convert(TestLeaveBo arg0, TestLeave arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setSearchValue( arg0.getSearchValue() ); + arg1.setCreateDept( arg0.getCreateDept() ); + arg1.setCreateBy( arg0.getCreateBy() ); + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setUpdateBy( arg0.getUpdateBy() ); + arg1.setUpdateTime( arg0.getUpdateTime() ); + if ( arg1.getParams() != null ) { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.getParams().clear(); + arg1.getParams().putAll( map ); + } + else { + arg1.setParams( null ); + } + } + else { + Map map = arg0.getParams(); + if ( map != null ) { + arg1.setParams( new LinkedHashMap( map ) ); + } + } + arg1.setId( arg0.getId() ); + arg1.setLeaveType( arg0.getLeaveType() ); + arg1.setStartDate( arg0.getStartDate() ); + arg1.setEndDate( arg0.getEndDate() ); + arg1.setLeaveDays( arg0.getLeaveDays() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapper.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapper.java new file mode 100644 index 0000000..dd689c3 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapper.java @@ -0,0 +1,15 @@ +package org.dromara.workflow.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__1; +import io.github.linpeilie.BaseMapper; +import org.dromara.workflow.domain.FlowCategory; +import org.dromara.workflow.domain.FlowCategoryToFlowCategoryVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__1.class, + uses = {FlowCategoryToFlowCategoryVoMapper.class}, + imports = {} +) +public interface FlowCategoryVoToFlowCategoryMapper extends BaseMapper { +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapperImpl.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapperImpl.java new file mode 100644 index 0000000..5a434e3 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/FlowCategoryVoToFlowCategoryMapperImpl.java @@ -0,0 +1,48 @@ +package org.dromara.workflow.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.workflow.domain.FlowCategory; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class FlowCategoryVoToFlowCategoryMapperImpl implements FlowCategoryVoToFlowCategoryMapper { + + @Override + public FlowCategory convert(FlowCategoryVo arg0) { + if ( arg0 == null ) { + return null; + } + + FlowCategory flowCategory = new FlowCategory(); + + flowCategory.setCreateTime( arg0.getCreateTime() ); + flowCategory.setCategoryId( arg0.getCategoryId() ); + flowCategory.setParentId( arg0.getParentId() ); + flowCategory.setAncestors( arg0.getAncestors() ); + flowCategory.setCategoryName( arg0.getCategoryName() ); + flowCategory.setOrderNum( arg0.getOrderNum() ); + + return flowCategory; + } + + @Override + public FlowCategory convert(FlowCategoryVo arg0, FlowCategory arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setCreateTime( arg0.getCreateTime() ); + arg1.setCategoryId( arg0.getCategoryId() ); + arg1.setParentId( arg0.getParentId() ); + arg1.setAncestors( arg0.getAncestors() ); + arg1.setCategoryName( arg0.getCategoryName() ); + arg1.setOrderNum( arg0.getOrderNum() ); + + return arg1; + } +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapper.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapper.java new file mode 100644 index 0000000..252fc60 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapper.java @@ -0,0 +1,15 @@ +package org.dromara.workflow.domain.vo; + +import io.github.linpeilie.AutoMapperConfig__1; +import io.github.linpeilie.BaseMapper; +import org.dromara.workflow.domain.TestLeave; +import org.dromara.workflow.domain.TestLeaveToTestLeaveVoMapper; +import org.mapstruct.Mapper; + +@Mapper( + config = AutoMapperConfig__1.class, + uses = {TestLeaveToTestLeaveVoMapper.class}, + imports = {} +) +public interface TestLeaveVoToTestLeaveMapper extends BaseMapper { +} diff --git a/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapperImpl.java b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapperImpl.java new file mode 100644 index 0000000..1e0e9e8 --- /dev/null +++ b/ruoyi-workflow/target/generated-sources/annotations/org/dromara/workflow/domain/vo/TestLeaveVoToTestLeaveMapperImpl.java @@ -0,0 +1,50 @@ +package org.dromara.workflow.domain.vo; + +import javax.annotation.processing.Generated; +import org.dromara.workflow.domain.TestLeave; +import org.springframework.stereotype.Component; + +@Generated( + value = "org.mapstruct.ap.MappingProcessor", + date = "2025-03-12T12:52:20+0800", + comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.12 (Oracle Corporation)" +) +@Component +public class TestLeaveVoToTestLeaveMapperImpl implements TestLeaveVoToTestLeaveMapper { + + @Override + public TestLeave convert(TestLeaveVo arg0) { + if ( arg0 == null ) { + return null; + } + + TestLeave testLeave = new TestLeave(); + + testLeave.setId( arg0.getId() ); + testLeave.setLeaveType( arg0.getLeaveType() ); + testLeave.setStartDate( arg0.getStartDate() ); + testLeave.setEndDate( arg0.getEndDate() ); + testLeave.setLeaveDays( arg0.getLeaveDays() ); + testLeave.setRemark( arg0.getRemark() ); + testLeave.setStatus( arg0.getStatus() ); + + return testLeave; + } + + @Override + public TestLeave convert(TestLeaveVo arg0, TestLeave arg1) { + if ( arg0 == null ) { + return arg1; + } + + arg1.setId( arg0.getId() ); + arg1.setLeaveType( arg0.getLeaveType() ); + arg1.setStartDate( arg0.getStartDate() ); + arg1.setEndDate( arg0.getEndDate() ); + arg1.setLeaveDays( arg0.getLeaveDays() ); + arg1.setRemark( arg0.getRemark() ); + arg1.setStatus( arg0.getStatus() ); + + return arg1; + } +}