From a3a682eeb13d0fe29511f8803ed3ba13efddb69d Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期日, 30 五月 2021 02:24:10 +0800 Subject: [PATCH] add 增加demo模块 单表演示案例(包含数据权限) --- ruoyi-ui/src/api/demo/demo.js | 53 +++ ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestDemoController.java | 108 ++++++ ruoyi-demo/src/main/java/com/ruoyi/demo/service/impl/TestDemoServiceImpl.java | 95 +++++ ruoyi-ui/src/views/demo/demo/index.vue | 339 +++++++++++++++++++ ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoQueryBo.java | 42 ++ ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoAddBo.java | 43 ++ ruoyi-demo/src/main/java/com/ruoyi/demo/bo/TestDemoEditBo.java | 52 +++ ruoyi-demo/src/main/java/com/ruoyi/demo/domain/TestDemo.java | 70 ++++ ruoyi-demo/src/main/java/com/ruoyi/demo/vo/TestDemoVo.java | 76 ++++ ruoyi-demo/src/main/java/com/ruoyi/demo/service/ITestDemoService.java | 57 +++ ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml | 23 + ruoyi-demo/src/main/java/com/ruoyi/demo/mapper/TestDemoMapper.java | 14 12 files changed, 972 insertions(+), 0 deletions(-) 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 0000000..a7e79f8 --- /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 0000000..639443b --- /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 0000000..ca2bb5a --- /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; + /** 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc */ + @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 0000000..2ac99d6 --- /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<TestDemoVo> list(@Validated TestDemoQueryBo bo) { + return iTestDemoService.queryPageList(bo); + } + + /** + * 瀵煎嚭娴嬭瘯鍗曡〃鍒楄〃 + */ + @ApiOperation("瀵煎嚭娴嬭瘯鍗曡〃鍒楄〃") + @PreAuthorize("@ss.hasPermi('demo:demo:export')") + @Log(title = "娴嬭瘯鍗曡〃", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult<TestDemoVo> export(@Validated TestDemoQueryBo bo) { + List<TestDemoVo> list = iTestDemoService.queryList(bo); + ExcelUtil<TestDemoVo> util = new ExcelUtil<TestDemoVo>(TestDemoVo.class); + return util.exportExcel(list, "娴嬭瘯鍗曡〃"); + } + + /** + * 鑾峰彇娴嬭瘯鍗曡〃璇︾粏淇℃伅 + */ + @ApiOperation("鑾峰彇娴嬭瘯鍗曡〃璇︾粏淇℃伅") + @PreAuthorize("@ss.hasPermi('demo:demo:query')") + @GetMapping("/{id}") + public AjaxResult<TestDemoVo> 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<Void> 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<Void> 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<Void> 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 0000000..f038706 --- /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 0000000..2416f0e --- /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<TestDemo> { + +} 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 0000000..7f08668 --- /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<TestDemo> { + /** + * 鏌ヨ鍗曚釜 + * @return + */ + TestDemoVo queryById(Long id); + + /** + * 鏌ヨ鍒楄〃 + */ + TableDataInfo<TestDemoVo> queryPageList(TestDemoQueryBo bo); + /** + * 鏌ヨ鍒楄〃 + */ + List<TestDemoVo> 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<Long> 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 0000000..d974762 --- /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<TestDemoMapper, TestDemo> implements ITestDemoService { + + @Override + public TestDemoVo queryById(Long id) { + return getVoById(id, TestDemoVo.class); + } + + @DataScope(isUser = true) + @Override + public TableDataInfo<TestDemoVo> queryPageList(TestDemoQueryBo bo) { + PagePlus<TestDemo, TestDemoVo> result = pageVo(PageUtils.buildPagePlus(), buildQueryWrapper(bo), TestDemoVo.class); + return PageUtils.buildDataInfo(result); + } + + @DataScope(isUser = true) + @Override + public List<TestDemoVo> queryList(TestDemoQueryBo bo) { + return listVo(buildQueryWrapper(bo), TestDemoVo.class); + } + + private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoQueryBo bo) { + Map<String, Object> params = bo.getParams(); + Object dataScope = params.get("dataScope"); + LambdaQueryWrapper<TestDemo> 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<Long> 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 0000000..c51ed43 --- /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 0000000..ec433d6 --- /dev/null +++ b/ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper +PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" +"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.demo.mapper.TestDemoMapper"> + + <resultMap type="com.ruoyi.demo.domain.TestDemo" id="TestDemoResult"> + <result property="id" column="id"/> + <result property="deptId" column="dept_id"/> + <result property="userId" column="user_id"/> + <result property="orderNum" column="order_num"/> + <result property="testKey" column="test_key"/> + <result property="value" column="value"/> + <result property="version" column="version"/> + <result property="createTime" column="create_time"/> + <result property="createBy" column="create_by"/> + <result property="updateTime" column="update_time"/> + <result property="updateBy" column="update_by"/> + <result property="delFlag" column="del_flag"/> + </resultMap> + + +</mapper> \ 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 0000000..fc9937d --- /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 0000000..b831ad9 --- /dev/null +++ b/ruoyi-ui/src/views/demo/demo/index.vue @@ -0,0 +1,339 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item label="key閿�" prop="testKey"> + <el-input + v-model="queryParams.testKey" + placeholder="璇疯緭鍏ey閿�" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="鍊�" prop="value"> + <el-input + v-model="queryParams.value" + placeholder="璇疯緭鍏ュ��" + clearable + size="small" + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="鍒涘缓鏃堕棿"> + <el-date-picker + v-model="daterangeCreateTime" + size="small" + style="width: 240px" + value-format="yyyy-MM-dd" + type="daterange" + range-separator="-" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + ></el-date-picker> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + v-hasPermi="['demo:demo:add']" + >鏂板</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['demo:demo:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['demo:demo:remove']" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + :loading="exportLoading" + @click="handleExport" + v-hasPermi="['demo:demo:export']" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="demoList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="涓婚敭" align="center" prop="id" v-if="false"/> + <el-table-column label="閮ㄩ棬id" align="center" prop="deptId" /> + <el-table-column label="鐢ㄦ埛id" align="center" prop="userId" /> + <el-table-column label="鎺掑簭鍙�" align="center" prop="orderNum" /> + <el-table-column label="key閿�" align="center" prop="testKey" /> + <el-table-column label="鍊�" align="center" prop="value" /> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> + </template> + </el-table-column> + <el-table-column label="鍒涘缓浜�" align="center" prop="createBy" /> + <el-table-column label="鏇存柊鏃堕棿" align="center" prop="updateTime" width="180"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> + </template> + </el-table-column> + <el-table-column label="鏇存柊浜�" align="center" prop="updateBy" /> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['demo:demo:edit']" + >淇敼</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['demo:demo:remove']" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀规祴璇曞崟琛ㄥ璇濇 --> + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="閮ㄩ棬id" prop="deptId"> + <el-input v-model="form.deptId" placeholder="璇疯緭鍏ラ儴闂╥d" /> + </el-form-item> + <el-form-item label="鐢ㄦ埛id" prop="userId"> + <el-input v-model="form.userId" placeholder="璇疯緭鍏ョ敤鎴穒d" /> + </el-form-item> + <el-form-item label="鎺掑簭鍙�" prop="orderNum"> + <el-input v-model="form.orderNum" placeholder="璇疯緭鍏ユ帓搴忓彿" /> + </el-form-item> + <el-form-item label="key閿�" prop="testKey"> + <el-input v-model="form.testKey" placeholder="璇疯緭鍏ey閿�" /> + </el-form-item> + <el-form-item label="鍊�" prop="value"> + <el-input v-model="form.value" placeholder="璇疯緭鍏ュ��" /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { listDemo, getDemo, delDemo, addDemo, updateDemo, exportDemo } from "@/api/demo/demo"; + +export default { + name: "Demo", + components: { + }, + data() { + return { + // 閬僵灞� + loading: true, + // 瀵煎嚭閬僵灞� + exportLoading: false, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 娴嬭瘯鍗曡〃琛ㄦ牸鏁版嵁 + demoList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鍒涘缓鏃堕棿鏃堕棿鑼冨洿 + daterangeCreateTime: [], + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + testKey: undefined, + value: undefined, + createTime: undefined, + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + // 琛ㄥ崟鏍¢獙 + rules: { + testKey: [ + { required: true, message: "key閿笉鑳戒负绌�", trigger: "blur" } + ], + value: [ + { required: true, message: "鍊间笉鑳戒负绌�", trigger: "blur" } + ], + } + }; + }, + created() { + this.getList(); + }, + methods: { + /** 鏌ヨ娴嬭瘯鍗曡〃鍒楄〃 */ + getList() { + this.loading = true; + this.queryParams.params = {}; + if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) { + this.queryParams.params["beginCreateTime"] = this.daterangeCreateTime[0]; + this.queryParams.params["endCreateTime"] = this.daterangeCreateTime[1]; + } + listDemo(this.queryParams).then(response => { + this.demoList = response.rows; + this.total = response.total; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + id: undefined, + deptId: undefined, + userId: undefined, + orderNum: undefined, + testKey: undefined, + value: undefined, + version: undefined, + createTime: undefined, + createBy: undefined, + updateTime: undefined, + updateBy: undefined, + delFlag: undefined + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.daterangeCreateTime = []; + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.id) + this.single = selection.length!==1 + this.multiple = !selection.length + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞娴嬭瘯鍗曡〃"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const id = row.id || this.ids + getDemo(id).then(response => { + this.form = response.data; + this.open = true; + this.title = "淇敼娴嬭瘯鍗曡〃"; + }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate(valid => { + if (valid) { + if (this.form.id != null) { + updateDemo(this.form).then(response => { + this.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addDemo(this.form).then(response => { + this.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const ids = row.id || this.ids; + this.$confirm('鏄惁纭鍒犻櫎娴嬭瘯鍗曡〃缂栧彿涓�"' + ids + '"鐨勬暟鎹」?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(function() { + return delDemo(ids); + }).then(() => { + this.getList(); + this.msgSuccess("鍒犻櫎鎴愬姛"); + }) + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + const queryParams = this.queryParams; + this.$confirm('鏄惁纭瀵煎嚭鎵�鏈夋祴璇曞崟琛ㄦ暟鎹」?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + this.exportLoading = true; + return exportDemo(queryParams); + }).then(response => { + this.download(response.msg); + this.exportLoading = false; + }) + } + } +}; +</script> -- Gitblit v1.9.3