From c4f661d05a8e1f3f79ad66e359f818d5ee9c546d Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 24 Jan 2019 18:26:01 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[BUG][1000882]:=E4=BF=AE=E5=A4=8D=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E7=B4=AF=E8=AE=A1=E6=95=B0=E6=8D=AE=E8=AE=A1=E6=95=B0?= =?UTF-8?q?=E5=9F=BA=E5=87=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxUserStructureController.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java index f1da51168..5b15abd0e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxUserStructureController.java @@ -254,6 +254,8 @@ public class WxUserStructureController extends BaseController { @ApiOperation("查询会员数量") @GetMapping("/findUserDataCount") public ResultData findUserCount(Date startTime, Date endTime) { + + final int daysBefore = 29; logger.debug("[" + getIpAddr() + "] WxUserStructureController::findUserCount"); WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(getTenantId()); @@ -280,7 +282,7 @@ public class WxUserStructureController extends BaseController { long wxtodayCount = wxCUserService.findCount(dto);//今天新增 List wxnewCountVos = new ArrayList<>();//每日新增会员数 int j = 1; - for (int i = 29; i >= 0; i--) { + for (int i = daysBefore; i >= 0; i--) { c.clear(); c.setTime(today); c.add(Calendar.DAY_OF_YEAR, -i); @@ -298,7 +300,7 @@ public class WxUserStructureController extends BaseController { List wxallCountVos = new ArrayList<>();//累计会员数 c.clear(); c.setTime(today); - c.add(Calendar.DAY_OF_YEAR, -30); + c.add(Calendar.DAY_OF_YEAR, -daysBefore); dto.setEndTime(c.getTime()); dto.setStartTime(null); long firstDay = wxCUserService.findCount(dto);//统计的第一天总数 @@ -341,7 +343,7 @@ public class WxUserStructureController extends BaseController { } private Map getMemberData(WxCUserBasicInfoDto dto) { - + final int daysBefore = 29; long allCount = wxCUserBasicInfoService.findCount(dto);//总量 Calendar c = Calendar.getInstance(); @@ -354,7 +356,7 @@ public class WxUserStructureController extends BaseController { long todayCount = wxCUserBasicInfoService.findCount(dto);//今天新增 List newCountVos = new ArrayList<>();//每日新增会员数 int j = 1; - for (int i = 29; i >= 0; i--) { + for (int i = daysBefore; i >= 0; i--) { c.clear(); c.setTime(today); c.add(Calendar.DAY_OF_YEAR, -i); @@ -372,7 +374,7 @@ public class WxUserStructureController extends BaseController { List allCountVos = new ArrayList<>();//累计会员数 c.clear(); c.setTime(today); - c.add(Calendar.DAY_OF_YEAR, -30); + c.add(Calendar.DAY_OF_YEAR, -daysBefore); dto.setEndTime(c.getTime()); dto.setStartTime(null); long firstDay = wxCUserBasicInfoService.findCount(dto);//统计的第一天总数 From 40b78e785e0f634e12088452a51cb66467011b54 Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 24 Jan 2019 21:25:21 +0800 Subject: [PATCH 2/3] =?UTF-8?q?[BUG][1000878]:=E6=8E=92=E6=9F=A5=E6=95=B4?= =?UTF-8?q?=E4=B8=AA=E4=BB=A3=E7=A0=81=E4=BD=BF=E7=94=A8PageHelper?= =?UTF-8?q?=E4=B8=8D=E5=90=88=E7=90=86=E7=9A=84=E5=9C=B0=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/service/impl/MarkingDataReportServiceImpl.java | 1 + .../com/iformall/service/impl/WxMerchantShopServiceImpl.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java index 5c935e484..60c9ee651 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java @@ -298,6 +298,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { params.put("channelType", EnumCouponSendSendType.C_ORDER.getCode()); list = wxCouponActionLogMapper.sceneDataList(params); }else { + PageHelper.clearPage(); list = new ArrayList(); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java index 2e1c0ff01..784526732 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantShopServiceImpl.java @@ -35,6 +35,7 @@ public class WxMerchantShopServiceImpl implements WxMerchantShopService { @Override public PageInfo queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize) { List resultlist=new ArrayList<>(); + PageHelper.startPage(pageIndex, pageSize); List merchantShops = wxMerchantShopMapper.findList(record); for(WxMerchantShop merchantShop:merchantShops){ @@ -45,7 +46,7 @@ public class WxMerchantShopServiceImpl implements WxMerchantShopService { resultlist.add(shopList.get(0)); } } - PageHelper.startPage(pageIndex, pageSize); + PageInfo pageInfo = new PageInfo<>(resultlist); return pageInfo; } From 02653eab55ba71f1343e365fd088313d58c3e84e Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 24 Jan 2019 23:21:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[BUG][=E4=BC=9A=E5=91=98]:=E4=BC=9A?= =?UTF-8?q?=E5=91=98=E5=AE=9A=E6=97=B6=E5=8F=91=E5=88=B8=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=9B=B4=E6=94=B9,=E7=BB=9F=E4=B8=80=E8=80=83?= =?UTF-8?q?=E8=99=91=E5=A4=9A=E5=BC=A0=E5=88=B8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/schedule/CouponSendSchedule.java | 98 ++++++++++++------- .../mapper/WxCUserBasicInfoMapper.xml | 20 ++-- 2 files changed, 76 insertions(+), 42 deletions(-) diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java index 02405aee7..c0d26537a 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java @@ -44,6 +44,9 @@ public class CouponSendSchedule { @Autowired private WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + @Autowired + private WxCUserMapper wxCUserMapper; + @Autowired private WxCouponSendMapper wxCouponSendMapper; @@ -59,7 +62,7 @@ public class CouponSendSchedule { //@Scheduled(cron = "0 0 6 1 * ?") // 每月1号发放会员的权益券 @Scheduled(cron = "0 0 6 * * ?") // 测试每天6点发券 - //@Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次 + //@Scheduled(cron = "*/30 * * * * ?") // 测试30秒中一次 public void couponSendSchedule() { List mallList = wxMallMapper.findList(new WxMall()); @@ -89,12 +92,12 @@ public class CouponSendSchedule { .sorted(Comparator.comparing(WxLevelConfig::getPoints)) .collect(Collectors.toList()); - for (int i = 0; i < levelConfigList.size(); i++) { - WxLevelConfig l = levelConfigList.get(i); + for (int levelIndex = 0; levelIndex < levelConfigList.size(); levelIndex++) { + WxLevelConfig l = levelConfigList.get(levelIndex); if (l.getCapability() == null) continue; Integer levelStartScore = l.getPoints(); - Integer levelEndScore = levelConfigList.size() < i+1? levelConfigList.get(i+1).getPoints() : null; + Integer levelEndScore = levelIndex+1 < levelConfigList.size() ? levelConfigList.get(levelIndex+1).getPoints() : null; JSONObject jo = null; Long result = null; @@ -107,28 +110,37 @@ public class CouponSendSchedule { } Long sendCount = result; if (sendCount > 0) { - WxCouponSend wxCouponSend = new WxCouponSend(); - wxCouponSend.setTenantId(l.getTenantId()); - wxCouponSend.setSendType(EnumCouponSendSendType.TIMED.getCode()); - wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode()); - List couponSendList = wxCouponSendMapper.findListVo(wxCouponSend); - couponSendList.stream().forEach(cs->{ - if (cs.getRemainInventory() < sendCount){ - logger.error("定时发券:库存不足 levelId="+ l.getId() +" couponId="+ cs.getCouponId()); - return; //下一个券 + + WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto(); + wxCUserBasicInfoDto.setTenantId(l.getTenantId()); + wxCUserBasicInfoDto.setLevelStartScore(levelStartScore); + wxCUserBasicInfoDto.setLevelEndScore(levelEndScore); + List wxCUserBasicInfoList = wxCUserBasicInfoMapper.findListByScore(wxCUserBasicInfoDto); + + logger.info("定时发券:给LEVEL["+ l.getLevel() + + "]积分["+levelStartScore+"-"+levelEndScore+"]发券"+sendCount+"张"); + + wxCUserBasicInfoList.stream().forEach(cu->{ + + WxCouponSend wxCouponSend = new WxCouponSend(); + wxCouponSend.setTenantId(l.getTenantId()); + wxCouponSend.setSendType(EnumCouponSendSendType.TIMED.getCode()); + wxCouponSend.setStatus(EnumCouponSendStatus.VALID.getCode()); + List couponSendList = wxCouponSendMapper.findListVo(wxCouponSend); + int remain = couponSendList.stream().map(cs->{ + int count = cs.getRemainInventory(); + logger.info("定时发券:给["+ cu.getNickName() + + "]券[" + cs.getTitle() + "]还剩" + + count +"张"); + return count; + }).reduce(Integer::sum).get(); + + if (remain < sendCount){ + logger.error("定时发券:库存不足["+ cu.getNickName() +"]应发"+sendCount+"张,总共剩"+ remain + "张"); + return; } - WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto(); - wxCUserBasicInfoDto.setTenantId(l.getTenantId()); - wxCUserBasicInfoDto.setLevelStartScore(levelStartScore); - wxCUserBasicInfoDto.setLevelEndScore(levelEndScore); - List wxCUserBasicInfoList = wxCUserBasicInfoMapper.findListByScore(wxCUserBasicInfoDto); - - wxCUserBasicInfoList.stream().forEach(cu->{ - if (cs.getRemainInventory() < sendCount){ - logger.error("定时发券:库存不足 levelId="+ l.getId() +" couponId="+ cs.getCouponId()+"userId="+cu.getId()); - return; //下一个券 - } + int sentCount = couponSendList.stream().map(cs->{ Map params = new HashMap(); params.put("tenantId", cs.getTenantId()); params.put("cUserId", cu.getId()); @@ -136,31 +148,45 @@ public class CouponSendSchedule { params.put("startTime", startTime); params.put("endTime", endTime); params.put("channelType", EnumCouponSendSendType.TIMED.getCode()); + int count = wxCouponActionLogMapper.getCountByUserAndCouponAndDate(params); + logger.info("定时发券:已经给["+ cu.getNickName() + + "]券[" + cs.getTitle() + "] " + + count +"张"); + return count; + }).reduce(Integer::sum).get(); - int sentCount = wxCouponActionLogMapper.getCountByUserAndCouponAndDate(params); - logger.info("定时发券:给["+ cu.getNickName() + - "]已发送券[" + cs.getTitle() + "] " + - sentCount +"张,还需发"+ (sendCount-sentCount) +"张"); + logger.info("定时发券:给["+ cu.getNickName() + + "]总共已发送券" + sentCount + "张,还需发"+ (sendCount-sentCount) +"张"); + + for (int count = 0; count < sendCount - sentCount; count++) { + boolean sent = false; + for(int couponIndex = 0; couponIndex< couponSendList.size(); couponIndex++) { + WxCouponSendVo cs = couponSendList.get(couponIndex); + if (cs.getRemainInventory() <= 0) + continue; - for (int count = 0; count + + cub.id,cub.phone,cub.birthdate,cub.education,cub.sex,cub.email,cub.address,cub.poins,cub.tag_id, + cub.create_date,cub.update_date,cub.tenant_id,cub.name,cub.level,cub.nick_name + +