diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoAddBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoAddBo.java new file mode 100644 index 00000000..a7e79f84 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoAddBo.java @@ -0,0 +1,43 @@ +package com.ruoyi.demo.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + + + +/** + * 测试单表添加对象 test_demo + * + * @author Lion Li + * @date 2021-05-30 + */ +@Data +@ApiModel("测试单表添加对象") +public class TestDemoAddBo { + + /** 部门id */ + @ApiModelProperty("部门id") + private Long deptId; + + /** 用户id */ + @ApiModelProperty("用户id") + private Long userId; + + /** 排序号 */ + @ApiModelProperty("排序号") + private Long orderNum; + + /** key键 */ + @ApiModelProperty("key键") + @NotBlank(message = "key键不能为空") + private String testKey; + + /** 值 */ + @ApiModelProperty("值") + @NotBlank(message = "值不能为空") + private String value; + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoEditBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoEditBo.java new file mode 100644 index 00000000..639443b0 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoEditBo.java @@ -0,0 +1,52 @@ +package com.ruoyi.demo.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + + +/** + * 测试单表编辑对象 test_demo + * + * @author Lion Li + * @date 2021-05-30 + */ +@Data +@ApiModel("测试单表编辑对象") +public class TestDemoEditBo { + + + /** 主键 */ + @ApiModelProperty("主键") + private Long id; + + + /** 部门id */ + @ApiModelProperty("部门id") + private Long deptId; + + + /** 用户id */ + @ApiModelProperty("用户id") + private Long userId; + + + /** 排序号 */ + @ApiModelProperty("排序号") + private Long orderNum; + + + /** key键 */ + @ApiModelProperty("key键") + @NotBlank(message = "key键不能为空") + private String testKey; + + + /** 值 */ + @ApiModelProperty("值") + @NotBlank(message = "值不能为空") + private String value; + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoQueryBo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoQueryBo.java new file mode 100644 index 00000000..ca2bb5a3 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoQueryBo.java @@ -0,0 +1,42 @@ +package com.ruoyi.demo.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 测试单表分页查询对象 test_demo + * + * @author Lion Li + * @date 2021-05-30 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("测试单表分页查询对象") +public class TestDemoQueryBo extends BaseEntity { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + /** 排序列 */ + @ApiModelProperty("排序列") + private String orderByColumn; + /** 排序的方向desc或者asc */ + @ApiModelProperty(value = "排序的方向", example = "asc,desc") + private String isAsc; + + + /** key键 */ + @ApiModelProperty("key键") + private String testKey; + /** 值 */ + @ApiModelProperty("值") + private String value; + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java new file mode 100644 index 00000000..2ac99d66 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java @@ -0,0 +1,108 @@ +package com.ruoyi.demo.controller; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.demo.bo.TestDemoAddBo; +import com.ruoyi.demo.bo.TestDemoEditBo; +import com.ruoyi.demo.bo.TestDemoQueryBo; +import com.ruoyi.demo.service.ITestDemoService; +import com.ruoyi.demo.vo.TestDemoVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; +import java.util.List; + +/** + * 测试单表Controller + * + * @author Lion Li + * @date 2021-05-30 + */ +@Api(value = "测试单表控制器", tags = {"测试单表管理"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/demo/demo") +public class TestDemoController extends BaseController { + + private final ITestDemoService iTestDemoService; + + /** + * 查询测试单表列表 + */ + @ApiOperation("查询测试单表列表") + @PreAuthorize("@ss.hasPermi('demo:demo:list')") + @GetMapping("/list") + public TableDataInfo list(@Validated TestDemoQueryBo bo) { + return iTestDemoService.queryPageList(bo); + } + + /** + * 导出测试单表列表 + */ + @ApiOperation("导出测试单表列表") + @PreAuthorize("@ss.hasPermi('demo:demo:export')") + @Log(title = "测试单表", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(@Validated TestDemoQueryBo bo) { + List list = iTestDemoService.queryList(bo); + ExcelUtil util = new ExcelUtil(TestDemoVo.class); + return util.exportExcel(list, "测试单表"); + } + + /** + * 获取测试单表详细信息 + */ + @ApiOperation("获取测试单表详细信息") + @PreAuthorize("@ss.hasPermi('demo:demo:query')") + @GetMapping("/{id}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iTestDemoService.queryById(id)); + } + + /** + * 新增测试单表 + */ + @ApiOperation("新增测试单表") + @PreAuthorize("@ss.hasPermi('demo:demo:add')") + @Log(title = "测试单表", businessType = BusinessType.INSERT) + @PostMapping() + public AjaxResult add(@Validated @RequestBody TestDemoAddBo bo) { + return toAjax(iTestDemoService.insertByAddBo(bo) ? 1 : 0); + } + + /** + * 修改测试单表 + */ + @ApiOperation("修改测试单表") + @PreAuthorize("@ss.hasPermi('demo:demo:edit')") + @Log(title = "测试单表", businessType = BusinessType.UPDATE) + @PutMapping() + public AjaxResult edit(@Validated @RequestBody TestDemoEditBo bo) { + return toAjax(iTestDemoService.updateByEditBo(bo) ? 1 : 0); + } + + /** + * 删除测试单表 + */ + @ApiOperation("删除测试单表") + @PreAuthorize("@ss.hasPermi('demo:demo:remove')") + @Log(title = "测试单表" , businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iTestDemoService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); + } +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java new file mode 100644 index 00000000..f0387069 --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java @@ -0,0 +1,70 @@ +package com.ruoyi.demo.domain; + +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * 测试单表对象 test_demo + * + * @author Lion Li + * @date 2021-05-30 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("test_demo") +public class TestDemo implements Serializable { + + private static final long serialVersionUID=1L; + + + /** 主键 */ + @TableId(value = "id") + private Long id; + + /** 部门id */ + private Long deptId; + + /** 用户id */ + private Long userId; + + /** 排序号 */ + @OrderBy(isDesc = false, sort = 1) + private Long orderNum; + + /** key键 */ + private String testKey; + + /** 值 */ + private String value; + + /** 版本 */ + @Version + private Long version; + + /** 创建时间 */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新时间 */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private Date updateTime; + + /** 更新人 */ + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** 删除标志 */ + @TableLogic + private Long delFlag; + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java new file mode 100644 index 00000000..2416f0ef --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.demo.mapper; + +import com.ruoyi.demo.domain.TestDemo; +import com.ruoyi.common.core.page.BaseMapperPlus; + +/** + * 测试单表Mapper接口 + * + * @author Lion Li + * @date 2021-05-30 + */ +public interface TestDemoMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java new file mode 100644 index 00000000..7f08668f --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java @@ -0,0 +1,57 @@ +package com.ruoyi.demo.service; + +import com.ruoyi.demo.domain.TestDemo; +import com.ruoyi.demo.vo.TestDemoVo; +import com.ruoyi.demo.bo.TestDemoQueryBo; +import com.ruoyi.demo.bo.TestDemoAddBo; +import com.ruoyi.demo.bo.TestDemoEditBo; +import com.ruoyi.common.core.page.IServicePlus; +import com.ruoyi.common.core.page.TableDataInfo; + +import java.util.Collection; +import java.util.List; + +/** + * 测试单表Service接口 + * + * @author Lion Li + * @date 2021-05-30 + */ +public interface ITestDemoService extends IServicePlus { + /** + * 查询单个 + * @return + */ + TestDemoVo queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(TestDemoQueryBo bo); + /** + * 查询列表 + */ + List queryList(TestDemoQueryBo bo); + + /** + * 根据新增业务对象插入测试单表 + * @param bo 测试单表新增业务对象 + * @return + */ + Boolean insertByAddBo(TestDemoAddBo bo); + + /** + * 根据编辑业务对象修改测试单表 + * @param bo 测试单表编辑业务对象 + * @return + */ + Boolean updateByEditBo(TestDemoEditBo bo); + + /** + * 校验并删除数据 + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java new file mode 100644 index 00000000..d974762f --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java @@ -0,0 +1,95 @@ +package com.ruoyi.demo.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.annotation.DataScope; +import com.ruoyi.common.core.page.PagePlus; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.demo.bo.TestDemoAddBo; +import com.ruoyi.demo.bo.TestDemoEditBo; +import com.ruoyi.demo.bo.TestDemoQueryBo; +import com.ruoyi.demo.domain.TestDemo; +import com.ruoyi.demo.mapper.TestDemoMapper; +import com.ruoyi.demo.service.ITestDemoService; +import com.ruoyi.demo.vo.TestDemoVo; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 测试单表Service业务层处理 + * + * @author Lion Li + * @date 2021-05-30 + */ +@Service +public class TestDemoServiceImpl extends ServiceImpl implements ITestDemoService { + + @Override + public TestDemoVo queryById(Long id) { + return getVoById(id, TestDemoVo.class); + } + + @DataScope(isUser = true) + @Override + public TableDataInfo queryPageList(TestDemoQueryBo bo) { + PagePlus result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), TestDemoVo.class); + return PageUtils.buildDataInfo(result); + } + + @DataScope(isUser = true) + @Override + public List queryList(TestDemoQueryBo bo) { + return listVo(buildQueryWrapper(bo), TestDemoVo.class); + } + + private LambdaQueryWrapper buildQueryWrapper(TestDemoQueryBo bo) { + Map params = bo.getParams(); + Object dataScope = params.get("dataScope"); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StrUtil.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey()); + lqw.eq(StrUtil.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.apply(dataScope != null && StrUtil.isNotBlank(dataScope.toString()), + dataScope != null ? dataScope.toString() : null); + return lqw; + } + + @Override + public Boolean insertByAddBo(TestDemoAddBo bo) { + TestDemo add = BeanUtil.toBean(bo, TestDemo.class); + validEntityBeforeSave(add); + return save(add); + } + + @Override + public Boolean updateByEditBo(TestDemoEditBo bo) { + TestDemo update = BeanUtil.toBean(bo, TestDemo.class); + validEntityBeforeSave(update); + return updateById(update); + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(TestDemo entity) { + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if (isValid) { + //TODO 做一些业务上的校验,判断是否需要校验 + } + return removeByIds(ids); + } +} diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestDemoVo.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestDemoVo.java new file mode 100644 index 00000000..c51ed43b --- /dev/null +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestDemoVo.java @@ -0,0 +1,76 @@ +package com.ruoyi.demo.vo; + +import com.ruoyi.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; + + + +/** + * 测试单表视图对象 test_demo + * + * @author Lion Li + * @date 2021-05-30 + */ +@Data +@ApiModel("测试单表视图对象") +public class TestDemoVo { + + private static final long serialVersionUID = 1L; + + /** 主键 */ + @ApiModelProperty("主键") + private Long id; + + /** 部门id */ + @Excel(name = "部门id") + @ApiModelProperty("部门id") + private Long deptId; + + /** 用户id */ + @Excel(name = "用户id") + @ApiModelProperty("用户id") + private Long userId; + + /** 排序号 */ + @Excel(name = "排序号") + @ApiModelProperty("排序号") + private Long orderNum; + + /** key键 */ + @Excel(name = "key键") + @ApiModelProperty("key键") + private String testKey; + + /** 值 */ + @Excel(name = "值") + @ApiModelProperty("值") + private String value; + + /** 创建时间 */ + @Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("创建时间") + private Date createTime; + + /** 创建人 */ + @Excel(name = "创建人") + @ApiModelProperty("创建人") + private String createBy; + + /** 更新时间 */ + @Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("更新时间") + private Date updateTime; + + /** 更新人 */ + @Excel(name = "更新人") + @ApiModelProperty("更新人") + private String updateBy; + + +} 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 00000000..ec433d6d --- /dev/null +++ b/ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ruoyi-ui/src/api/demo/demo.js b/ruoyi-ui/src/api/demo/demo.js new file mode 100644 index 00000000..fc9937df --- /dev/null +++ b/ruoyi-ui/src/api/demo/demo.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +// 查询测试单表列表 +export function listDemo(query) { + return request({ + url: '/demo/demo/list', + method: 'get', + params: query + }) +} + +// 查询测试单表详细 +export function getDemo(id) { + return request({ + url: '/demo/demo/' + id, + method: 'get' + }) +} + +// 新增测试单表 +export function addDemo(data) { + return request({ + url: '/demo/demo', + method: 'post', + data: data + }) +} + +// 修改测试单表 +export function updateDemo(data) { + return request({ + url: '/demo/demo', + method: 'put', + data: data + }) +} + +// 删除测试单表 +export function delDemo(id) { + return request({ + url: '/demo/demo/' + id, + method: 'delete' + }) +} + +// 导出测试单表 +export function exportDemo(query) { + return request({ + url: '/demo/demo/export', + method: 'get', + params: query + }) +} \ No newline at end of file diff --git a/ruoyi-ui/src/views/demo/demo/index.vue b/ruoyi-ui/src/views/demo/demo/index.vue new file mode 100644 index 00000000..b831ad9b --- /dev/null +++ b/ruoyi-ui/src/views/demo/demo/index.vue @@ -0,0 +1,339 @@ + + +