diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java index 1bed64d11..a156a6ef1 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantBUserController.java @@ -96,7 +96,7 @@ public class WxMerchantBUserController extends BaseController { return new ResultData(resultMap); } - + /** * 用户登录 diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java index 9cab3956a..5b82519dc 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/CouponSendSchedule.java @@ -1,11 +1,13 @@ package com.iformall.schedule; import com.alibaba.fastjson.JSONObject; +import com.iformall.common.ErrorCode; import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.*; import com.iformall.domain.vo.WxCouponSendVo; import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumCouponSendStatus; +import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.WxCouponActionLogService; import com.iformall.service.WxCouponSendService; @@ -18,9 +20,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.temporal.TemporalAdjusters; +import java.util.*; import java.util.stream.Collectors; @Component @@ -43,6 +47,9 @@ public class CouponSendSchedule { @Autowired private WxCouponSendMapper wxCouponSendMapper; + @Autowired + private WxCouponActionLogMapper wxCouponActionLogMapper; + @Autowired private WxOrderService wxOrderService; @@ -61,6 +68,17 @@ public class CouponSendSchedule { return; } + Date startTime = Date.from(LocalDateTime.now() + .with(TemporalAdjusters.firstDayOfMonth()) + .with(LocalTime.MIN) + .atZone(ZoneId.systemDefault()) + .toInstant()); + Date endTime = Date.from(LocalDateTime.now() + .with(TemporalAdjusters.lastDayOfMonth()) + .with(LocalTime.MAX) + .atZone(ZoneId.systemDefault()) + .toInstant()); + mallList.stream().forEach(mall-> { WxLevelConfig wxLevelConfig = new WxLevelConfig(); @@ -95,8 +113,8 @@ public class CouponSendSchedule { List couponSendList = wxCouponSendMapper.findListVo(wxCouponSend); couponSendList.stream().forEach(cs->{ if (cs.getRemainInventory() < sendCount){ - logger.error("定时发券:库存不足 levelId="+ l.getId() +"couponId="+ cs.getCouponId()); - return; //下一个券 + logger.error("定时发券:库存不足 levelId="+ l.getId() +" couponId="+ cs.getCouponId()); + return; //下一个券 } WxCUserBasicInfoDto wxCUserBasicInfoDto = new WxCUserBasicInfoDto(); wxCUserBasicInfoDto.setTenantId(l.getTenantId()); @@ -106,11 +124,23 @@ public class CouponSendSchedule { wxCUserBasicInfoList.stream().forEach(cu->{ if (cs.getRemainInventory() < sendCount){ - logger.error("定时发券:库存不足 levelId="+ l.getId() +"couponId="+ cs.getCouponId()+"userId="+cu.getId()); + logger.error("定时发券:库存不足 levelId="+ l.getId() +" couponId="+ cs.getCouponId()+"userId="+cu.getId()); return; //下一个券 } - for (int count = 0; count(); + params.put("tenantId", cs.getTenantId()); + params.put("cUserId", cu.getId()); + params.put("couponId", cs.getCouponId()); + params.put("startTime", startTime); + params.put("endTime", endTime ); + int sentCount = wxCouponActionLogMapper.getCountByUserAndCouponAndDate(params); + + logger.info("定时发券:给["+ cu.getNickName() + + "]已发送券[" + cs.getTitle() + "] " + + sentCount +"张,还需发"+ (sendCount-sentCount) +"张"); + + for (int count = 0; count { List findList(WxCouponActionLog wxCouponActionLog); - /** - * 查询场景投放发券数 - * @param tenantId - * @param startTime - * @param endTime - * @return - */ - int findCountByDateLimit(@Param("tenantId")String tenantId,@Param("startTime") Date startTime,@Param("endTime")Date endTime); List sceneDataMap(HashMap params); @@ -27,6 +19,15 @@ public interface WxCouponActionLogMapper extends CommonMapper sceneDataJoinCouponOrderList(HashMap params); + /** + * 查询场景投放发券数 + * @param tenantId + * @param startTime + * @param endTime + * @return + */ + int getCountByDateLimit(@Param("tenantId")String tenantId,@Param("startTime") Date startTime,@Param("endTime")Date endTime); + int getCountByChannelId(@Param("tenantId")String tenantId,@Param("channelType") int channelType,@Param("channelId")Long channelId); @@ -44,4 +45,6 @@ public interface WxCouponActionLogMapper extends CommonMapper params); + + int getCountByUserAndCouponAndDate(Map params); } 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 5410dc55c..5c935e484 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java @@ -128,9 +128,9 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { @Override public Map getSceneData(String tenantId) { //今日营销投放券数 - int todaySceneCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId, addDay(0), addDay(1)); - int yesterdayCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId, addDay(-1), addDay(0)); - int lastWeekCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId, addDay(-7), addDay(-6)); + int todaySceneCount = wxCouponActionLogMapper.getCountByDateLimit(tenantId, addDay(0), addDay(1)); + int yesterdayCount = wxCouponActionLogMapper.getCountByDateLimit(tenantId, addDay(-1), addDay(0)); + int lastWeekCount = wxCouponActionLogMapper.getCountByDateLimit(tenantId, addDay(-7), addDay(-6)); NumberFormat nf = NumberFormat.getPercentInstance(); nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java index 1663cd402..c02ad1982 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxLevelConfigServiceImpl.java @@ -3,9 +3,11 @@ package com.iformall.service.impl; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.domain.dto.WxCUserBasicInfoDto; import com.iformall.domain.po.WxLevelConfig; import com.iformall.domain.po.WxLevelMerchant; import com.iformall.domain.vo.WxLevelMerchantCVo; +import com.iformall.mapper.WxCUserBasicInfoMapper; import com.iformall.mapper.WxLevelConfigMapper; import com.iformall.mapper.WxLevelMerchantMapper; import com.iformall.service.WxLevelConfigService; @@ -28,17 +30,32 @@ public class WxLevelConfigServiceImpl implements WxLevelConfigService { @Autowired WxLevelMerchantMapper wxLevelMerchantapper; + @Autowired + WxCUserBasicInfoMapper wxCUserBasicInfoMapper; + @Override public PageInfo listAsPage(WxLevelConfig record, Integer pageIndex, Integer pageSize) { PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxLevelConfigMapper.findList(record)); - page.getList().stream().forEach(l->{ + + for (int i=0;i - - + + + +