From 3d2b51ea4520533de5e78f88dddf5b5c7dce4247 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 06 六月 2024 15:56:18 +0800
Subject: [PATCH] 管理后台添加营销员导入功能

---
 meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserServiceImpl.java |  193 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 192 insertions(+), 1 deletions(-)

diff --git a/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserServiceImpl.java b/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserServiceImpl.java
index b1ec92d..ed49865 100644
--- a/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserServiceImpl.java
+++ b/meiya-admin/src/main/java/com/sinata/modular/member/service/impl/MemUserServiceImpl.java
@@ -1,17 +1,38 @@
 package com.sinata.modular.member.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
+import com.sinata.common.enums.EnumMemberGrade;
 import com.sinata.common.enums.EnumUserBankDetailDoneType;
 import com.sinata.common.enums.EnumUserBankDetailType;
 import com.sinata.core.shiro.ShiroKit;
+import com.sinata.core.util.Convert;
+import com.sinata.core.util.ExcelExportUtil;
+import com.sinata.core.util.MD5Util;
+import com.sinata.core.util.SqlUtil;
+import com.sinata.core.util.ToolUtil;
+import com.sinata.core.util.huawei.obs.ObsUploadUtil;
+import com.sinata.core.util.juhe.TelecomUtil;
 import com.sinata.modular.member.dao.MemUserMapper;
 import com.sinata.modular.member.model.MemUser;
 import com.sinata.modular.member.model.MemUserBankDetail;
+import com.sinata.modular.member.model.MemUserRelation;
 import com.sinata.modular.member.service.IMemUserBankDetailService;
+import com.sinata.modular.member.service.IMemUserRelationService;
 import com.sinata.modular.member.service.IMemUserService;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.concurrent.atomic.AtomicInteger;
+import javax.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -32,11 +53,15 @@
  * @since 2023-03-23
  */
 @Service
+@Slf4j
 public class MemUserServiceImpl extends ServiceImpl<MemUserMapper, MemUser> implements IMemUserService {
 
     @Resource
     private IMemUserBankDetailService memoryUserBankDetailService;
-
+    @Resource
+    private IMemUserRelationService memUserRelationService;
+    @Resource
+    private TelecomUtil telecomUtil;
     @Override
     public List<Map<String, Object>> getMapList(Wrapper wrapper) {
         boolean admin = ShiroKit.isAdmin();
@@ -149,5 +174,171 @@
             }
         }
     }
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String importSalesUser(List<Map<String, String>> mapList, HttpServletResponse response) {
+        // 表格数据【封装】
+        List<List<Object>> dataList = new ArrayList<>();
+        // 头部列【封装】
+        List<Object> shellList = new ArrayList<>();
+        shellList.add("姓名");
+        shellList.add("手机号");
+        shellList.add("性别");
+        shellList.add("生日");
+        shellList.add("证件类型 0身份证 1护照");
+        shellList.add("身份证号");
+        shellList.add("银行名称");
+        shellList.add("银行卡号");
+        shellList.add("推荐人手机号");
+        shellList.add("职级 3黄金营销员 4城市合伙人 5市场总监");
+        shellList.add("备注");
+        dataList.add(shellList);
+        List<String> cardTypeList = Lists.newArrayList("0", "1");
+        List<String> gradeIdList = Lists.newArrayList("3", "4", "5");
+        List<String> sexList = Lists.newArrayList("男", "女");
+        for (Map<String, String> stringStringMap : mapList) {
+                MemUser memUser = new MemUser();
+            String realName = stringStringMap.get("姓名");
+            String sex = stringStringMap.get("性别");
+            String birthday = stringStringMap.get("生日 例:2024-06-06");
+            String idCard = stringStringMap.get("身份证号");
+            String cardType = stringStringMap.get("证件类型 0身份证 1护照");
+            String inviteUserPhone = stringStringMap.get("推荐人手机号");
+            String phone = stringStringMap.get("手机号");
+            String bankName = stringStringMap.get("银行名称");
+            String bankNumber = stringStringMap.get("银行卡号");
+            String memberGradeId = stringStringMap.get("职级 3黄金营销员 4城市合伙人 5市场总监");
 
+            List<Object> list = new ArrayList<>();
+            list.add(realName);
+            list.add(phone);
+            list.add(sex);
+            list.add(birthday);
+            list.add(cardType);
+            list.add(idCard);
+            list.add(bankName);
+            list.add(bankNumber);
+            list.add(inviteUserPhone);
+            list.add(memberGradeId);
+            if (ToolUtil.isAllEmpty(realName, phone, sex,birthday,idCard, cardType, inviteUserPhone, bankName, bankNumber)) {
+                continue;
+            }
+            //判断导入的生日格式是否正确2024-06-06
+            if (ToolUtil.isNotEmpty(birthday)) {
+                try {
+                    DateUtil.parse(birthday, "yyyy-MM-dd");
+                } catch (Exception e) {
+                    list.add("生日格式错误");
+                    dataList.add(list);
+                    continue;
+                }
+            }
+            if (!gradeIdList.contains(memberGradeId)) {
+                list.add("职级填写错误");
+                dataList.add(list);
+                continue;
+            }
+            if (!sexList.contains(sex)) {
+                list.add("性别填写错误");
+                dataList.add(list);
+                continue;
+            }
+            if (ToolUtil.isOneEmpty(realName, phone, sex,birthday,idCard, cardType, inviteUserPhone, bankName, bankNumber)) {
+                list.add("信息填写不完整");
+                dataList.add(list);
+                continue;
+            }
+            memUser.setRealName(realName);
+            memUser.setPhone(phone);
+            memUser.setSex(sex);
+            memUser.setBirthday(birthday);
+            memUser.setCardType(cardTypeList.contains(cardType) ? cardType : "0");
+            memUser.setIdCard(idCard);
+            memUser.setBankName(bankName);
+            memUser.setBankNumber(bankNumber);
+            memUser.setNickName("用户" + ToolUtil.getRandomString(4));
+            memUser.setPassword(MD5Util.encrypt(phone));
+            memUser.setMemberGradeId(Integer.valueOf(memberGradeId));
+            memUser.setMemberGradeTime(new Date());
+            memUser.setShowId("0");
+            memUser.setIsLeaveOffice(0);
+            memUser.setAuditTime(new Date());
+            memUser.setAuditState(1);
+            memUser.setCreateTime(new Date());
+            memUser.setCreditScore(BigDecimal.valueOf(100L));
+            // 获取最新工号
+            Object showId = this.selectObj(
+                    new EntityWrapper<MemUser>()
+                            .setSqlSelect("MAX(CAST(show_id AS UNSIGNED)) AS max_show_id")
+                            .ne("show_id", "0")
+            );
+            if (showId == null) {
+                showId = "1000" + "100000";
+            }
+            String showIdStr = String.valueOf(Convert.toInt(showId) + 1);
+            memUser.setShowId(showIdStr);
+            EntityWrapper<MemUser> wrapper = new EntityWrapper<>();
+            wrapper.eq("phone", memUser.getPhone());
+            if (this.selectOne(wrapper) != null) {
+                list.add("该手机号已被注册");
+                dataList.add(list);
+                continue;
+            }
+            EntityWrapper<MemUser> wrapper2 = new EntityWrapper<>();
+            wrapper2.eq("phone", inviteUserPhone);
+            MemUser inviteUser = this.selectOne(wrapper2);
+            if (inviteUser == null) {
+                list.add("邀请人不存在");
+                dataList.add(list);
+                continue;
+            } else {
+                if (inviteUser.getMemberGradeId() < EnumMemberGrade.G_3.index) {
+                    list.add("邀请人等级不足");
+                    dataList.add(list);
+                    continue;
+                }
+            }
+            boolean verify = telecomUtil.verify(memUser.getRealName(), memUser.getIdCard(),
+                    memUser.getPhone());
+            if (!verify) {
+                list.add("实名认证失败");
+                dataList.add(list);
+                continue;
+            }
+            String agentCountyCode = inviteUser.getAgentCountyCode();
+            String agentCityCode = inviteUser.getAgentCityCode();
+            String agentProvinceCode = inviteUser.getAgentProvinceCode();
+            memUser.setAgentProvinceCode(agentProvinceCode);
+            memUser.setAgentCityCode(agentCityCode);
+            memUser.setAgentCountyCode(agentCountyCode);
+            memUser.setCityCode(agentCityCode);
+            this.insert(memUser);
+            MemUserRelation shareUserRelation = memUserRelationService.selectById(inviteUser.getId());
+            //添加关系
+            MemUserRelation build = MemUserRelation.builder()
+                    .id(memUser.getId())
+                    .parentId(shareUserRelation.getId())
+                    .relationPath(
+                            shareUserRelation.getRelationPath() + "/" + memUser.getId())
+                    .build();
+            memUserRelationService.insertOrUpdate(build);
+        }
+
+        if (dataList.size() > 1) {
+            try {
+                InputStream inputStream = ExcelExportUtil.easySheet2(
+                        URLEncoder.encode("导入失败数据", "UTF-8"), "sheet1", dataList, response);
+                if (inputStream != null) {
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+                    String fileName = "导入失败数据" + "-"+sdf.format(new Date())+".xls";
+                    String url = ObsUploadUtil.obsUploadInputStream(inputStream, "excel", fileName);
+                    log.info("导入失败数据:{}", url);
+                    return url;
+                }
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+        return null;
+    }
 }

--
Gitblit v1.7.1