20200528-zlp-1

1已完善培训管理功能
2新增多级字典管理功能
This commit is contained in:
paidaxing444 2020-05-28 18:10:33 +08:00
parent 08ddca0ca8
commit 131a235d2e
11 changed files with 697 additions and 72 deletions

View File

@ -18,7 +18,7 @@ import './assets/icons' // icon
import './permission' // permission control
import { getDicts } from "@/api/system/dict/data";
import { getConfigKey } from "@/api/system/config";
import { parseTime, resetForm, addDateRange, selectDictLabel, download, handleTree } from "@/utils/ruoyi";
import { parseTime, resetForm, addDateRange, selectDictLabel,selectMoeDictLabel, download, handleTree } from "@/utils/ruoyi";
import Pagination from "@/components/Pagination";
import Video from 'video.js'
@ -32,6 +32,7 @@ Vue.prototype.parseTime = parseTime
Vue.prototype.resetForm = resetForm
Vue.prototype.addDateRange = addDateRange
Vue.prototype.selectDictLabel = selectDictLabel
Vue.prototype.selectMoeDictLabel = selectMoeDictLabel
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree

View File

@ -77,6 +77,18 @@ export function selectDictLabel(datas, value) {
return actions.join('');
}
// 回显数据字典
export function selectMoeDictLabel(datas, value) {
var actions = [];
Object.keys(datas).map((key) => {
if (datas[key].id == ('' + value)) {
actions.push(datas[key].name);
return false;
}
})
return actions.join('');
}
// 通用下载方法
export function download(fileName) {
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;

View File

@ -1,6 +1,15 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
<el-form-item label="视频标题" prop="title">
<el-input
v-model="queryParams.title"
clearable
size="small"
@keyup.enter.native="handleQuery"
placeholder="请输入培训视频标题"
/>
</el-form-item>
<el-form-item label="讲师姓名" prop="lecturer">
<el-select v-model="queryParams.lecturer" filterable placeholder="请选择讲师">
<el-option
@ -12,20 +21,13 @@
</el-select>
</el-form-item>
<el-form-item label="所属类别" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择所属类别" clearable size="small">
<el-option label="请选择字典生成" value />
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createtime">
<el-date-picker
<el-cascader
placeholder="请选择所属类别"
v-model="queryParams.type"
:options="optionTypes"
:props="{ checkStrictly: true, value: 'id', label: 'name' }"
clearable
size="small"
style="width: 200px"
v-model="queryParams.createtime"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择创建时间"
></el-date-picker>
></el-cascader>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -71,7 +73,7 @@
<el-table-column label="培训视频标题" align="center" prop="title" />
<el-table-column label="视频简介" align="center" prop="information" />
<el-table-column label="培训讲师" align="center" prop="lecturername" />
<el-table-column label="所属类别" align="center" prop="type" />
<el-table-column label="所属类别" align="center" prop="type" :formatter="typeFormat" />
<el-table-column label="创建时间" align="center" prop="createtime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createtime) }}</span>
@ -126,42 +128,39 @@
</el-select>
</el-form-item>
<el-form-item label="选择视频" prop="videourl">
<div id="app">
<el-upload
class="avatar-uploader"
:data="dataObj"
action="http://upload.qiniup.com"
list-type="picture-card"
:show-file-list="false"
:on-error="handleError"
:on-success="handleSuccessVideo"
:on-progress="uploadProcess"
:before-upload="videoBeforeUpload"
:on-remove="handleRemove"
>
<video
v-if="imageUrl.length > 1 && imgFlag == false"
controls="controls"
:src="[qiniuUrl + '/' + imageUrl]"
class="avatar"
></video>
<i
v-else-if="imageUrl.length < 1 && imgFlag == false"
class="el-icon-plus avatar-uploader-icon"
></i>
<el-progress
v-if="imgFlag == true"
type="circle"
:percentage="percent"
style="margin-top: 20px"
></el-progress>
</el-upload>
</div>
<el-upload
class="avatar-uploader"
:data="dataObj"
action="http://upload.qiniup.com"
list-type="picture-card"
:show-file-list="false"
:on-error="handleError"
:on-success="handleSuccessVideo"
:on-progress="uploadProcess"
:before-upload="videoBeforeUpload"
:on-remove="handleRemove"
>
<video
v-if="imageUrl.length > 1 && imgFlag == false"
controls="controls"
:src="[qiniuUrl + '/' + imageUrl]"
class="avatar"
></video>
<i
v-else-if="imageUrl.length < 1 && imgFlag == false"
class="el-icon-plus avatar-uploader-icon"
></i>
<el-progress v-if="imgFlag == true" type="circle" :percentage="percent"></el-progress>
</el-upload>
</el-form-item>
<el-form-item label="所属类别">
<el-select v-model="form.type" placeholder="请选择所属类别">
<el-option label="请选择字典生成" value />
</el-select>
<el-form-item label="所属类别" prop="type">
<el-cascader
placeholder="请选择所属类别"
v-model="form.type"
:options="optionTypes"
:props="{ checkStrictly: true, value: 'id', label: 'name' }"
clearable
></el-cascader>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -172,8 +171,6 @@
</div>
</template>
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.9.1/lib/index.js"></script>
<script>
import {
listVideo,
@ -184,12 +181,13 @@ import {
getQiNiuToken
} from "@/api/benyi_train/video";
import { listAllLecturer } from "@/api/benyi_train/lecturer";
import { listMoedata } from "@/api/system/moedata";
export default {
name: "Video",
data() {
return {
qiniuUrl: "https://files.benyiedu.com/", // 访
qiniuUrl: "https://files.benyiedu.com", // 访
imgFlag: false,
imageUrl: [],
percent: 0,
@ -199,6 +197,8 @@ export default {
dataObj: {
token: ""
}, // token便token
optionTypes: [],
optionListTypes: [],
//
loading: true,
//
@ -233,21 +233,69 @@ export default {
//
form: {},
//
rules: {}
rules: {
title: [
{ required: true, message: "视频标题不能为空", trigger: "blur" }
],
information: [
{ required: true, message: "视频简介不能为空", trigger: "blur" }
],
videourl: [
{ required: true, message: "培训视频不能为空", trigger: "blur" }
],
lecturer: [
{ required: true, message: "培训讲师不能为空", trigger: "blur" }
],
type: [{ required: true, message: "所属类别不能为空", trigger: "blur" }]
}
};
},
created() {
this.getList();
listAllLecturer().then(response => {
console.log(response.lecturer);
//console.log(response.lecturer);
this.lecturerOptions = response.lecturer;
});
getQiNiuToken().then(res => {
console.log(res.token);
//console.log(res.token);
this.dataObj.token = res.token;
});
listMoedata(this.queryParams).then(response => {
//tabletype
this.optionListTypes = response.data;
//console.log(this.optionListTypes);
//
this.optionTypes = this.handleTree(response.data, "id", "pid");
//children0children0 undefined
this.optionTypes = this.getTreeData(this.optionTypes);
});
},
methods: {
//
typeFormat(row, column) {
var actions = [];
var ary = row.type.split(",");
var lab = "";
for (var j = 0; j < ary.length; j++) {
actions.push(this.selectMoeDictLabel(this.optionListTypes, ary[j]));
}
return actions.join(" / ");
},
// childrenundefined
getTreeData(data) {
for (var i = 0; i < data.length; i++) {
if (data[i].children.length < 1) {
// childrenchildrenundefined
data[i].children = undefined;
} else {
// children
this.getTreeData(data[i].children);
}
}
//console.log(data);
return data;
},
handleRemove(file, fileList) {
this.imageUrl = "";
},
@ -328,6 +376,11 @@ export default {
},
/** 搜索按钮操作 */
handleQuery() {
if (this.queryParams.type == null) {
this.queryParams.type = "";
} else {
this.queryParams.type = this.queryParams.type.toString();
}
this.queryParams.pageNum = 1;
this.getList();
},
@ -344,7 +397,7 @@ export default {
},
/** 新增按钮操作 */
handleAdd() {
this.imageUrl="";
this.imageUrl = "";
this.reset();
this.open = true;
this.title = "添加培训";
@ -356,15 +409,22 @@ export default {
},
/** 修改按钮操作 */
handleUpdate(row) {
this.imageUrl="";
this.imageUrl = "";
this.reset();
const id = row.id || this.ids;
getVideo(id).then(response => {
this.form = response.data;
var actions = [];
var ary = response.data.type.split(",");
for (var j = 0; j < ary.length; j++) {
actions.push(parseInt(ary[j]));
}
this.form.type = actions;
//console.log(this.form.type);
this.open = true;
this.title = "修改培训";
this.imageUrl = response.data.videourl;
console.log(this.imageUrl);
//console.log(this.imageUrl);
//
listAllLecturer().then(response => {
//console.log(response.lecturer);
@ -374,9 +434,14 @@ export default {
},
/** 提交按钮 */
submitForm: function() {
// from
this.form.videourl = this.imageUrl;
this.$refs["form"].validate(valid => {
if (valid) {
this.form.videourl = this.imageUrl;
//type arry
//console.log(this.form.type.toString());
this.form.type = this.form.type.toString();
if (this.form.id != undefined) {
updateVideo(this.form).then(response => {
if (response.code === 200) {
@ -423,13 +488,14 @@ export default {
</script>
<style scoped>
@import url("//unpkg.com/element-ui@2.9.1/lib/theme-chalk/index.css");
.avatar-uploader .el-upload {
.avatar-uploader ::v-deep .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
width: 178px;
height: 178px;
}
@ -441,15 +507,10 @@ export default {
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
width: 100%;
display: block;
}

View File

@ -96,7 +96,7 @@ public class CommonController {
}
/**
* 通用上传请求
* 通用上传请求 wuyong
*/
@PostMapping("/common/uploadqiniu")
public AjaxResult uploadFileQiNiu(MultipartFile file) throws Exception {

View File

@ -0,0 +1,92 @@
package com.ruoyi.project.system.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.project.system.domain.SysDictMoedata;
import com.ruoyi.project.system.service.ISysDictMoedataService;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.page.TableDataInfo;
/**
* 多级字典管理Controller
*
* @author tsbz
* @date 2020-05-28
*/
@RestController
@RequestMapping("/system/moedata")
public class SysDictMoedataController extends BaseController {
@Autowired
private ISysDictMoedataService sysDictMoedataService;
/**
* 查询多级字典管理列表
*/
@PreAuthorize("@ss.hasPermi('system:moedata:list')")
@GetMapping("/list")
public AjaxResult list(SysDictMoedata sysDictMoedata) {
List<SysDictMoedata> list = sysDictMoedataService.selectSysDictMoedataList(sysDictMoedata);
return AjaxResult.success(list);
}
/**
* 获取多级字典管理详细信息
*/
@PreAuthorize("@ss.hasPermi('system:moedata:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(sysDictMoedataService.selectSysDictMoedataById(id));
}
/**
* 新增多级字典管理
*/
@PreAuthorize("@ss.hasPermi('system:moedata:add')")
@Log(title = "多级字典管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody SysDictMoedata sysDictMoedata) {
sysDictMoedata.setIsdel("0");
if (sysDictMoedata.getPid() == null) {
sysDictMoedata.setPid((long) 0);
sysDictMoedata.setAncestors("0");
} else {
sysDictMoedata.setAncestors("0," + sysDictMoedata.getPid());
}
return toAjax(sysDictMoedataService.insertSysDictMoedata(sysDictMoedata));
}
/**
* 修改多级字典管理
*/
@PreAuthorize("@ss.hasPermi('system:moedata:edit')")
@Log(title = "多级字典管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody SysDictMoedata sysDictMoedata) {
return toAjax(sysDictMoedataService.updateSysDictMoedata(sysDictMoedata));
}
/**
* 删除多级字典管理
*/
@PreAuthorize("@ss.hasPermi('system:moedata:remove')")
@Log(title = "多级字典管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(sysDictMoedataService.deleteSysDictMoedataByIds(ids));
}
}

View File

@ -0,0 +1,151 @@
package com.ruoyi.project.system.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.web.domain.BaseEntity;
import java.util.ArrayList;
import java.util.List;
/**
* 多级字典管理对象 sys_dict_moedata
*
* @author tsbz
* @date 2020-05-28
*/
public class SysDictMoedata extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 编号 */
private Long id;
/** 父节点 */
@Excel(name = "父节点")
private Long pid;
/** 所有节点 */
@Excel(name = "所有节点")
private String ancestors;
/** 名称 */
@Excel(name = "名称")
private String name;
/** 排序 */
@Excel(name = "排序")
private Long ordersum;
/** 标识关键字 */
@Excel(name = "标识关键字")
private String keyword;
/** 状态 */
@Excel(name = "状态")
private String status;
/** 是否删除 */
@Excel(name = "是否删除")
private String isdel;
/** 子部门 */
private List<SysDictMoedata> children = new ArrayList<SysDictMoedata>();
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setPid(Long pid)
{
this.pid = pid;
}
public Long getPid()
{
return pid;
}
public void setAncestors(String ancestors)
{
this.ancestors = ancestors;
}
public String getAncestors()
{
return ancestors;
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setOrdersum(Long ordersum)
{
this.ordersum = ordersum;
}
public Long getOrdersum()
{
return ordersum;
}
public void setKeyword(String keyword)
{
this.keyword = keyword;
}
public String getKeyword()
{
return keyword;
}
public void setStatus(String status)
{
this.status = status;
}
public String getStatus()
{
return status;
}
public void setIsdel(String isdel)
{
this.isdel = isdel;
}
public String getIsdel()
{
return isdel;
}
public List<SysDictMoedata> getChildren()
{
return children;
}
public void setChildren(List<SysDictMoedata> children)
{
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("pid", getPid())
.append("ancestors", getAncestors())
.append("name", getName())
.append("ordersum", getOrdersum())
.append("keyword", getKeyword())
.append("status", getStatus())
.append("isdel", getIsdel())
.append("createTime", getCreateTime())
.toString();
}
}

View File

@ -0,0 +1,61 @@
package com.ruoyi.project.system.mapper;
import java.util.List;
import com.ruoyi.project.system.domain.SysDictMoedata;
/**
* 多级字典管理Mapper接口
*
* @author tsbz
* @date 2020-05-28
*/
public interface SysDictMoedataMapper
{
/**
* 查询多级字典管理
*
* @param id 多级字典管理ID
* @return 多级字典管理
*/
public SysDictMoedata selectSysDictMoedataById(Long id);
/**
* 查询多级字典管理列表
*
* @param sysDictMoedata 多级字典管理
* @return 多级字典管理集合
*/
public List<SysDictMoedata> selectSysDictMoedataList(SysDictMoedata sysDictMoedata);
/**
* 新增多级字典管理
*
* @param sysDictMoedata 多级字典管理
* @return 结果
*/
public int insertSysDictMoedata(SysDictMoedata sysDictMoedata);
/**
* 修改多级字典管理
*
* @param sysDictMoedata 多级字典管理
* @return 结果
*/
public int updateSysDictMoedata(SysDictMoedata sysDictMoedata);
/**
* 删除多级字典管理
*
* @param id 多级字典管理ID
* @return 结果
*/
public int deleteSysDictMoedataById(Long id);
/**
* 批量删除多级字典管理
*
* @param ids 需要删除的数据ID
* @return 结果
*/
public int deleteSysDictMoedataByIds(Long[] ids);
}

View File

@ -0,0 +1,61 @@
package com.ruoyi.project.system.service;
import java.util.List;
import com.ruoyi.project.system.domain.SysDictMoedata;
/**
* 多级字典管理Service接口
*
* @author tsbz
* @date 2020-05-28
*/
public interface ISysDictMoedataService
{
/**
* 查询多级字典管理
*
* @param id 多级字典管理ID
* @return 多级字典管理
*/
public SysDictMoedata selectSysDictMoedataById(Long id);
/**
* 查询多级字典管理列表
*
* @param sysDictMoedata 多级字典管理
* @return 多级字典管理集合
*/
public List<SysDictMoedata> selectSysDictMoedataList(SysDictMoedata sysDictMoedata);
/**
* 新增多级字典管理
*
* @param sysDictMoedata 多级字典管理
* @return 结果
*/
public int insertSysDictMoedata(SysDictMoedata sysDictMoedata);
/**
* 修改多级字典管理
*
* @param sysDictMoedata 多级字典管理
* @return 结果
*/
public int updateSysDictMoedata(SysDictMoedata sysDictMoedata);
/**
* 批量删除多级字典管理
*
* @param ids 需要删除的多级字典管理ID
* @return 结果
*/
public int deleteSysDictMoedataByIds(Long[] ids);
/**
* 删除多级字典管理信息
*
* @param id 多级字典管理ID
* @return 结果
*/
public int deleteSysDictMoedataById(Long id);
}

View File

@ -0,0 +1,95 @@
package com.ruoyi.project.system.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.project.system.mapper.SysDictMoedataMapper;
import com.ruoyi.project.system.domain.SysDictMoedata;
import com.ruoyi.project.system.service.ISysDictMoedataService;
/**
* 多级字典管理Service业务层处理
*
* @author tsbz
* @date 2020-05-28
*/
@Service
public class SysDictMoedataServiceImpl implements ISysDictMoedataService
{
@Autowired
private SysDictMoedataMapper sysDictMoedataMapper;
/**
* 查询多级字典管理
*
* @param id 多级字典管理ID
* @return 多级字典管理
*/
@Override
public SysDictMoedata selectSysDictMoedataById(Long id)
{
return sysDictMoedataMapper.selectSysDictMoedataById(id);
}
/**
* 查询多级字典管理列表
*
* @param sysDictMoedata 多级字典管理
* @return 多级字典管理
*/
@Override
public List<SysDictMoedata> selectSysDictMoedataList(SysDictMoedata sysDictMoedata)
{
return sysDictMoedataMapper.selectSysDictMoedataList(sysDictMoedata);
}
/**
* 新增多级字典管理
*
* @param sysDictMoedata 多级字典管理
* @return 结果
*/
@Override
public int insertSysDictMoedata(SysDictMoedata sysDictMoedata)
{
sysDictMoedata.setCreateTime(DateUtils.getNowDate());
return sysDictMoedataMapper.insertSysDictMoedata(sysDictMoedata);
}
/**
* 修改多级字典管理
*
* @param sysDictMoedata 多级字典管理
* @return 结果
*/
@Override
public int updateSysDictMoedata(SysDictMoedata sysDictMoedata)
{
return sysDictMoedataMapper.updateSysDictMoedata(sysDictMoedata);
}
/**
* 批量删除多级字典管理
*
* @param ids 需要删除的多级字典管理ID
* @return 结果
*/
@Override
public int deleteSysDictMoedataByIds(Long[] ids)
{
return sysDictMoedataMapper.deleteSysDictMoedataByIds(ids);
}
/**
* 删除多级字典管理信息
*
* @param id 多级字典管理ID
* @return 结果
*/
@Override
public int deleteSysDictMoedataById(Long id)
{
return sysDictMoedataMapper.deleteSysDictMoedataById(id);
}
}

View File

@ -24,11 +24,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectByTrainVideoList" parameterType="ByTrainVideo" resultMap="ByTrainVideoResult">
<include refid="selectByTrainVideoVo"/>
<where>
<if test="title != null and title != ''"> and title = #{title}</if>
<if test="title != null and title != ''"> and title like concat('%', #{title}, '%')</if>
<if test="information != null and information != ''"> and information = #{information}</if>
<if test="lecturer != null "> and lecturer = #{lecturer}</if>
<if test="videourl != null and videourl != ''"> and videourl = #{videourl}</if>
<if test="type != null and type != ''"> and type = #{type}</if>
<if test="type != null and type != ''"> and type like concat('', #{type}, '%')</if>
<if test="classtype != null and classtype != ''"> and classtype = #{classtype}</if>
<if test="createuserid != null "> and createuserid = #{createuserid}</if>
<if test="createtime != null "> and createtime = #{createtime}</if>

View File

@ -0,0 +1,91 @@
<?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.project.system.mapper.SysDictMoedataMapper">
<resultMap type="SysDictMoedata" id="SysDictMoedataResult">
<result property="id" column="id" />
<result property="pid" column="pid" />
<result property="ancestors" column="ancestors" />
<result property="name" column="name" />
<result property="ordersum" column="ordersum" />
<result property="keyword" column="keyword" />
<result property="status" column="status" />
<result property="isdel" column="isdel" />
<result property="createTime" column="create_time" />
</resultMap>
<sql id="selectSysDictMoedataVo">
select id, pid, ancestors, name, ordersum, keyword, status, isdel, create_time from sys_dict_moedata
</sql>
<select id="selectSysDictMoedataList" parameterType="SysDictMoedata" resultMap="SysDictMoedataResult">
<include refid="selectSysDictMoedataVo"/>
where isdel = '0'
<if test="pid != null "> and pid = #{pid}</if>
<if test="ancestors != null and ancestors != ''"> and ancestors = #{ancestors}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="ordersum != null "> and ordersum = #{ordersum}</if>
<if test="keyword != null and keyword != ''"> and keyword = #{keyword}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
</select>
<select id="selectSysDictMoedataById" parameterType="Long" resultMap="SysDictMoedataResult">
<include refid="selectSysDictMoedataVo"/>
where id = #{id}
</select>
<insert id="insertSysDictMoedata" parameterType="SysDictMoedata">
insert into sys_dict_moedata
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null ">id,</if>
<if test="pid != null ">pid,</if>
<if test="ancestors != null and ancestors != ''">ancestors,</if>
<if test="name != null and name != ''">name,</if>
<if test="ordersum != null ">ordersum,</if>
<if test="keyword != null and keyword != ''">keyword,</if>
<if test="status != null and status != ''">status,</if>
<if test="isdel != null and isdel != ''">isdel,</if>
<if test="createTime != null ">create_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null ">#{id},</if>
<if test="pid != null ">#{pid},</if>
<if test="ancestors != null and ancestors != ''">#{ancestors},</if>
<if test="name != null and name != ''">#{name},</if>
<if test="ordersum != null ">#{ordersum},</if>
<if test="keyword != null and keyword != ''">#{keyword},</if>
<if test="status != null and status != ''">#{status},</if>
<if test="isdel != null and isdel != ''">#{isdel},</if>
<if test="createTime != null ">#{createTime},</if>
</trim>
</insert>
<update id="updateSysDictMoedata" parameterType="SysDictMoedata">
update sys_dict_moedata
<trim prefix="SET" suffixOverrides=",">
<if test="pid != null ">pid = #{pid},</if>
<if test="ancestors != null and ancestors != ''">ancestors = #{ancestors},</if>
<if test="name != null and name != ''">name = #{name},</if>
<if test="ordersum != null ">ordersum = #{ordersum},</if>
<if test="keyword != null and keyword != ''">keyword = #{keyword},</if>
<if test="status != null and status != ''">status = #{status},</if>
<if test="isdel != null and isdel != ''">isdel = #{isdel},</if>
<if test="createTime != null ">create_time = #{createTime},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteSysDictMoedataById" parameterType="Long">
update from sys_dict_moedata set isdel='1' where id = #{id}
</delete>
<delete id="deleteSysDictMoedataByIds" parameterType="String">
update from sys_dict_moedata set isdel='1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>