diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java index 96330a6da..41c8e1ef5 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java @@ -56,30 +56,22 @@ public class WxCUserBasicInfoController extends BaseController { @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) - public ResultData list(@ModelAttribute WxCUserBasicInfoDto wxCUserBasicInfo, Integer pageNum, Integer pageSize) { - if (null == wxCUserBasicInfo) wxCUserBasicInfo = new WxCUserBasicInfoDto(); + public ResultData list(@ModelAttribute WxCUserBasicInfo wxCUserBasicInfo, Integer pageNum, Integer pageSize) { + if (null == wxCUserBasicInfo) wxCUserBasicInfo = new WxCUserBasicInfo(); String tenantId = getTenantId(); wxCUserBasicInfo.setTenantId(tenantId); - PageInfo> page = wxCUserBasicInfoService.queryListMap(wxCUserBasicInfo, pageNum, pageSize); -// PageInfo page = wxCUserBasicInfoService.list(wxCUserBasicInfo, pageNum, pageSize); -// if (page.getSize() == 0 && StringUtils.isNotBlank(wxCUserBasicInfo.getPhone()) -// && wxCUserBasicInfo.getEndTime() == null && wxCUserBasicInfo.getStartTime() == null -// && StringUtils.isBlank(wxCUserBasicInfo.getName()) -// ) {//当只有手机号查询并且查不到数据 ,新增 -// WxCUser cUser = new WxCUser(); -// cUser.setTenantId(tenantId); -// cUser.setPhone(wxCUserBasicInfo.getPhone()); -// PageInfo cUsers = wxCUserService.listAsPage(cUser, 1, 1); -// if (cUsers.getSize() > 0) { -// createUserBasicInfo(cUsers.getList().get(0)); -// page = wxCUserBasicInfoService.list(wxCUserBasicInfo, pageNum, pageSize); -// } -// } + PageInfo page = wxCUserBasicInfoService.listAsPage(wxCUserBasicInfo, pageNum, pageSize); return new ResultData(page); } private void createUserBasicInfo(WxCUser wxCUser) { + String phone = wxCUser.getPhone(); + if (phone != null && phone.contains("*")) { + phone = wxCUser.getVerifyCodePhone(); + } + if (StringUtils.isBlank(phone)) + return; WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); wxCUserBasicInfo.setId(wxCUser.getId()); wxCUserBasicInfo.setPhone(wxCUser.getPhone()); diff --git a/mallinkCApi/src/main/java/com/simple/controller/BaseController.java b/mallinkCApi/src/main/java/com/simple/controller/BaseController.java index 03b24b0cb..f6b92ac74 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/BaseController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/BaseController.java @@ -99,11 +99,11 @@ public class BaseController { public void saveToBasicInfo(WxCUser user) { String phone = user.getPhone(); - if (phone.contains("*")) { + if (phone != null && phone.contains("*")) { phone = user.getVerifyCodePhone(); - if (StringUtils.isBlank(phone)) - return; } + if (StringUtils.isBlank(phone)) + return; List list = wxCUserBasicInfoService.findByPhone(user.getTenantId(), phone); if (list.size() > 0) { diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index f017e06da..c7d0cf2be 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -192,7 +192,12 @@ public enum ErrorCode{ MSG_TEMPLATE_NOT_FOUND(12105,"短信模板不存在"), MSG_REQUEST_PARAMS_ERROR(12106,"参数错误"), MSG_SEND_ERROR(12107,"发送短信失败"), - MSG_METHOD_REQUEST_ERROR(12108,"接口请求错误") + MSG_METHOD_REQUEST_ERROR(12108,"接口请求错误"), + + /** + * 会员 + */ + MEM_IMPORT_ERR(13000, "模板导入失败") ; private int code; diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java index 81522ce3f..0d8e05d27 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelImportUtil; import cn.afterturn.easypoi.excel.entity.ImportParams; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.ErrorCode; import com.simple.common.IdWorker; import com.simple.common.Result; import com.simple.common.ResultData; @@ -16,6 +17,7 @@ import com.simple.mapper.WxCUserBasicInfoMapper; import com.simple.mapper.WxCUserMapper; import com.simple.service.WxCUserBasicInfoService; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -27,17 +29,15 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; +import java.util.Date; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.UUID; -import static java.util.stream.Collectors.toList; - @Service public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { - - @Autowired + + @Autowired WxCUserBasicInfoMapper wxCUserBasicInfoMapper; @Autowired @@ -47,13 +47,13 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { public PageInfo listAsPage(WxCUserBasicInfo record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserBasicInfoMapper.findList(record)); } - - @Override + + @Override public List findByPhone(String tenantId, String phone) { WxCUserBasicInfo basicQ = new WxCUserBasicInfo(); basicQ.setTenantId(tenantId); basicQ.setPhone(phone); - return wxCUserBasicInfoMapper.select(basicQ); + return wxCUserBasicInfoMapper.select(basicQ); } @Override @@ -71,7 +71,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); + record.setId(idWorker.nextId()); wxCUserBasicInfoMapper.insertSelective(record); } else { wxCUserBasicInfoMapper.updateByPrimaryKeySelective(record); @@ -92,25 +92,23 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { } - - @Override - public long findCountBySex(WxCUserBasicInfoDto dto) { - return wxCUserBasicInfoMapper.findCountBySex(dto); - } - + @Override + public long findCountBySex(WxCUserBasicInfoDto dto) { + return wxCUserBasicInfoMapper.findCountBySex(dto); + } - @Override - public long findCountByAge(WxCUserBasicInfoDto dto) { - return wxCUserBasicInfoMapper.findCountByAge(dto); - } + @Override + public long findCountByAge(WxCUserBasicInfoDto dto) { + return wxCUserBasicInfoMapper.findCountByAge(dto); + } @Override public PageInfo> queryListMap(WxCUserBasicInfoDto record, Integer pageNum, Integer pageSize) { return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCUserBasicInfoMapper.findListMap(record)); } - /*@Override + @Override public void exportData(HttpServletRequest request, HttpServletResponse response, String tenantId) { @@ -124,16 +122,16 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { XSSFWorkbook workbook; - String filepath="./uploads/"; + String filepath = "./uploads/"; File savefile = new File(filepath); if (!savefile.exists()) { savefile.mkdirs(); } - String filename=UUID.randomUUID()+".xlsx"; - filepath=filepath+filename; + String filename = UUID.randomUUID() + ".xlsx"; + filepath = filepath + filename; try { - File file=new File(filepath); - workbook=new XSSFWorkbook(); + File file = new File(filepath); + workbook = new XSSFWorkbook(); XSSFSheet sheetOne = workbook.createSheet("微信关注用户"); Row row = sheetOne.createRow(0); Cell openIdCell = row.createCell(0); @@ -159,9 +157,9 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { sceneadressCell.setCellValue("场景值"); - for(int i=0;i userlist = wxCUserMapper.findList(wxCUser); - - WxCUserBasicInfo basicInfo = new WxCUserBasicInfo(); - basicInfo.setTenantId(tenantId); - List memberlist = wxCUserBasicInfoMapper.findList(basicInfo); - - XSSFWorkbook workbook; - String filepath = "./uploads/"; - File savefile = new File(filepath); - if (!savefile.exists()) { - savefile.mkdirs(); - } - String filename = UUID.randomUUID() + ".xlsx"; - filepath = filepath + filename; - try { - File file = new File(filepath); - workbook = new XSSFWorkbook(); - - XSSFSheet sheetOne = workbook.createSheet("会员"); - Row row = sheetOne.createRow(0); - Cell nameCell = row.createCell(0); - Cell phoneCell = row.createCell(1); - Cell nickNameCell = row.createCell(2); - Cell cityCell = row.createCell(3); - Cell provinceCell = row.createCell(4); - Cell countryCodeCell = row.createCell(5); - Cell registerIpCell = row.createCell(6); - Cell emailCell = row.createCell(7); - Cell educationCell = row.createCell(8); - Cell addressCell = row.createCell(9); - Cell activeTimeCell = row.createCell(10); - Cell registerTimeCell = row.createCell(11); - - nameCell.setCellValue("姓名"); - phoneCell.setCellValue("手机号"); - nickNameCell.setCellValue("微信名称"); - cityCell.setCellValue("城市"); - provinceCell.setCellValue("省份"); - countryCodeCell.setCellValue("国家代码"); - registerIpCell.setCellValue("注册IP"); - emailCell.setCellValue("邮箱"); - educationCell.setCellValue("学历"); - addressCell.setCellValue("地址"); - activeTimeCell.setCellValue("上次活跃时间"); - registerTimeCell.setCellValue("注册时间"); - - for (int i = 0; i < memberlist.size(); i++) { - row = sheetOne.createRow(i + 1); - nameCell = row.createCell(0); - phoneCell = row.createCell(1); - nickNameCell = row.createCell(2); - cityCell = row.createCell(3); - provinceCell = row.createCell(4); - countryCodeCell = row.createCell(5); - registerIpCell = row.createCell(6); - emailCell = row.createCell(7); - educationCell = row.createCell(8); - addressCell = row.createCell(9); - activeTimeCell = row.createCell(10); - registerTimeCell = row.createCell(11); - - WxCUserBasicInfo wxCUserBasicInfo = memberlist.get(0); - nameCell.setCellValue(wxCUserBasicInfo.getName()); - String phone = wxCUserBasicInfo.getPhone(); - phoneCell.setCellValue(phone); - emailCell.setCellValue(wxCUserBasicInfo.getEmail()); - educationCell.setCellValue(wxCUserBasicInfo.getEducation()); - addressCell.setCellValue(wxCUserBasicInfo.getAddress()); - Optional first = userlist.stream().filter(m -> { - if(m.getPhone() != null){ - return m.getPhone().equals(phone); - } - return false; - }).findFirst(); - if(first.isPresent()){ - WxCUser cUser = first.get(); - nickNameCell.setCellValue(cUser.getNickName()); - countryCodeCell.setCellValue(cUser.getCountryCode()); - cityCell.setCellValue(cUser.getCity()); - provinceCell.setCellValue(cUser.getProvince()); - registerIpCell.setCellValue(cUser.getRegisterIp()); - activeTimeCell.setCellValue(cUser.getUpdateDate()); - registerTimeCell.setCellValue(cUser.getCreateDate()); - } - - } - FileOutputStream fileOut = new FileOutputStream(file); workbook.write(fileOut); fileOut.close(); @@ -335,8 +236,8 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { } } - public void downFile(String filePath,String filename, HttpServletResponse response, - HttpServletRequest req) throws IOException { + public void downFile(String filePath, String filename, HttpServletResponse response, + HttpServletRequest req) throws IOException { try { response.reset(); response.setContentType("bin"); @@ -369,16 +270,16 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { public void exportTemplate(HttpServletRequest request, HttpServletResponse response, String tenantId) { XSSFWorkbook workbook; - String filepath="./uploads/"; + String filepath = "./uploads/"; File savefile = new File(filepath); if (!savefile.exists()) { savefile.mkdirs(); } - String filename=UUID.randomUUID()+".xlsx"; - filepath=filepath+filename; + String filename = UUID.randomUUID() + ".xlsx"; + filepath = filepath + filename; try { - File file=new File(filepath); - workbook=new XSSFWorkbook(); + File file = new File(filepath); + workbook = new XSSFWorkbook(); XSSFSheet sheetTwo = workbook.createSheet("会员信息"); Row rowtwo = sheetTwo.createRow(0); @@ -398,7 +299,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { workbook.write(fileOut); fileOut.close(); workbook.close(); - downFile(filepath,filename,response,request); + downFile(filepath, filename, response, request); FileUtils.forceDelete(file); } catch (Exception e) { e.printStackTrace(); @@ -411,43 +312,67 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { public ResultData importTemplate(MultipartFile file, String tenantId) { try { - ImportParams params = new ImportParams(); + List datalist = ExcelImportUtil.importExcel(file.getInputStream(), WxCUserBasicInfo.class, params); - - List datalist = ExcelImportUtil.importExcel(file.getInputStream(),WxCUserBasicInfo.class, params); - WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); - wxCUserBasicInfo.setTenantId(tenantId); - List list = wxCUserBasicInfoMapper.findList(wxCUserBasicInfo); final IdWorker idWorker = IdWorker.get(); - for(WxCUserBasicInfo user:datalist){ - if(user.getPhone()!=null){ - WxCUserBasicInfo tempuser=null; - if(list.size()>0){ - tempuser = list.stream().filter(u -> u.getPhone().equals(user.getPhone())).findFirst().get(); - } - if(tempuser!=null){ - tempuser.setTenantId(tenantId); - tempuser.setSex(user.getSex()); - tempuser.setEducation(user.getEducation()); - tempuser.setBirthdate(user.getBirthdate()); - tempuser.setName(user.getName()); - wxCUserBasicInfoMapper.updateByPrimaryKeySelective(tempuser); - } else { - user.setId(idWorker.nextId()); - user.setTenantId(tenantId); - wxCUserBasicInfoMapper.insertSelective(user); + for (WxCUserBasicInfo userBase : datalist) { + Date curDate = new Date(); + if (StringUtils.isBlank(userBase.getPhone())) + continue; + WxCUserBasicInfo oldUserBase = null; + WxCUserBasicInfo userBaseQ = new WxCUserBasicInfo(); + userBaseQ.setTenantId(tenantId); + userBaseQ.setPhone(userBase.getPhone()); + List userBList = wxCUserBasicInfoMapper.select(userBaseQ); + if (userBList.size() > 0) { + oldUserBase = userBList.get(0); + } + + if (oldUserBase != null) { + oldUserBase.setTenantId(tenantId); + oldUserBase.setSex(userBase.getSex()); + oldUserBase.setEducation(userBase.getEducation()); + oldUserBase.setBirthdate(userBase.getBirthdate()); + oldUserBase.setName(userBase.getName()); + oldUserBase.setUpdateDate(curDate); + } else { + userBase.setId(idWorker.nextId()); + userBase.setTenantId(tenantId); + userBase.setCreateDate(curDate); + userBase.setUpdateDate(curDate); + } + + // update 昵称 + WxCUser cUserQ = new WxCUser(); + cUserQ.setTenantId(tenantId); + cUserQ.setPhone(userBase.getPhone()); + List userList = wxCUserMapper.select(cUserQ); + if (userList.size() > 0) { + WxCUser user = userList.get(0); + if (user != null) { + if (user.getNickName() != null) { + if (oldUserBase != null) { + oldUserBase.setNickName(user.getNickName()); + } else { + userBase.setNickName(user.getNickName()); + } + } } } + if (oldUserBase != null) { + wxCUserBasicInfoMapper.updateByPrimaryKeySelective(oldUserBase); + } else { + wxCUserBasicInfoMapper.insertSelective(userBase); + } } } catch (Exception e) { - throw new MallinkException(500,"模板导入失败"+e); + throw new MallinkException(ErrorCode.MEM_IMPORT_ERR.getCode(), e.getMessage()); } - return new ResultData(Result.SUCCESS,"导入成功"); + return new ResultData(Result.SUCCESS, "导入成功"); } - }