zhangyuewww 2 anos atrás
pai
commit
1491b4977d

+ 63 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/IArticleManagementService.java

@@ -0,0 +1,63 @@
+package com.iotechn.unimall.admin.api.cloud;
+
+
+import com.iotechn.unimall.data.domain.ArticleManagement;
+import com.iotechn.unimall.core.annotation.HttpMethod;
+import com.iotechn.unimall.core.annotation.HttpOpenApi;
+import com.iotechn.unimall.core.annotation.HttpParam;
+import com.iotechn.unimall.core.annotation.HttpParamType;
+import com.iotechn.unimall.core.annotation.param.NotNull;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+
+/**
+ * 文章管理信息Service接口
+ * 
+ * @author jlb
+ * @date 2023-05-26
+ */
+@HttpOpenApi(group = "admin.unimall.articleManagement", description = "文章管理信息")
+public interface IArticleManagementService{
+	@HttpMethod(description = "新增",  permissionName = "文章管理信息管理")
+	public Boolean add(@NotNull @HttpParam(name = "articleManagement", type = HttpParamType.COMMON, description = "文章管理信息") ArticleManagement articleManagement)throws ServiceException;
+
+	@HttpMethod(description = "列表",  permissionName = "文章管理信息管理")
+	public Page<ArticleManagement> list(
+								@HttpParam(name = "articleTitle", type = HttpParamType.COMMON, description = "文章标题") String articleTitle,
+							@HttpParam(name = "articleIntroduction", type = HttpParamType.COMMON, description = "文章简介") String articleIntroduction,
+							@HttpParam(name = "coverImage", type = HttpParamType.COMMON, description = "封面") String coverImage,
+							@HttpParam(name = "classification", type = HttpParamType.COMMON, description = "分类") String classification,
+							@HttpParam(name = "articleTemplate", type = HttpParamType.COMMON, description = "文章模板") String articleTemplate,
+							@HttpParam(name = "status", type = HttpParamType.COMMON, description = "状态") String status,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Long deleteFlag,
+					@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+		@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)
+		throws ServiceException;
+
+	@HttpMethod(description = "删除", permissionName = "文章管理信息管理")
+	public Boolean delete(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")String id)throws ServiceException;
+
+	@HttpMethod(description = "修改", permissionName = "文章管理信息管理")
+	public Boolean update(@NotNull @HttpParam(name = "articleManagement", type = HttpParamType.COMMON, description = "文章管理信息") ArticleManagement articleManagement)throws ServiceException;
+
+	@HttpMethod(description = "查询",permissionName = "文章管理信息管理")
+	public ArticleManagement get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")Long id)throws ServiceException;
+	
+	@HttpMethod(description = "导出excl表",  permissionName = "文章管理信息管理")
+	public String export(
+								@HttpParam(name = "articleTitle", type = HttpParamType.COMMON, description = "文章标题") String articleTitle,
+							@HttpParam(name = "articleIntroduction", type = HttpParamType.COMMON, description = "文章简介") String articleIntroduction,
+							@HttpParam(name = "coverImage", type = HttpParamType.COMMON, description = "封面") String coverImage,
+							@HttpParam(name = "classification", type = HttpParamType.COMMON, description = "分类") String classification,
+							@HttpParam(name = "articleTemplate", type = HttpParamType.COMMON, description = "文章模板") String articleTemplate,
+							@HttpParam(name = "status", type = HttpParamType.COMMON, description = "状态") String status,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Long deleteFlag,
+				@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+	@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)throws ServiceException;
+	
+}

+ 63 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/IProductManagementService.java

@@ -0,0 +1,63 @@
+package com.iotechn.unimall.admin.api.cloud;
+
+
+import com.iotechn.unimall.core.annotation.HttpMethod;
+import com.iotechn.unimall.core.annotation.HttpOpenApi;
+import com.iotechn.unimall.core.annotation.HttpParam;
+import com.iotechn.unimall.core.annotation.HttpParamType;
+import com.iotechn.unimall.core.annotation.param.NotNull;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.domain.ProductManagement;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+
+/**
+ * 产品管理信息Service接口
+ * 
+ * @author jlb
+ * @date 2023-05-26
+ */
+@HttpOpenApi(group = "admin.unimall.productManagement", description = "产品管理信息")
+public interface IProductManagementService{
+	@HttpMethod(description = "新增", permissionName = "产品管理信息管理")
+	public Boolean add(@NotNull @HttpParam(name = "productManagement", type = HttpParamType.COMMON, description = "产品管理信息") ProductManagement productManagement)throws ServiceException;
+
+	@HttpMethod(description = "列表",  permissionName = "产品管理信息管理")
+	public Page<ProductManagement> list(
+								@HttpParam(name = "productTitle", type = HttpParamType.COMMON, description = "产品标题") String productTitle,
+							@HttpParam(name = "productIntroduction", type = HttpParamType.COMMON, description = "产品简介") String productIntroduction,
+							@HttpParam(name = "coverImage", type = HttpParamType.COMMON, description = "封面") String coverImage,
+							@HttpParam(name = "classification", type = HttpParamType.COMMON, description = "分类") String classification,
+							@HttpParam(name = "productTemplate", type = HttpParamType.COMMON, description = "产品模板") String productTemplate,
+							@HttpParam(name = "status", type = HttpParamType.COMMON, description = "状态") String status,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Long deleteFlag,
+					@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+		@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)
+		throws ServiceException;
+
+	@HttpMethod(description = "删除",permissionName = "产品管理信息管理")
+	public Boolean delete(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")String id)throws ServiceException;
+
+	@HttpMethod(description = "修改",  permissionName = "产品管理信息管理")
+	public Boolean update(@NotNull @HttpParam(name = "productManagement", type = HttpParamType.COMMON, description = "产品管理信息") ProductManagement productManagement)throws ServiceException;
+
+	@HttpMethod(description = "查询",permissionName = "产品管理信息管理")
+	public ProductManagement get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")Long id)throws ServiceException;
+	
+	@HttpMethod(description = "导出excl表",  permissionName = "产品管理信息管理")
+	public String export(
+								@HttpParam(name = "productTitle", type = HttpParamType.COMMON, description = "产品标题") String productTitle,
+							@HttpParam(name = "productIntroduction", type = HttpParamType.COMMON, description = "产品简介") String productIntroduction,
+							@HttpParam(name = "coverImage", type = HttpParamType.COMMON, description = "封面") String coverImage,
+							@HttpParam(name = "classification", type = HttpParamType.COMMON, description = "分类") String classification,
+							@HttpParam(name = "productTemplate", type = HttpParamType.COMMON, description = "产品模板") String productTemplate,
+							@HttpParam(name = "status", type = HttpParamType.COMMON, description = "状态") String status,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Long deleteFlag,
+				@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+	@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)throws ServiceException;
+	
+}

+ 136 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/impl/ArticleManagementServiceImpl.java

@@ -0,0 +1,136 @@
+package com.iotechn.unimall.admin.api.cloud.impl;
+
+import java.util.List;
+
+import com.iotechn.unimall.admin.api.cloud.IArticleManagementService;
+import com.iotechn.unimall.data.domain.ArticleManagement;
+import com.iotechn.unimall.data.mapper.ArticleManagementMapper;
+import org.apache.ibatis.session.RowBounds;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.util.ExcelUtil;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 文章管理信息Service业务层处理
+ * 
+ * @author jlb
+ * @date 2023-05-26
+ */
+@Service
+public class ArticleManagementServiceImpl implements IArticleManagementService {
+	@Autowired
+	private ArticleManagementMapper articleManagementMapper;
+	
+	@Override
+	public Boolean add(ArticleManagement articleManagement) throws ServiceException {
+		Date now = new Date();
+		articleManagement.setGmtCreate(now);
+		articleManagement.setGmtUpdate(now);
+		return articleManagementMapper.insert(articleManagement)>0;
+	}
+
+	@Override
+	public Page<ArticleManagement> list(String articleTitle,String articleIntroduction,String coverImage,String classification,String articleTemplate,String status,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<ArticleManagement> wrapper = new EntityWrapper<ArticleManagement>();
+														if (!StringUtils.isEmpty(articleTitle)) {
+					wrapper.eq("article_title", articleTitle);
+				}
+												if (!StringUtils.isEmpty(articleIntroduction)) {
+					wrapper.eq("article_introduction", articleIntroduction);
+				}
+												if (!StringUtils.isEmpty(coverImage)) {
+					wrapper.eq("cover_image", coverImage);
+				}
+												if (!StringUtils.isEmpty(classification)) {
+					wrapper.eq("classification", classification);
+				}
+												if (!StringUtils.isEmpty(articleTemplate)) {
+					wrapper.eq("article_template", articleTemplate);
+				}
+												if (!StringUtils.isEmpty(status)) {
+					wrapper.eq("status", status);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+							wrapper.eq("delete_flag", 0);
+		List<ArticleManagement> list = articleManagementMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+		Integer count = articleManagementMapper.selectCount(wrapper);
+		return new Page<ArticleManagement>(list, page, limit, count);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean delete(String id) {
+		String[] ids = String.valueOf(id).split(",");
+		for (String tt:ids) {
+			ArticleManagement tmp =  articleManagementMapper.selectById(Long.parseLong(tt));
+			if(tmp != null){
+				tmp.setDeleteFlag(1l);
+				articleManagementMapper.updateById(tmp);
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public Boolean update(ArticleManagement articleManagement) throws ServiceException {
+		Date now = new Date();
+		articleManagement.setGmtUpdate(now);
+		return articleManagementMapper.updateById(articleManagement)>0;
+	}
+
+	@Override
+	public ArticleManagement get(Long id) throws ServiceException {
+		return articleManagementMapper.selectById(id);
+	}
+	
+	@Override
+	public String export(String articleTitle,String articleIntroduction,String coverImage,String classification,String articleTemplate,String status,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<ArticleManagement> wrapper = new EntityWrapper<ArticleManagement>();
+														if (!StringUtils.isEmpty(articleTitle)) {
+					wrapper.eq("article_title", articleTitle);
+				}
+												if (!StringUtils.isEmpty(articleIntroduction)) {
+					wrapper.eq("article_introduction", articleIntroduction);
+				}
+												if (!StringUtils.isEmpty(coverImage)) {
+					wrapper.eq("cover_image", coverImage);
+				}
+												if (!StringUtils.isEmpty(classification)) {
+					wrapper.eq("classification", classification);
+				}
+												if (!StringUtils.isEmpty(articleTemplate)) {
+					wrapper.eq("article_template", articleTemplate);
+				}
+												if (!StringUtils.isEmpty(status)) {
+					wrapper.eq("status", status);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+							List<ArticleManagement> list = articleManagementMapper.selectList(wrapper);
+		ExcelUtil<ArticleManagement> util = new ExcelUtil<ArticleManagement>(ArticleManagement.class);
+		return util.exportExcel(list, "操作日志");
+	}
+}

+ 136 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/impl/ProductManagementServiceImpl.java

@@ -0,0 +1,136 @@
+package com.iotechn.unimall.admin.api.cloud.impl;
+
+import java.util.List;
+
+import com.iotechn.unimall.admin.api.cloud.IProductManagementService;
+import com.iotechn.unimall.data.domain.ProductManagement;
+import com.iotechn.unimall.data.mapper.ProductManagementMapper;
+import org.apache.ibatis.session.RowBounds;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.util.ExcelUtil;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 产品管理信息Service业务层处理
+ * 
+ * @author jlb
+ * @date 2023-05-26
+ */
+@Service
+public class ProductManagementServiceImpl implements IProductManagementService {
+	@Autowired
+	private ProductManagementMapper productManagementMapper;
+	
+	@Override
+	public Boolean add(ProductManagement productManagement) throws ServiceException {
+		Date now = new Date();
+		productManagement.setGmtCreate(now);
+		productManagement.setGmtUpdate(now);
+		return productManagementMapper.insert(productManagement)>0;
+	}
+
+	@Override
+	public Page<ProductManagement> list(String productTitle, String productIntroduction, String coverImage, String classification, String productTemplate, String status, Date gmtCreate, Date gmtUpdate, Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<ProductManagement> wrapper = new EntityWrapper<ProductManagement>();
+														if (!StringUtils.isEmpty(productTitle)) {
+					wrapper.eq("product_title", productTitle);
+				}
+												if (!StringUtils.isEmpty(productIntroduction)) {
+					wrapper.eq("product_introduction", productIntroduction);
+				}
+												if (!StringUtils.isEmpty(coverImage)) {
+					wrapper.eq("cover_image", coverImage);
+				}
+												if (!StringUtils.isEmpty(classification)) {
+					wrapper.eq("classification", classification);
+				}
+												if (!StringUtils.isEmpty(productTemplate)) {
+					wrapper.eq("product_template", productTemplate);
+				}
+												if (!StringUtils.isEmpty(status)) {
+					wrapper.eq("status", status);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+							wrapper.eq("delete_flag", 0);
+		List<ProductManagement> list = productManagementMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+		Integer count = productManagementMapper.selectCount(wrapper);
+		return new Page<ProductManagement>(list, page, limit, count);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean delete(String id) {
+		String[] ids = String.valueOf(id).split(",");
+		for (String tt:ids) {
+			ProductManagement tmp =  productManagementMapper.selectById(Long.parseLong(tt));
+			if(tmp != null){
+				tmp.setDeleteFlag(1l);
+				productManagementMapper.updateById(tmp);
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public Boolean update(ProductManagement productManagement) throws ServiceException {
+		Date now = new Date();
+		productManagement.setGmtUpdate(now);
+		return productManagementMapper.updateById(productManagement)>0;
+	}
+
+	@Override
+	public ProductManagement get(Long id) throws ServiceException {
+		return productManagementMapper.selectById(id);
+	}
+	
+	@Override
+	public String export(String productTitle,String productIntroduction,String coverImage,String classification,String productTemplate,String status,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<ProductManagement> wrapper = new EntityWrapper<ProductManagement>();
+														if (!StringUtils.isEmpty(productTitle)) {
+					wrapper.eq("product_title", productTitle);
+				}
+												if (!StringUtils.isEmpty(productIntroduction)) {
+					wrapper.eq("product_introduction", productIntroduction);
+				}
+												if (!StringUtils.isEmpty(coverImage)) {
+					wrapper.eq("cover_image", coverImage);
+				}
+												if (!StringUtils.isEmpty(classification)) {
+					wrapper.eq("classification", classification);
+				}
+												if (!StringUtils.isEmpty(productTemplate)) {
+					wrapper.eq("product_template", productTemplate);
+				}
+												if (!StringUtils.isEmpty(status)) {
+					wrapper.eq("status", status);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+							List<ProductManagement> list = productManagementMapper.selectList(wrapper);
+		ExcelUtil<ProductManagement> util = new ExcelUtil<ProductManagement>(ProductManagement.class);
+		return util.exportExcel(list, "操作日志");
+	}
+}

+ 4 - 4
unimall-admin/config/dev.env.js

@@ -1,8 +1,8 @@
 module.exports = {
     NODE_ENV: '"development"',
     ENV_CONFIG: '"dev"',
-    // HOST: '"http://192.168.110.138:8182"',
-    // BASE_API: '"http://192.168.110.138:8182/m.api"'
-    HOST: '"https://cardapi.eliangeyun.com"',
-    BASE_API: '"https://cardapi.eliangeyun.com/m.api"'
+    HOST: '"http://192.168.110.138:8189"',
+    BASE_API: '"http://192.168.110.138:8189/m.api"'
+    // HOST: '"https://cardapi.eliangeyun.com"',
+    // BASE_API: '"https://cardapi.eliangeyun.com/m.api"'
 }

+ 73 - 0
unimall-admin/src/api/management.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询文章管理信息列表
+export function listManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.unimall.articleManagement',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询文章管理信息详细
+export function getManagement(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.unimall.articleManagement',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增文章管理信息
+export function addManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.unimall.articleManagement',
+      _mt: 'add',
+      articleManagement: data
+    }
+  })
+}
+
+// 修改文章管理信息
+export function updateManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.unimall.articleManagement',
+      _mt: 'update',
+      articleManagement: data
+    }
+  })
+}
+
+// 删除文章管理信息
+export function delManagement(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.unimall.articleManagement',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出文章管理信息
+export function exportManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.unimall.articleManagement',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 379 - 0
unimall-admin/src/views/cloud/index.vue

@@ -0,0 +1,379 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="文章标题" prop="articleTitle">
+        <el-input
+          v-model="queryParams.articleTitle"
+          placeholder="请输入文章标题"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="封面" prop="coverImage">
+        <el-input
+          v-model="queryParams.coverImage"
+          placeholder="请输入封面"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="分类" prop="classification">
+        <el-input
+          v-model="queryParams.classification"
+          placeholder="请输入分类"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+        <el-form-item label="状态" prop="status">
+        <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
+          <el-option label="请选择字典生成" value="" />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="" prop="gmtCreate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtCreate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="" prop="gmtUpdate">
+        <el-date-picker clearable size="small" style="width: 200px"
+          v-model="queryParams.gmtUpdate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="选择">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="删除标识" prop="deleteFlag">
+        <el-input
+          v-model="queryParams.deleteFlag"
+          placeholder="请输入删除标识"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </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"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-permission="['unimall:management:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-permission="['unimall:management:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-permission="['unimall:management:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['unimall:management:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="managementList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="" align="center" prop="id" />
+      <el-table-column label="文章标题" align="center" prop="articleTitle" />
+      <el-table-column label="文章简介" align="center" prop="articleIntroduction" />
+      <el-table-column label="封面" align="center" prop="coverImage" />
+      <el-table-column label="分类" align="center" prop="classification" />
+      <el-table-column label="文章模板" align="center" prop="articleTemplate" />
+      <el-table-column label="状态" align="center" prop="status" />
+      <el-table-column label="" align="center" prop="gmtCreate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtCreate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="" align="center" prop="gmtUpdate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.gmtUpdate) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="删除标识" align="center" prop="deleteFlag" />
+      <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-permission="['unimall:management:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['unimall:management: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">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="文章标题" prop="articleTitle">
+          <el-input v-model="form.articleTitle" placeholder="请输入文章标题" />
+        </el-form-item>
+        <el-form-item label="文章简介" prop="articleIntroduction">
+          <el-input v-model="form.articleIntroduction" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="封面" prop="coverImage">
+          <el-input v-model="form.coverImage" placeholder="请输入封面" />
+        </el-form-item>
+        <el-form-item label="分类" prop="classification">
+          <el-input v-model="form.classification" placeholder="请输入分类" />
+        </el-form-item>
+        <el-form-item label="文章模板" prop="articleTemplate">
+          <el-input v-model="form.articleTemplate" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="状态">
+          <el-radio-group v-model="form.status">
+            <el-radio label="1">请选择字典生成</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="" prop="gmtCreate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtCreate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="" prop="gmtUpdate">
+          <el-date-picker clearable size="small" style="width: 200px"
+            v-model="form.gmtUpdate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="选择">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="删除标识" prop="deleteFlag">
+          <el-input v-model="form.deleteFlag" 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 { listManagement, getManagement, delManagement, addManagement, updateManagement, exportManagement } from "@/api/unimall/management";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 文章管理信息表格数据
+      managementList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        articleTitle: undefined,
+        articleIntroduction: undefined,
+        coverImage: undefined,
+        classification: undefined,
+        articleTemplate: undefined,
+        status: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        gmtCreate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        gmtUpdate: [
+          { required: true, message: "不能为空", trigger: "blur" }
+        ],        deleteFlag: [
+          { required: true, message: "删除标识不能为空", trigger: "blur" }
+        ]      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询文章管理信息列表 */
+    getList() {
+      this.loading = true;
+      listManagement(this.queryParams).then(response => {
+        this.managementList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        articleTitle: undefined,
+        articleIntroduction: undefined,
+        coverImage: undefined,
+        classification: undefined,
+        articleTemplate: undefined,
+        status: "0",
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      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.join(',')
+      getManagement(id).then(response => {
+        this.form = response.data.data
+        this.open = true;
+        this.title = "修改文章管理信息";
+      });
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != undefined) {
+            updateManagement(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addManagement(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("新增成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids.join(',')
+      this.$confirm('是否确认删除文章管理信息编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delManagement(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有文章管理信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportManagement(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 34 - 41
unimall-data/src/main/java/com/iotechn/unimall/data/domain/CircleFriendsDetail.java → unimall-data/src/main/java/com/iotechn/unimall/data/domain/ArticleManagement.java

@@ -1,6 +1,5 @@
 package com.iotechn.unimall.data.domain;
 
-import com.iotechn.unimall.data.domain.SuperDO;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel;
@@ -14,54 +13,49 @@ import com.iotechn.unimall.core.util.StringUtils;
 import java.util.Date;
 
 /**
- * 记录朋友圈互动信息对象 circle_friends_detail
+ * 文章管理信息对象 article_management
  * 
  * @author jlb
- * @date 2023-05-22
+ * @date 2023-05-26
  */
 @Data
-@TableName("circle_friends_detail")
-public class CircleFriendsDetail extends SuperDO {
+@TableName("article_management")
+public class ArticleManagement extends SuperDO{
     private static final long serialVersionUID = 1L;
 
     /**  */
     @TableId("id")
     private Long id;
 
-    /** 朋友圈id */
-    @Excel(name = "朋友圈id")
-    @TableField("circle_friends_id")
-    private Long circleFriendsId;
+    /** 文章标题 */
+    @Excel(name = "文章标题")
+    @TableField("article_title")
+    private String articleTitle;
 
-    /** 发表人id */
-    @Excel(name = "发表人id")
-    @TableField("common_id")
-    private Long commonId;
+    /** 文章简介 */
+    @Excel(name = "文章简介")
+    @TableField("article_introduction")
+    private String articleIntroduction;
 
-    /** 头像 */
-    @Excel(name = "头像")
-    @TableField("head")
-    private String head;
+    /** 封面 */
+    @Excel(name = "封面")
+    @TableField("cover_image")
+    private String coverImage;
 
-    /** 昵称 */
-    @Excel(name = "昵称")
-    @TableField("nickname")
-    private String nickname;
+    /** 分类 */
+    @Excel(name = "分类")
+    @TableField("classification")
+    private String classification;
 
-    /** 评论内容 */
-    @Excel(name = "评论内容")
-    @TableField("comment_content")
-    private String commentContent;
+    /** 文章模板 */
+    @Excel(name = "文章模板")
+    @TableField("article_template")
+    private String articleTemplate;
 
-    /** 回复的评论id */
-    @Excel(name = "回复的评论id")
-    @TableField("comment_id")
-    private Long commentId;
-
-    /** 标识(1点赞2评论) */
-    @Excel(name = "标识(1点赞2评论)")
-    @TableField("interaction_flag")
-    private String interactionFlag;
+    /** 状态 */
+    @Excel(name = "状态")
+    @TableField("status")
+    private String status;
 
     /**  */
     @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
@@ -83,13 +77,12 @@ public class CircleFriendsDetail extends SuperDO {
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
             .append("id", getId())
-            .append("circleFriendsId", getCircleFriendsId())
-            .append("commonId", getCommonId())
-            .append("head", getHead())
-            .append("nickname", getNickname())
-            .append("commentContent", getCommentContent())
-            .append("commentId", getCommentId())
-            .append("interactionFlag", getInteractionFlag())
+            .append("articleTitle", getArticleTitle())
+            .append("articleIntroduction", getArticleIntroduction())
+            .append("coverImage", getCoverImage())
+            .append("classification", getClassification())
+            .append("articleTemplate", getArticleTemplate())
+            .append("status", getStatus())
             .append("gmtCreate", getGmtCreate())
             .append("gmtUpdate", getGmtUpdate())
             .append("deleteFlag", getDeleteFlag())

+ 91 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/ProductManagement.java

@@ -0,0 +1,91 @@
+package com.iotechn.unimall.data.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel.ColumnType;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.enums.FieldFill;
+import com.iotechn.unimall.core.util.StringUtils;
+import java.util.Date;
+
+/**
+ * 产品管理信息对象 product_management
+ * 
+ * @author jlb
+ * @date 2023-05-26
+ */
+@Data
+@TableName("product_management")
+public class ProductManagement extends SuperDO{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    @TableId("id")
+    private Long id;
+
+    /** 产品标题 */
+    @Excel(name = "产品标题")
+    @TableField("product_title")
+    private String productTitle;
+
+    /** 产品简介 */
+    @Excel(name = "产品简介")
+    @TableField("product_introduction")
+    private String productIntroduction;
+
+    /** 封面 */
+    @Excel(name = "封面")
+    @TableField("cover_image")
+    private String coverImage;
+
+    /** 分类 */
+    @Excel(name = "分类")
+    @TableField("classification")
+    private String classification;
+
+    /** 产品模板 */
+    @Excel(name = "产品模板")
+    @TableField("product_template")
+    private String productTemplate;
+
+    /** 状态 */
+    @Excel(name = "状态")
+    @TableField("status")
+    private String status;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_update")
+    private Date gmtUpdate;
+
+    /** 删除标识 */
+    @Excel(name = "删除标识")
+    @TableField("delete_flag")
+    private Long deleteFlag;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("productTitle", getProductTitle())
+            .append("productIntroduction", getProductIntroduction())
+            .append("coverImage", getCoverImage())
+            .append("classification", getClassification())
+            .append("productTemplate", getProductTemplate())
+            .append("status", getStatus())
+            .append("gmtCreate", getGmtCreate())
+            .append("gmtUpdate", getGmtUpdate())
+            .append("deleteFlag", getDeleteFlag())
+            .toString();
+    }
+}

+ 13 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/mapper/ArticleManagementMapper.java

@@ -0,0 +1,13 @@
+package com.iotechn.unimall.data.mapper;
+
+import com.iotechn.unimall.data.domain.ArticleManagement;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+/**
+ * 文章管理信息Mapper接口
+ * 
+ * @author jlb
+ * @date 2023-05-26
+ */
+public interface ArticleManagementMapper extends BaseMapper<ArticleManagement>{
+
+}

+ 13 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/mapper/ProductManagementMapper.java

@@ -0,0 +1,13 @@
+package com.iotechn.unimall.data.mapper;
+
+import com.iotechn.unimall.data.domain.ProductManagement;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+/**
+ * 产品管理信息Mapper接口
+ * 
+ * @author jlb
+ * @date 2023-05-26
+ */
+public interface ProductManagementMapper extends BaseMapper<ProductManagement>{
+
+}

+ 9 - 0
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/ArticleManagementMapper.xml

@@ -0,0 +1,9 @@
+<?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.iotechn.unimall.data.mapper.ArticleManagementMapper">
+    
+
+
+</mapper>

+ 9 - 0
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/ProductManagementMapper.xml

@@ -0,0 +1,9 @@
+<?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.iotechn.unimall.data.mapper.ProductManagementMapper">
+    
+
+
+</mapper>