diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 26cd023..bad0313 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -48,6 +48,11 @@
ruoyi-common-social
+
+ org.dromara
+ ruoyi-common-mail
+
+
org.dromara
ruoyi-common-ratelimiter
@@ -63,6 +68,7 @@
ruoyi-job
+
org.dromara
@@ -70,9 +76,15 @@
+
+
+
+
+
org.dromara
- ruoyi-demo
+ rouyi-scale
+ 5.1.2
diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml
index 4aaea57..2832dfa 100644
--- a/ruoyi-admin/src/main/resources/application-dev.yml
+++ b/ruoyi-admin/src/main/resources/application-dev.yml
@@ -43,15 +43,15 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
- url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
+ url: jdbc:mysql://101.37.69.204:8001/mental_health_vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
username: root
- password: root
+ password: Mz!@#123
# 从库数据源
slave:
lazy: true
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
- url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
+ url: jdbc:mysql://101.37.69.204:8001/mental_health_vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true
username:
password:
# oracle:
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 3f54f64..0c1d129 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -134,6 +134,7 @@ tenant:
- sys_user_role
- sys_client
- sys_oss_config
+ - scale_info
# MyBatisPlus配置
# https://baomidou.com/config/
diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml
index 4044916..595641b 100644
--- a/ruoyi-modules/pom.xml
+++ b/ruoyi-modules/pom.xml
@@ -14,6 +14,7 @@
ruoyi-generator
ruoyi-job
ruoyi-system
+ rouyi-scale
ruoyi-modules
diff --git a/ruoyi-modules/rouyi-scale/.gitignore b/ruoyi-modules/rouyi-scale/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/ruoyi-modules/rouyi-scale/pom.xml b/ruoyi-modules/rouyi-scale/pom.xml
new file mode 100644
index 0000000..d31afd1
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/pom.xml
@@ -0,0 +1,106 @@
+
+
+ 4.0.0
+
+ org.dromara
+ ruoyi-modules
+ 5.1.2
+
+
+ org.dromara
+ rouyi-scale
+
+
+ 量表模块
+
+
+
+
+
+ org.dromara
+ ruoyi-common-core
+
+
+
+ org.dromara
+ ruoyi-system
+
+
+
+ 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
+
+
+
+
+
diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScaleInfoController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScaleInfoController.java
new file mode 100644
index 0000000..7161cd0
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScaleInfoController.java
@@ -0,0 +1,105 @@
+package org.dromara.scale.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 org.dromara.scale.domain.vo.ScaleInfoVo;
+import org.dromara.scale.domain.bo.ScaleInfoBo;
+import org.dromara.scale.service.IScaleInfoService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 心理测评量
+ *
+ * @author jiangzhe
+ * @date 2024-03-29
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/scale/ScaleInfo")
+public class ScaleInfoController extends BaseController {
+
+ private final IScaleInfoService scaleInfoService;
+
+ /**
+ * 查询心理测评量列表
+ */
+ @SaCheckPermission("scale:ScaleInfo:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ScaleInfoBo bo, PageQuery pageQuery) {
+ return scaleInfoService.queryPageList(bo, pageQuery);
+ }
+
+ /**
+ * 导出心理测评量列表
+ */
+ @SaCheckPermission("scale:ScaleInfo:export")
+ @Log(title = "心理测评量", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(ScaleInfoBo bo, HttpServletResponse response) {
+ List list = scaleInfoService.queryList(bo);
+ ExcelUtil.exportExcel(list, "心理测评量", ScaleInfoVo.class, response);
+ }
+
+ /**
+ * 获取心理测评量详细信息
+ *
+ * @param id 主键
+ */
+ @SaCheckPermission("scale:ScaleInfo:query")
+ @GetMapping("/{id}")
+ public R getInfo(@NotNull(message = "主键不能为空")
+ @PathVariable Long id) {
+ return R.ok(scaleInfoService.queryById(id));
+ }
+
+ /**
+ * 新增心理测评量
+ */
+ @SaCheckPermission("scale:ScaleInfo:add")
+ @Log(title = "心理测评量", businessType = BusinessType.INSERT)
+ @RepeatSubmit()
+ @PostMapping()
+ public R add(@Validated(AddGroup.class) @RequestBody ScaleInfoBo bo) {
+ return toAjax(scaleInfoService.insertByBo(bo));
+ }
+
+ /**
+ * 修改心理测评量
+ */
+ @SaCheckPermission("scale:ScaleInfo:edit")
+ @Log(title = "心理测评量", businessType = BusinessType.UPDATE)
+ @RepeatSubmit()
+ @PutMapping()
+ public R edit(@Validated(EditGroup.class) @RequestBody ScaleInfoBo bo) {
+ return toAjax(scaleInfoService.updateByBo(bo));
+ }
+
+ /**
+ * 删除心理测评量
+ *
+ * @param ids 主键串
+ */
+ @SaCheckPermission("scale:ScaleInfo:remove")
+ @Log(title = "心理测评量", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public R remove(@NotEmpty(message = "主键不能为空")
+ @PathVariable Long[] ids) {
+ return toAjax(scaleInfoService.deleteWithValidByIds(List.of(ids), true));
+ }
+}
diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/ScaleInfo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/ScaleInfo.java
new file mode 100644
index 0000000..a5f33cc
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/ScaleInfo.java
@@ -0,0 +1,112 @@
+package org.dromara.scale.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import java.math.BigDecimal;
+
+import java.io.Serial;
+
+/**
+ * 心理测评量对象 scale_info
+ *
+ * @author jiangzhe
+ * @date 2024-03-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("scale_info")
+public class ScaleInfo extends BaseEntity {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @TableId(value = "id")
+ private Long id;
+
+ /**
+ * 量表名称
+ */
+ private String name;
+
+ /**
+ * 量表编码
+ */
+ private String code;
+
+ /**
+ * 标题
+ */
+ private String title;
+
+ /**
+ * 子标题
+ */
+ private String subTitle;
+
+ /**
+ * 标签
+ */
+ private String tags;
+
+ /**
+ * 适合年龄段
+ */
+ private String ageRange;
+
+ /**
+ * 测评次数
+ */
+ private Long evalNums;
+
+ /**
+ * 封面
+ */
+ private Long coverImg;
+
+ /**
+ * 价格/单次
+ */
+ private BigDecimal price;
+
+ /**
+ * 描述
+ */
+ private String note;
+
+ /**
+ * 分钟
+ */
+ private Long duration;
+
+ /**
+ * 维度类型:0:单项单维,1:多项单维型,2:多项多维型
+ */
+ private Integer dimensionType;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ private String status;
+
+ /**
+ * 量表类别:如情感,字典
+ */
+ private Long type;
+
+ /**
+ * 题量
+ */
+ private Long questionsNum;
+
+ /**
+ * 0:高分异常,1:低分异常
+ */
+ private Integer selectDirection;
+
+
+}
diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/ScaleInfoBo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/ScaleInfoBo.java
new file mode 100644
index 0000000..7380f4e
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/bo/ScaleInfoBo.java
@@ -0,0 +1,127 @@
+package org.dromara.scale.domain.bo;
+
+import org.dromara.scale.domain.ScaleInfo;
+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.math.BigDecimal;
+
+/**
+ * 心理测评量业务对象 scale_info
+ *
+ * @author jiangzhe
+ * @date 2024-03-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ScaleInfo.class, reverseConvertGenerate = false)
+public class ScaleInfoBo extends BaseEntity {
+
+ /**
+ * 主键
+ */
+ @NotNull(message = "主键不能为空", groups = { EditGroup.class })
+ private Long id;
+
+ /**
+ * 量表名称
+ */
+ @NotBlank(message = "量表名称不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String name;
+
+ /**
+ * 量表编码
+ */
+ @NotBlank(message = "量表编码不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String code;
+
+ /**
+ * 标题
+ */
+ @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String title;
+
+ /**
+ * 子标题
+ */
+ @NotBlank(message = "子标题不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String subTitle;
+
+ /**
+ * 标签
+ */
+ @NotBlank(message = "标签不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String tags;
+
+ /**
+ * 适合年龄段
+ */
+ @NotBlank(message = "适合年龄段不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String ageRange;
+
+ /**
+ * 测评次数
+ */
+ @NotNull(message = "测评次数不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long evalNums;
+
+ /**
+ * 封面
+ */
+ @NotNull(message = "封面不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long coverImg;
+
+ /**
+ * 价格/单次
+ */
+ @NotNull(message = "价格/单次不能为空", groups = { AddGroup.class, EditGroup.class })
+ private BigDecimal price;
+
+ /**
+ * 描述
+ */
+ @NotBlank(message = "描述不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String note;
+
+ /**
+ * 分钟
+ */
+ @NotNull(message = "分钟不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long duration;
+
+ /**
+ * 维度类型:0:单项单维,1:多项单维型,2:多项多维型
+ */
+// @NotNull(message = "维度类型:0:单项单维,1:多项单维型,2:多项多维型不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer dimensionType;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+// @NotBlank(message = "状态(0正常 1停用)不能为空", groups = { AddGroup.class, EditGroup.class })
+ private String status;
+
+ /**
+ * 量表类别:如情感,字典
+ */
+// @NotNull(message = "量表类别:如情感,字典不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long type;
+
+ /**
+ * 题量
+ */
+ @NotNull(message = "题量不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Long questionsNum;
+
+ /**
+ * 0:高分异常,1:低分异常
+ */
+// @NotNull(message = "0:高分异常,1:低分异常不能为空", groups = { AddGroup.class, EditGroup.class })
+ private Integer selectDirection;
+
+
+}
diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ScaleInfoVo.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ScaleInfoVo.java
new file mode 100644
index 0000000..6f5dfa1
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/vo/ScaleInfoVo.java
@@ -0,0 +1,138 @@
+package org.dromara.scale.domain.vo;
+
+import java.math.BigDecimal;
+import org.dromara.scale.domain.ScaleInfo;
+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;
+
+
+
+/**
+ * 心理测评量视图对象 scale_info
+ *
+ * @author jiangzhe
+ * @date 2024-03-29
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ScaleInfo.class)
+public class ScaleInfoVo implements Serializable {
+
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @ExcelProperty(value = "主键")
+ private Long id;
+
+ /**
+ * 量表名称
+ */
+ @ExcelProperty(value = "量表名称")
+ private String name;
+
+ /**
+ * 量表编码
+ */
+ @ExcelProperty(value = "量表编码")
+ private String code;
+
+ /**
+ * 标题
+ */
+ @ExcelProperty(value = "标题")
+ private String title;
+
+ /**
+ * 子标题
+ */
+ @ExcelProperty(value = "子标题")
+ private String subTitle;
+
+ /**
+ * 标签
+ */
+ @ExcelProperty(value = "标签")
+ private String tags;
+
+ /**
+ * 适合年龄段
+ */
+ @ExcelProperty(value = "适合年龄段")
+ private String ageRange;
+
+ /**
+ * 测评次数
+ */
+ @ExcelProperty(value = "测评次数")
+ private Long evalNums;
+
+ /**
+ * 封面
+ */
+ @ExcelProperty(value = "封面")
+ private Long coverImg;
+
+ private String coverImgUrl;
+
+ /**
+ * 价格/单次
+ */
+ @ExcelProperty(value = "价格/单次")
+ private BigDecimal price;
+
+ /**
+ * 描述
+ */
+ @ExcelProperty(value = "描述")
+ private String note;
+
+ /**
+ * 分钟
+ */
+ @ExcelProperty(value = "分钟")
+ private Long duration;
+
+ /**
+ * 维度类型:0:单项单维,1:多项单维型,2:多项多维型
+ */
+ @ExcelProperty(value = "维度类型:0:单项单维,1:多项单维型,2:多项多维型")
+ private Integer dimensionType;
+
+ /**
+ * 状态(0正常 1停用)
+ */
+ @ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
+ @ExcelDictFormat(readConverterExp = "0=正常,1=停用")
+ private String status;
+
+ /**
+ * 量表类别:如情感,字典
+ */
+ @ExcelProperty(value = "量表类别:如情感,字典")
+ private Long type;
+
+ /**
+ * 题量
+ */
+ @ExcelProperty(value = "题量")
+ private Long questionsNum;
+
+ /**
+ * 0:高分异常,1:低分异常
+ */
+ @ExcelProperty(value = "0:高分异常,1:低分异常")
+ private Integer selectDirection;
+
+
+}
diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ScaleInfoMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ScaleInfoMapper.java
new file mode 100644
index 0000000..a6da9fd
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/ScaleInfoMapper.java
@@ -0,0 +1,15 @@
+package org.dromara.scale.mapper;
+
+import org.dromara.scale.domain.ScaleInfo;
+import org.dromara.scale.domain.vo.ScaleInfoVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 心理测评量Mapper接口
+ *
+ * @author jiangzhe
+ * @date 2024-03-29
+ */
+public interface ScaleInfoMapper extends BaseMapperPlus {
+
+}
diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IScaleInfoService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IScaleInfoService.java
new file mode 100644
index 0000000..8499728
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/IScaleInfoService.java
@@ -0,0 +1,49 @@
+package org.dromara.scale.service;
+
+import org.dromara.scale.domain.ScaleInfo;
+import org.dromara.scale.domain.vo.ScaleInfoVo;
+import org.dromara.scale.domain.bo.ScaleInfoBo;
+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 jiangzhe
+ * @date 2024-03-29
+ */
+public interface IScaleInfoService {
+
+ /**
+ * 查询心理测评量
+ */
+ ScaleInfoVo queryById(Long id);
+
+ /**
+ * 查询心理测评量列表
+ */
+ TableDataInfo queryPageList(ScaleInfoBo bo, PageQuery pageQuery);
+
+ /**
+ * 查询心理测评量列表
+ */
+ List queryList(ScaleInfoBo bo);
+
+ /**
+ * 新增心理测评量
+ */
+ Boolean insertByBo(ScaleInfoBo bo);
+
+ /**
+ * 修改心理测评量
+ */
+ Boolean updateByBo(ScaleInfoBo bo);
+
+ /**
+ * 校验并批量删除心理测评量信息
+ */
+ Boolean deleteWithValidByIds(Collection ids, Boolean isValid);
+}
diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ScaleInfoServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ScaleInfoServiceImpl.java
new file mode 100644
index 0000000..870864b
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/ScaleInfoServiceImpl.java
@@ -0,0 +1,129 @@
+package org.dromara.scale.service.impl;
+
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.system.mapper.SysOssMapper;
+import org.springframework.stereotype.Service;
+import org.dromara.scale.domain.bo.ScaleInfoBo;
+import org.dromara.scale.domain.vo.ScaleInfoVo;
+import org.dromara.scale.domain.ScaleInfo;
+import org.dromara.scale.mapper.ScaleInfoMapper;
+import org.dromara.scale.service.IScaleInfoService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 心理测评量Service业务层处理
+ *
+ * @author jiangzhe
+ * @date 2024-03-29
+ */
+@RequiredArgsConstructor
+@Service
+public class ScaleInfoServiceImpl implements IScaleInfoService {
+
+ private final ScaleInfoMapper baseMapper;
+ private final SysOssMapper sysOssMapper;
+
+ /**
+ * 查询心理测评量
+ */
+ @Override
+ public ScaleInfoVo queryById(Long id) {
+ return baseMapper.selectVoById(id);
+ }
+
+ /**
+ * 查询心理测评量列表
+ */
+ @Override
+ public TableDataInfo queryPageList(ScaleInfoBo bo, PageQuery pageQuery) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
+ for (ScaleInfoVo record : result.getRecords()) {
+ record.setCoverImgUrl(sysOssMapper.selectById(record.getCoverImg()).getUrl());
+ }
+ return TableDataInfo.build(result);
+ }
+
+ /**
+ * 查询心理测评量列表
+ */
+ @Override
+ public List queryList(ScaleInfoBo bo) {
+ LambdaQueryWrapper lqw = buildQueryWrapper(bo);
+ return baseMapper.selectVoList(lqw);
+ }
+
+ private LambdaQueryWrapper buildQueryWrapper(ScaleInfoBo bo) {
+ Map params = bo.getParams();
+ LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
+ lqw.like(StringUtils.isNotBlank(bo.getName()), ScaleInfo::getName, bo.getName());
+ lqw.eq(StringUtils.isNotBlank(bo.getCode()), ScaleInfo::getCode, bo.getCode());
+ lqw.eq(StringUtils.isNotBlank(bo.getTitle()), ScaleInfo::getTitle, bo.getTitle());
+ lqw.eq(StringUtils.isNotBlank(bo.getSubTitle()), ScaleInfo::getSubTitle, bo.getSubTitle());
+ lqw.eq(StringUtils.isNotBlank(bo.getTags()), ScaleInfo::getTags, bo.getTags());
+ lqw.eq(StringUtils.isNotBlank(bo.getAgeRange()), ScaleInfo::getAgeRange, bo.getAgeRange());
+ lqw.eq(bo.getEvalNums() != null, ScaleInfo::getEvalNums, bo.getEvalNums());
+ lqw.eq(bo.getCoverImg() != null, ScaleInfo::getCoverImg, bo.getCoverImg());
+ lqw.eq(bo.getPrice() != null, ScaleInfo::getPrice, bo.getPrice());
+ lqw.eq(StringUtils.isNotBlank(bo.getNote()), ScaleInfo::getNote, bo.getNote());
+ lqw.eq(bo.getDuration() != null, ScaleInfo::getDuration, bo.getDuration());
+ lqw.eq(bo.getDimensionType() != null, ScaleInfo::getDimensionType, bo.getDimensionType());
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ScaleInfo::getStatus, bo.getStatus());
+ lqw.eq(bo.getType() != null, ScaleInfo::getType, bo.getType());
+ lqw.eq(bo.getQuestionsNum() != null, ScaleInfo::getQuestionsNum, bo.getQuestionsNum());
+ lqw.eq(bo.getSelectDirection() != null, ScaleInfo::getSelectDirection, bo.getSelectDirection());
+ return lqw;
+ }
+
+ /**
+ * 新增心理测评量
+ */
+ @Override
+ public Boolean insertByBo(ScaleInfoBo bo) {
+ ScaleInfo add = MapstructUtils.convert(bo, ScaleInfo.class);
+ validEntityBeforeSave(add);
+ boolean flag = baseMapper.insert(add) > 0;
+ if (flag) {
+ bo.setId(add.getId());
+ }
+ return flag;
+ }
+
+ /**
+ * 修改心理测评量
+ */
+ @Override
+ public Boolean updateByBo(ScaleInfoBo bo) {
+ ScaleInfo update = MapstructUtils.convert(bo, ScaleInfo.class);
+ validEntityBeforeSave(update);
+ return baseMapper.updateById(update) > 0;
+ }
+
+ /**
+ * 保存前的数据校验
+ */
+ private void validEntityBeforeSave(ScaleInfo entity) {
+ //TODO 做一些数据校验,如唯一约束
+ }
+
+ /**
+ * 批量删除心理测评量
+ */
+ @Override
+ public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) {
+ if (isValid) {
+ //TODO 做一些业务上的校验,判断是否需要校验
+ }
+ return baseMapper.deleteBatchIds(ids) > 0;
+ }
+}
diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ScaleInfoMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ScaleInfoMapper.xml
new file mode 100644
index 0000000..a837a03
--- /dev/null
+++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/ScaleInfoMapper.xml
@@ -0,0 +1,7 @@
+
+
+
+
+