Browse Source

Merge branch 'master' of http://git.zthymaoyi.com/zyw/cloudNew

高敬炎 2 years ago
parent
commit
4c2a90cc2b
16 changed files with 1440 additions and 1 deletions
  1. 58 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/ICarouselManagementService.java
  2. 62 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/IMessageManagementService.java
  3. 118 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/impl/CarouselManagementServiceImpl.java
  4. 130 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/impl/MessageManagementServiceImpl.java
  5. 73 0
      unimall-admin/src/api/cloud/carouselManagement.js
  6. 73 0
      unimall-admin/src/api/cloud/messageManagement.js
  7. 345 0
      unimall-admin/src/views/carouselManagement/index.vue
  8. 373 0
      unimall-admin/src/views/messageManagement/index.vue
  9. 5 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/ArticleManagement.java
  10. 73 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/CarouselManagement.java
  11. 85 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/MessageManagement.java
  12. 13 0
      unimall-data/src/main/java/com/iotechn/unimall/data/mapper/CarouselManagementMapper.java
  13. 13 0
      unimall-data/src/main/java/com/iotechn/unimall/data/mapper/MessageManagementMapper.java
  14. 9 0
      unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/CarouselManagementMapper.xml
  15. 9 0
      unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/MessageManagementMapper.xml
  16. 1 1
      unimall-launcher/src/main/java/com/iotechn/unimall/launcher/controller/CommonController.java

+ 58 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/ICarouselManagementService.java

@@ -0,0 +1,58 @@
+package com.iotechn.unimall.admin.api.cloud;
+
+
+import com.iotechn.unimall.data.domain.CarouselManagement;
+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-29
+ */
+@HttpOpenApi(group = "admin.cloud.carouselManagement", description = "轮播管理信息")
+public interface ICarouselManagementService{
+	@HttpMethod(description = "新增",   permissionName = "轮播管理信息管理")
+	public Boolean add(@NotNull @HttpParam(name = "carouselManagement", type = HttpParamType.COMMON, description = "轮播管理信息") CarouselManagement carouselManagement)throws ServiceException;
+
+	@HttpMethod(description = "列表", permissionName = "轮播管理信息管理")
+	public Page<CarouselManagement> list(
+								@HttpParam(name = "title", type = HttpParamType.COMMON, description = "标题") String title,
+							@HttpParam(name = "url", type = HttpParamType.COMMON, description = "轮播图片") String url,
+							@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 = "carouselManagement", type = HttpParamType.COMMON, description = "轮播管理信息") CarouselManagement carouselManagement)throws ServiceException;
+
+	@HttpMethod(description = "查询", permissionName = "轮播管理信息管理")
+	public CarouselManagement get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")Long id)throws ServiceException;
+	
+	@HttpMethod(description = "导出excl表",  permissionName = "轮播管理信息管理")
+	public String export(
+								@HttpParam(name = "title", type = HttpParamType.COMMON, description = "标题") String title,
+							@HttpParam(name = "url", type = HttpParamType.COMMON, description = "轮播图片") String url,
+							@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;
+	
+}

+ 62 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/IMessageManagementService.java

@@ -0,0 +1,62 @@
+package com.iotechn.unimall.admin.api.cloud;
+
+
+import com.iotechn.unimall.data.domain.MessageManagement;
+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-29
+ */
+@HttpOpenApi(group = "admin.cloud.messageManagement", description = "留言管理信息")
+public interface IMessageManagementService{
+	@HttpMethod(description = "新增",   permissionName = "留言管理信息管理")
+	public Boolean add(@NotNull @HttpParam(name = "messageManagement", type = HttpParamType.COMMON, description = "留言管理信息") MessageManagement messageManagement)throws ServiceException;
+
+	@HttpMethod(description = "列表", permissionName = "留言管理信息管理")
+	public Page<MessageManagement> list(
+								@HttpParam(name = "name", type = HttpParamType.COMMON, description = "姓名") String name,
+							@HttpParam(name = "phone", type = HttpParamType.COMMON, description = "手机号") String phone,
+							@HttpParam(name = "email", type = HttpParamType.COMMON, description = "电子邮件") String email,
+							@HttpParam(name = "content", type = HttpParamType.COMMON, description = "留言内容") String content,
+							@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 = "messageManagement", type = HttpParamType.COMMON, description = "留言管理信息") MessageManagement messageManagement)throws ServiceException;
+
+	@HttpMethod(description = "查询", permissionName = "留言管理信息管理")
+	public MessageManagement get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")Long id)throws ServiceException;
+	
+	@HttpMethod(description = "导出excl表",  permissionName = "留言管理信息管理")
+	public String export(
+								@HttpParam(name = "name", type = HttpParamType.COMMON, description = "姓名") String name,
+							@HttpParam(name = "phone", type = HttpParamType.COMMON, description = "手机号") String phone,
+							@HttpParam(name = "email", type = HttpParamType.COMMON, description = "电子邮件") String email,
+							@HttpParam(name = "content", type = HttpParamType.COMMON, description = "留言内容") String content,
+							@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;
+	
+}

+ 118 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/impl/CarouselManagementServiceImpl.java

@@ -0,0 +1,118 @@
+package com.iotechn.unimall.admin.api.cloud.impl;
+
+import java.util.List;
+
+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.mapper.CarouselManagementMapper;
+import com.iotechn.unimall.data.domain.CarouselManagement;
+import com.iotechn.unimall.admin.api.cloud.ICarouselManagementService;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 轮播管理信息Service业务层处理
+ * 
+ * @author jlb
+ * @date 2023-05-29
+ */
+@Service
+public class CarouselManagementServiceImpl implements ICarouselManagementService{
+	@Autowired
+	private CarouselManagementMapper carouselManagementMapper;
+	
+	@Override
+	public Boolean add(CarouselManagement carouselManagement) throws ServiceException {
+		Date now = new Date();
+		carouselManagement.setGmtCreate(now);
+		carouselManagement.setGmtUpdate(now);
+		return carouselManagementMapper.insert(carouselManagement)>0;
+	}
+
+	@Override
+	public Page<CarouselManagement> list(String title,String url,String status,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<CarouselManagement> wrapper = new EntityWrapper<CarouselManagement>();
+														if (!StringUtils.isEmpty(title)) {
+					wrapper.eq("title", title);
+				}
+												if (!StringUtils.isEmpty(url)) {
+					wrapper.eq("url", url);
+				}
+												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<CarouselManagement> list = carouselManagementMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+		Integer count = carouselManagementMapper.selectCount(wrapper);
+		return new Page<CarouselManagement>(list, page, limit, count);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean delete(String id) {
+		String[] ids = String.valueOf(id).split(",");
+		for (String tt:ids) {
+			CarouselManagement tmp =  carouselManagementMapper.selectById(Long.parseLong(tt));
+			if(tmp != null){
+				tmp.setDeleteFlag(1l);
+				carouselManagementMapper.updateById(tmp);
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public Boolean update(CarouselManagement carouselManagement) throws ServiceException {
+		Date now = new Date();
+		carouselManagement.setGmtUpdate(now);
+		return carouselManagementMapper.updateById(carouselManagement)>0;
+	}
+
+	@Override
+	public CarouselManagement get(Long id) throws ServiceException {
+		return carouselManagementMapper.selectById(id);
+	}
+	
+	@Override
+	public String export(String title,String url,String status,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<CarouselManagement> wrapper = new EntityWrapper<CarouselManagement>();
+														if (!StringUtils.isEmpty(title)) {
+					wrapper.eq("title", title);
+				}
+												if (!StringUtils.isEmpty(url)) {
+					wrapper.eq("url", url);
+				}
+												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<CarouselManagement> list = carouselManagementMapper.selectList(wrapper);
+		ExcelUtil<CarouselManagement> util = new ExcelUtil<CarouselManagement>(CarouselManagement.class);
+		return util.exportExcel(list, "操作日志");
+	}
+}

+ 130 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/cloud/impl/MessageManagementServiceImpl.java

@@ -0,0 +1,130 @@
+package com.iotechn.unimall.admin.api.cloud.impl;
+
+import java.util.List;
+
+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.mapper.MessageManagementMapper;
+import com.iotechn.unimall.data.domain.MessageManagement;
+import com.iotechn.unimall.admin.api.cloud.IMessageManagementService;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 留言管理信息Service业务层处理
+ * 
+ * @author jlb
+ * @date 2023-05-29
+ */
+@Service
+public class MessageManagementServiceImpl implements IMessageManagementService{
+	@Autowired
+	private MessageManagementMapper messageManagementMapper;
+	
+	@Override
+	public Boolean add(MessageManagement messageManagement) throws ServiceException {
+		Date now = new Date();
+		messageManagement.setGmtCreate(now);
+		messageManagement.setGmtUpdate(now);
+		return messageManagementMapper.insert(messageManagement)>0;
+	}
+
+	@Override
+	public Page<MessageManagement> list(String name,String phone,String email,String content,String status,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<MessageManagement> wrapper = new EntityWrapper<MessageManagement>();
+														if (!StringUtils.isEmpty(name)) {
+					wrapper.eq("name", name);
+				}
+												if (!StringUtils.isEmpty(phone)) {
+					wrapper.eq("phone", phone);
+				}
+												if (!StringUtils.isEmpty(email)) {
+					wrapper.eq("email", email);
+				}
+												if (!StringUtils.isEmpty(content)) {
+					wrapper.eq("content", content);
+				}
+												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<MessageManagement> list = messageManagementMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+		Integer count = messageManagementMapper.selectCount(wrapper);
+		return new Page<MessageManagement>(list, page, limit, count);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean delete(String id) {
+		String[] ids = String.valueOf(id).split(",");
+		for (String tt:ids) {
+			MessageManagement tmp =  messageManagementMapper.selectById(Long.parseLong(tt));
+			if(tmp != null){
+				tmp.setDeleteFlag(1l);
+				messageManagementMapper.updateById(tmp);
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public Boolean update(MessageManagement messageManagement) throws ServiceException {
+		Date now = new Date();
+		messageManagement.setGmtUpdate(now);
+		return messageManagementMapper.updateById(messageManagement)>0;
+	}
+
+	@Override
+	public MessageManagement get(Long id) throws ServiceException {
+		return messageManagementMapper.selectById(id);
+	}
+	
+	@Override
+	public String export(String name,String phone,String email,String content,String status,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<MessageManagement> wrapper = new EntityWrapper<MessageManagement>();
+														if (!StringUtils.isEmpty(name)) {
+					wrapper.eq("name", name);
+				}
+												if (!StringUtils.isEmpty(phone)) {
+					wrapper.eq("phone", phone);
+				}
+												if (!StringUtils.isEmpty(email)) {
+					wrapper.eq("email", email);
+				}
+												if (!StringUtils.isEmpty(content)) {
+					wrapper.eq("content", content);
+				}
+												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<MessageManagement> list = messageManagementMapper.selectList(wrapper);
+		ExcelUtil<MessageManagement> util = new ExcelUtil<MessageManagement>(MessageManagement.class);
+		return util.exportExcel(list, "操作日志");
+	}
+}

+ 73 - 0
unimall-admin/src/api/cloud/carouselManagement.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询轮播管理信息列表
+export function listCarouselManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.cloud.carouselManagement',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询轮播管理信息详细
+export function getCarouselManagement(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.cloud.carouselManagement',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增轮播管理信息
+export function addCarouselManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.cloud.carouselManagement',
+      _mt: 'add',
+      carouselManagement: data
+    }
+  })
+}
+
+// 修改轮播管理信息
+export function updateCarouselManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.cloud.carouselManagement',
+      _mt: 'update',
+      carouselManagement: data
+    }
+  })
+}
+
+// 删除轮播管理信息
+export function delCarouselManagement(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.cloud.carouselManagement',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出轮播管理信息
+export function exportCarouselManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.cloud.carouselManagement',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 73 - 0
unimall-admin/src/api/cloud/messageManagement.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询留言管理信息列表
+export function listMessageManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.cloud.messageManagement',
+      _mt: 'list',
+      ...query
+    }
+  })
+}
+
+// 查询留言管理信息详细
+export function getMessageManagement(id) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.cloud.messageManagement',
+      _mt: 'get',
+      id: id
+    }
+  })
+}
+
+// 新增留言管理信息
+export function addMessageManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.cloud.messageManagement',
+      _mt: 'add',
+      messageManagement: data
+    }
+  })
+}
+
+// 修改留言管理信息
+export function updateMessageManagement(data) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.cloud.messageManagement',
+      _mt: 'update',
+      messageManagement: data
+    }
+  })
+}
+
+// 删除留言管理信息
+export function delMessageManagement(id) {
+  return request({
+    method: 'post',
+    params: {
+      _gp: 'admin.cloud.messageManagement',
+      _mt: 'delete',
+      id: id
+    }
+  })
+}
+
+// 导出留言管理信息
+export function exportMessageManagement(query) {
+  return request({
+    method: 'get',
+    params: {
+      _gp: 'admin.cloud.messageManagement',
+      _mt: 'export',
+      ...query
+    }
+  })
+}

+ 345 - 0
unimall-admin/src/views/carouselManagement/index.vue

@@ -0,0 +1,345 @@
+<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"
+          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="['cloud:carouselManagement: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="['cloud:carouselManagement: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="['cloud:carouselManagement:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['cloud:carouselManagement:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="carouselManagementList" @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="title" />
+      <el-table-column label="轮播图片" align="center" prop="url" />
+      <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="['cloud:carouselManagement:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['cloud:carouselManagement: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="title">
+          <el-input v-model="form.title" placeholder="请输入标题" />
+        </el-form-item>
+        <el-form-item label="轮播图片" prop="url">
+          <el-input v-model="form.url" 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 { listCarouselManagement, getCarouselManagement, delCarouselManagement, addCarouselManagement, updateCarouselManagement, exportCarouselManagement } from "@/api/cloud/carouselManagement";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 轮播管理信息表格数据
+      carouselManagementList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        title: undefined,
+        url: undefined,
+        status: undefined,
+        gmtCreate: undefined,
+        gmtUpdate: undefined,
+        deleteFlag: undefined
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        url: [
+          { required: true, message: "轮播图片不能为空", trigger: "blur" }
+        ],        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;
+      listCarouselManagement(this.queryParams).then(response => {
+        this.carouselManagementList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        title: undefined,
+        url: 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(',')
+      getCarouselManagement(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) {
+            updateCarouselManagement(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addCarouselManagement(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 delCarouselManagement(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有轮播管理信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportCarouselManagement(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 373 - 0
unimall-admin/src/views/messageManagement/index.vue

@@ -0,0 +1,373 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
+      <el-form-item label="姓名" prop="name">
+        <el-input
+          v-model="queryParams.name"
+          placeholder="请输入姓名"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="手机号" prop="phone">
+        <el-input
+          v-model="queryParams.phone"
+          placeholder="请输入手机号"
+          clearable
+          size="small"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="电子邮件" prop="email">
+        <el-input
+          v-model="queryParams.email"
+          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="['cloud:messageManagement: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="['cloud:messageManagement: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="['cloud:messageManagement:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-permission="['cloud:messageManagement:export']"
+        >导出</el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="loading" :data="messageManagementList" @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="name" />
+      <el-table-column label="手机号" align="center" prop="phone" />
+      <el-table-column label="电子邮件" align="center" prop="email" />
+      <el-table-column label="留言内容" align="center" prop="content" />
+      <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="['cloud:messageManagement:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-permission="['cloud:messageManagement: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="name">
+          <el-input v-model="form.name" placeholder="请输入姓名" />
+        </el-form-item>
+        <el-form-item label="手机号" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入手机号" />
+        </el-form-item>
+        <el-form-item label="电子邮件" prop="email">
+          <el-input v-model="form.email" placeholder="请输入电子邮件" />
+        </el-form-item>
+        <el-form-item label="留言内容" prop="content">
+          <el-input v-model="form.content" 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 { listMessageManagement, getMessageManagement, delMessageManagement, addMessageManagement, updateMessageManagement, exportMessageManagement } from "@/api/cloud/messageManagement";
+
+export default {
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 总条数
+      total: 0,
+      // 留言管理信息表格数据
+      messageManagementList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: undefined,
+        phone: undefined,
+        email: undefined,
+        content: 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;
+      listMessageManagement(this.queryParams).then(response => {
+        this.messageManagementList = response.data.data.items
+        this.total = response.data.data.count
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: undefined,
+        name: undefined,
+        phone: undefined,
+        email: undefined,
+        content: 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(',')
+      getMessageManagement(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) {
+            updateMessageManagement(this.form).then(response => {
+              if (response.data) {
+                this.msgSuccess("修改成功");
+                this.open = false;
+                this.getList();
+              } else {
+                this.msgError(response.msg);
+              }
+            });
+          } else {
+            addMessageManagement(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 delMessageManagement(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        }).catch(function() {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      const queryParams = this.queryParams;
+      this.$confirm('是否确认导出所有留言管理信息数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return exportMessageManagement(queryParams);
+        }).then(response => {
+          this.download(response.data.data);
+        }).catch(function() {});
+    }
+  }
+};
+</script>

+ 5 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/ArticleManagement.java

@@ -52,6 +52,11 @@ public class ArticleManagement extends SuperDO{
     @TableField("article_template")
     @TableField("article_template")
     private String articleTemplate;
     private String articleTemplate;
 
 
+    /** 语言 */
+    @Excel(name = "语言")
+    @TableField("language")
+    private String language;
+
     /** 状态 */
     /** 状态 */
     @Excel(name = "状态")
     @Excel(name = "状态")
     @TableField("status")
     @TableField("status")

+ 73 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/CarouselManagement.java

@@ -0,0 +1,73 @@
+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;
+
+/**
+ * 轮播管理信息对象 carousel_management
+ * 
+ * @author jlb
+ * @date 2023-05-29
+ */
+@Data
+@TableName("carousel_management")
+public class CarouselManagement extends SuperDO{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    @TableId("id")
+    private Long id;
+
+    /** 标题 */
+    @Excel(name = "标题")
+    @TableField("title")
+    private String title;
+
+    /** 轮播图片 */
+    @Excel(name = "轮播图片")
+    @TableField("url")
+    private String url;
+
+    /** 状态 */
+    @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("title", getTitle())
+            .append("url", getUrl())
+            .append("status", getStatus())
+            .append("gmtCreate", getGmtCreate())
+            .append("gmtUpdate", getGmtUpdate())
+            .append("deleteFlag", getDeleteFlag())
+            .toString();
+    }
+}

+ 85 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/MessageManagement.java

@@ -0,0 +1,85 @@
+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;
+
+/**
+ * 留言管理信息对象 message_management
+ * 
+ * @author jlb
+ * @date 2023-05-29
+ */
+@Data
+@TableName("message_management")
+public class MessageManagement extends SuperDO{
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    @TableId("id")
+    private Long id;
+
+    /** 姓名 */
+    @Excel(name = "姓名")
+    @TableField("name")
+    private String name;
+
+    /** 手机号 */
+    @Excel(name = "手机号")
+    @TableField("phone")
+    private String phone;
+
+    /** 电子邮件 */
+    @Excel(name = "电子邮件")
+    @TableField("email")
+    private String email;
+
+    /** 留言内容 */
+    @Excel(name = "留言内容")
+    @TableField("content")
+    private String content;
+
+    /** 状态 */
+    @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("name", getName())
+            .append("phone", getPhone())
+            .append("email", getEmail())
+            .append("content", getContent())
+            .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/CarouselManagementMapper.java

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

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

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

+ 9 - 0
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/CarouselManagementMapper.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.CarouselManagementMapper">
+    
+
+
+</mapper>

+ 9 - 0
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/MessageManagementMapper.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.MessageManagementMapper">
+    
+
+
+</mapper>

+ 1 - 1
unimall-launcher/src/main/java/com/iotechn/unimall/launcher/controller/CommonController.java

@@ -90,7 +90,7 @@ public class CommonController {
         response.reset();
         response.reset();
         response.setHeader("Content-Disposition", "attachment; filename=\""+tables+".zip\"");
         response.setHeader("Content-Disposition", "attachment; filename=\""+tables+".zip\"");
         response.setHeader("Access-Control-Allow-Credentials", "true");
         response.setHeader("Access-Control-Allow-Credentials", "true");
-        response.setHeader("Access-Control-Allow-Origin", "http://localhost:9528");
+        response.setHeader("Access-Control-Allow-Origin", "http://192.168.110.138:9527");
         response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
         response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
         response.addHeader("Content-Length", "" + data.length);
         response.addHeader("Content-Length", "" + data.length);
         response.setContentType("application/octet-stream; charset=UTF-8");
         response.setContentType("application/octet-stream; charset=UTF-8");