From 9bc60c39ec05aa8f88b0273c974a7442fb4d07d4 Mon Sep 17 00:00:00 2001
From: Hentua <wangdoubleone@gmail.com>
Date: Tue, 20 Jun 2023 22:12:03 +0800
Subject: [PATCH] 会员列表导出

---
 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java                       |   18 +++++++-
 src/main/java/cc/mrbird/febs/mall/excel/LevelConverter.java                    |   30 +++++++++++++++
 src/main/java/cc/mrbird/febs/mall/excel/SexConverter.java                      |   24 ++++++++++++
 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java    |   15 +++++++
 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html |    9 ++++
 5 files changed, 93 insertions(+), 3 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
index 6aeac21..f343339 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java
@@ -15,6 +15,7 @@
 import cc.mrbird.febs.system.entity.Dept;
 import com.alibaba.excel.EasyExcel;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.annotations.Param;
@@ -507,4 +508,18 @@
         EasyExcel.write(response.getOutputStream(),AdminMoneyFlowListVo.class).sheet("资金明细表").doWrite(list);
     }
 
+    @GetMapping("exportMemberList")
+    public void exportMemberList(MallMember mallMember, HttpServletResponse response) throws IOException {
+        QueryRequest request = new QueryRequest();
+        request.setPageNum(1);
+        request.setPageSize(999999999);
+        List<MallMember> list = mallMemberService.getMallMemberList(mallMember, request).getRecords();
+
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setCharacterEncoding("utf-8");
+        String fileName= URLEncoder.encode("会员列表","UTF-8").replaceAll("\\+","%20");
+        response.setHeader("Content-disposition","attachment;filename*=utf-8''"+fileName+".xlsx");
+        EasyExcel.write(response.getOutputStream(),MallMember.class).sheet("会员列表").doWrite(list);
+    }
+
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
index 8425235..e358523 100644
--- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
+++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java
@@ -4,6 +4,10 @@
 import cc.mrbird.febs.common.entity.BaseEntity;
 import cc.mrbird.febs.common.entity.BaseEntity;
 import cc.mrbird.febs.common.enumerates.MemberLevelTagDicEnums;
+import cc.mrbird.febs.mall.excel.LevelConverter;
+import cc.mrbird.febs.mall.excel.SexConverter;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -15,17 +19,20 @@
  * @date 2021-09-16
  **/
 @Data
+@ExcelIgnoreUnannotated
 @TableName("mall_member")
 public class MallMember extends BaseEntity {
 
     /**
      * 姓名
      */
+    @ExcelProperty(value = "姓名")
     private String name;
 
     /**
      * 手机号
      */
+    @ExcelProperty(value = "手机号")
     private String phone;
 
     /**
@@ -51,17 +58,24 @@
     /**
      * 性别
      */
+    @ExcelProperty(value = "性别", converter = SexConverter.class)
     private Integer sex;
 
     /**
      * 邀请码
      */
+    @ExcelProperty(value = "邀请码")
     private String inviteId;
 
     /**
      * 父级邀请码
      */
+    @ExcelProperty(value = "父级邀请码")
     private String referrerId;
+
+    @ExcelProperty(value = "父级名称")
+    @TableField(exist = false)
+    private String referrerName;
 
     /**
      * 邀请码链
@@ -71,6 +85,7 @@
     /**
      * 代理级别
      */
+    @ExcelProperty(value = "会员级别", converter = LevelConverter.class)
     private String level;
 
     /**
@@ -103,9 +118,6 @@
     private String account;
 
     private String bindPhone;
-
-    @TableField(exist = false)
-    private String referrerName;
 
     @TableField(exist = false)
     private BigDecimal balance;
diff --git a/src/main/java/cc/mrbird/febs/mall/excel/LevelConverter.java b/src/main/java/cc/mrbird/febs/mall/excel/LevelConverter.java
new file mode 100644
index 0000000..44ce0b7
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/excel/LevelConverter.java
@@ -0,0 +1,30 @@
+package cc.mrbird.febs.mall.excel;
+
+import cc.mrbird.febs.common.enumerates.MemberLevelTagDicEnums;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+
+public class LevelConverter implements Converter<String> {
+
+    @Override
+    public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        Set<String> list = new HashSet<>();
+        for (MemberLevelTagDicEnums type : MemberLevelTagDicEnums.values()) {
+            if (type.getCode().equals(value)) {
+                list.add(type.getDesc());
+            }
+        }
+
+        return new WriteCellData<>(CollUtil.join(list, "/"));
+    }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/excel/SexConverter.java b/src/main/java/cc/mrbird/febs/mall/excel/SexConverter.java
new file mode 100644
index 0000000..b330ccf
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/excel/SexConverter.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs.mall.excel;
+
+import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.converters.WriteConverterContext;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+public class SexConverter implements Converter<Integer> {
+
+    @Override
+    public WriteCellData<?> convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+
+        if (value == 1) {
+            return new WriteCellData<>("男");
+        }
+
+        if (value == 2) {
+            return new WriteCellData<>("女");
+        }
+        return null;
+    }
+}
diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
index 4ef47be..1118bb2 100644
--- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
+++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html
@@ -53,6 +53,9 @@
                                 <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
                                     <i class="layui-icon">&#xe79b;</i>
                                 </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="exportExcel">
+                                    导出
+                                </div>
                             </div>
                         </div>
                     </form>
@@ -121,6 +124,7 @@
             $query = $view.find('#query'),
             $reset = $view.find('#reset'),
             $searchForm = $view.find('form'),
+            $exportExcel = $view.find('#exportExcel'),
             sortObject = {field: 'phone', type: null},
             tableIns;
 
@@ -496,5 +500,10 @@
                 changeIdentityNo(4, data.value);
             }
         })
+
+
+        $exportExcel.on('click', function() {
+            febs.download(ctx + 'admin/mallMember/exportMemberList', getQueryParams(), '会员列表.xlsx');
+        });
     })
 </script>
\ No newline at end of file

--
Gitblit v1.9.1