| | |
| | | <template> |
| | | <a-modal |
| | | title="新增blog文章主体" |
| | | title="新增blog文章" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入文章文件id" v-decorator="['articleFileId', {rules: [{required: false, message: '请输入文章文件id!'}]}]" /> |
| | | <a-input placeholder="请输入文章文件id" v-decorator="['articleFileId', {rules: [{required: true, message: '请输入文章文件id!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="文件类型 1:markdown 2:html" |
| | | label="文件类型" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | > |
| | | <a-radio-group placeholder="请选择文件类型" v-decorator="['articleFileType']" > |
| | | <a-radio v-for="(item,index) in articleFileTypeData" :key="index" :value="item.code">{{ item.name }}</a-radio> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="文章分类" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入文件类型 1:markdown 2:html" v-decorator="['articleFileType', {rules: [{required: true, message: '请输入文件类型 1:markdown 2:html!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="文章分类id 0:没有分类" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入文章分类id 0:没有分类" v-decorator="['articleTypeId', {rules: [{required: true, message: '请输入文章分类id 0:没有分类!'}]}]" /> |
| | | <a-input placeholder="请输入文章分类" v-decorator="['articleTypeId', {rules: [{required: true, message: '请输入文章分类!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="文章引言" |
| | |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入文章引言" v-decorator="['introduce', {rules: [{required: true, message: '请输入文章引言!'}]}]" /> |
| | | <a-textarea placeholder="请输入文章引言" v-decorator="['introduce']" :auto-size="{ minRows: 3, maxRows: 6 }"/> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="封面文件地址(id)" |
| | | label="封面文件" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入封面文件地址(id)" v-decorator="['coverFileId', {rules: [{required: true, message: '请输入封面文件地址(id)!'}]}]" /> |
| | | <a-input placeholder="请输入封面文件" v-decorator="['coverFileId']" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="上次编辑时间" |
| | | label="是否置顶" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | > |
| | | <a-select style="width: 100%" placeholder="请选择是否置顶" v-decorator="['isTop', {rules: [{ required: true, message: '请选择是否置顶!' }]}]"> |
| | | <a-select-option v-for="(item,index) in isTopData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="置顶值" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择上次编辑时间" v-decorator="['lastEditorDate',{rules: [{ required: true, message: '请选择上次编辑时间!' }]}]" @change="lastEditorDateOnChange"/> |
| | | <a-input placeholder="请输入置顶值" v-decorator="['topValue']" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="发布时间" |
| | | label="公开状态" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | > |
| | | <a-radio-group placeholder="请选择公开状态" v-decorator="['authStatus']" > |
| | | <a-radio v-for="(item,index) in authStatusData" :key="index" :value="item.code">{{ item.name }}</a-radio> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="授权密码" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择发布时间" v-decorator="['publishDate',{rules: [{ required: true, message: '请选择发布时间!' }]}]" @change="publishDateOnChange"/> |
| | | <a-input placeholder="请输入授权密码" v-decorator="['authPassword']" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="是否置顶 0:否 1:是" |
| | | label="编辑状态" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | > |
| | | <a-radio-group placeholder="请选择编辑状态" v-decorator="['editorStatus']" > |
| | | <a-radio v-for="(item,index) in editorStatusData" :key="index" :value="item.code">{{ item.name }}</a-radio> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="是否启用" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入是否置顶 0:否 1:是" v-decorator="['isTop', {rules: [{required: true, message: '请输入是否置顶 0:否 1:是!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="置顶值(越小越靠前)" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入置顶值(越小越靠前)" v-decorator="['topValue', {rules: [{required: true, message: '请输入置顶值(越小越靠前)!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="公开状态 1:公开 2:私密 3:密码授权" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入公开状态 1:公开 2:私密 3:密码授权" v-decorator="['authStatus', {rules: [{required: true, message: '请输入公开状态 1:公开 2:私密 3:密码授权!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="授权密码(在密码授权状态时)" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入授权密码(在密码授权状态时)" v-decorator="['authPassword', {rules: [{required: true, message: '请输入授权密码(在密码授权状态时)!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="编辑状态 0:草稿 1:发布" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入编辑状态 0:草稿 1:发布" v-decorator="['editorStatus', {rules: [{required: true, message: '请输入编辑状态 0:草稿 1:发布!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="归档年份(以初次发布时间为准)" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入归档年份(以初次发布时间为准)" v-decorator="['separateYear', {rules: [{required: true, message: '请输入归档年份(以初次发布时间为准)!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="归档月份" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入归档月份" v-decorator="['separateMonth', {rules: [{required: true, message: '请输入归档月份!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="归档日" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入归档日" v-decorator="['separateDay', {rules: [{required: true, message: '请输入归档日!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="是否启用 0:否 1:是" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入是否启用 0:否 1:是" v-decorator="['isEnable', {rules: [{required: true, message: '请输入是否启用 0:否 1:是!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="更新时间" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择更新时间" v-decorator="['updateDate',{rules: [{ required: true, message: '请选择更新时间!' }]}]" @change="updateDateOnChange"/> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="创建时间" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择创建时间" v-decorator="['createDate',{rules: [{ required: true, message: '请选择创建时间!' }]}]" @change="createDateOnChange"/> |
| | | <a-input placeholder="请输入是否启用" v-decorator="['isEnable']" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | lastEditorDateDateString: '', |
| | | publishDateDateString: '', |
| | | updateDateDateString: '', |
| | | createDateDateString: '', |
| | | articleFileTypeData: [], |
| | | isTopData: [], |
| | | authStatusData: [], |
| | | editorStatusData: [], |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | |
| | | // 初始化方法 |
| | | add (record) { |
| | | this.visible = true |
| | | const articleFileTypeOption = this.$options |
| | | this.articleFileTypeData = articleFileTypeOption.filters['dictData']('blog_file_type') |
| | | const isTopOption = this.$options |
| | | this.isTopData = isTopOption.filters['dictData']('blog_yes_or_no') |
| | | const authStatusOption = this.$options |
| | | this.authStatusData = authStatusOption.filters['dictData']('blog_auth_status') |
| | | const editorStatusOption = this.$options |
| | | this.editorStatusData = editorStatusOption.filters['dictData']('blog_editor_status') |
| | | }, |
| | | /** |
| | | * 提交表单 |
| | |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | values.lastEditorDate = this.lastEditorDateDateString || null |
| | | values.publishDate = this.publishDateDateString || null |
| | | values.updateDate = this.updateDateDateString || null |
| | | values.createDate = this.createDateDateString || null |
| | | blogArticleAdd(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('新增成功') |
| | |
| | | } |
| | | }) |
| | | }, |
| | | lastEditorDateOnChange(date, dateString) { |
| | | this.lastEditorDateDateString = dateString |
| | | }, |
| | | publishDateOnChange(date, dateString) { |
| | | this.publishDateDateString = dateString |
| | | }, |
| | | updateDateOnChange(date, dateString) { |
| | | this.updateDateDateString = dateString |
| | | }, |
| | | createDateOnChange(date, dateString) { |
| | | this.createDateDateString = dateString |
| | | }, |
| | | handleCancel () { |
| | | this.lastEditorDateDateString ='' |
| | | this.form.getFieldDecorator('lastEditorDate', { initialValue: null }) |
| | | this.publishDateDateString ='' |
| | | this.form.getFieldDecorator('publishDate', { initialValue: null }) |
| | | this.updateDateDateString ='' |
| | | this.form.getFieldDecorator('updateDate', { initialValue: null }) |
| | | this.createDateDateString ='' |
| | | this.form.getFieldDecorator('createDate', { initialValue: null }) |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | |
| | | <template> |
| | | <a-modal |
| | | title="编辑blog文章主体" |
| | | title="编辑blog文章" |
| | | :width="900" |
| | | :visible="visible" |
| | | :confirmLoading="confirmLoading" |
| | |
| | | <a-input placeholder="请输入文章文件id" v-decorator="['articleFileId', {rules: [{required: true, message: '请输入文章文件id!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="文件类型 1:markdown 2:html" |
| | | label="文件类型" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入文件类型 1:markdown 2:html" v-decorator="['articleFileType', {rules: [{required: true, message: '请输入文件类型 1:markdown 2:html!'}]}]" /> |
| | | <a-radio-group placeholder="请选择文件类型" v-decorator="['articleFileType']" > |
| | | <a-radio v-for="(item,index) in articleFileTypeData" :key="index" :value="item.code">{{ item.name }}</a-radio> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="文章分类id 0:没有分类" |
| | | label="文章分类" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入文章分类id 0:没有分类" v-decorator="['articleTypeId', {rules: [{required: true, message: '请输入文章分类id 0:没有分类!'}]}]" /> |
| | | <a-input placeholder="请输入文章分类" v-decorator="['articleTypeId', {rules: [{required: true, message: '请输入文章分类!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="文章引言" |
| | |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入文章引言" v-decorator="['introduce', {rules: [{required: true, message: '请输入文章引言!'}]}]" /> |
| | | <a-textarea placeholder="请输入文章引言" v-decorator="['introduce']" :auto-size="{ minRows: 3, maxRows: 6 }"/> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="封面文件地址(id)" |
| | | label="封面文件" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入封面文件地址(id)" v-decorator="['coverFileId', {rules: [{required: true, message: '请输入封面文件地址(id)!'}]}]" /> |
| | | <a-input placeholder="请输入封面文件" v-decorator="['coverFileId']" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="上次编辑时间" |
| | | label="是否置顶" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | > |
| | | <a-select style="width: 100%" placeholder="请选择是否置顶" v-decorator="['isTop', {rules: [{ required: true, message: '请选择是否置顶!' }]}]"> |
| | | <a-select-option v-for="(item,index) in isTopData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="置顶值" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择上次编辑时间" v-decorator="['lastEditorDate',{rules: [{ required: true, message: '请选择上次编辑时间!' }]}]" @change="lastEditorDateOnChange"/> |
| | | <a-input placeholder="请输入置顶值" v-decorator="['topValue']" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="发布时间" |
| | | label="公开状态" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | > |
| | | <a-radio-group placeholder="请选择公开状态" v-decorator="['authStatus']" > |
| | | <a-radio v-for="(item,index) in authStatusData" :key="index" :value="item.code">{{ item.name }}</a-radio> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="授权密码" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择发布时间" v-decorator="['publishDate',{rules: [{ required: true, message: '请选择发布时间!' }]}]" @change="publishDateOnChange"/> |
| | | <a-input placeholder="请输入授权密码" v-decorator="['authPassword']" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="是否置顶 0:否 1:是" |
| | | label="编辑状态" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | > |
| | | <a-radio-group placeholder="请选择编辑状态" v-decorator="['editorStatus']" > |
| | | <a-radio v-for="(item,index) in editorStatusData" :key="index" :value="item.code">{{ item.name }}</a-radio> |
| | | </a-radio-group> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="是否启用" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入是否置顶 0:否 1:是" v-decorator="['isTop', {rules: [{required: true, message: '请输入是否置顶 0:否 1:是!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="置顶值(越小越靠前)" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入置顶值(越小越靠前)" v-decorator="['topValue', {rules: [{required: true, message: '请输入置顶值(越小越靠前)!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="公开状态 1:公开 2:私密 3:密码授权" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入公开状态 1:公开 2:私密 3:密码授权" v-decorator="['authStatus', {rules: [{required: true, message: '请输入公开状态 1:公开 2:私密 3:密码授权!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="授权密码(在密码授权状态时)" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入授权密码(在密码授权状态时)" v-decorator="['authPassword', {rules: [{required: true, message: '请输入授权密码(在密码授权状态时)!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="编辑状态 0:草稿 1:发布" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入编辑状态 0:草稿 1:发布" v-decorator="['editorStatus', {rules: [{required: true, message: '请输入编辑状态 0:草稿 1:发布!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="归档年份(以初次发布时间为准)" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入归档年份(以初次发布时间为准)" v-decorator="['separateYear', {rules: [{required: true, message: '请输入归档年份(以初次发布时间为准)!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="归档月份" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入归档月份" v-decorator="['separateMonth', {rules: [{required: true, message: '请输入归档月份!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="归档日" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入归档日" v-decorator="['separateDay', {rules: [{required: true, message: '请输入归档日!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="是否启用 0:否 1:是" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-input placeholder="请输入是否启用 0:否 1:是" v-decorator="['isEnable', {rules: [{required: true, message: '请输入是否启用 0:否 1:是!'}]}]" /> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="更新时间" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择更新时间" v-decorator="['updateDate',{rules: [{ required: true, message: '请选择更新时间!' }]}]" @change="updateDateOnChange"/> |
| | | </a-form-item> |
| | | <a-form-item |
| | | label="创建时间" |
| | | :labelCol="labelCol" |
| | | :wrapperCol="wrapperCol" |
| | | has-feedback |
| | | > |
| | | <a-date-picker style="width: 100%" placeholder="请选择创建时间" v-decorator="['createDate',{rules: [{ required: true, message: '请选择创建时间!' }]}]" @change="createDateOnChange"/> |
| | | <a-input placeholder="请输入是否启用" v-decorator="['isEnable']" /> |
| | | </a-form-item> |
| | | </a-form> |
| | | </a-spin> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import moment from 'moment' |
| | | import { blogArticleEdit } from '@/api/modular/main/blogarticle/blogArticleManage' |
| | | export default { |
| | | data () { |
| | |
| | | xs: { span: 24 }, |
| | | sm: { span: 15 } |
| | | }, |
| | | lastEditorDateDateString: '', |
| | | publishDateDateString: '', |
| | | updateDateDateString: '', |
| | | createDateDateString: '', |
| | | articleFileTypeData: [], |
| | | isTopData: [], |
| | | authStatusData: [], |
| | | editorStatusData: [], |
| | | visible: false, |
| | | confirmLoading: false, |
| | | form: this.$form.createForm(this) |
| | | } |
| | | }, |
| | | methods: { |
| | | moment, |
| | | // 初始化方法 |
| | | edit (record) { |
| | | this.visible = true |
| | | const articleFileTypeOption = this.$options |
| | | this.articleFileTypeData = articleFileTypeOption.filters['dictData']('blog_file_type') |
| | | const isTopOption = this.$options |
| | | this.isTopData = isTopOption.filters['dictData']('blog_yes_or_no') |
| | | const authStatusOption = this.$options |
| | | this.authStatusData = authStatusOption.filters['dictData']('blog_auth_status') |
| | | const editorStatusOption = this.$options |
| | | this.editorStatusData = editorStatusOption.filters['dictData']('blog_editor_status') |
| | | setTimeout(() => { |
| | | this.form.setFieldsValue( |
| | | { |
| | |
| | | authStatus: record.authStatus, |
| | | authPassword: record.authPassword, |
| | | editorStatus: record.editorStatus, |
| | | separateYear: record.separateYear, |
| | | separateMonth: record.separateMonth, |
| | | separateDay: record.separateDay, |
| | | isEnable: record.isEnable |
| | | } |
| | | ) |
| | | }, 100) |
| | | // 时间单独处理 |
| | | if (record.lastEditorDate) { |
| | | this.form.getFieldDecorator('lastEditorDate', { initialValue: moment(record.lastEditorDate, 'YYYY-MM-DD') }) |
| | | this.lastEditorDateDateString = moment(record.lastEditorDate).format('YYYY-MM-DD') |
| | | } |
| | | // 时间单独处理 |
| | | if (record.publishDate) { |
| | | this.form.getFieldDecorator('publishDate', { initialValue: moment(record.publishDate, 'YYYY-MM-DD') }) |
| | | this.publishDateDateString = moment(record.publishDate).format('YYYY-MM-DD') |
| | | } |
| | | // 时间单独处理 |
| | | if (record.updateDate) { |
| | | this.form.getFieldDecorator('updateDate', { initialValue: moment(record.updateDate, 'YYYY-MM-DD') }) |
| | | this.updateDateDateString = moment(record.updateDate).format('YYYY-MM-DD') |
| | | } |
| | | // 时间单独处理 |
| | | if (record.createDate) { |
| | | this.form.getFieldDecorator('createDate', { initialValue: moment(record.createDate, 'YYYY-MM-DD') }) |
| | | this.createDateDateString = moment(record.createDate).format('YYYY-MM-DD') |
| | | } |
| | | }, |
| | | handleSubmit () { |
| | | const { form: { validateFields } } = this |
| | |
| | | values[key] = JSON.stringify(values[key]) |
| | | } |
| | | } |
| | | values.lastEditorDate = this.lastEditorDateDateString || null |
| | | values.publishDate = this.publishDateDateString || null |
| | | values.updateDate = this.updateDateDateString || null |
| | | values.createDate = this.createDateDateString || null |
| | | blogArticleEdit(values).then((res) => { |
| | | if (res.success) { |
| | | this.$message.success('编辑成功') |
| | |
| | | } |
| | | }) |
| | | }, |
| | | lastEditorDateOnChange(date, dateString) { |
| | | this.lastEditorDateDateString = dateString |
| | | }, |
| | | publishDateOnChange(date, dateString) { |
| | | this.publishDateDateString = dateString |
| | | }, |
| | | updateDateOnChange(date, dateString) { |
| | | this.updateDateDateString = dateString |
| | | }, |
| | | createDateOnChange(date, dateString) { |
| | | this.createDateDateString = dateString |
| | | }, |
| | | handleCancel () { |
| | | this.lastEditorDateDateString ='' |
| | | this.form.getFieldDecorator('lastEditorDate', { initialValue: null }) |
| | | this.publishDateDateString ='' |
| | | this.form.getFieldDecorator('publishDate', { initialValue: null }) |
| | | this.updateDateDateString ='' |
| | | this.form.getFieldDecorator('updateDate', { initialValue: null }) |
| | | this.createDateDateString ='' |
| | | this.form.getFieldDecorator('createDate', { initialValue: null }) |
| | | this.form.resetFields() |
| | | this.visible = false |
| | | } |
| | |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="文章文件id"> |
| | | <a-input v-model="queryParam.articleFileId" allow-clear placeholder="请输入文章文件id"/> |
| | | <a-form-item label="文件类型"> |
| | | <a-select style="width: 100%" v-model="queryParam.articleFileType" placeholder="请选择文件类型"> |
| | | <a-select-option v-for="(item,index) in articleFileTypeData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | <template v-if="advanced"> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="文件类型 1:markdown 2:html"> |
| | | <a-input v-model="queryParam.articleFileType" allow-clear placeholder="请输入文件类型 1:markdown 2:html"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="文章分类id 0:没有分类"> |
| | | <a-input v-model="queryParam.articleTypeId" allow-clear placeholder="请输入文章分类id 0:没有分类"/> |
| | | <a-form-item label="文章分类"> |
| | | <a-input v-model="queryParam.articleTypeId" allow-clear placeholder="请输入文章分类"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="封面文件地址(id)"> |
| | | <a-input v-model="queryParam.coverFileId" allow-clear placeholder="请输入封面文件地址(id)"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="上次编辑时间"> |
| | | <a-date-picker style="width: 100%" placeholder="请选择上次编辑时间" v-model="queryParam.lastEditorDateDate" @change="onChangelastEditorDate"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="发布时间"> |
| | | <a-date-picker style="width: 100%" placeholder="请选择发布时间" v-model="queryParam.publishDateDate" @change="onChangepublishDate"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="是否置顶 0:否 1:是"> |
| | | <a-input v-model="queryParam.isTop" allow-clear placeholder="请输入是否置顶 0:否 1:是"/> |
| | | <a-form-item label="是否置顶"> |
| | | <a-select style="width: 100%" v-model="queryParam.isTop" placeholder="请选择是否置顶"> |
| | | <a-select-option v-for="(item,index) in isTopData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="置顶值(越小越靠前)"> |
| | | <a-input v-model="queryParam.topValue" allow-clear placeholder="请输入置顶值(越小越靠前)"/> |
| | | <a-form-item label="公开状态"> |
| | | <a-select style="width: 100%" v-model="queryParam.authStatus" placeholder="请选择公开状态"> |
| | | <a-select-option v-for="(item,index) in authStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="公开状态 1:公开 2:私密 3:密码授权"> |
| | | <a-input v-model="queryParam.authStatus" allow-clear placeholder="请输入公开状态 1:公开 2:私密 3:密码授权"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="授权密码(在密码授权状态时)"> |
| | | <a-input v-model="queryParam.authPassword" allow-clear placeholder="请输入授权密码(在密码授权状态时)"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="编辑状态 0:草稿 1:发布"> |
| | | <a-input v-model="queryParam.editorStatus" allow-clear placeholder="请输入编辑状态 0:草稿 1:发布"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="归档年份(以初次发布时间为准)"> |
| | | <a-input v-model="queryParam.separateYear" allow-clear placeholder="请输入归档年份(以初次发布时间为准)"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="归档月份"> |
| | | <a-input v-model="queryParam.separateMonth" allow-clear placeholder="请输入归档月份"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="归档日"> |
| | | <a-input v-model="queryParam.separateDay" allow-clear placeholder="请输入归档日"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="是否启用 0:否 1:是"> |
| | | <a-input v-model="queryParam.isEnable" allow-clear placeholder="请输入是否启用 0:否 1:是"/> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | | <a-form-item label="更新时间"> |
| | | <a-date-picker style="width: 100%" placeholder="请选择更新时间" v-model="queryParam.updateDateDate" @change="onChangeupdateDate"/> |
| | | <a-form-item label="编辑状态"> |
| | | <a-select style="width: 100%" v-model="queryParam.editorStatus" placeholder="请选择编辑状态"> |
| | | <a-select-option v-for="(item,index) in editorStatusData" :key="index" :value="item.code">{{ item.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :md="8" :sm="24"> |
| | |
| | | :rowSelection="options.rowSelection" |
| | | > |
| | | <template class="table-operator" slot="operator" v-if="hasPerm('blogArticle:add')" > |
| | | <a-button type="primary" v-if="hasPerm('blogArticle:add')" icon="plus" @click="$refs.addForm.add()">新增blog文章主体</a-button> |
| | | <a-button type="primary" v-if="hasPerm('blogArticle:add')" icon="plus" @click="$refs.addForm.add()">新增blog文章</a-button> |
| | | <a-button type="danger" :disabled="selectedRowKeys.length < 1" v-if="hasPerm('blogArticle:delete')" @click="batchDelete"><a-icon type="delete"/>批量删除</a-button> |
| | | <x-down |
| | | v-if="hasPerm('blogArticle:export')" |
| | |
| | | @batchExport="batchExport" |
| | | /> |
| | | </template> |
| | | <span slot="titleScopedSlots" slot-scope="text"> |
| | | <ellipsis :length="10" tooltip>{{ text }}</ellipsis> |
| | | </span> |
| | | <span slot="articleFileTypeScopedSlots" slot-scope="text"> |
| | | {{ 'blog_file_type' | dictType(text) }} |
| | | </span> |
| | | <span slot="isTopScopedSlots" slot-scope="text"> |
| | | {{ 'blog_yes_or_no' | dictType(text) }} |
| | | </span> |
| | | <span slot="authStatusScopedSlots" slot-scope="text"> |
| | | {{ 'blog_auth_status' | dictType(text) }} |
| | | </span> |
| | | <span slot="editorStatusScopedSlots" slot-scope="text"> |
| | | {{ 'blog_editor_status' | dictType(text) }} |
| | | </span> |
| | | <span slot="action" slot-scope="text, record"> |
| | | <a v-if="hasPerm('blogArticle:edit')" @click="$refs.editForm.edit(record)">编辑</a> |
| | | <a-divider type="vertical" v-if="hasPerm('blogArticle:edit') & hasPerm('blogArticle:delete')"/> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { STable, XDown } from '@/components' |
| | | import { STable, XDown, Ellipsis } from '@/components' |
| | | import moment from 'moment' |
| | | import { blogArticlePage, blogArticleDelete, blogArticleExport } from '@/api/modular/main/blogarticle/blogArticleManage' |
| | | import addForm from './addForm.vue' |
| | | import editForm from './editForm.vue' |
| | | export default { |
| | | components: { |
| | | Ellipsis, |
| | | STable, |
| | | addForm, |
| | | editForm, |
| | |
| | | { |
| | | title: '文章标题', |
| | | align: 'center', |
| | | dataIndex: 'title' |
| | | dataIndex: 'title', |
| | | scopedSlots: { customRender: 'titleScopedSlots' } |
| | | }, |
| | | { |
| | | title: '文章文件id', |
| | | title: '文件类型', |
| | | align: 'center', |
| | | dataIndex: 'articleFileId' |
| | | dataIndex: 'articleFileType', |
| | | scopedSlots: { customRender: 'articleFileTypeScopedSlots' } |
| | | }, |
| | | { |
| | | title: '文件类型 1:markdown 2:html', |
| | | align: 'center', |
| | | dataIndex: 'articleFileType' |
| | | }, |
| | | { |
| | | title: '文章分类id 0:没有分类', |
| | | title: '文章分类', |
| | | align: 'center', |
| | | dataIndex: 'articleTypeId' |
| | | }, |
| | | { |
| | | title: '文章引言', |
| | | align: 'center', |
| | | dataIndex: 'introduce' |
| | | }, |
| | | { |
| | | title: '封面文件地址(id)', |
| | | align: 'center', |
| | | dataIndex: 'coverFileId' |
| | | }, |
| | | { |
| | | title: '上次编辑时间', |
| | |
| | | dataIndex: 'publishDate' |
| | | }, |
| | | { |
| | | title: '是否置顶 0:否 1:是', |
| | | title: '是否置顶', |
| | | align: 'center', |
| | | dataIndex: 'isTop' |
| | | dataIndex: 'isTop', |
| | | scopedSlots: { customRender: 'isTopScopedSlots' } |
| | | }, |
| | | { |
| | | title: '置顶值(越小越靠前)', |
| | | title: '置顶值', |
| | | align: 'center', |
| | | dataIndex: 'topValue' |
| | | }, |
| | | { |
| | | title: '公开状态 1:公开 2:私密 3:密码授权', |
| | | title: '公开状态', |
| | | align: 'center', |
| | | dataIndex: 'authStatus' |
| | | dataIndex: 'authStatus', |
| | | scopedSlots: { customRender: 'authStatusScopedSlots' } |
| | | }, |
| | | { |
| | | title: '授权密码(在密码授权状态时)', |
| | | title: '授权密码', |
| | | align: 'center', |
| | | dataIndex: 'authPassword' |
| | | }, |
| | | { |
| | | title: '编辑状态 0:草稿 1:发布', |
| | | title: '编辑状态', |
| | | align: 'center', |
| | | dataIndex: 'editorStatus' |
| | | dataIndex: 'editorStatus', |
| | | scopedSlots: { customRender: 'editorStatusScopedSlots' } |
| | | }, |
| | | { |
| | | title: '归档年份(以初次发布时间为准)', |
| | | align: 'center', |
| | | dataIndex: 'separateYear' |
| | | }, |
| | | { |
| | | title: '归档月份', |
| | | align: 'center', |
| | | dataIndex: 'separateMonth' |
| | | }, |
| | | { |
| | | title: '归档日', |
| | | align: 'center', |
| | | dataIndex: 'separateDay' |
| | | }, |
| | | { |
| | | title: '是否启用 0:否 1:是', |
| | | title: '是否启用', |
| | | align: 'center', |
| | | dataIndex: 'isEnable' |
| | | }, |
| | | { |
| | | title: '更新时间', |
| | | align: 'center', |
| | | dataIndex: 'updateDate' |
| | | }, |
| | | { |
| | | title: '创建时间', |
| | |
| | | return res.data |
| | | }) |
| | | }, |
| | | articleFileTypeData: [], |
| | | isTopData: [], |
| | | authStatusData: [], |
| | | editorStatusData: [], |
| | | selectedRowKeys: [], |
| | | selectedRows: [], |
| | | options: { |
| | |
| | | scopedSlots: { customRender: 'action' } |
| | | }) |
| | | } |
| | | const articleFileTypeOption = this.$options |
| | | this.articleFileTypeData = articleFileTypeOption.filters['dictData']('blog_file_type') |
| | | const isTopOption = this.$options |
| | | this.isTopData = isTopOption.filters['dictData']('blog_yes_or_no') |
| | | const authStatusOption = this.$options |
| | | this.authStatusData = authStatusOption.filters['dictData']('blog_auth_status') |
| | | const editorStatusOption = this.$options |
| | | this.editorStatusData = editorStatusOption.filters['dictData']('blog_editor_status') |
| | | }, |
| | | methods: { |
| | | moment, |
| | |
| | | * 查询参数组装 |
| | | */ |
| | | switchingDate () { |
| | | const queryParamlastEditorDate = this.queryParam.lastEditorDateDate |
| | | if (queryParamlastEditorDate != null) { |
| | | this.queryParam.lastEditorDate = moment(queryParamlastEditorDate).format('YYYY-MM-DD') |
| | | if (queryParamlastEditorDate.length < 1) { |
| | | delete this.queryParam.lastEditorDate |
| | | } |
| | | } |
| | | const queryParampublishDate = this.queryParam.publishDateDate |
| | | if (queryParampublishDate != null) { |
| | | this.queryParam.publishDate = moment(queryParampublishDate).format('YYYY-MM-DD') |
| | | if (queryParampublishDate.length < 1) { |
| | | delete this.queryParam.publishDate |
| | | } |
| | | } |
| | | const queryParamupdateDate = this.queryParam.updateDateDate |
| | | if (queryParamupdateDate != null) { |
| | | this.queryParam.updateDate = moment(queryParamupdateDate).format('YYYY-MM-DD') |
| | | if (queryParamupdateDate.length < 1) { |
| | | delete this.queryParam.updateDate |
| | | } |
| | | } |
| | | const queryParamcreateDate = this.queryParam.createDateDate |
| | |
| | | toggleAdvanced () { |
| | | this.advanced = !this.advanced |
| | | }, |
| | | onChangelastEditorDate(date, dateString) { |
| | | this.lastEditorDateDateString = dateString |
| | | }, |
| | | onChangepublishDate(date, dateString) { |
| | | this.publishDateDateString = dateString |
| | | }, |
| | | onChangeupdateDate(date, dateString) { |
| | | this.updateDateDateString = dateString |
| | | }, |
| | | onChangecreateDate(date, dateString) { |
| | | this.createDateDateString = dateString |
| | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * blog文章主体控制器 |
| | | * blog文章控制器 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @RestController |
| | | public class BlogArticleController { |
| | |
| | | private BlogArticleService blogArticleService; |
| | | |
| | | /** |
| | | * 查询blog文章主体 |
| | | * 查询blog文章 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @Permission |
| | | @GetMapping("/blogArticle/page") |
| | | @BusinessLog(title = "blog文章主体_查询", opType = LogAnnotionOpTypeEnum.QUERY) |
| | | @BusinessLog(title = "blog文章_查询", opType = LogAnnotionOpTypeEnum.QUERY) |
| | | public ResponseData page(BlogArticleParam blogArticleParam) { |
| | | return new SuccessResponseData(blogArticleService.page(blogArticleParam)); |
| | | } |
| | | |
| | | /** |
| | | * 添加blog文章主体 |
| | | * 添加blog文章 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @Permission |
| | | @PostMapping("/blogArticle/add") |
| | | @BusinessLog(title = "blog文章主体_增加", opType = LogAnnotionOpTypeEnum.ADD) |
| | | @BusinessLog(title = "blog文章_增加", opType = LogAnnotionOpTypeEnum.ADD) |
| | | public ResponseData add(@RequestBody @Validated(BlogArticleParam.add.class) BlogArticleParam blogArticleParam) { |
| | | blogArticleService.add(blogArticleParam); |
| | | return new SuccessResponseData(); |
| | | } |
| | | |
| | | /** |
| | | * 删除blog文章主体,可批量删除 |
| | | * 删除blog文章,可批量删除 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @Permission |
| | | @PostMapping("/blogArticle/delete") |
| | | @BusinessLog(title = "blog文章主体_删除", opType = LogAnnotionOpTypeEnum.DELETE) |
| | | @BusinessLog(title = "blog文章_删除", opType = LogAnnotionOpTypeEnum.DELETE) |
| | | public ResponseData delete(@RequestBody @Validated(BlogArticleParam.delete.class) List<BlogArticleParam> blogArticleParamList) { |
| | | blogArticleService.delete(blogArticleParamList); |
| | | return new SuccessResponseData(); |
| | | } |
| | | |
| | | /** |
| | | * 编辑blog文章主体 |
| | | * 编辑blog文章 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @Permission |
| | | @PostMapping("/blogArticle/edit") |
| | | @BusinessLog(title = "blog文章主体_编辑", opType = LogAnnotionOpTypeEnum.EDIT) |
| | | @BusinessLog(title = "blog文章_编辑", opType = LogAnnotionOpTypeEnum.EDIT) |
| | | public ResponseData edit(@RequestBody @Validated(BlogArticleParam.edit.class) BlogArticleParam blogArticleParam) { |
| | | blogArticleService.edit(blogArticleParam); |
| | | return new SuccessResponseData(); |
| | | } |
| | | |
| | | /** |
| | | * 查看blog文章主体 |
| | | * 查看blog文章 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @Permission |
| | | @GetMapping("/blogArticle/detail") |
| | | @BusinessLog(title = "blog文章主体_查看", opType = LogAnnotionOpTypeEnum.DETAIL) |
| | | @BusinessLog(title = "blog文章_查看", opType = LogAnnotionOpTypeEnum.DETAIL) |
| | | public ResponseData detail(@Validated(BlogArticleParam.detail.class) BlogArticleParam blogArticleParam) { |
| | | return new SuccessResponseData(blogArticleService.detail(blogArticleParam)); |
| | | } |
| | | |
| | | /** |
| | | * blog文章主体列表 |
| | | * blog文章列表 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @Permission |
| | | @GetMapping("/blogArticle/list") |
| | | @BusinessLog(title = "blog文章主体_列表", opType = LogAnnotionOpTypeEnum.QUERY) |
| | | @BusinessLog(title = "blog文章_列表", opType = LogAnnotionOpTypeEnum.QUERY) |
| | | public ResponseData list(BlogArticleParam blogArticleParam) { |
| | | return new SuccessResponseData(blogArticleService.list(blogArticleParam)); |
| | | } |
| | |
| | | * 导出系统用户 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:22 |
| | | */ |
| | | @Permission |
| | | @GetMapping("/blogArticle/export") |
| | | @BusinessLog(title = "blog文章主体_导出", opType = LogAnnotionOpTypeEnum.EXPORT) |
| | | @BusinessLog(title = "blog文章_导出", opType = LogAnnotionOpTypeEnum.EXPORT) |
| | | public void export(BlogArticleParam blogArticleParam) { |
| | | blogArticleService.export(blogArticleParam); |
| | | } |
| | |
| | | */ |
| | | package vip.xiaonuo.modular.blogarticle.param; |
| | | |
| | | import com.baomidou.mybatisplus.core.toolkit.AES; |
| | | import lombok.Data; |
| | | import vip.xiaonuo.core.pojo.base.param.BaseParam; |
| | | |
| | |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | /** |
| | | * blog文章主体参数类 |
| | | * blog文章参数类 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:21:14 |
| | | */ |
| | | @Data |
| | | public class BlogArticleParam extends BaseParam { |
| | | public static void main(String[] args) { |
| | | String data = "Root+redis"; |
| | | String randomKey = "inleftKey1234567"; |
| | | |
| | | String result = AES.encrypt(data, randomKey); |
| | | System.out.println(result); |
| | | } |
| | | /** |
| | | * 主键 |
| | | */ |
| | |
| | | private Long articleFileId; |
| | | |
| | | /** |
| | | * 文件类型 1:markdown 2:html |
| | | * 文件类型 |
| | | */ |
| | | @NotNull(message = "文件类型 1:markdown 2:html不能为空,请检查articleFileType参数", groups = {add.class, edit.class}) |
| | | private Integer articleFileType; |
| | | |
| | | /** |
| | | * 文章分类id 0:没有分类 |
| | | * 文章分类 |
| | | */ |
| | | @NotNull(message = "文章分类id 0:没有分类不能为空,请检查articleTypeId参数", groups = {add.class, edit.class}) |
| | | @NotNull(message = "文章分类不能为空,请检查articleTypeId参数", groups = {add.class, edit.class}) |
| | | private Long articleTypeId; |
| | | |
| | | /** |
| | | * 文章引言 |
| | | */ |
| | | @NotBlank(message = "文章引言不能为空,请检查introduce参数", groups = {add.class, edit.class}) |
| | | private String introduce; |
| | | |
| | | /** |
| | | * 封面文件地址(id) |
| | | * 封面文件 |
| | | */ |
| | | @NotNull(message = "封面文件地址(id)不能为空,请检查coverFileId参数", groups = {add.class, edit.class}) |
| | | private Long coverFileId; |
| | | |
| | | /** |
| | | * 上次编辑时间 |
| | | */ |
| | | @NotNull(message = "上次编辑时间不能为空,请检查lastEditorDate参数", groups = {add.class, edit.class}) |
| | | private String lastEditorDate; |
| | | |
| | | /** |
| | | * 发布时间 |
| | | */ |
| | | @NotNull(message = "发布时间不能为空,请检查publishDate参数", groups = {add.class, edit.class}) |
| | | private String publishDate; |
| | | |
| | | /** |
| | | * 是否置顶 0:否 1:是 |
| | | * 是否置顶 |
| | | */ |
| | | @NotNull(message = "是否置顶 0:否 1:是不能为空,请检查isTop参数", groups = {add.class, edit.class}) |
| | | @NotNull(message = "是否置顶不能为空,请检查isTop参数", groups = {add.class, edit.class}) |
| | | private Integer isTop; |
| | | |
| | | /** |
| | | * 置顶值(越小越靠前) |
| | | * 置顶值 |
| | | */ |
| | | @NotNull(message = "置顶值(越小越靠前)不能为空,请检查topValue参数", groups = {add.class, edit.class}) |
| | | private Integer topValue; |
| | | |
| | | /** |
| | | * 公开状态 1:公开 2:私密 3:密码授权 |
| | | * 公开状态 |
| | | */ |
| | | @NotNull(message = "公开状态 1:公开 2:私密 3:密码授权不能为空,请检查authStatus参数", groups = {add.class, edit.class}) |
| | | private Integer authStatus; |
| | | |
| | | /** |
| | | * 授权密码(在密码授权状态时) |
| | | * 授权密码 |
| | | */ |
| | | @NotBlank(message = "授权密码(在密码授权状态时)不能为空,请检查authPassword参数", groups = {add.class, edit.class}) |
| | | private String authPassword; |
| | | |
| | | /** |
| | | * 编辑状态 0:草稿 1:发布 |
| | | * 编辑状态 |
| | | */ |
| | | @NotNull(message = "编辑状态 0:草稿 1:发布不能为空,请检查editorStatus参数", groups = {add.class, edit.class}) |
| | | private Integer editorStatus; |
| | | |
| | | /** |
| | | * 归档年份(以初次发布时间为准) |
| | | * 归档年份 |
| | | */ |
| | | @NotNull(message = "归档年份(以初次发布时间为准)不能为空,请检查separateYear参数", groups = {add.class, edit.class}) |
| | | private Integer separateYear; |
| | | |
| | | /** |
| | | * 归档月份 |
| | | */ |
| | | @NotNull(message = "归档月份不能为空,请检查separateMonth参数", groups = {add.class, edit.class}) |
| | | private Integer separateMonth; |
| | | |
| | | /** |
| | | * 归档日 |
| | | */ |
| | | @NotNull(message = "归档日不能为空,请检查separateDay参数", groups = {add.class, edit.class}) |
| | | private Integer separateDay; |
| | | |
| | | /** |
| | | * 是否启用 0:否 1:是 |
| | | * 是否启用 |
| | | */ |
| | | @NotNull(message = "是否启用 0:否 1:是不能为空,请检查isEnable参数", groups = {add.class, edit.class}) |
| | | private Integer isEnable; |
| | | |
| | | /** |
| | | * 更新时间 |
| | | */ |
| | | @NotNull(message = "更新时间不能为空,请检查updateDate参数", groups = {add.class, edit.class}) |
| | | private String updateDate; |
| | | |
| | | /** |
| | | * 创建时间 |
| | | */ |
| | | @NotNull(message = "创建时间不能为空,请检查createDate参数", groups = {add.class, edit.class}) |
| | | private String createDate; |
| | | |
| | | } |
| | |
| | | |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import vip.xiaonuo.core.consts.CommonConstant; |
| | | import vip.xiaonuo.core.enums.CommonStatusEnum; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import vip.xiaonuo.core.exception.ServiceException; |
| | | import vip.xiaonuo.core.factory.PageFactory; |
| | | import vip.xiaonuo.core.pojo.page.PageResult; |
| | |
| | | import vip.xiaonuo.modular.blogarticle.mapper.BlogArticleMapper; |
| | | import vip.xiaonuo.modular.blogarticle.param.BlogArticleParam; |
| | | import vip.xiaonuo.modular.blogarticle.service.BlogArticleService; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import javax.annotation.Resource; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * blog文章主体service接口实现类 |
| | | * blog文章service接口实现类 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:46 |
| | | */ |
| | | @Service |
| | | public class BlogArticleServiceImpl extends ServiceImpl<BlogArticleMapper, BlogArticle> implements BlogArticleService { |
| | |
| | | |
| | | // 根据文章标题 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getTitle())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getTitle, blogArticleParam.getTitle()); |
| | | queryWrapper.lambda().like(BlogArticle::getTitle, blogArticleParam.getTitle()); |
| | | } |
| | | // 根据文章文件id 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getArticleFileId())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getArticleFileId, blogArticleParam.getArticleFileId()); |
| | | } |
| | | // 根据文件类型 1:markdown 2:html 查询 |
| | | // 根据文件类型 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getArticleFileType())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getArticleFileType, blogArticleParam.getArticleFileType()); |
| | | } |
| | | // 根据文章分类id 0:没有分类 查询 |
| | | // 根据文章分类 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getArticleTypeId())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getArticleTypeId, blogArticleParam.getArticleTypeId()); |
| | | } |
| | | // 根据文章引言 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getIntroduce())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getIntroduce, blogArticleParam.getIntroduce()); |
| | | } |
| | | // 根据封面文件地址(id) 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getCoverFileId())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getCoverFileId, blogArticleParam.getCoverFileId()); |
| | | } |
| | | // 根据上次编辑时间 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getLastEditorDate())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getLastEditorDate, blogArticleParam.getLastEditorDate()); |
| | | queryWrapper.lambda().like(BlogArticle::getIntroduce, blogArticleParam.getIntroduce()); |
| | | } |
| | | // 根据发布时间 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getPublishDate())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getPublishDate, blogArticleParam.getPublishDate()); |
| | | queryWrapper.lambda().ge(BlogArticle::getPublishDate, blogArticleParam.getPublishDate()); |
| | | } |
| | | // 根据是否置顶 0:否 1:是 查询 |
| | | // 根据是否置顶 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getIsTop())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getIsTop, blogArticleParam.getIsTop()); |
| | | } |
| | | // 根据置顶值(越小越靠前) 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getTopValue())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getTopValue, blogArticleParam.getTopValue()); |
| | | } |
| | | // 根据公开状态 1:公开 2:私密 3:密码授权 查询 |
| | | // 根据公开状态 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getAuthStatus())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getAuthStatus, blogArticleParam.getAuthStatus()); |
| | | } |
| | | // 根据授权密码(在密码授权状态时) 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getAuthPassword())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getAuthPassword, blogArticleParam.getAuthPassword()); |
| | | } |
| | | // 根据编辑状态 0:草稿 1:发布 查询 |
| | | // 根据编辑状态 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getEditorStatus())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getEditorStatus, blogArticleParam.getEditorStatus()); |
| | | } |
| | | // 根据归档年份(以初次发布时间为准) 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getSeparateYear())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getSeparateYear, blogArticleParam.getSeparateYear()); |
| | | } |
| | | // 根据归档月份 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getSeparateMonth())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getSeparateMonth, blogArticleParam.getSeparateMonth()); |
| | | } |
| | | // 根据归档日 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getSeparateDay())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getSeparateDay, blogArticleParam.getSeparateDay()); |
| | | } |
| | | // 根据是否启用 0:否 1:是 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getIsEnable())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getIsEnable, blogArticleParam.getIsEnable()); |
| | | } |
| | | // 根据更新时间 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getUpdateDate())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getUpdateDate, blogArticleParam.getUpdateDate()); |
| | | } |
| | | // 根据创建时间 查询 |
| | | if (ObjectUtil.isNotEmpty(blogArticleParam.getCreateDate())) { |
| | | queryWrapper.lambda().eq(BlogArticle::getCreateDate, blogArticleParam.getCreateDate()); |
| | | queryWrapper.lambda().ge(BlogArticle::getCreateDate, blogArticleParam.getCreateDate()); |
| | | } |
| | | } |
| | | return new PageResult<>(this.page(PageFactory.defaultPage(), queryWrapper)); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取blog文章主体 |
| | | * 获取blog文章 |
| | | * |
| | | * @author inleft |
| | | * @date 2022-01-22 16:53:06 |
| | | * @date 2022-02-09 18:20:46 |
| | | */ |
| | | private BlogArticle queryBlogArticle(BlogArticleParam blogArticleParam) { |
| | | BlogArticle blogArticle = this.getById(blogArticleParam.getId()); |