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