|
|
@@ -1,12 +1,17 @@ |
|
|
package com.iformall.service.impl; |
|
|
package com.iformall.service.impl; |
|
|
|
|
|
|
|
|
import cn.afterturn.easypoi.excel.ExcelImportUtil; |
|
|
import cn.afterturn.easypoi.excel.ExcelImportUtil; |
|
|
|
|
|
import cn.afterturn.easypoi.excel.annotation.Excel; |
|
|
import cn.afterturn.easypoi.excel.entity.ImportParams; |
|
|
import cn.afterturn.easypoi.excel.entity.ImportParams; |
|
|
|
|
|
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult; |
|
|
|
|
|
import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult; |
|
|
|
|
|
import cn.afterturn.easypoi.handler.impl.ExcelDataHandlerDefaultImpl; |
|
|
|
|
|
import cn.afterturn.easypoi.handler.inter.IExcelDataHandler; |
|
|
|
|
|
import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
import com.alibaba.fastjson.JSONObject; |
|
|
import com.github.pagehelper.PageHelper; |
|
|
import com.github.pagehelper.PageHelper; |
|
|
import com.github.pagehelper.PageInfo; |
|
|
import com.github.pagehelper.PageInfo; |
|
|
import com.iformall.common.ErrorCode; |
|
|
|
|
|
import com.iformall.common.IdWorker; |
|
|
import com.iformall.common.IdWorker; |
|
|
import com.iformall.common.Result; |
|
|
import com.iformall.common.Result; |
|
|
import com.iformall.common.ResultData; |
|
|
import com.iformall.common.ResultData; |
|
|
@@ -15,9 +20,9 @@ import com.iformall.domain.po.WxCUser; |
|
|
import com.iformall.domain.po.WxCUserBasicInfo; |
|
|
import com.iformall.domain.po.WxCUserBasicInfo; |
|
|
import com.iformall.domain.po.WxCUserTags; |
|
|
import com.iformall.domain.po.WxCUserTags; |
|
|
import com.iformall.domain.po.WxTags; |
|
|
import com.iformall.domain.po.WxTags; |
|
|
|
|
|
import com.iformall.domain.vo.CUserBaseInfoT; |
|
|
import com.iformall.domain.vo.CUserBaseVo; |
|
|
import com.iformall.domain.vo.CUserBaseVo; |
|
|
import com.iformall.domain.vo.CUserTagVo; |
|
|
import com.iformall.domain.vo.CUserTagVo; |
|
|
import com.iformall.exception.MallinkException; |
|
|
|
|
|
import com.iformall.mapper.WxCUserBasicInfoMapper; |
|
|
import com.iformall.mapper.WxCUserBasicInfoMapper; |
|
|
import com.iformall.mapper.WxCUserMapper; |
|
|
import com.iformall.mapper.WxCUserMapper; |
|
|
import com.iformall.mapper.WxCUserTagsMapper; |
|
|
import com.iformall.mapper.WxCUserTagsMapper; |
|
|
@@ -35,14 +40,14 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
|
|
|
|
import javax.persistence.Transient; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
|
|
import javax.validation.constraints.NotNull; |
|
|
import java.io.*; |
|
|
import java.io.*; |
|
|
|
|
|
import java.text.ParseException; |
|
|
import java.text.SimpleDateFormat; |
|
|
import java.text.SimpleDateFormat; |
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.Date; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.UUID; |
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
|
|
|
|
|
@Service |
|
|
@Service |
|
|
public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
@@ -391,18 +396,92 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private class UserExcelHandler extends ExcelDataHandlerDefaultImpl<CUserBaseInfoT> { |
|
|
|
|
|
@Override |
|
|
|
|
|
public Object importHandler(CUserBaseInfoT obj, String name, Object value) { |
|
|
|
|
|
if (value == null) { |
|
|
|
|
|
value = ""; |
|
|
|
|
|
} |
|
|
|
|
|
System.out.println(name + " + " + value.toString()); |
|
|
|
|
|
return super.importHandler(obj, name, value); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
private class UserVerifyHandler implements IExcelVerifyHandler<CUserBaseInfoT> { |
|
|
|
|
|
@Override |
|
|
|
|
|
public ExcelVerifyHandlerResult verifyHandler(CUserBaseInfoT cUserBaseInfoT) { |
|
|
|
|
|
if (StringUtils.isBlank(cUserBaseInfoT.getPhone())) { |
|
|
|
|
|
return new ExcelVerifyHandlerResult(cUserBaseInfoT); |
|
|
|
|
|
} |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private WxCUserBasicInfo InitUserBaseInfo(CUserBaseInfoT uBase, String tenantId) { |
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
|
|
|
|
|
|
|
|
WxCUserBasicInfo userBase = new WxCUserBasicInfo(); |
|
|
|
|
|
userBase.setTenantId(tenantId); |
|
|
|
|
|
userBase.setName(uBase.getName()); |
|
|
|
|
|
userBase.setSex(uBase.getSex()); |
|
|
|
|
|
if (StringUtils.isBlank(uBase.getPhone())) { |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
userBase.setPhone(uBase.getPhone()); |
|
|
|
|
|
userBase.setNickName(uBase.getNickName()); |
|
|
|
|
|
userBase.setEducation(uBase.getEducation()); |
|
|
|
|
|
try { |
|
|
|
|
|
userBase.setBirthdate(sdf.parse(uBase.getBirthdate())); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
logger.error("生日: " + e.getMessage()); |
|
|
|
|
|
} |
|
|
|
|
|
userBase.setAddress(uBase.getAddress()); |
|
|
|
|
|
try { |
|
|
|
|
|
userBase.setUpdateDate(sdf.parse(uBase.getUpdateDate())); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
logger.error("上次活跃时间: " + e.getMessage()); |
|
|
|
|
|
} |
|
|
|
|
|
try { |
|
|
|
|
|
userBase.setCreateDate(sdf.parse(uBase.getCreateDate())); |
|
|
|
|
|
} catch (ParseException e) { |
|
|
|
|
|
logger.error("注册时间: " + e.getMessage()); |
|
|
|
|
|
} |
|
|
|
|
|
userBase.setTagNames(uBase.getTagNames()); |
|
|
|
|
|
|
|
|
|
|
|
return userBase; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public ResultData importTemplate(MultipartFile file, String tenantId) { |
|
|
public ResultData importTemplate(MultipartFile file, String tenantId) { |
|
|
|
|
|
|
|
|
final IdWorker idWorker = IdWorker.get(); |
|
|
final IdWorker idWorker = IdWorker.get(); |
|
|
|
|
|
|
|
|
|
|
|
ImportParams params = new ImportParams(); |
|
|
|
|
|
IExcelDataHandler<CUserBaseInfoT> handler = new UserExcelHandler(); |
|
|
|
|
|
handler.setNeedHandlerFields(new String[]{"姓名", "性别", "手机号", "微信昵称", "学历", "生日", "地址", "上次活跃时间", "注册时间", "标签"});// 注意这里对应的是excel的列名。也就是对象上指定的列名。 |
|
|
|
|
|
params.setDataHandler(handler); |
|
|
|
|
|
//params.setVerifyHandler(); |
|
|
|
|
|
// 需要验证 |
|
|
|
|
|
params.setNeedVerfiy(true); |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
ImportParams params = new ImportParams(); |
|
|
|
|
|
List<WxCUserBasicInfo> datalist = ExcelImportUtil.importExcel(file.getInputStream(), WxCUserBasicInfo.class, params); |
|
|
|
|
|
|
|
|
|
|
|
for (WxCUserBasicInfo userBase : datalist) { |
|
|
|
|
|
userBase.setTenantId(tenantId); |
|
|
|
|
|
|
|
|
ExcelImportResult<CUserBaseInfoT> datalist = ExcelImportUtil.importExcelMore(file.getInputStream(), CUserBaseInfoT.class, params); |
|
|
|
|
|
List<CUserBaseInfoT> successList = datalist.getList(); |
|
|
|
|
|
List<CUserBaseInfoT> failList = datalist.getFailList(); |
|
|
|
|
|
logger.info("验证通过的数量:" + successList.size()); |
|
|
|
|
|
logger.info("验证未通过的数量:" + failList.size()); |
|
|
|
|
|
for(CUserBaseInfoT uBase: successList) { |
|
|
|
|
|
WxCUserBasicInfo userBase = InitUserBaseInfo(uBase, tenantId); |
|
|
|
|
|
if (userBase == null) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
Date curDate = new Date(); |
|
|
Date curDate = new Date(); |
|
|
if (StringUtils.isBlank(userBase.getPhone())) { |
|
|
if (StringUtils.isBlank(userBase.getPhone())) { |
|
|
logger.error("手机号为空", userBase.toString()); |
|
|
logger.error("手机号为空", userBase.toString()); |
|
|
@@ -471,7 +550,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
// get tag ids |
|
|
// get tag ids |
|
|
String tagNames = userBase.getTagNames(); |
|
|
String tagNames = userBase.getTagNames(); |
|
|
List<Long> tagIdList = new ArrayList<>(); |
|
|
List<Long> tagIdList = new ArrayList<>(); |
|
|
for (String tagName: tagNames.split("/")) { |
|
|
|
|
|
|
|
|
for (String tagName : tagNames.split("/")) { |
|
|
WxTags wxTags = wxTagsMapper.getByName(tagName); |
|
|
WxTags wxTags = wxTagsMapper.getByName(tagName); |
|
|
if (wxTags != null) { |
|
|
if (wxTags != null) { |
|
|
tagIdList.add(Long.valueOf(wxTags.getId())); |
|
|
tagIdList.add(Long.valueOf(wxTags.getId())); |
|
|
@@ -522,11 +601,16 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
throw new MallinkException(ErrorCode.MEM_IMPORT_ERR.getCode(), e.getMessage()); |
|
|
|
|
|
|
|
|
logger.error(e.getMessage()); |
|
|
} |
|
|
} |
|
|
|
|
|
/* |
|
|
|
|
|
for (WxCUserBasicInfo userBase : datalist) { |
|
|
|
|
|
userBase.setTenantId(tenantId); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
*/ |
|
|
return new ResultData(Result.SUCCESS, "导入成功"); |
|
|
return new ResultData(Result.SUCCESS, "导入成功"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|