From ec09e9f2c72ff37654076c327008ac89ed32a8c3 Mon Sep 17 00:00:00 2001
From: jiangqs <343695869@qq.com>
Date: 星期六, 24 六月 2023 17:44:11 +0800
Subject: [PATCH] 导入导出

---
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java       |   26 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java    |   63 ++++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java |   56 ++++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java  |   19 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java    |   13 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/SysTagService.java              |   13 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java |   26 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java          |   44 +--
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityRecordPageVo.java           |   36 ++
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberIntegralPageVo.java         |    7 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOperLogPageVo.java                |   12 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java                 |   22 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java              |   26 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysTagServiceImpl.java     |   65 +++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberServiceRecordPageVo.java      |   10 
 ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml                          |   24 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java            |   18 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java   |   55 ++++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityRecordPageDto.java         |   34 ++
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java            |   11 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopOrderPageVo.java                |   17 +
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java                       |   22 +
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberBrowsePageVo.java           |    5 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java |   42 ++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java           |   21 
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java                    |   14 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java   |   15 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagImportDto.java                |   20 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityMapper.java              |   12 
 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java                |   13 +
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java         |   15 
 31 files changed, 707 insertions(+), 69 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
index a4aded3..766a27d 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtActivityController.java
@@ -2,11 +2,14 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
 import com.ruoyi.goods.domain.dto.MgtActivityPageDto;
+import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
 import com.ruoyi.goods.domain.vo.MgtActivityGetVo;
 import com.ruoyi.goods.domain.vo.MgtActivityPageVo;
+import com.ruoyi.goods.domain.vo.MgtActivityRecordPageVo;
 import com.ruoyi.goods.service.activity.ActivityService;
 import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
 import io.swagger.annotations.Api;
@@ -17,6 +20,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -49,7 +53,6 @@
         Page<MgtActivityPageVo> page = new Page<>();
         page.setSize(mgtActivityPageDto.getPageSize());
         page.setCurrent(mgtActivityPageDto.getPageNum());
-        page.setOptimizeCountSql(false);
         List<MgtActivityPageVo> mgtActivityPageVoList = activityService.pageMgtActivity(page,mgtActivityPageDto);
         return R.ok(page.setRecords(mgtActivityPageVoList));
     }
@@ -71,4 +74,25 @@
         activityService.deleteMgtActivity(mgtBaseGetDto.getId());
         return R.ok();
     }
+
+    @RequestMapping(value = "/pageMgtActivityRecord", method = RequestMethod.POST)
+    @ApiOperation(value = "分页获取活动参与记录列表")
+    public R<Page<MgtActivityRecordPageVo>> pageMgtActivityRecord(@RequestBody MgtActivityRecordPageDto mgtActivityRecordPageDto) {
+        Page<MgtActivityRecordPageVo> page = new Page<>();
+        page.setSize(mgtActivityRecordPageDto.getPageSize());
+        page.setCurrent(mgtActivityRecordPageDto.getPageNum());
+        List<MgtActivityRecordPageVo> mgtActivityPageVoList = activityService.pageMgtActivityRecord(page,mgtActivityRecordPageDto);
+        return R.ok(page.setRecords(mgtActivityPageVoList));
+    }
+
+    @RequestMapping(value = "/exportPageMgtActivityRecord", method = RequestMethod.POST)
+    @ApiOperation(value = "导出活动参与记录列表")
+    public void exportPageMgtActivityRecord(@RequestBody MgtActivityRecordPageDto mgtActivityRecordPageDto, HttpServletResponse response) {
+        Page<MgtActivityRecordPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtActivityRecordPageVo> activityRecordPageVoList = activityService.pageMgtActivityRecord(page,mgtActivityRecordPageDto);
+        ExcelUtil<MgtActivityRecordPageVo> util = new ExcelUtil<MgtActivityRecordPageVo>(MgtActivityRecordPageVo.class);
+        util.exportExcel(response, activityRecordPageVoList, "商品列表");
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
index 75444c4..ee21925 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtGoodsController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.goods.domain.dto.*;
 import com.ruoyi.goods.domain.vo.MgtGoodsPageVo;
@@ -18,6 +19,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -46,6 +48,17 @@
         return R.ok(page.setRecords(mgtGoodsPageVoList));
     }
 
+    @RequestMapping(value = "/exportPageMgtGoods", method = RequestMethod.POST)
+    @ApiOperation(value = "导出商品列表")
+    public void exportPageMgtGoods(@RequestBody MgtGoodsPageDto mgtGoodsPageDto, HttpServletResponse response) {
+        Page<MgtGoodsPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtGoodsPageVo> mgtGoodsPageVoList = goodsService.pageMgtGoods(page,mgtGoodsPageDto);
+        ExcelUtil<MgtGoodsPageVo> util = new ExcelUtil<MgtGoodsPageVo>(MgtGoodsPageVo.class);
+        util.exportExcel(response, mgtGoodsPageVoList, "商品列表");
+    }
+
     @RequestMapping(value = "/getMgtGoodsTotal", method = RequestMethod.POST)
     @ApiOperation(value = "获取商品统计")
     public R<MgtGoodsTotalVo> getMgtGoodsTotal(@RequestBody MgtBaseDto mgtBaseDto) {
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityRecordPageDto.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityRecordPageDto.java
new file mode 100644
index 0000000..724bf89
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/dto/MgtActivityRecordPageDto.java
@@ -0,0 +1,34 @@
+package com.ruoyi.goods.domain.dto;
+
+import com.ruoyi.system.api.domain.dto.MgtPageDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author jqs34
+ * @version 1.0
+ * @classname MgtActivityRecordPageDto
+ * @description: TODO
+ * @date 2023 2023/6/24 16:52
+ */
+@Data
+public class MgtActivityRecordPageDto extends MgtPageDto {
+
+    @ApiModelProperty(value = "活动id")
+    private String activityId;
+
+    @ApiModelProperty(value = "搜索关键词")
+    private String keyword;
+
+    @ApiModelProperty(value = "创建开始时间")
+    private String createStartTime;
+
+    @ApiModelProperty(value = "创建结束时间")
+    private String createEndTime;
+
+    @ApiModelProperty(value = "是否下单")
+    private Integer orderFlag;
+
+    @ApiModelProperty(value = "用户ids",hidden = true)
+    private String userIds;
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java
index 723aec4..2581499 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/pojo/activity/ActivityRecord.java
@@ -1,16 +1,16 @@
 package com.ruoyi.goods.domain.pojo.activity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -64,6 +64,9 @@
     @TableField("order_id")
     private String orderId;
 
+    @TableField("create_time")
+    private String createTime;
+
 
     @Override
     protected Serializable pkVal() {
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityRecordPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityRecordPageVo.java
new file mode 100644
index 0000000..9ac1286
--- /dev/null
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtActivityRecordPageVo.java
@@ -0,0 +1,36 @@
+package com.ruoyi.goods.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author jqs34
+ * @version 1.0
+ * @classname MgtActivityRecordPageVo
+ * @description: TODO
+ * @date 2023 2023/6/24 16:50
+ */
+@Data
+public class MgtActivityRecordPageVo {
+
+    @ApiModelProperty(value = "用户id")
+    private Long userId;
+
+    @Excel(name = "用户名称", width = 30)
+    @ApiModelProperty(value = "用户名称")
+    private String nickName;
+    @Excel(name = "用户电话", width = 30)
+    @ApiModelProperty(value = "用户电话")
+    private String mobile;
+    @Excel(name = "浏览时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "浏览时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @Excel(name = "是否下单", width = 30)
+    @ApiModelProperty(value = "是否下单")
+    private String orderFlag;
+}
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
index 8f75f0d..5da1e81 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtGoodsPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.goods.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -21,42 +22,55 @@
     @ApiModelProperty(value = "商品id")
     private String goodsId;
 
+    @Excel(name = "商品名称", width = 30)
     @ApiModelProperty(value = "商品名称")
     private String goodsName;
 
+    @Excel(name = "商品简介", width = 30)
     @ApiModelProperty(value = "商品简介")
     private String goodsIntroduction;
 
+    @Excel(name = "商品分类", width = 30)
     @ApiModelProperty(value = "商品分类")
     private String goodsClass;
 
+    @Excel(name = "商品标签", width = 30)
     @ApiModelProperty(value = "商品标签")
     private String goodsTags;
 
+    @Excel(name = "商品图片", width = 30)
     @ApiModelProperty(value = "商品图片")
     private String goodsPicture;
 
+    @Excel(name = "商品类型", width = 30)
     @ApiModelProperty(value = "商品类型1周期2服务3体验4单品")
     private String goodsType;
 
+    @Excel(name = "商品建议售价", width = 30)
     @ApiModelProperty(value = "商品建议售价")
     private BigDecimal suggestSalesPrice;;
 
+    @Excel(name = "最低售价", width = 30)
     @ApiModelProperty(value = "最低售价")
     private BigDecimal mininumPrice;;
 
+    @Excel(name = "销量", width = 30)
     @ApiModelProperty(value = "销量")
     private Integer buyNumCount;
 
+    @Excel(name = "销售额", width = 30)
     @ApiModelProperty(value = "销售额")
     private BigDecimal buyMoneyTotal;
 
+    @Excel(name = "是否推荐", width = 30)
     @ApiModelProperty(value = "是否推荐")
     private String recommendFlag;
 
+    @Excel(name = "商品状态", width = 30)
     @ApiModelProperty(value = "商品状态")
     private String goodsStatus;
 
+    @Excel(name = "创建时间", width = 30, dateFormat  = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityMapper.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityMapper.java
index 02e804e..1e5d593 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityMapper.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/activity/ActivityMapper.java
@@ -2,9 +2,11 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.goods.domain.dto.MgtActivityPageDto;
+import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
 import com.ruoyi.goods.domain.pojo.activity.Activity;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.goods.domain.vo.MgtActivityPageVo;
+import com.ruoyi.goods.domain.vo.MgtActivityRecordPageVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -27,4 +29,14 @@
      * @return  List<MgtActivityPageVo>
      */
     List<MgtActivityPageVo> pageMgtActivity(Page page, @Param("param") MgtActivityPageDto mgtActivityPageDto);
+
+
+    /**
+     * @description 分页获取活动参与记录列表
+     * @param mgtActivityRecordPageDto
+     * @return MgtActivityRecordPageVo
+     * @author jqs34
+     * @date 2023/6/24 16:58
+     */
+    List<MgtActivityRecordPageVo> pageMgtActivityRecord(Page page, @Param("param")MgtActivityRecordPageDto mgtActivityRecordPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
index c781a3b..5ed8fa5 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/activity/ActivityService.java
@@ -4,9 +4,11 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
 import com.ruoyi.goods.domain.dto.MgtActivityPageDto;
+import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
 import com.ruoyi.goods.domain.pojo.activity.Activity;
 import com.ruoyi.goods.domain.vo.MgtActivityGetVo;
 import com.ruoyi.goods.domain.vo.MgtActivityPageVo;
+import com.ruoyi.goods.domain.vo.MgtActivityRecordPageVo;
 
 import java.util.List;
 
@@ -55,4 +57,13 @@
      * @return  void
      */
     void deleteMgtActivity(String activityId);
+
+    /**
+    * @description 分页获取活动参与记录列表
+    * @param mgtActivityRecordPageDto
+    * @return MgtActivityRecordPageVo
+    * @author jqs34
+    * @date 2023/6/24 16:58
+    */
+    List<MgtActivityRecordPageVo> pageMgtActivityRecord(Page page,MgtActivityRecordPageDto mgtActivityRecordPageDto);
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
index e833fd6..edadea4 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/activity/ActivityServiceImpl.java
@@ -8,11 +8,13 @@
 import com.ruoyi.goods.domain.dto.MgtActivityEditDto;
 import com.ruoyi.goods.domain.dto.MgtActivityGoodsEditDto;
 import com.ruoyi.goods.domain.dto.MgtActivityPageDto;
+import com.ruoyi.goods.domain.dto.MgtActivityRecordPageDto;
 import com.ruoyi.goods.domain.pojo.activity.Activity;
 import com.ruoyi.goods.domain.pojo.activity.ActivityTotal;
 import com.ruoyi.goods.domain.vo.MgtActivityGetVo;
 import com.ruoyi.goods.domain.vo.MgtActivityGoodsListVo;
 import com.ruoyi.goods.domain.vo.MgtActivityPageVo;
+import com.ruoyi.goods.domain.vo.MgtActivityRecordPageVo;
 import com.ruoyi.goods.mapper.activity.ActivityMapper;
 import com.ruoyi.goods.service.activity.ActivityGoodsService;
 import com.ruoyi.goods.service.activity.ActivityService;
@@ -20,15 +22,22 @@
 import com.ruoyi.goods.service.activity.ActivityTotalService;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
+import com.ruoyi.system.api.domain.dto.MgtUserIdByKeywordDto;
 import com.ruoyi.system.api.domain.poji.activity.ActivityGoods;
+import com.ruoyi.system.api.domain.vo.MgtSimpleMemberVo;
 import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
+import com.ruoyi.system.api.domain.vo.MgtUserIdByKeywordVo;
+import com.ruoyi.system.api.service.RemoteMemberService;
 import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -53,6 +62,10 @@
 
     @Resource
     private RemoteShopService remoteShopService;
+
+    @Resource
+    private RemoteMemberService remoteMemberService;
+
     /**
      * @param mgtActivityEditDto
      * @return void
@@ -199,4 +212,46 @@
         activity.setActivityStatus(-1);
         this.saveOrUpdate(activity);
     }
+
+    /**
+     * @description 分页获取活动参与记录列表
+     * @param mgtActivityRecordPageDto
+     * @return MgtActivityRecordPageVo
+     * @author jqs34
+     * @date 2023/6/24 16:58
+     */
+    @Override
+    public List<MgtActivityRecordPageVo> pageMgtActivityRecord(Page page, MgtActivityRecordPageDto mgtActivityRecordPageDto){
+        if(StringUtils.isNotBlank(mgtActivityRecordPageDto.getKeyword())){
+            MgtUserIdByKeywordDto mgtUserIdByKeywordDto = new MgtUserIdByKeywordDto();
+            mgtUserIdByKeywordDto.setKeyword(mgtActivityRecordPageDto.getKeyword());
+            MgtUserIdByKeywordVo mgtUserIdByKeywordVo = remoteMemberService.getUserIdByKeyword(mgtUserIdByKeywordDto).getData();
+            if(StringUtils.isNotBlank(mgtUserIdByKeywordVo.getUserIds())){
+                mgtActivityRecordPageDto.setUserIds(mgtUserIdByKeywordVo.getUserIds());
+            }
+        }
+        List<MgtActivityRecordPageVo> activityRecordPageVoList = activityMapper.pageMgtActivityRecord(page, mgtActivityRecordPageDto);
+        if(!activityRecordPageVoList.isEmpty()){
+            // 定义变量
+            HashSet<Long> userIdSet = new HashSet<>();
+            // 遍历列表,用户 ID
+            for (MgtActivityRecordPageVo mgtActivityRecordPageVo : activityRecordPageVoList) {
+                userIdSet.add(mgtActivityRecordPageVo.getUserId());
+            }
+            // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串
+            String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+            // 从远程服务获取店铺和用户信息
+            MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto = new MgtBaseBathDto();
+            mgtBaseBathDto.setIds(userJoinedString);
+            List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+            Map<Long, MgtSimpleMemberVo> userMap = simpleMemberVoList.stream()
+                    .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            for (MgtActivityRecordPageVo mgtActivityRecordPageVo : activityRecordPageVoList) {
+                mgtActivityRecordPageVo.setNickName(userMap.get(mgtActivityRecordPageVo.getUserId()).getNickName()+"/"+(userMap.get(mgtActivityRecordPageVo.getUserId()).getRealName()));
+                mgtActivityRecordPageVo.setMobile(userMap.get(mgtActivityRecordPageVo.getUserId()).getUserMobile());
+            }
+        }
+        return activityRecordPageVoList;
+    }
 }
diff --git a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
index bb8af23..5266435 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
+++ b/ruoyi-modules/ruoyi-goods/src/main/resources/mapper/activity/ActivityMapper.xml
@@ -50,4 +50,28 @@
         </if>
     </select>
 
+    <select id="pageMgtActivityRecord" resultType="com.ruoyi.goods.domain.vo.MgtActivityRecordPageVo">
+        SELECT
+        user_id userId,
+        create_time createTime,
+        CASE WHEN order_id IS NOT NULL THEN '是' ELSE '否' END orderFlag
+        FROM t_activity_record
+        WHERE del_flag = 0 AND activity_id = #{param.activityId}
+        <if test="param.userIds!=null and param.userIds != ''">
+            AND FIND_IN_SET(#{param.userIds}, user_id) &gt; 0
+        </if>
+        <if test="param.createStartTime!=null and param.createStartTime != ''">
+            AND create_time &gt;= #{param.createStartTime}
+        </if>
+        <if test="param.createEndTime!=null and param.createEndTime != ''">
+            AND create_time &lt;= #{createEndTime}
+        </if>
+        <if test="param.orderFlag!=null and param.orderFlag == 1">
+            AND order_id IS NOT NULL
+        </if>
+        <if test="param.orderFlag!=null and param.orderFlag == 0">
+            AND order_id IS NULL
+        </if>
+    </select>
+
 </mapper>
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
index dfb24b3..45f7f60 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.member.domain.dto.*;
 import com.ruoyi.member.domain.vo.*;
@@ -15,6 +16,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -54,6 +56,17 @@
         page.setCurrent(mgtMemberPageDto.getPageNum());
         List<MgtMemberPageVo> mgtShopPageVoList = memberService.pageMgtMember(page,mgtMemberPageDto);
         return R.ok(page.setRecords(mgtShopPageVoList));
+    }
+
+    @RequestMapping(value = "/exportPageMgtMember", method = RequestMethod.POST)
+    @ApiOperation(value = "导出会员列表")
+    public void exportPageMgtMember(@RequestBody MgtMemberPageDto mgtMemberPageDto, HttpServletResponse response) {
+        Page<MgtMemberPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtMemberPageVo> mgtShopPageVoList = memberService.pageMgtMember(page,mgtMemberPageDto);
+        ExcelUtil<MgtMemberPageVo> util = new ExcelUtil<MgtMemberPageVo>(MgtMemberPageVo.class);
+        util.exportExcel(response, mgtShopPageVoList, "用户管理");
     }
 
     @RequestMapping(value = "/editMemberRelationShop", method = RequestMethod.POST)
@@ -100,10 +113,23 @@
         Long userId = SecurityUtils.getUserId();
         mgtMemberIntegralPageDto.setUserId(userId);
         Page<MgtMemberIntegralPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtMemberIntegralPageVo> mgtMemberIntegralPageVoList = integralRecordService.pageMgtMemberIntegral(page,mgtMemberIntegralPageDto);
+        return R.ok(page.setRecords(mgtMemberIntegralPageVoList));
+    }
+
+    @RequestMapping(value = "/exportPageMgtMemberIntegral", method = RequestMethod.POST)
+    @ApiOperation(value = "导出用户积分列表")
+    public void exportPageMgtMemberIntegral(@RequestBody MgtMemberIntegralPageDto mgtMemberIntegralPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtMemberIntegralPageDto.setUserId(userId);
+        Page<MgtMemberIntegralPageVo> page = new Page<>();
         page.setSize(mgtMemberIntegralPageDto.getPageSize());
         page.setCurrent(mgtMemberIntegralPageDto.getPageNum());
         List<MgtMemberIntegralPageVo> mgtMemberIntegralPageVoList = integralRecordService.pageMgtMemberIntegral(page,mgtMemberIntegralPageDto);
-        return R.ok(page.setRecords(mgtMemberIntegralPageVoList));
+        ExcelUtil<MgtMemberIntegralPageVo> util = new ExcelUtil<MgtMemberIntegralPageVo>(MgtMemberIntegralPageVo.class);
+        util.exportExcel(response, mgtMemberIntegralPageVoList, "用户积分列表");
     }
 
     @RequestMapping(value = "/pageMgtMemberBrowse", method = RequestMethod.POST)
@@ -116,6 +142,19 @@
         page.setCurrent(mgtMemberBrowsePageDto.getPageNum());
         List<MgtMemberBrowsePageVo> mgtMemberBrowsePageVoList = browseRecordService.pageMgtMemberBrowse(page,mgtMemberBrowsePageDto);
         return R.ok(page.setRecords(mgtMemberBrowsePageVoList));
+    }
+
+    @RequestMapping(value = "/exportPageMgtMemberBrowse", method = RequestMethod.POST)
+    @ApiOperation(value = "导出用户浏览记录")
+    public void exportPageMgtMemberBrowse(@RequestBody MgtMemberBrowsePageDto mgtMemberBrowsePageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtMemberBrowsePageDto.setUserId(userId);
+        Page<MgtMemberBrowsePageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtMemberBrowsePageVo> mgtMemberBrowsePageVoList = browseRecordService.pageMgtMemberBrowse(page,mgtMemberBrowsePageDto);
+        ExcelUtil<MgtMemberBrowsePageVo> util = new ExcelUtil<MgtMemberBrowsePageVo>(MgtMemberBrowsePageVo.class);
+        util.exportExcel(response, mgtMemberBrowsePageVoList, "用户浏览记录");
     }
 
     @RequestMapping(value = "/editMemberArchiveFields", method = RequestMethod.POST)
@@ -138,6 +177,19 @@
         page.setCurrent(memberSuggestPageDto.getPageNum());
         List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = memberSuggestService.pageMgtMemberSuggest(page,memberSuggestPageDto);
         return R.ok(page.setRecords(mgtMemberSuggestPageVoList));
+    }
+
+    @RequestMapping(value = "/exportPageMgtMemberSuggest", method = RequestMethod.POST)
+    @ApiOperation(value = "导出用户建议列表")
+    public void exportPageMgtMemberSuggest(@RequestBody MgtMemberSuggestPageDto memberSuggestPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        memberSuggestPageDto.setUserId(userId);
+        Page<MgtMemberSuggestPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtMemberSuggestPageVo> mgtMemberSuggestPageVoList = memberSuggestService.pageMgtMemberSuggest(page,memberSuggestPageDto);
+        ExcelUtil<MgtMemberSuggestPageVo> util = new ExcelUtil<MgtMemberSuggestPageVo>(MgtMemberSuggestPageVo.class);
+        util.exportExcel(response, mgtMemberSuggestPageVoList, "用户建议列表");
     }
 
     @RequestMapping(value = "/mgtReplayMemberSuggest", method = RequestMethod.POST)
@@ -165,4 +217,6 @@
         memberSuggestService.mgtEditMemberSuggestTag(mgtTagMemberSuggestDto);
         return R.ok();
     }
+
+
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberBrowsePageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberBrowsePageVo.java
index 100dc57..036a9c0 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberBrowsePageVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberBrowsePageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.member.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -16,15 +17,19 @@
 @Data
 public class MgtMemberBrowsePageVo {
 
+    @Excel(name = "浏览类型", width = 30)
     @ApiModelProperty(value = "浏览类型1鸿瑞学堂2营销活动3商城商品4关于鸿瑞堂5申请加盟")
     private String browseType;
 
+    @Excel(name = "浏览名称", width = 30)
     @ApiModelProperty(value = "浏览名称")
     private String browseName;
 
+    @Excel(name = "浏览时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "浏览时间")
     private String browseTime;
 
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberIntegralPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberIntegralPageVo.java
index 2186df6..0287b5a 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberIntegralPageVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberIntegralPageVo.java
@@ -1,7 +1,7 @@
 package com.ruoyi.member.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.ruoyi.system.api.domain.dto.MgtPageDto;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -17,19 +17,24 @@
 @Data
 public class MgtMemberIntegralPageVo {
 
+    @Excel(name = "记录id", width = 30)
     @ApiModelProperty(value = "记录id")
     private Long recordId;
 
+    @Excel(name = "变动时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "变动时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
+    @Excel(name = "变动积分", width = 30)
     @ApiModelProperty(value = "变动积分")
     private Integer changeIntegral;
 
+    @Excel(name = "剩余积分", width = 30)
     @ApiModelProperty(value = "剩余积分")
     private Integer surpIntegral;
 
+    @Excel(name = "变动理由", width = 30)
     @ApiModelProperty(value = "变动理由")
     private String changeReason;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java
index 9af2f5c..ff21aaa 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.member.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -18,67 +19,88 @@
 public class MgtMemberPageVo {
 
     @ApiModelProperty(value = "会员id")
+    @Excel(name = "会员id", width = 30)
     private String memberId;
 
     @ApiModelProperty(value = "用户id")
+    @Excel(name = "用户id", width = 30)
     private Long userId;
 
     @ApiModelProperty(value = "会员编号")
+    @Excel(name = "会员编号", width = 30)
     private String memberNo;
 
     @ApiModelProperty(value = "用户姓名")
+    @Excel(name = "用户姓名", width = 30)
     private String realName;
 
     @ApiModelProperty(value = "用户昵称")
+    @Excel(name = "用户昵称", width = 30)
     private String nickName;
 
     @ApiModelProperty(value = "用户手机")
+    @Excel(name = "用户手机", width = 30)
     private String mobile;
 
     @ApiModelProperty(value = "用户性别")
+    @Excel(name = "用户性别", width = 30)
     private String gender;
 
     @ApiModelProperty(value = "用户年龄")
+    @Excel(name = "用户年龄", width = 30)
     private Integer age;
 
     @ApiModelProperty(value = "活跃度")
+    @Excel(name = "活跃度", width = 30)
     private String activeness;
 
     @ApiModelProperty(value = "用户标签 多个,隔开")
+    @Excel(name = "用户标签", width = 30)
     private String memberTags;
 
     @ApiModelProperty(value = "所属地区")
+    @Excel(name = "所属地区", width = 30)
     private String belongDistrict;
 
     @ApiModelProperty(value = "是否成为会员")
+    @Excel(name = "是否成为会员", width = 30)
     private String memberFlag;
 
     @ApiModelProperty(value = "注册时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "注册时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
     @ApiModelProperty(value = "最近消费时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "最近消费时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date lastPayTime;
 
     @ApiModelProperty(value = "客户类型")
+    @Excel(name = "客户类型", width = 30)
     private String goodsType;
 
     @ApiModelProperty(value = "关联商户名称")
+    @Excel(name = "关联商户名称", width = 30)
     private String relationShopName;
 
     @ApiModelProperty(value = "积分")
+    @Excel(name = "积分", width = 30)
     private Integer integral;
 
     @ApiModelProperty(value = "推荐人")
+    @Excel(name = "推荐人", width = 30)
     private String referrer;
 
     @ApiModelProperty(value = "会员来源")
+    @Excel(name = "会员来源", width = 30)
     private String memberFrom;
 
     @ApiModelProperty(value = "消费总金额")
+    @Excel(name = "消费总金额", width = 30)
     private BigDecimal totalPayMoney;
 
     @ApiModelProperty(value = "活动参与次数")
+    @Excel(name = "活动参与次数", width = 30)
     private Integer activityTotal;
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
index 44ed756..a2c2791 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberSuggestPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.member.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -19,69 +20,60 @@
 
     @ApiModelProperty(value = "建议id")
     private Long suggestId;
-
+    @Excel(name = "用户姓名", width = 30)
     @ApiModelProperty(value = "用户姓名")
     private String userRealName;
-
+    @Excel(name = "用户昵称", width = 30)
     @ApiModelProperty(value = "用户昵称")
     private String userNickName;
-
+    @Excel(name = "用户性别", width = 30)
     @ApiModelProperty(value = "用户性别")
     private String gender;
-
+    @Excel(name = "用户手机", width = 30)
     @ApiModelProperty(value = "用户手机")
     private String userMobile;
-
+    @Excel(name = "建议类型", width = 30)
     @ApiModelProperty(value = "建议类型1.平台2.门店")
     private String suggestType;
-
+    @Excel(name = "建议内容", width = 30)
     @ApiModelProperty(value = "建议内容")
     private String suggestContent;
-
+    @Excel(name = "平台回复内容", width = 30)
     @ApiModelProperty(value = "平台回复内容")
     private String replayContent;
-
+    @Excel(name = "商户回复内容", width = 30)
     @ApiModelProperty(value = "商户回复内容")
     private String shopReplayContent;
-
+    @Excel(name = "建议状态", width = 30)
     @ApiModelProperty(value = "建议状态")
     private String suggestStatus;
-
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
-
+    @Excel(name = "回复人姓名", width = 30)
     @ApiModelProperty(value = "回复人姓名")
     private String replayUserName;
-
+    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "回复时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date replayTime;
-
+    @Excel(name = "平台响应时间", width = 30)
     @ApiModelProperty(value = "平台响应时间")
     private String responseTime;
-
+    @Excel(name = "商户回复人姓名", width = 30)
     @ApiModelProperty(value = "商户回复人姓名")
     private String shopReplayUserName;
-
+    @Excel(name = "商户回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "商户回复时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date shopReplayTime;
-
+    @Excel(name = "商户响应时间", width = 30)
     @ApiModelProperty(value = "商户响应时间")
     private String shopResponseTime;
-
+    @Excel(name = "建议标签", width = 30)
     @ApiModelProperty(value = "建议标签")
     private String suggestTags;
-
-
-
-
-
-
-
-
-
 
 
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java
index 497ebd4..265c159 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtMemberController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.order.domain.dto.MgtMemberServiceRecordPageDto;
 import com.ruoyi.order.domain.vo.MgtMemberServiceRecordPageVo;
@@ -16,6 +17,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -45,6 +47,19 @@
         return R.ok(page.setRecords(list));
     }
 
+    @RequestMapping(value = "/exportPageMgtMemberServiceRecord", method = RequestMethod.POST)
+    @ApiOperation(value = "导出用户服务记录列表")
+    public void exportPageMgtMemberServiceRecord(@RequestBody MgtMemberServiceRecordPageDto mgtMemberServiceRecordPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtMemberServiceRecordPageDto.setUserId(userId);
+        Page<MgtMemberServiceRecordPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtMemberServiceRecordPageVo> list = userServiceRecordService.pageMgtMemberServiceRecord(page,mgtMemberServiceRecordPageDto);
+        ExcelUtil<MgtMemberServiceRecordPageVo> util = new ExcelUtil<MgtMemberServiceRecordPageVo>(MgtMemberServiceRecordPageVo.class);
+        util.exportExcel(response, list, "用户浏览记录");
+    }
+
     @RequestMapping(value = "/getMgtMemberServiceTotal", method = RequestMethod.POST)
     @ApiOperation(value = "获取会员服务统计")
     public R<MgtMemberServiceTotalVo> getMgtMemberServiceTotal(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java
index 5f0f69c..421608b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtOrderController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.order.domain.dto.MgtMemberOrderPageDto;
 import com.ruoyi.order.domain.dto.MgtMemberOrderTotalDto;
@@ -17,7 +18,9 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author jqs34
@@ -55,6 +58,30 @@
         return R.ok(page.setRecords(mgtMemberOrderPageVoList));
     }
 
+    @RequestMapping(value = "/exportPageMgtMemberOrder", method = RequestMethod.POST)
+    @ApiOperation(value = "平台获取用户订单列表")
+    public void exportPageMgtMemberOrder(@RequestBody MgtMemberOrderPageDto mgtMemberOrderPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtMemberOrderPageDto.setUserId(userId);
+        Page<MgtMemberOrderPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtMemberOrderPageVo> mgtMemberOrderPageVoList = orderService.pageMgtMemberOrder(page,mgtMemberOrderPageDto);
+        if(!mgtMemberOrderPageVoList.isEmpty()){
+            List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
+            String goodsString;
+            for(MgtMemberOrderPageVo entity : mgtMemberOrderPageVoList){
+                mgtOrderGoodsVoList = entity.getMgtOrderGoodsVoList();
+                goodsString = mgtOrderGoodsVoList.stream()
+                        .map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
+                        .collect(Collectors.joining(";"));
+                entity.setGoodsInfo(goodsString);
+            }
+        }
+        ExcelUtil<MgtMemberOrderPageVo> util = new ExcelUtil<MgtMemberOrderPageVo>(MgtMemberOrderPageVo.class);
+        util.exportExcel(response, mgtMemberOrderPageVoList, "用户订单列表");
+    }
+
     @RequestMapping(value = "/getMgtOrderTotal", method = RequestMethod.POST)
     @ApiOperation(value = "获取订单统计")
     public R<MgtOrderTotal> getMgtOrderTotal(@RequestBody MgtShopOrderPageDto mgtShopOrderPageDto) {
@@ -76,6 +103,19 @@
         return R.ok(page.setRecords(mgtActivityOrderPageVos));
     }
 
+    @RequestMapping(value = "/exportPageMgtActivityOrder", method = RequestMethod.POST)
+    @ApiOperation(value = "导出秒杀订单列表")
+    public void exportPageMgtActivityOrder(@RequestBody MgtShopOrderPageDto mgtShopOrderPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtShopOrderPageDto.setUserId(userId);
+        Page<MgtActivityOrderPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtActivityOrderPageVo> mgtActivityOrderPageVos = orderService.pageMgtActivityOrder(page,mgtShopOrderPageDto);
+        ExcelUtil<MgtActivityOrderPageVo> util = new ExcelUtil<MgtActivityOrderPageVo>(MgtActivityOrderPageVo.class);
+        util.exportExcel(response, mgtActivityOrderPageVos, "秒杀订单列表");
+    }
+
     @RequestMapping(value = "/pageMgtShopOrder", method = RequestMethod.POST)
     @ApiOperation(value = "平台获取门店订单列表")
     public R<Page<MgtShopOrderPageVo>> pageMgtShopOrder(@RequestBody MgtShopOrderPageDto mgtShopOrderPageDto) {
@@ -88,6 +128,29 @@
         return R.ok(page.setRecords(shopOrderPageVoList));
     }
 
+    @RequestMapping(value = "/exportPageMgtShopOrder", method = RequestMethod.POST)
+    @ApiOperation(value = "导出门店订单列表")
+    public void exportPageMgtShopOrder(@RequestBody MgtShopOrderPageDto mgtShopOrderPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtShopOrderPageDto.setUserId(userId);
+        Page<MgtShopOrderPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtShopOrderPageVo> shopOrderPageVoList = orderService.pageMgtShopOrder(page,mgtShopOrderPageDto);
+        if(!shopOrderPageVoList.isEmpty()){
+            List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
+            String goodsString;
+            for(MgtShopOrderPageVo entity : shopOrderPageVoList){
+                mgtOrderGoodsVoList = entity.getMgtOrderGoodsPageVoList();
+                goodsString = mgtOrderGoodsVoList.stream()
+                        .map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
+                        .collect(Collectors.joining(";"));
+                entity.setGoodsInfo(goodsString);
+            }
+        }
+        ExcelUtil<MgtShopOrderPageVo> util = new ExcelUtil<MgtShopOrderPageVo>(MgtShopOrderPageVo.class);
+        util.exportExcel(response, shopOrderPageVoList, "门店订单列表");
+    }
 
     @RequestMapping(value = "/getMgtOrderDetail", method = RequestMethod.POST)
     @ApiOperation(value = "获取订单详情")
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java
index ad3fe57..ebd4946 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtActivityOrderPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -17,58 +18,71 @@
 @Data
 public class MgtActivityOrderPageVo {
 
-    @ApiModelProperty("订单id")
-    private String orderId;
 
+    @Excel(name = "订单编号", width = 30)
     @ApiModelProperty("订单编号")
     private String orderNo;
 
+    @Excel(name = "秒杀活动", width = 30)
     @ApiModelProperty("秒杀活动")
     private String activityName;
 
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
+    @Excel(name = "用户昵称", width = 30)
     @ApiModelProperty(value = "用户昵称")
     private String nickName;
 
+    @Excel(name = "用户姓名", width = 30)
     @ApiModelProperty(value = "用户姓名")
     private String userName;
 
+    @Excel(name = "用户电话", width = 30)
     @ApiModelProperty(value = "用户电话")
     private String userMobile;
 
+    @Excel(name = "商品名称", width = 30)
     @ApiModelProperty("商品名称")
     private String goodsName;
 
+    @Excel(name = "秒杀价格", width = 30)
     @ApiModelProperty(value = "秒杀价格")
     private BigDecimal activityPrice;
 
+    @Excel(name = "购买数量", width = 30)
     @ApiModelProperty("购买数量")
     private Integer buyNum;
 
+    @Excel(name = "订单金额", width = 30)
     @ApiModelProperty("订单金额")
     private BigDecimal orderMoney;
 
+    @Excel(name = "应付金额", width = 30)
     @ApiModelProperty("应付金额")
     private BigDecimal receivableMoney;
 
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
+    @Excel(name = "订单实际支付金额", width = 30)
     @ApiModelProperty("订单实际支付金额")
     private BigDecimal payMoney;
 
+    @Excel(name = "订单未支付金额", width = 30)
     @ApiModelProperty("订单未支付金额")
     private BigDecimal unPaidMoney;
 
     @ApiModelProperty("核销店铺id")
     private Long shopId;
 
+    @Excel(name = "核销店铺", width = 30)
     @ApiModelProperty("核销店铺")
     private String shopName;
 
+    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("核销时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date verifyTime;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java
index 34d0e29..7bd4811 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberOrderPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -21,40 +22,53 @@
     @ApiModelProperty(value = "订单id")
     private String orderId;
 
+    @Excel(name = "订单编号", width = 30)
     @ApiModelProperty("订单编号")
     private String orderNo;
 
-    @ApiModelProperty("核销门店id")
-    private Long shopId;
-
+    @Excel(name = "核销门店", width = 30)
     @ApiModelProperty("核销门店")
     private String shopName;
 
+    @Excel(name = "商品信息", width = 30)
+    @ApiModelProperty("商品信息")
+    private String goodsInfo;
+
+    @Excel(name = "订单状态", width = 30)
     @ApiModelProperty(value = "订单状态0.已取消1.待支付2.待核销3.已完成")
     private String orderStatus;
 
+    @Excel(name = "订单总价", width = 30)
     @ApiModelProperty(value = "订单总价")
     private BigDecimal orderMoney;
 
+    @Excel(name = "优惠券抵扣", width = 30)
     @ApiModelProperty(value = "优惠券抵扣")
     private BigDecimal discountMoney;
 
+    @Excel(name = "应收金额", width = 30)
     @ApiModelProperty("应收金额")
     private BigDecimal receivableMoney;
 
+    @Excel(name = "订单实际支付金额", width = 30)
     @ApiModelProperty("订单实际支付金额")
     private BigDecimal payMoney;
 
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
-    @ApiModelProperty("订单来源")
-    private Integer orderFrom;
-
+    @Excel(name = "订单来源", width = 30)
     @ApiModelProperty("订单来源")
     private String orderFromDesc;
 
+    @ApiModelProperty("核销门店id")
+    private Long shopId;
+
+    @ApiModelProperty("订单来源")
+    private Integer orderFrom;
+
     @ApiModelProperty("订单商品列表")
     private List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberServiceRecordPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberServiceRecordPageVo.java
index f71b604..8a268ad 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberServiceRecordPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtMemberServiceRecordPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -17,27 +18,32 @@
 public class MgtMemberServiceRecordPageVo {
 
 
-
-
+    @Excel(name = "服务类型", width = 30)
     @ApiModelProperty("服务类型1.周期2.服务3.体验")
     private Integer serviceType;
 
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
+    @Excel(name = "服务商户id", width = 30)
     @ApiModelProperty("服务商户id")
     private Long shopId;
 
+    @Excel(name = "服务商户", width = 30)
     @ApiModelProperty("服务商户")
     private String shopName;
 
+    @Excel(name = "服务商品名称", width = 30)
     @ApiModelProperty("服务商品名称")
     private String consumerGoodsName;
 
+    @Excel(name = "服务次数", width = 30)
     @ApiModelProperty("服务次数")
     private Integer serviceNum;
 
+    @Excel(name = "剩余次数", width = 30)
     @ApiModelProperty("剩余次数")
     private Integer surpNum;
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopOrderPageVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopOrderPageVo.java
index e582986..3d4dd4f 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopOrderPageVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtShopOrderPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -21,49 +22,65 @@
     @ApiModelProperty("订单id")
     private String orderId;
 
+    @Excel(name = "订单编号", width = 30)
     @ApiModelProperty("订单编号")
     private String orderNo;
 
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
+    @Excel(name = "用户昵称", width = 30)
     @ApiModelProperty(value = "用户昵称")
     private String nickName;
 
+    @Excel(name = "用户姓名", width = 30)
     @ApiModelProperty(value = "用户姓名")
     private String userName;
 
     @ApiModelProperty("订单商品列表")
     private List<MgtOrderGoodsPageVo> mgtOrderGoodsPageVoList;
 
+    @Excel(name = "商品信息", width = 30)
+    @ApiModelProperty("商品信息")
+    private String goodsInfo;
+
+    @Excel(name = "订单金额", width = 30)
     @ApiModelProperty("订单金额")
     private BigDecimal orderMoney;
 
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
+    @Excel(name = "优惠金额", width = 30)
     @ApiModelProperty("优惠金额")
     private BigDecimal discountMoney;
 
+    @Excel(name = "应付金额", width = 30)
     @ApiModelProperty("应付金额")
     private BigDecimal receivableMoney;
 
+    @Excel(name = "订单实际支付金额", width = 30)
     @ApiModelProperty("订单实际支付金额")
     private BigDecimal payMoney;
 
+    @Excel(name = "订单未支付金额", width = 30)
     @ApiModelProperty("订单未支付金额")
     private BigDecimal unPaidMoney;
 
+    @Excel(name = "订单来源", width = 30)
     @ApiModelProperty("订单来源")
     private String orderFrom;
 
     @ApiModelProperty("核销店铺id")
     private Long shopId;
 
+    @Excel(name = "核销店铺", width = 30)
     @ApiModelProperty("核销店铺")
     private String shopName;
 
+    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty("核销时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date verifyTime;
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
index 39dbab2..53b9351 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.shop.domain.dto.*;
 import com.ruoyi.shop.domain.vo.*;
@@ -16,6 +17,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -60,6 +62,17 @@
         page.setCurrent(mgtShopPageDto.getPageNum());
         List<MgtShopPageVo> mgtShopPageVoList = shopService.pageMgtShop(page,mgtShopPageDto);
         return R.ok(page.setRecords(mgtShopPageVoList));
+    }
+
+    @RequestMapping(value = "/exportPageMgtShop", method = RequestMethod.POST)
+    @ApiOperation(value = "导出商户列表")
+    public void exportPageMgtShop(@RequestBody MgtShopPageDto mgtShopPageDto, HttpServletResponse response) {
+        Page<MgtShopPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtShopPageVo> mgtShopPageVoList = shopService.pageMgtShop(page,mgtShopPageDto);
+        ExcelUtil<MgtShopPageVo> util = new ExcelUtil<MgtShopPageVo>(MgtShopPageVo.class);
+        util.exportExcel(response, mgtShopPageVoList, "用户订单列表");
     }
 
     @RequestMapping(value = "/createMgtShop", method = RequestMethod.POST)
@@ -140,6 +153,19 @@
         return R.ok(page.setRecords(mgtShopSuggestPageVoList));
     }
 
+    @RequestMapping(value = "/exportPageMgtShopSuggest", method = RequestMethod.POST)
+    @ApiOperation(value = "导出商户建议列表")
+    public void exportPageMgtShopSuggest(@RequestBody MgtShopSuggestPageDto mgtShopSuggestPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtShopSuggestPageDto.setUserId(userId);
+        Page<MgtShopSuggestPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtShopSuggestPageVo> mgtShopSuggestPageVoList = shopSuggestService.pageMgtShopSuggest(page,mgtShopSuggestPageDto);
+        ExcelUtil<MgtShopSuggestPageVo> util = new ExcelUtil<MgtShopSuggestPageVo>(MgtShopSuggestPageVo.class);
+        util.exportExcel(response, mgtShopSuggestPageVoList, "商户建议列表");
+    }
+
     @RequestMapping(value = "/mgtReplayShopSuggest", method = RequestMethod.POST)
     @ApiOperation(value = "平台回复建议")
     public R mgtReplayShopSuggest(@RequestBody MgtReplayShopSuggestDto mgtReplayShopSuggestDto) {
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java
index 08da17f..d156e0d 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopPageVo.java
@@ -1,5 +1,6 @@
 package com.ruoyi.shop.domain.vo;
 
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -18,54 +19,71 @@
     @ApiModelProperty(value = "商户id")
     private Long shopId;
 
+    @Excel(name = "签约时间", width = 30)
     @ApiModelProperty("签约时间")
     private String signTime;
 
+    @Excel(name = "商户名称", width = 30)
     @ApiModelProperty("商户名称")
     private String shopName;
 
+    @Excel(name = "商户编号", width = 30)
     @ApiModelProperty("商户编号")
     private String shopNumber;
 
+    @Excel(name = "商户标签", width = 30)
     @ApiModelProperty("商户标签")
     private String shopTags;
 
+    @Excel(name = "签约人", width = 30)
     @ApiModelProperty("签约人")
     private String signUser;
 
+    @Excel(name = "首提金额", width = 30)
     @ApiModelProperty("首提金额")
     private BigDecimal firstWithdraw;
 
+    @Excel(name = "关联员工", width = 30)
     @ApiModelProperty("关联员工")
-    private BigDecimal belongUser;
+    private String belongUser;
 
+    @Excel(name = "关联部门", width = 30)
     @ApiModelProperty("关联部门")
-    private BigDecimal belongDept;
+    private String belongDept;
 
+    @Excel(name = "来源渠道", width = 30)
     @ApiModelProperty("来源渠道")
     private String shopSource;
 
+    @Excel(name = "签约区域", width = 30)
     @ApiModelProperty("签约区域")
     private String signAreaName;
 
+    @Excel(name = "合作期限", width = 30)
     @ApiModelProperty("合作期限")
     private String cooperationTime;
 
+    @Excel(name = "店铺地址", width = 30)
     @ApiModelProperty("店铺地址")
     private String shopAddress;
 
+    @Excel(name = "店主姓名", width = 30)
     @ApiModelProperty("店主姓名")
     private String shopownerName;
 
+    @Excel(name = "店主联系方式", width = 30)
     @ApiModelProperty("店主联系方式")
     private String shopownerPhone;
 
+    @Excel(name = "商户状态", width = 30)
     @ApiModelProperty("商户状态-1删除0冻结1正常2终止合作")
     private String shopStatus;
 
+    @Excel(name = "商户活动次数", width = 30)
     @ApiModelProperty("商户活动次数")
     private Integer shopActivityCount;
 
+    @Excel(name = "店铺设置状态", width = 30)
     @ApiModelProperty("店铺设置状态")
     private String shopCustomStatus;
 }
diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java
index 9f0c0b3..139333f 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java
+++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/vo/MgtShopSuggestPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.shop.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -19,41 +20,53 @@
     @ApiModelProperty(value = "建议id")
     private Long suggestId;
 
+    @Excel(name = "店铺名称", width = 30)
     @ApiModelProperty(value = "店铺名称")
     private String shopName;
 
+    @Excel(name = "商户类型", width = 30)
     @ApiModelProperty(value = "商户类型1.经销商2.代理商")
     private String shopType;
 
+    @Excel(name = "店主姓名", width = 30)
     @ApiModelProperty("店主姓名")
     private String shopownerName;
 
+    @Excel(name = "店主联系方式", width = 30)
     @ApiModelProperty("店主联系方式")
     private String shopownerPhone;
 
+    @Excel(name = "建议内容", width = 30)
     @ApiModelProperty(value = "建议内容")
     private String suggestContent;
 
+    @Excel(name = "回复内容", width = 30)
     @ApiModelProperty(value = "回复内容")
     private String replayContent;
 
+    @Excel(name = "建议状态", width = 30)
     @ApiModelProperty(value = "建议状态")
     private String suggestStatus;
 
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
 
+    @Excel(name = "回复人姓名", width = 30)
     @ApiModelProperty(value = "回复人姓名")
     private String replayUserName;
 
+    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "回复时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date replayTime;
 
+    @Excel(name = "平台响应时间", width = 30)
     @ApiModelProperty(value = "平台响应时间")
     private String responseTime;
 
+    @Excel(name = "建议标签", width = 30)
     @ApiModelProperty(value = "建议标签")
     private String suggestTags;
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
index 29aba74..84f82cb 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtConfigController.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
 import com.ruoyi.system.api.domain.dto.MgtPageDto;
@@ -11,13 +13,15 @@
 import com.ruoyi.system.service.config.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
+
+import static com.ruoyi.common.core.web.domain.AjaxResult.success;
 
 /**
  * @ClassName MgtConfigController
@@ -316,6 +320,19 @@
         return R.ok(page.setRecords(mgtOperLogPageVoList));
     }
 
+    @RequestMapping(value = "/exportPageOperLog", method = RequestMethod.POST)
+    @ApiOperation(value = "导出操作日志")
+    public void exportPageOperLog(@RequestBody MgtOperLogPageDto mgtOperLogPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtOperLogPageDto.setUserId(userId);
+        Page<MgtOperLogPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtOperLogPageVo> mgtOperLogPageVoList = customConfigService.pageOperLog(page, mgtOperLogPageDto);
+        ExcelUtil<MgtOperLogPageVo> util = new ExcelUtil<MgtOperLogPageVo>(MgtOperLogPageVo.class);
+        util.exportExcel(response, mgtOperLogPageVoList, "操作日志");
+    }
+
     @RequestMapping(value = "/pageTag", method = RequestMethod.POST)
     @ApiOperation(value = "分页获取标签列表")
     public R<Page<MgtTagPageVo>> pageTag(@RequestBody MgtTagPageDto mgtTagPageDto) {
@@ -328,6 +345,23 @@
         return R.ok(page.setRecords(mgtTagPageVoList));
     }
 
+    @PostMapping("/importData")
+    public AjaxResult importData(MultipartFile file, Integer tagType) throws Exception
+    {
+        ExcelUtil<MgtTagImportDto> util = new ExcelUtil<MgtTagImportDto>(MgtTagImportDto.class);
+        List<MgtTagImportDto> tagList = util.importExcel(file.getInputStream());
+        String operName = SecurityUtils.getUsername();
+        String message = sysTagService.importTag(tagList, tagType, operName);
+        return success(message);
+    }
+
+    @PostMapping("/importTemplate")
+    public void importTemplate(HttpServletResponse response) throws IOException
+    {
+        ExcelUtil<MgtTagImportDto> util = new ExcelUtil<MgtTagImportDto>(MgtTagImportDto.class);
+        util.importTemplateExcel(response, "标签导入模板");
+    }
+
     @RequestMapping(value = "/editTag", method = RequestMethod.POST)
     @ApiOperation(value = "修改标签")
     public R editTag(@RequestBody MgtTagEditDto mgtTagEditDto) {
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
index f121387..6a32e70 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/management/MgtStaffController.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.system.api.domain.dto.MgtBaseGetDto;
 import com.ruoyi.system.domain.dto.MgtReplayStaffSuggestDto;
@@ -21,6 +22,7 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -67,8 +69,21 @@
         Page<MgtStaffSuggestPageVo> page = new Page<>();
         page.setSize(mgtStaffSuggestPageDto.getPageSize());
         page.setCurrent(mgtStaffSuggestPageDto.getPageNum());
-        List<MgtStaffSuggestPageVo> mgtShopSuggestPageVoList = staffSuggestService.pageMgtStaffSuggest(page,mgtStaffSuggestPageDto);
-        return R.ok(page.setRecords(mgtShopSuggestPageVoList));
+        List<MgtStaffSuggestPageVo> staffSuggestPageVoList = staffSuggestService.pageMgtStaffSuggest(page,mgtStaffSuggestPageDto);
+        return R.ok(page.setRecords(staffSuggestPageVoList));
+    }
+
+    @RequestMapping(value = "/exportPageMgtStaffSuggest", method = RequestMethod.POST)
+    @ApiOperation(value = "导出员工建议列表")
+    public void exportPageMgtStaffSuggest(@RequestBody MgtStaffSuggestPageDto mgtStaffSuggestPageDto, HttpServletResponse response) {
+        Long userId = SecurityUtils.getUserId();
+        mgtStaffSuggestPageDto.setUserId(userId);
+        Page<MgtStaffSuggestPageVo> page = new Page<>();
+        page.setSize(2000);
+        page.setCurrent(1);
+        List<MgtStaffSuggestPageVo> staffSuggestPageVoList = staffSuggestService.pageMgtStaffSuggest(page,mgtStaffSuggestPageDto);
+        ExcelUtil<MgtStaffSuggestPageVo> util = new ExcelUtil<MgtStaffSuggestPageVo>(MgtStaffSuggestPageVo.class);
+        util.exportExcel(response, staffSuggestPageVoList, "员工建议列表");
     }
 
     @RequestMapping(value = "/mgtReplayStaffSuggest", method = RequestMethod.POST)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagImportDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagImportDto.java
new file mode 100644
index 0000000..c93513a
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtTagImportDto.java
@@ -0,0 +1,20 @@
+package com.ruoyi.system.domain.dto;
+
+import com.ruoyi.common.core.annotation.Excel;
+import lombok.Data;
+
+/**
+ * @author jqs34
+ * @version 1.0
+ * @classname TagImportDto
+ * @description: TODO
+ * @date 2023 2023/6/24 17:29
+ */
+@Data
+public class MgtTagImportDto {
+
+    @Excel(name = "标签名称")
+    private String tagName;
+
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOperLogPageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOperLogPageVo.java
index 6a65dc9..13454d3 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOperLogPageVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtOperLogPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -16,22 +17,21 @@
 @Data
 public class MgtOperLogPageVo {
 
+    @Excel(name = "操作内容", width = 30)
     @ApiModelProperty(value = "操作内容")
     private String operContent;
-
+    @Excel(name = "操作类型", width = 30)
     @ApiModelProperty(value = "操作类型")
     private String operTitle;
-
+    @Excel(name = "操作IP", width = 30)
     @ApiModelProperty(value = "操作IP")
     private String operIp;
-
+    @Excel(name = "操作人员", width = 30)
     @ApiModelProperty(value = "操作人员")
     private String operName;
-
+    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "操作时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date operTime;
-
-
 
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java
index ff5649f..3969d41 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MgtStaffSuggestPageVo.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.domain.vo;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -18,36 +19,36 @@
 
     @ApiModelProperty(value = "建议id")
     private Long suggestId;
-
+    @Excel(name = "员工姓名", width = 30)
     @ApiModelProperty(value = "员工姓名")
     private String staffName;
-
+    @Excel(name = "部门名称", width = 30)
     @ApiModelProperty(value = "部门名称")
     private String deptName;
-
+    @Excel(name = "手机号", width = 30)
     @ApiModelProperty("手机号")
     private String mobile;
-
+    @Excel(name = "建议内容", width = 30)
     @ApiModelProperty(value = "建议内容")
     private String suggestContent;
-
+    @Excel(name = "回复内容", width = 30)
     @ApiModelProperty(value = "回复内容")
     private String replayContent;
-
+    @Excel(name = "建议状态", width = 30)
     @ApiModelProperty(value = "建议状态")
     private String suggestStatus;
-
+    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date createTime;
-
+    @Excel(name = "回复人姓名", width = 30)
     @ApiModelProperty(value = "回复人姓名")
     private String replayUserName;
-
+    @Excel(name = "回复时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "回复时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date replayTime;
-
+    @Excel(name = "平台响应时间", width = 30)
     @ApiModelProperty(value = "平台响应时间")
     private String responseTime;
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/SysTagService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/SysTagService.java
index fde3f29..ef6d68e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/SysTagService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/config/SysTagService.java
@@ -3,7 +3,9 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.system.api.domain.poji.config.SysTag;
+import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import com.ruoyi.system.domain.dto.MgtTagEditDto;
+import com.ruoyi.system.domain.dto.MgtTagImportDto;
 import com.ruoyi.system.domain.dto.MgtTagPageDto;
 import com.ruoyi.system.domain.vo.MgtTagPageVo;
 
@@ -61,4 +63,15 @@
      * @return  void
      */
     void deleteTag(Long tagId);
+
+    /**
+    * @description importTag
+    * @param tagList
+    * @param tagType
+    * @param operName
+    * @return String
+    * @author jqs34
+    * @date 2023/6/24 17:32
+    */
+    public String importTag(List<MgtTagImportDto> tagList, Integer tagType, String operName);
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysTagServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysTagServiceImpl.java
index 9ce739b..625df59 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysTagServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/config/SysTagServiceImpl.java
@@ -5,12 +5,14 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.system.api.constant.AppErrorConstant;
 import com.ruoyi.system.api.domain.poji.config.SysTag;
 import com.ruoyi.system.api.service.RemoteGoodsService;
 import com.ruoyi.system.api.service.RemoteMemberService;
 import com.ruoyi.system.api.service.RemoteShopService;
 import com.ruoyi.system.domain.dto.MgtTagEditDto;
+import com.ruoyi.system.domain.dto.MgtTagImportDto;
 import com.ruoyi.system.domain.dto.MgtTagPageDto;
 import com.ruoyi.system.domain.vo.MgtTagPageVo;
 import com.ruoyi.system.mapper.config.SysTagMapper;
@@ -166,4 +168,67 @@
                 break;
         }
     }
+
+    /**
+     * @description importTag
+     * @param tagList
+     * @param tagType
+     * @param operName
+     * @return String
+     * @author jqs34
+     * @date 2023/6/24 17:32
+     */
+    public String importTag(List<MgtTagImportDto> tagList, Integer tagType, String operName) {
+        if (StringUtils.isNull(tagList) || tagList.size() == 0) {
+            throw new ServiceException("导入标签数据不能为空!");
+        }
+        int successNum = 0;
+        int failureNum = 0;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder failureMsg = new StringBuilder();
+        String tagName;
+        LambdaQueryWrapper<SysTag> queryWrapper;
+        SysTag sysTagSame;
+        SysTag sysTagNew;
+        Date nowTime = new Date();
+        for (MgtTagImportDto entity : tagList) {
+            try {
+                tagName = entity.getTagName();
+                sysTagSame = null;
+                // 验证是否存在这个用户
+                queryWrapper = new LambdaQueryWrapper<>();
+                queryWrapper.eq(SysTag::getDelFlag, 0) // 查询条件:delFlag=0
+                        .eq(SysTag::getTagType, tagType) // 查询条件:tagType=mgtTagEditDto的tagType属性
+                        .eq(SysTag::getTagName, tagName); // 查询条件:tagName=mgtTagEditDto的tagName属性
+                // 执行查询,获取与查询条件匹配的SysTag对象
+                sysTagSame = this.getOne(queryWrapper);
+                if (sysTagSame == null) {
+                    sysTagNew = new SysTag();
+                    sysTagNew.setDelFlag(0);
+                    sysTagNew.setTagType(tagType);
+                    sysTagNew.setTagName(tagName);
+                    sysTagNew.setCreateTime(nowTime);
+                    sysTagNew.setSynFlag(0);
+                    this.save(sysTagNew);
+                    successNum++;
+                    successMsg.append("<br/>" + successNum + "、标签 " + sysTagNew.getTagName() + " 导入成功");
+                } else {
+                    failureNum++;
+                    failureMsg.append("<br/>" + failureNum + "、标签 " + sysTagSame.getTagName() + " 已存在");
+                }
+            } catch (Exception e) {
+                failureNum++;
+                String msg = "<br/>" + failureNum + "、标签 " + entity.getTagName() + " 导入失败:";
+                failureMsg.append(msg + e.getMessage());
+                log.error(msg, e);
+            }
+        }
+        if (failureNum > 0) {
+            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+            throw new ServiceException(failureMsg.toString());
+        } else {
+            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+        }
+        return successMsg.toString();
+    }
 }

--
Gitblit v1.7.1