延时任务修改直播间状态

This commit is contained in:
lifenlong 2021-06-03 10:54:48 +08:00
commit 9db40c197d
7 changed files with 60 additions and 40 deletions

View File

@ -280,8 +280,6 @@ lili:
notice-group: lili_notice_group notice-group: lili_notice_group
notice-send-topic: lili_send_notice_topic notice-send-topic: lili_send_notice_topic
notice-send-group: lili_send_notice_group notice-send-group: lili_send_notice_group
broadcast-topic: lili_broadcast_topic
broadcast-group: lili_broadcast_group
rocketmq: rocketmq:
name-server: 192.168.0.116:9876 name-server: 192.168.0.116:9876
producer: producer:

View File

@ -67,29 +67,28 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
studio.setStoreId(UserContext.getCurrentUser().getStoreId()); studio.setStoreId(UserContext.getCurrentUser().getStoreId());
studio.setStatus(StudioStatusEnum.NEW.name()); studio.setStatus(StudioStatusEnum.NEW.name());
//直播间添加成功发送直播间开启关闭延时任务 //直播间添加成功发送直播间开启关闭延时任务
if(this.save(studio)){ if (this.save(studio)) {
//直播开启延时任务 //直播开启延时任务
BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(),StudioStatusEnum.START.name()); BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR, TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getStartTime()), broadcastMessage, Long.parseLong(studio.getStartTime()) * 1000L, broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST, studio.getId()), DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic()); rocketmqCustomProperties.getPromotionTopic());
// 发送促销活动开始的延时任务 // 发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg, DateUtil.getDelayTime(Long.parseLong(studio.getStartTime()))); this.timeTrigger.addDelay(timeTriggerMsg, DateUtil.getDelayTime(Long.parseLong(studio.getStartTime()) * 1000L));
//直播结束延时任务 //直播结束延时任务
broadcastMessage = new BroadcastMessage(studio.getId(),StudioStatusEnum.END.name()); broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.END.name());
timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR, timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getEndTime()), broadcastMessage, Long.parseLong(studio.getEndTime()) * 1000L, broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST, studio.getId()), DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic()); rocketmqCustomProperties.getPromotionTopic());
// 发送促销活动开始的延时任务 // 发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg, DateUtil.getDelayTime(Long.parseLong(studio.getEndTime()))); this.timeTrigger.addDelay(timeTriggerMsg, DateUtil.getDelayTime(Long.parseLong(studio.getEndTime()) * 1000L));
} }
return true; return true;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace();
throw new ServiceException(ResultCode.ERROR); throw new ServiceException(ResultCode.ERROR);
} }
@ -97,29 +96,29 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
@Override @Override
public Boolean edit(Studio studio) { public Boolean edit(Studio studio) {
Studio oldStudio=this.getById(studio.getId()); Studio oldStudio = this.getById(studio.getId());
wechatLivePlayerUtil.editRoom(studio); wechatLivePlayerUtil.editRoom(studio);
if(this.updateById(studio)){ if (this.updateById(studio)) {
// 发送更新延时任务 // 发送更新延时任务
//直播间开始 //直播间开始
BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(),StudioStatusEnum.START.name()); BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
this.timeTrigger.edit( this.timeTrigger.edit(
TimeExecuteConstant.BROADCAST_EXECUTOR, TimeExecuteConstant.BROADCAST_EXECUTOR,
broadcastMessage, broadcastMessage,
Long.parseLong(oldStudio.getStartTime()), Long.parseLong(oldStudio.getStartTime()),
Long.parseLong(studio.getStartTime()), Long.parseLong(studio.getStartTime()),
DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST,studio.getId()), DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST, studio.getId()),
DateUtil.getDelayTime(Long.parseLong(studio.getStartTime())), DateUtil.getDelayTime(Long.parseLong(studio.getStartTime())),
rocketmqCustomProperties.getPromotionTopic()); rocketmqCustomProperties.getPromotionTopic());
//直播间结束 //直播间结束
broadcastMessage = new BroadcastMessage(studio.getId(),StudioStatusEnum.START.name()); broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
this.timeTrigger.edit( this.timeTrigger.edit(
TimeExecuteConstant.BROADCAST_EXECUTOR, TimeExecuteConstant.BROADCAST_EXECUTOR,
broadcastMessage, broadcastMessage,
Long.parseLong(oldStudio.getEndTime()), Long.parseLong(oldStudio.getEndTime()),
Long.parseLong(studio.getEndTime()), Long.parseLong(studio.getEndTime()),
DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST,studio.getId()), DelayQueueTools.wrapperUniqueKey(DelayQueueType.BROADCAST, studio.getId()),
DateUtil.getDelayTime(Long.parseLong(studio.getEndTime())), DateUtil.getDelayTime(Long.parseLong(studio.getEndTime())),
rocketmqCustomProperties.getPromotionTopic()); rocketmqCustomProperties.getPromotionTopic());
} }
@ -188,7 +187,7 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
public IPage<Studio> studioList(PageVO pageVO, Integer recommend, String status) { public IPage<Studio> studioList(PageVO pageVO, Integer recommend, String status) {
return this.page(PageUtil.initPage(pageVO), new QueryWrapper<Studio>() return this.page(PageUtil.initPage(pageVO), new QueryWrapper<Studio>()
.eq(recommend != null, "recommend", true) .eq(recommend != null, "recommend", true)
.eq(status!=null,"status",status) .eq(status != null, "status", status)
.orderByDesc("create_time")); .orderByDesc("create_time"));
} }
@ -196,8 +195,8 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
@Override @Override
public void updateStudioStatus(BroadcastMessage broadcastMessage) { public void updateStudioStatus(BroadcastMessage broadcastMessage) {
this.update(new LambdaUpdateWrapper<Studio>() this.update(new LambdaUpdateWrapper<Studio>()
.eq(Studio::getId,broadcastMessage.getStudioId()) .eq(Studio::getId, broadcastMessage.getStudioId())
.set(Studio::getStatus,broadcastMessage.getStatus())); .set(Studio::getStatus, broadcastMessage.getStatus()));
} }
/** /**

View File

@ -1,5 +1,7 @@
package cn.lili.modules.statistics.service; package cn.lili.modules.statistics.service;
import cn.lili.modules.statistics.model.dto.GoodsStatisticsQueryParam;
import cn.lili.modules.statistics.model.dto.StatisticsQueryParam;
import cn.lili.modules.statistics.model.vo.*; import cn.lili.modules.statistics.model.vo.*;
import java.util.List; import java.util.List;
@ -38,14 +40,14 @@ public interface IndexStatisticsService {
* *
* @return 热卖商品TOP10 * @return 热卖商品TOP10
*/ */
List<GoodsStatisticsDataVO> goodsStatisticsOfMonth(); List<GoodsStatisticsDataVO> goodsStatistics(GoodsStatisticsQueryParam statisticsQueryParam);
/** /**
* 查询热卖店铺TOP10 * 查询热卖店铺TOP10
* *
* @return 当月的热卖店铺TOP10 * @return 当月的热卖店铺TOP10
*/ */
List<StoreStatisticsDataVO> storeStatisticsOfMonth(); List<StoreStatisticsDataVO> storeStatistics(StatisticsQueryParam statisticsQueryParam);
} }

View File

@ -14,7 +14,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -39,7 +38,7 @@ public class GoodsStatisticsDataServiceImpl extends ServiceImpl<GoodsStatisticsD
queryWrapper.groupBy("goods_name"); queryWrapper.groupBy("goods_name");
queryWrapper.eq(!StringUtils.isEmpty(goodsStatisticsQueryParam.getStoreId()), "store_id", goodsStatisticsQueryParam.getStoreId()); queryWrapper.eq(!StringUtils.isEmpty(goodsStatisticsQueryParam.getStoreId()), "store_id", goodsStatisticsQueryParam.getStoreId());
//查询前一百条记录 //查询前X记录
Page page = new Page<GoodsStatisticsDataVO>(1, num); Page page = new Page<GoodsStatisticsDataVO>(1, num);
return this.baseMapper.getGoodsStatisticsData(page, queryWrapper); return this.baseMapper.getGoodsStatisticsData(page, queryWrapper);
} }
@ -62,10 +61,10 @@ public class GoodsStatisticsDataServiceImpl extends ServiceImpl<GoodsStatisticsD
queryWrapper.between("create_time", date[0], date[1]); queryWrapper.between("create_time", date[0], date[1]);
//判断是按照数量统计还是按照金额统计 //判断是按照数量统计还是按照金额统计
if (goodsStatisticsQueryParam.getType().equals(StatisticsQuery.NUM.name())) { if (goodsStatisticsQueryParam.getType().equals(StatisticsQuery.PRICE.name())) {
queryWrapper.orderByDesc("num");
} else {
queryWrapper.orderByDesc("price"); queryWrapper.orderByDesc("price");
} else {
queryWrapper.orderByDesc("num");
} }
//设置为付款查询 //设置为付款查询
queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name()); queryWrapper.eq("flow_type", FlowTypeEnum.PAY.name());

View File

@ -19,9 +19,9 @@ import cn.lili.modules.statistics.mapper.StoreStatisticsDataMapper;
import cn.lili.modules.statistics.model.dto.GoodsStatisticsQueryParam; import cn.lili.modules.statistics.model.dto.GoodsStatisticsQueryParam;
import cn.lili.modules.statistics.model.dto.StatisticsQueryParam; import cn.lili.modules.statistics.model.dto.StatisticsQueryParam;
import cn.lili.modules.statistics.model.enums.SearchTypeEnum; import cn.lili.modules.statistics.model.enums.SearchTypeEnum;
import cn.lili.modules.statistics.model.enums.StatisticsQuery;
import cn.lili.modules.statistics.model.vo.*; import cn.lili.modules.statistics.model.vo.*;
import cn.lili.modules.statistics.service.*; import cn.lili.modules.statistics.service.*;
import cn.lili.modules.statistics.util.StatisticsDateUtil;
import cn.lili.modules.store.entity.enums.BillStatusEnum; import cn.lili.modules.store.entity.enums.BillStatusEnum;
import cn.lili.modules.store.service.BillService; import cn.lili.modules.store.service.BillService;
import cn.lili.modules.store.service.StoreService; import cn.lili.modules.store.service.StoreService;
@ -31,6 +31,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -146,7 +147,7 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService {
//下单统计 //下单统计
Map<String, Object> map = orderStatisticsDataService.getOrderStatisticsPrice(); Map<String, Object> map = orderStatisticsDataService.getOrderStatisticsPrice();
//今日下单数 //今日下单数
indexStatisticsVO.setTodayOrderNum(map.get("num") == null ? 0L : (Long)map.get("num")); indexStatisticsVO.setTodayOrderNum(map.get("num") == null ? 0L : (Long) map.get("num"));
//今日下单金额 //今日下单金额
indexStatisticsVO.setTodayOrderPrice(map.get("price") == null ? 0D : (Double) map.get("price")); indexStatisticsVO.setTodayOrderPrice(map.get("price") == null ? 0D : (Double) map.get("price"));
@ -234,20 +235,19 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService {
} }
@Override @Override
public List<GoodsStatisticsDataVO> goodsStatisticsOfMonth() { public List<GoodsStatisticsDataVO> goodsStatistics(GoodsStatisticsQueryParam statisticsQueryParam) {
//获取查询参数
GoodsStatisticsQueryParam goodsStatisticsQueryParam = getGoodsStatisticsQueryParam();
//查询商品 //查询商品
return goodsStatisticsDataService.getGoodsStatisticsData(goodsStatisticsQueryParam, 10); return goodsStatisticsDataService.getGoodsStatisticsData(statisticsQueryParam, 10);
} }
@Override @Override
public List<StoreStatisticsDataVO> storeStatisticsOfMonth() { public List<StoreStatisticsDataVO> storeStatistics(StatisticsQueryParam statisticsQueryParam) {
QueryWrapper queryWrapper = Wrappers.query(); QueryWrapper queryWrapper = Wrappers.query();
queryWrapper.between("create_time", cn.hutool.core.date.DateUtil.beginOfYear(new DateTime()), Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam);
cn.hutool.core.date.DateUtil.endOfYear(new DateTime())); Date startTime = dates[0], endTime = dates[1];
queryWrapper.between("create_time", startTime, endTime);
queryWrapper.orderByDesc("price"); queryWrapper.orderByDesc("price");
@ -288,7 +288,6 @@ public class IndexStatisticsServiceImpl implements IndexStatisticsService {
if (UserContext.getCurrentUser().getRole().equals(UserEnums.STORE)) { if (UserContext.getCurrentUser().getRole().equals(UserEnums.STORE)) {
goodsStatisticsQueryParam.setStoreId(UserContext.getCurrentUser().getStoreId()); goodsStatisticsQueryParam.setStoreId(UserContext.getCurrentUser().getStoreId());
} }
goodsStatisticsQueryParam.setType(StatisticsQuery.PRICE.name());
DateTime dateTime = new DateTime(); DateTime dateTime = new DateTime();
goodsStatisticsQueryParam.setYear(dateTime.year()); goodsStatisticsQueryParam.setYear(dateTime.year());
goodsStatisticsQueryParam.setMonth(dateTime.monthBaseOne()); goodsStatisticsQueryParam.setMonth(dateTime.monthBaseOne());

View File

@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
import cn.lili.modules.statistics.mapper.MemberStatisticsDataMapper; import cn.lili.modules.statistics.mapper.MemberStatisticsDataMapper;
import cn.lili.modules.statistics.model.dos.MemberStatisticsData; import cn.lili.modules.statistics.model.dos.MemberStatisticsData;
import cn.lili.modules.statistics.model.dto.StatisticsQueryParam; import cn.lili.modules.statistics.model.dto.StatisticsQueryParam;
import cn.lili.modules.statistics.model.enums.SearchTypeEnum;
import cn.lili.modules.statistics.service.MemberStatisticsDataService; import cn.lili.modules.statistics.service.MemberStatisticsDataService;
import cn.lili.modules.statistics.util.StatisticsDateUtil; import cn.lili.modules.statistics.util.StatisticsDateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -61,8 +63,23 @@ public class MemberStatisticsDataServiceImpl extends ServiceImpl<MemberStatistic
@Override @Override
public List<MemberStatisticsData> statistics(StatisticsQueryParam statisticsQueryParam) { public List<MemberStatisticsData> statistics(StatisticsQueryParam statisticsQueryParam) {
Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam); Date[] dates = StatisticsDateUtil.getDateArray(statisticsQueryParam);
Date startTime = dates[0], endTime = dates[1]; Date startTime = dates[0], endTime = dates[1];
//如果统计今天则自行构造数据
if(statisticsQueryParam.getSearchType().equals(SearchTypeEnum.TODAY.name())){
//构建数据然后返回集合提供给前端展示
MemberStatisticsData memberStatisticsData = new MemberStatisticsData();
memberStatisticsData.setMemberCount(this.memberCount(endTime));
memberStatisticsData.setCreateDate(startTime);
memberStatisticsData.setActiveQuantity(this.activeQuantity(startTime));
memberStatisticsData.setNewlyAdded(this.newlyAdded(startTime, endTime));
List result = new ArrayList<MemberStatisticsData>();
result.add(memberStatisticsData);
return result;
}
QueryWrapper queryWrapper = Wrappers.query(); QueryWrapper queryWrapper = Wrappers.query();
queryWrapper.between("create_date", startTime, endTime); queryWrapper.between("create_date", startTime, endTime);

View File

@ -2,6 +2,9 @@ package cn.lili.controller.statistics;
import cn.lili.common.enums.ResultUtil; import cn.lili.common.enums.ResultUtil;
import cn.lili.common.vo.ResultMessage; import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.statistics.model.dto.GoodsStatisticsQueryParam;
import cn.lili.modules.statistics.model.dto.StatisticsQueryParam;
import cn.lili.modules.statistics.model.enums.StatisticsQuery;
import cn.lili.modules.statistics.model.vo.GoodsStatisticsDataVO; import cn.lili.modules.statistics.model.vo.GoodsStatisticsDataVO;
import cn.lili.modules.statistics.model.vo.IndexNoticeVO; import cn.lili.modules.statistics.model.vo.IndexNoticeVO;
import cn.lili.modules.statistics.model.vo.IndexStatisticsVO; import cn.lili.modules.statistics.model.vo.IndexStatisticsVO;
@ -46,14 +49,17 @@ public class IndexStatisticsManagerController {
@ApiOperation(value = "获取首页查询热卖商品TOP10") @ApiOperation(value = "获取首页查询热卖商品TOP10")
@GetMapping("/goodsStatistics") @GetMapping("/goodsStatistics")
public ResultMessage<List<GoodsStatisticsDataVO>> goodsStatistics() { public ResultMessage<List<GoodsStatisticsDataVO>> goodsStatistics(GoodsStatisticsQueryParam goodsStatisticsQueryParam) {
return ResultUtil.data(indexStatisticsService.goodsStatisticsOfMonth());
//按照金额查询
goodsStatisticsQueryParam.setType(StatisticsQuery.PRICE.name());
return ResultUtil.data(indexStatisticsService.goodsStatistics(goodsStatisticsQueryParam));
} }
@ApiOperation(value = "获取首页查询热卖店铺TOP10") @ApiOperation(value = "获取首页查询热卖店铺TOP10")
@GetMapping("/storeStatistics") @GetMapping("/storeStatistics")
public ResultMessage<List<StoreStatisticsDataVO>> storeStatistics() { public ResultMessage<List<StoreStatisticsDataVO>> storeStatistics(StatisticsQueryParam statisticsQueryParam) {
return ResultUtil.data(indexStatisticsService.storeStatisticsOfMonth()); return ResultUtil.data(indexStatisticsService.storeStatistics(statisticsQueryParam));
} }
@ApiOperation(value = "通知提示信息") @ApiOperation(value = "通知提示信息")