diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 8abf1a68..0b1661e2 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -18,7 +18,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true username: root - password: root + password: 123456 hikari: # 最大连接池数量 diff --git a/ruoyi-modules/ruoyi-generator/pom.xml b/ruoyi-modules/ruoyi-generator/pom.xml index c6ab5e3c..e545d91b 100644 --- a/ruoyi-modules/ruoyi-generator/pom.xml +++ b/ruoyi-modules/ruoyi-generator/pom.xml @@ -48,6 +48,10 @@ org.apache.velocity velocity-engine-core + + org.ruoyi + ruoyi-common-excel + diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/controller/SysDemoController.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/controller/SysDemoController.java new file mode 100644 index 00000000..0c795ed9 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/controller/SysDemoController.java @@ -0,0 +1,105 @@ +package org.ruoyi.system.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.ruoyi.common.idempotent.annotation.RepeatSubmit; +import org.ruoyi.common.log.annotation.Log; +import org.ruoyi.common.web.core.BaseController; +import org.ruoyi.core.page.PageQuery; +import org.ruoyi.common.core.domain.R; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; +import org.ruoyi.common.log.enums.BusinessType; +import org.ruoyi.common.excel.utils.ExcelUtil; +import org.ruoyi.system.domain.vo.SysDemoVo; +import org.ruoyi.system.domain.bo.SysDemoBo; +import org.ruoyi.system.service.SysDemoService; +import org.ruoyi.core.page.TableDataInfo; + +/** + * dome管理 + * + * @author ageerle + * @date Sat Aug 09 21:38:09 CST 2025 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("dev/sysDemo") +public class SysDemoController extends BaseController { + + private final SysDemoService sysDemoService; + +/** + * 查询dome管理列表 + */ +@SaCheckPermission("system:sysDemo:list") +@GetMapping("/list") + public TableDataInfo list(SysDemoBo bo, PageQuery pageQuery) { + return sysDemoService.queryPageList(bo, pageQuery); + } + + /** + * 导出dome管理列表 + */ + @SaCheckPermission("system:sysDemo:export") + @Log(title = "dome管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SysDemoBo bo, HttpServletResponse response) { + List list = sysDemoService.queryList(bo); + ExcelUtil.exportExcel(list, "dome管理", SysDemoVo.class, response); + } + + /** + * 获取dome管理详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("system:sysDemo:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Integer id) { + return R.ok(sysDemoService.queryById(id)); + } + + /** + * 新增dome管理 + */ + @SaCheckPermission("system:sysDemo:add") + @Log(title = "dome管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SysDemoBo bo) { + return toAjax(sysDemoService.insertByBo(bo)); + } + + /** + * 修改dome管理 + */ + @SaCheckPermission("system:sysDemo:edit") + @Log(title = "dome管理", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SysDemoBo bo) { + return toAjax(sysDemoService.updateByBo(bo)); + } + + /** + * 删除dome管理 + * + * @param ids 主键串 + */ + @SaCheckPermission("system:sysDemo:remove") + @Log(title = "dome管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Integer[] ids) { + return toAjax(sysDemoService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/SysDemo.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/SysDemo.java new file mode 100644 index 00000000..81187bf2 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/SysDemo.java @@ -0,0 +1,75 @@ +package org.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; + import java.util.Date; + import java.io.Serializable; + +import org.ruoyi.core.domain.BaseEntity; + +/** + * dome管理对象 sys_demo + * + * @author ageerle + * @date Sat Aug 09 21:38:09 CST 2025 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sys_demo") +public class SysDemo extends BaseEntity { + + + /** + * ID + */ + @TableId(value = "id") + private Integer id; + + /** + * 系统代码 + */ + private String sysCode; + + /** + * 系统名称 + */ + private String sysName; + + /** + * 系统状态 + */ + private Integer sysStatus; + + /** + * 创建部门 + */ + private Integer createDept; + + /** + * 创建者 + */ + private Integer createBy; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新者 + */ + private Integer updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/bo/SysDemoBo.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/bo/SysDemoBo.java new file mode 100644 index 00000000..caca34c1 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/bo/SysDemoBo.java @@ -0,0 +1,84 @@ +package org.ruoyi.system.domain.bo; + +import org.ruoyi.system.domain.SysDemo; +import org.ruoyi.core.domain.BaseEntity; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import java.io.Serializable; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; +import java.io.Serializable; +import java.io.Serializable; +import org.ruoyi.common.core.validate.AddGroup; +import org.ruoyi.common.core.validate.EditGroup; + +/** + * dome管理业务对象 sys_demo + * + * @author ageerle + * @date Sat Aug 09 21:38:09 CST 2025 + */ +@Data + +@AutoMapper(target = SysDemo.class, reverseConvertGenerate = false) +public class SysDemoBo implements Serializable { + + /** + * ID + */ + @NotNull(message = "ID不能为空", groups = { EditGroup.class }) + private Integer id; + + /** + * 系统代码 + */ + @NotBlank(message = "系统代码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sysCode; + + /** + * 系统名称 + */ + @NotBlank(message = "系统名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sysName; + + /** + * 系统状态 + */ + @NotNull(message = "系统状态不能为空", groups = { AddGroup.class, EditGroup.class }) + private Integer sysStatus; + + /** + * 创建部门 + */ + private Integer createDept; + + /** + * 创建者 + */ + private Integer createBy; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新者 + */ + private Integer updateBy; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/vo/SysDemoVo.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/vo/SysDemoVo.java new file mode 100644 index 00000000..0fd9f1a5 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/domain/vo/SysDemoVo.java @@ -0,0 +1,86 @@ +package org.ruoyi.system.domain.vo; + + import java.util.Date; + import java.io.Serializable; +import org.ruoyi.system.domain.SysDemo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.util.Date; + + +/** + * dome管理视图对象 sys_demo + * + * @author ageerle + * @date Sat Aug 09 21:38:09 CST 2025 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SysDemo.class) +public class SysDemoVo implements Serializable { + + /** + * ID + */ + @ExcelProperty(value = "ID") + private Integer id; + + /** + * 系统代码 + */ + @ExcelProperty(value = "系统代码") + private String sysCode; + + /** + * 系统名称 + */ + @ExcelProperty(value = "系统名称") + private String sysName; + + /** + * 系统状态 + */ + @ExcelProperty(value = "系统状态") + private Integer sysStatus; + + /** + * 创建部门 + */ + @ExcelProperty(value = "创建部门") + private Integer createDept; + + /** + * 创建者 + */ + @ExcelProperty(value = "创建者") + private Integer createBy; + + /** + * 创建时间 + */ + @ExcelProperty(value = "创建时间") + private Date createTime; + + /** + * 更新者 + */ + @ExcelProperty(value = "更新者") + private Integer updateBy; + + /** + * 更新时间 + */ + @ExcelProperty(value = "更新时间") + private Date updateTime; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/mapper/SysDemoMapper.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/mapper/SysDemoMapper.java new file mode 100644 index 00000000..94351479 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/mapper/SysDemoMapper.java @@ -0,0 +1,17 @@ +package org.ruoyi.system.mapper; + +import org.ruoyi.system.domain.SysDemo; +import org.ruoyi.system.domain.vo.SysDemoVo; +import org.ruoyi.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Mapper; + +/** + * dome管理Mapper接口 + * + * @author ageerle + * @date Sat Aug 09 21:38:09 CST 2025 + */ +@Mapper +public interface SysDemoMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/service/SysDemoService.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/service/SysDemoService.java new file mode 100644 index 00000000..ae7f4901 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/service/SysDemoService.java @@ -0,0 +1,48 @@ +package org.ruoyi.system.service; + +import org.ruoyi.system.domain.vo.SysDemoVo; +import org.ruoyi.system.domain.bo.SysDemoBo; + import org.ruoyi.core.page.TableDataInfo; + import org.ruoyi.core.page.PageQuery; + +import java.util.Collection; +import java.util.List; + +/** + * dome管理Service接口 + * + * @author ageerle + * @date Sat Aug 09 21:38:09 CST 2025 + */ +public interface SysDemoService { + + /** + * 查询dome管理 + */ + SysDemoVo queryById(Integer id); + + /** + * 查询dome管理列表 + */ + TableDataInfo queryPageList(SysDemoBo bo, PageQuery pageQuery); + + /** + * 查询dome管理列表 + */ + List queryList(SysDemoBo bo); + + /** + * 新增dome管理 + */ + Boolean insertByBo(SysDemoBo bo); + + /** + * 修改dome管理 + */ + Boolean updateByBo(SysDemoBo bo); + + /** + * 校验并批量删除dome管理信息 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/service/impl/SysDemoServiceImpl.java b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/service/impl/SysDemoServiceImpl.java new file mode 100644 index 00000000..a0bd9054 --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/service/impl/SysDemoServiceImpl.java @@ -0,0 +1,116 @@ +package org.ruoyi.system.service.impl; + +import org.ruoyi.common.core.utils.MapstructUtils; + import org.ruoyi.core.page.TableDataInfo; + import org.ruoyi.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.springframework.stereotype.Service; +import org.ruoyi.system.domain.bo.SysDemoBo; +import org.ruoyi.system.domain.vo.SysDemoVo; +import org.ruoyi.system.domain.SysDemo; +import org.ruoyi.system.mapper.SysDemoMapper; +import org.ruoyi.system.service.SysDemoService; +import org.ruoyi.common.core.utils.StringUtils; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * dome管理Service业务层处理 + * + * @author ageerle + * @date Sat Aug 09 21:38:09 CST 2025 + */ +@RequiredArgsConstructor +@Service +public class SysDemoServiceImpl implements SysDemoService { + + private final SysDemoMapper baseMapper; + + /** + * 查询dome管理 + */ + @Override + public SysDemoVo queryById(Integer id) { + return baseMapper.selectVoById(id); + } + + /** + * 查询dome管理列表 + */ + @Override + public TableDataInfo queryPageList(SysDemoBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询dome管理列表 + */ + @Override + public List queryList(SysDemoBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SysDemoBo bo) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(StringUtils.isNotBlank(bo.getSysCode()), SysDemo::getSysCode, bo.getSysCode()); + lqw.eq(StringUtils.isNotBlank(bo.getSysName()), SysDemo::getSysName, bo.getSysName()); + lqw.eq(bo.getSysStatus() != null, SysDemo::getSysStatus, bo.getSysStatus()); + lqw.eq(bo.getCreateDept() != null, SysDemo::getCreateDept, bo.getCreateDept()); + lqw.eq(bo.getCreateBy() != null, SysDemo::getCreateBy, bo.getCreateBy()); + lqw.eq(bo.getCreateTime() != null, SysDemo::getCreateTime, bo.getCreateTime()); + lqw.eq(bo.getUpdateBy() != null, SysDemo::getUpdateBy, bo.getUpdateBy()); + lqw.eq(bo.getUpdateTime() != null, SysDemo::getUpdateTime, bo.getUpdateTime()); + lqw.eq(StringUtils.isNotBlank(bo.getRemark()), SysDemo::getRemark, bo.getRemark()); + return lqw; + } + + /** + * 新增dome管理 + */ + @Override + public Boolean insertByBo(SysDemoBo bo) { + SysDemo add = MapstructUtils.convert(bo, SysDemo. class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改dome管理 + */ + @Override + public Boolean updateByBo(SysDemoBo bo) { + SysDemo update = MapstructUtils.convert(bo, SysDemo. class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SysDemo entity) { + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 批量删除dome管理 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteBatchIds(ids) > 0; + } +} diff --git a/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/sql/sys_demo_menu.sql b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/sql/sys_demo_menu.sql new file mode 100644 index 00000000..5b19392a --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/java/org/ruoyi/system/sql/sys_demo_menu.sql @@ -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(1954175368920645632, 'dome管理', '2000', '1', 'sysDemo', 'system/sysDemo/index', 1, 0, 'C', '0', '0', 'system:sysDemo:list', '#', 103, 1, sysdate(), null, null, 'dome管理菜单'); + +-- 按钮 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(1954175368920645633, 'dome管理查询', 1954175368920645632, '1', '#', '', 1, 0, 'F', '0', '0', 'system:sysDemo: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(1954175368920645634, 'dome管理新增', 1954175368920645632, '2', '#', '', 1, 0, 'F', '0', '0', 'system:sysDemo: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(1954175368920645635, 'dome管理修改', 1954175368920645632, '3', '#', '', 1, 0, 'F', '0', '0', 'system:sysDemo: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(1954175368920645636, 'dome管理删除', 1954175368920645632, '4', '#', '', 1, 0, 'F', '0', '0', 'system:sysDemo: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(1954175368920645637, 'dome管理导出', 1954175368920645632, '5', '#', '', 1, 0, 'F', '0', '0', 'system:sysDemo:export', '#', 103, 1, sysdate(), null, null, ''); diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/mapper/system/SysDemoMapper.xml b/ruoyi-modules/ruoyi-generator/src/main/resources/mapper/system/SysDemoMapper.xml new file mode 100644 index 00000000..c35ba06c --- /dev/null +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/mapper/system/SysDemoMapper.xml @@ -0,0 +1,7 @@ + + + + +