From 45494aee163e5938c6b92157c58c41ac38527cf6 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 8 Jan 2019 17:58:58 +0800 Subject: [PATCH 1/5] =?UTF-8?q?[A=E7=AB=AF=E4=BC=9A=E5=91=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=AF=BC=E5=85=A5][=E4=BF=AE=E5=A4=8D]:=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E5=AF=BC=E5=85=A5=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCUserBasicInfoController.java | 30 ++-- .../service/WxCUserBasicInfoService.java | 4 +- .../impl/WxCUserBasicInfoServiceImpl.java | 163 ++++++++++-------- 3 files changed, 114 insertions(+), 83 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index b3870c09e..8629100aa 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -39,6 +39,8 @@ import static com.iformall.domain.po.WxCouponOrder.Field.CreateDate_DESC; public class WxCUserBasicInfoController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private String importMemPrev = "importmem/"; + @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; @@ -223,10 +225,11 @@ public class WxCUserBasicInfoController extends BaseController { } @RequestMapping("/exportData") - public void exportData(HttpServletRequest request, HttpServletResponse response) { + public void exportData(@ModelAttribute WxCUserBasicInfo basicInfo, HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::exportData"); - - wxCUserBasicInfoService.exportData(request, response, getTenantId()); + if(basicInfo == null) basicInfo = new WxCUserBasicInfo(); + basicInfo.setTenantId(getTenantId()); + wxCUserBasicInfoService.exportData(basicInfo, request, response); } @@ -242,27 +245,28 @@ public class WxCUserBasicInfoController extends BaseController { public ResultData importTemplate(@RequestParam("file") MultipartFile file) { logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::importTemplate"); if (file.isEmpty()) { - throw new MallinkException(500, "上传文件不能为空"); + throw new MallinkException(Result.ERROR, "上传文件不能为空"); } //得到当前用户ID - String userId = getUser().getId().toString(); + String userId = "" + getUser().getId(); + String importKey = importMemPrev + userId; //查询当前用户得到的值是否为空,为空继续,不为空,返回模板正在导入 - Boolean allCount = stringRedisTemplate.opsForHash().hasKey(userId, "allCount"); + Boolean allCount = stringRedisTemplate.opsForHash().hasKey(importKey, "allCount"); if (allCount) { return new ResultData(Result.SUCCESS, "模板正在导入"); } - stringRedisTemplate.opsForHash().putIfAbsent(userId, "allCount", 0 + ""); - stringRedisTemplate.opsForHash().putIfAbsent(userId, "allSuccessCount", 0 + ""); - stringRedisTemplate.opsForHash().putIfAbsent(userId, "successCount", ""); - stringRedisTemplate.opsForHash().putIfAbsent(userId, "failCount", ""); - wxCUserBasicInfoService.importTemplate(file, getTenantId(), userId); - stringRedisTemplate.expire(userId,30,TimeUnit.MINUTES); + stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allCount", 0 + ""); + stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allSuccessCount", 0 + ""); + stringRedisTemplate.opsForHash().putIfAbsent(importKey, "successCount", ""); + stringRedisTemplate.opsForHash().putIfAbsent(importKey, "failCount", ""); + wxCUserBasicInfoService.importTemplate(file, getTenantId(), importKey); + stringRedisTemplate.expire(importKey,30,TimeUnit.MINUTES); return new ResultData(Result.SUCCESS, "模板正在导入"); } @GetMapping("/queryTemplateCount") public ResultData queryTemplateCount() { - String importKey = "import-" + getUser().getId(); + String importKey = importMemPrev + getUser().getId(); Map entries = stringRedisTemplate.opsForHash().entries(importKey); logger.info(JSONArray.toJSONString(entries) + ">>>>>>>>>>>>>>>>>>>>>1"); if (entries.size() < 4) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java index 2fa33087a..0c62edd06 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCUserBasicInfoService.java @@ -99,11 +99,11 @@ public interface WxCUserBasicInfoService { long findCountByScore(WxCUserBasicInfoDto dto); - void exportData(HttpServletRequest request, HttpServletResponse response, String tenantId); + void exportData(WxCUserBasicInfo basicInfo, HttpServletRequest request, HttpServletResponse response); void exportTemplate(HttpServletRequest request, HttpServletResponse response, String tenantId); - ResultData importTemplate(MultipartFile file, String tenantId, String userId); + ResultData importTemplate(MultipartFile file, String tenantId, String importKey); long findCount(WxCUserBasicInfoDto dto); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index ff36a341e..d8d84c6aa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -8,12 +8,12 @@ import cn.afterturn.easypoi.handler.inter.IExcelDataHandler; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxCUserBasicInfo; -import com.iformall.domain.po.WxCUserTags; import com.iformall.domain.po.WxTags; import com.iformall.domain.vo.CUserBaseInfoT; import com.iformall.domain.vo.CUserBaseVo; @@ -153,10 +153,8 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { @Override - public void exportData(HttpServletRequest request, HttpServletResponse response, String tenantId) { - WxCUserBasicInfo basicInfoQ = new WxCUserBasicInfo(); - basicInfoQ.setTenantId(tenantId); - List memberlist = wxCUserBasicInfoMapper.findVoList(basicInfoQ); + public void exportData(WxCUserBasicInfo basicInfo, HttpServletRequest request, HttpServletResponse response) { + List memberlist = wxCUserBasicInfoMapper.findVoList(basicInfo); XSSFWorkbook workbook; String filepath = Constant.fileDirectory; @@ -514,31 +512,55 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { @Async @Override - public ResultData importTemplate(MultipartFile file, String tenantId, String userId) { + public ResultData importTemplate(MultipartFile file, String tenantId, String importKey) { final IdWorker idWorker = IdWorker.get(); - String importKey = "import-" + userId; - - //默认添加到redis里 - stringRedisTemplate.opsForHash().put(importKey, "allCount", ""); - stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "0"); - stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); - stringRedisTemplate.opsForHash().put(importKey, "failCount", "0"); - ImportParams params = new ImportParams(); // 需要验证 params.setImportFields(new String[]{"姓名", "性别", "手机号", "微信昵称", "学历", "生日", "地址", "上次活跃时间", "注册时间", "标签", "成长值"}); + IExcelDataHandler handler = new UserExcelHandler(); + handler.setNeedHandlerFields(new String[] { "手机号" }); params.setNeedVerify(true); + ExcelImportResult datalist = null; try { - ExcelImportResult datalist = ExcelImportUtil.importExcelMore(file.getInputStream(), CUserBaseInfoT.class, params); - List successList = datalist.getList(); - List failList = datalist.getFailList(); + datalist = ExcelImportUtil.importExcelMore(file.getInputStream(), CUserBaseInfoT.class, params); + } catch (Exception e) { + stringRedisTemplate.opsForHash().put(importKey, "allCount", "1"); + stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "failCount", "1"); + logger.error(e.getMessage()); + return new ResultData(ErrorCode.MEM_IMPORT_ERR); + } + + if(datalist == null) { + logger.error("导入模板失败: 模板数据解析失败"); + return new ResultData(ErrorCode.MEM_IMPORT_ERR); + } + + List successList = datalist.getList(); + List failList = datalist.getFailList(); + + int total = successList.size() + failList.size(); + int all_success = successList.size(); + int all_fail = failList.size(); + + WxTags wxTagsQ = new WxTags(); + List tagList = wxTagsMapper.findList(wxTagsQ); + + try { + //添加到redis里 + stringRedisTemplate.opsForHash().put(importKey, "allCount", "" + total); + stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "" + all_success); + stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "failCount", "" + all_fail); + logger.info("验证通过的数量: " + successList.size()); logger.info("验证未通过的数量: " + failList.size()); - successList.parallelStream().forEach(uBase->{ + successList.parallelStream().forEach(uBase -> { if (StringUtils.isBlank(uBase.getPhone())) { logger.error("手机号为空", uBase.toString()); @@ -546,6 +568,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { } WxCUserBasicInfo userBase = InitUserBaseInfo(uBase, tenantId); if (userBase == null) { + logger.error("userBase为null", uBase.toString()); return; } @@ -568,24 +591,12 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { oldUserBase.setUpdateDate(new Date()); oldUserBase.setCreateDate(userBase.getCreateDate()); } else { - // check c_user 是否存在 - WxCUser cUserQ = new WxCUser(); - cUserQ.setTenantId(tenantId); - cUserQ.setPhone(userBase.getPhone()); - List cUsers = wxCUserMapper.findList(cUserQ); - if (cUsers.size() > 0) { - WxCUser wUser = cUsers.get(0); - if (wUser != null) { - userBase.setId(wUser.getId()); - userBase.setNickName(wUser.getNickName()); - } - } else { - userBase.setId(idWorker.nextId()); - } + userBase.setId(idWorker.nextId()); } // update 昵称 - if (oldUserBase != null) { + { + // check c_user 是否存在 WxCUser cUserQ = new WxCUser(); cUserQ.setTenantId(tenantId); cUserQ.setPhone(userBase.getPhone()); @@ -594,8 +605,13 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { WxCUser user = userList.get(0); if (user != null) { if (oldUserBase != null) { - oldUserBase.setNickName(user.getNickName()); + if(oldUserBase != null) { + oldUserBase.setNickName(user.getNickName()); + } + userBase.setId(user.getId()); + userBase.setNickName(user.getNickName()); } else { + userBase.setNickName(user.getNickName()); } } @@ -603,55 +619,66 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { } if (oldUserBase != null) { + logger.info("update user base: " + oldUserBase.getId()); wxCUserBasicInfoMapper.updateByPrimaryKeySelective(oldUserBase); } else { - wxCUserBasicInfoMapper.insertSelective(userBase); + logger.info("insert user base: " + userBase.getId()); + try { + wxCUserBasicInfoMapper.insertSelective(userBase); + } catch (Exception e) { + logger.error(e.getMessage()); + return; + } } // update tags - if (StringUtils.isNotBlank(userBase.getTagNames())) { - // get tag ids - String tagNames = userBase.getTagNames(); - List tagIdList = new ArrayList<>(); - for (String tagName : tagNames.split("/")) { - List wxTagsList = wxTagsMapper.getByName(tagName); - if (wxTagsList.size()==1) { - WxTags wxTags = wxTagsList.get(0); - tagIdList.add(Long.valueOf(wxTags.getId())); + try { + if (StringUtils.isNotBlank(userBase.getTagNames())) { + // get tag ids + String tagNames = userBase.getTagNames(); + List tagIdList = new ArrayList<>(); + for (String tagName : tagNames.split("/")) { + for(WxTags tag: tagList) { + if(tagName.equals(tag.getName())) { + tagIdList.add(Long.valueOf(tag.getId())); + break; + } + } } - } - if (oldUserBase != null){ - wxCUserTagsService.assignTags(tagIdList,oldUserBase); - }else{ - wxCUserTagsService.assignTags(tagIdList,userBase); + if (oldUserBase != null){ + wxCUserTagsService.assignTags(tagIdList,oldUserBase); + }else{ + wxCUserTagsService.assignTags(tagIdList,userBase); + } } - } - //触发自动打标签 - if (oldUserBase != null) { - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT,oldUserBase); - } - else{ - wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT,userBase); - } - - // 成长值 - if (StringUtils.isNotBlank(uBase.getPoins())) { + //触发自动打标签 if (oldUserBase != null) { - wxScoreRulesService.addScore2(EnumScoreType.MEM_IMPORT, oldUserBase, uBase.getPoins()); - } else { - wxScoreRulesService.addScore2(EnumScoreType.MEM_IMPORT, userBase, uBase.getPoins()); + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT,oldUserBase); + } + else{ + wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_IMPORT,userBase); + } + + // 成长值 + if (StringUtils.isNotBlank(uBase.getPoins())) { + if (oldUserBase != null) { + wxScoreRulesService.addScore2(EnumScoreType.MEM_IMPORT, oldUserBase, uBase.getPoins()); + } else { + wxScoreRulesService.addScore2(EnumScoreType.MEM_IMPORT, userBase, uBase.getPoins()); + } } + } catch (Exception e) { + logger.error(e.getMessage()); + logger.error("打标签+成长值失败--继续导入"); + return; } //记数 - stringRedisTemplate.opsForHash().increment(userId,"successCount",1); + stringRedisTemplate.opsForHash().increment(importKey,"successCount",1); }); } catch (Exception e) { - stringRedisTemplate.opsForHash().put(importKey, "allCount", "1"); - stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "0"); - stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); - stringRedisTemplate.opsForHash().put(importKey, "failCount", "1"); + stringRedisTemplate.opsForHash().put(importKey, "allCount", "" + all_fail); e.printStackTrace(); logger.error("导入模板失败:"+e.getMessage()); } From fcb58afa5275629964d4cab03c823609de2f01c0 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 8 Jan 2019 19:38:23 +0800 Subject: [PATCH 2/5] =?UTF-8?q?[A=E7=AB=AF=E4=BC=9A=E5=91=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=AF=BC=E5=85=A5][=E4=BF=AE=E5=A4=8D]:=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E5=AF=BC=E5=85=A5=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCUserBasicInfoController.java | 10 +++---- .../impl/WxCUserBasicInfoServiceImpl.java | 26 ++++++++++--------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index 8629100aa..a08a72f38 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -257,7 +257,7 @@ public class WxCUserBasicInfoController extends BaseController { } stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allCount", 0 + ""); stringRedisTemplate.opsForHash().putIfAbsent(importKey, "allSuccessCount", 0 + ""); - stringRedisTemplate.opsForHash().putIfAbsent(importKey, "successCount", ""); + stringRedisTemplate.opsForHash().putIfAbsent(importKey, "processCount", ""); stringRedisTemplate.opsForHash().putIfAbsent(importKey, "failCount", ""); wxCUserBasicInfoService.importTemplate(file, getTenantId(), importKey); stringRedisTemplate.expire(importKey,30,TimeUnit.MINUTES); @@ -275,7 +275,7 @@ public class WxCUserBasicInfoController extends BaseController { } String allCount = entries.get("allCount").toString(); String allSuccessCount = entries.get("allSuccessCount").toString(); - String successCount = entries.get("successCount").toString(); + String processCount = entries.get("processCount").toString(); String failCount = entries.get("failCount").toString(); if (StringUtils.isNotBlank(failCount) && allCount.equals(failCount)) {//stringRedisTemplate.expire(userId,1,TimeUnit.SECONDS); @@ -283,16 +283,16 @@ public class WxCUserBasicInfoController extends BaseController { //完全失败 stringRedisTemplate.opsForHash().delete(importKey, "allCount"); stringRedisTemplate.opsForHash().delete(importKey, "allSuccessCount"); - stringRedisTemplate.opsForHash().delete(importKey, "successCount"); + stringRedisTemplate.opsForHash().delete(importKey, "processCount"); stringRedisTemplate.opsForHash().delete(importKey, "failCount"); return new ResultData(ErrorCode.MEM_IMPORT_ERR); } //导入完成 - if (StringUtils.isNotBlank(allSuccessCount) && allSuccessCount.equals(successCount)) { + if (StringUtils.isNotBlank(allSuccessCount) && allSuccessCount.equals(processCount)) { ResultData ok = new ResultData(Result.SUCCESS, "ok", entries); stringRedisTemplate.opsForHash().delete(importKey, "allCount"); stringRedisTemplate.opsForHash().delete(importKey, "allSuccessCount"); - stringRedisTemplate.opsForHash().delete(importKey, "successCount"); + stringRedisTemplate.opsForHash().delete(importKey, "processCount"); stringRedisTemplate.opsForHash().delete(importKey, "failCount"); return ok; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index d8d84c6aa..203399f79 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -529,7 +529,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { } catch (Exception e) { stringRedisTemplate.opsForHash().put(importKey, "allCount", "1"); stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "0"); - stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "processCount", "0"); stringRedisTemplate.opsForHash().put(importKey, "failCount", "1"); logger.error(e.getMessage()); return new ResultData(ErrorCode.MEM_IMPORT_ERR); @@ -547,27 +547,29 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { int all_success = successList.size(); int all_fail = failList.size(); + //添加到redis里 + stringRedisTemplate.opsForHash().put(importKey, "allCount", "" + total); + stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "" + all_success); + stringRedisTemplate.opsForHash().put(importKey, "processCount", "0"); + stringRedisTemplate.opsForHash().put(importKey, "failCount", "" + all_fail); + + logger.info("验证通过的数量: " + successList.size()); + logger.info("验证未通过的数量: " + failList.size()); + WxTags wxTagsQ = new WxTags(); List tagList = wxTagsMapper.findList(wxTagsQ); try { - //添加到redis里 - stringRedisTemplate.opsForHash().put(importKey, "allCount", "" + total); - stringRedisTemplate.opsForHash().put(importKey, "allSuccessCount", "" + all_success); - stringRedisTemplate.opsForHash().put(importKey, "successCount", "0"); - stringRedisTemplate.opsForHash().put(importKey, "failCount", "" + all_fail); - - logger.info("验证通过的数量: " + successList.size()); - logger.info("验证未通过的数量: " + failList.size()); - successList.parallelStream().forEach(uBase -> { if (StringUtils.isBlank(uBase.getPhone())) { + stringRedisTemplate.opsForHash().increment(importKey, "processCount", 1); logger.error("手机号为空", uBase.toString()); return; } WxCUserBasicInfo userBase = InitUserBaseInfo(uBase, tenantId); if (userBase == null) { + stringRedisTemplate.opsForHash().increment(importKey, "processCount", 1); logger.error("userBase为null", uBase.toString()); return; } @@ -626,6 +628,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { try { wxCUserBasicInfoMapper.insertSelective(userBase); } catch (Exception e) { + stringRedisTemplate.opsForHash().increment(importKey, "processCount", 1); logger.error(e.getMessage()); return; } @@ -671,11 +674,10 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { } catch (Exception e) { logger.error(e.getMessage()); logger.error("打标签+成长值失败--继续导入"); - return; } //记数 - stringRedisTemplate.opsForHash().increment(importKey,"successCount",1); + stringRedisTemplate.opsForHash().increment(importKey,"processCount",1); }); } catch (Exception e) { stringRedisTemplate.opsForHash().put(importKey, "allCount", "" + all_fail); From 2f4cdfef71955a0f187c9450b78cbad6079a6ecb Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 8 Jan 2019 20:27:11 +0800 Subject: [PATCH 3/5] =?UTF-8?q?[A=E7=AB=AF=E4=BC=9A=E5=91=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=AF=BC=E5=85=A5][=E4=BF=AE=E5=A4=8D]:=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E5=AF=BC=E5=85=A5=E4=BF=AE=E5=A4=8D,=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E5=AF=BC=E5=87=BA=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCUserBasicInfoController.java | 15 +++++++++++++-- .../main/java/com/iformall/common/ErrorCode.java | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index a08a72f38..e2b38ee4c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -224,10 +224,21 @@ public class WxCUserBasicInfoController extends BaseController { return new ResultData(Result.SUCCESS, "查询成功", page); } - @RequestMapping("/exportData") + @ApiOperation("会员记录导出") + @GetMapping("/exportData") public void exportData(@ModelAttribute WxCUserBasicInfo basicInfo, HttpServletRequest request, HttpServletResponse response) { logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::exportData"); - if(basicInfo == null) basicInfo = new WxCUserBasicInfo(); + if(basicInfo == null) { + basicInfo = new WxCUserBasicInfo(); + } else { + if (StringUtils.isBlank(basicInfo.getPhone())) { + basicInfo.setPhone(null); + } + if (StringUtils.isBlank(basicInfo.getName())) { + basicInfo.setName(null); + } + } + basicInfo.setTenantId(getTenantId()); wxCUserBasicInfoService.exportData(basicInfo, request, response); diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 802959840..a4a4c18ad 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -253,7 +253,7 @@ public enum ErrorCode{ /** * 会员 */ - MEM_IMPORT_ERR(13000, "模板导入失败,请尝试重新导入"), + MEM_IMPORT_ERR(13000, "模板导入失败,请检查数据,尝试重新导入"), MEM_SCORE_NOT_ENOUGH(13001, "成长值不够扣减值"), /** From 38e0fc631bc908e3f7b96c04c52035c33e67a831 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 8 Jan 2019 20:49:45 +0800 Subject: [PATCH 4/5] =?UTF-8?q?[=E6=89=AB=E7=A0=81=E5=BC=82=E5=B8=B8][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E6=89=AB=E7=A0=81decode=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/utils/HashUtil.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/utils/HashUtil.java b/mallinkService/src/main/java/com/iformall/utils/HashUtil.java index 4d99d09ed..594463fea 100644 --- a/mallinkService/src/main/java/com/iformall/utils/HashUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/HashUtil.java @@ -91,7 +91,7 @@ public class HashUtil { } try { String enc = hash("md5", str); - enc = new String(Base64.getUrlEncoder().encode(enc.getBytes("utf-8"))); + enc = new String(Base64.getUrlEncoder().encode(enc.getBytes("utf-8")), "utf-8"); return enc; } catch (UnsupportedEncodingException e) { return null; @@ -102,7 +102,13 @@ public class HashUtil { if (str == null) { return null; } - String dec = new String(Base64.getUrlDecoder().decode(str)); - return dec; + try { + String dec = new String(Base64.getUrlDecoder().decode(str), "utf-8"); + return dec; + } catch (Exception e) { + System.out.println(str); + System.out.println(e.getMessage()); + return null; + } } } From ee7f74d1734f2e8632193b0e1386f53b3c09d564 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 8 Jan 2019 21:33:41 +0800 Subject: [PATCH 5/5] =?UTF-8?q?[=E8=A1=A5=E8=B4=B4=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E6=A3=80=E6=B5=8B][=E4=BF=AE=E6=94=B9]:=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E5=88=B8=E5=8F=8A=E5=82=A8=E5=80=BC=E5=8D=A1=E8=A1=A5=E8=B4=B4?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E5=BF=85=E5=A1=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxCouponServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index dc17646f0..7bdf6f7d5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -116,18 +116,22 @@ public class WxCouponServiceImpl implements WxCouponService { if(record.getType().equals(EnumCouponType.COUPON_MULTIMCH.getCode()) || record.getType().equals(EnumCouponType.CARD_MULTIMCH.getCode())) { Integer subsidyType = record.getSubsidyType(); + Integer subsidyNum = record.getSubsidyNum(); if(subsidyType == null) { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "请填写补贴类型"); } + if(subsidyNum == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "请填写补贴金额"); + } if(subsidyType.equals(EnumCouponSubsidyType.WECHAT_COUPON.getCode())) { // 微信 立减 - if(record.getSubsidyNum() > record.getSalePrice()) { + if(subsidyNum > record.getSalePrice()) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "补贴额大于售价"); } } else if(subsidyType.equals(EnumCouponSubsidyType.OFFLINE_SUBSIDY.getCode())) { // 线下补贴 int subsidy_num = record.getPrice() - record.getSalePrice(); - if(record.getSubsidyNum() > subsidy_num) { + if(subsidyNum > subsidy_num) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "补贴额大于面额与售价的差值"); } } else if(subsidyType.equals(EnumCouponSubsidyType.WECHAT_MCHPAY.getCode())) {