package cn.ld.app.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.ld.app.activity.cmd.ActivityAddCmdExe;
import cn.ld.app.activity.cmd.ActivityUpdateCmdExe;
import cn.ld.app.activity.query.ActivityListQueryExe;
import cn.ld.app.activityRule.cmd.ActivityRuleAddCmdExe;
import cn.ld.app.activityRule.cmd.ActivityRuleDeleteCmdExe;
import cn.ld.app.activityRule.query.ActivityRuleListQueryExe;
import cn.ld.app.assembler.ActivityAssembler;
import cn.ld.app.assembler.AwardAssembler;
import cn.ld.app.award.cmd.AwardAddCmdExe;
import cn.ld.app.award.cmd.AwardUpdateCmdExe;
import cn.ld.app.award.query.AwardListQueryCmdExe;
import cn.ld.app.listener.event.ActivityCreateEvent;
import cn.ld.app.rule.cmd.RuleAddCmdExe;
import cn.ld.app.rule.cmd.RuleUpdateCmdExe;
import cn.ld.app.rule.query.RuleListQueryCmdExe;
import cn.ld.client.api.ActivityConfigService;
import cn.ld.client.dto.cmd.*;
import cn.ld.client.dto.query.ActivityListQuery;
import cn.ld.client.dto.query.ActivityRuleListQuery;
import cn.ld.client.dto.query.AwardListQuery;
import cn.ld.client.dto.query.RuleListQuery;
import cn.ld.client.dto.vo.*;
import cn.ld.config.util.AssertUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.AllArgsConstructor;
import org.springframework.context.event.ApplicationEventMulticaster;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author mojo
* @description: 活动配置整体服务
* @date 2022/12/21 0021 15:13
*/
@Service
@AllArgsConstructor
public class ActivityConfigServiceImpl implements ActivityConfigService {
private final ActivityAddCmdExe activityAddCmdExe;
private final RuleAddCmdExe ruleAddCmdExe;
private final ActivityRuleAddCmdExe activityRuleAddCmdExe;
private final AwardAddCmdExe awardAddCmdExe;
private final ActivityUpdateCmdExe activityUpdateCmdExe;
private final RuleUpdateCmdExe ruleUpdateCmdExe;
private final ActivityRuleDeleteCmdExe activityRuleDeleteCmdExe;
private final AwardUpdateCmdExe awardUpdateCmdExe;
private final ActivityListQueryExe activityListQueryExe;
private final RuleListQueryCmdExe ruleListQueryCmdExe;
private final ActivityRuleListQueryExe activityRuleListQueryExe;
private final AwardListQueryCmdExe awardListQueryCmdExe;
private final ApplicationEventMulticaster applicationEventMulticaster;
@Transactional(rollbackFor = Exception.class)
@Override
public ActivityConfigVO add(ActivityConfigAddCmd cmd) {
ActivityVO activityVO = activityAddCmdExe.execute(cmd.getActivityAddCmd());
List<RuleVO> activityRuleVOList = addActivityRule(activityVO, cmd.getRuleIdList());
List<AwardVO> awardVOList = addAward(activityVO, cmd.getAwardAddCmdList());
ActivityConfigVO activityConfigVO = new ActivityConfigVO();
activityConfigVO.setActivityVO(activityVO);
activityConfigVO.setRuleVOList(activityRuleVOList);
activityConfigVO.setAwardVOList(awardVOList);
//发送活动创建事件
ActivityCreateEvent activityCreateEvent = new ActivityCreateEvent("", activityConfigVO);
applicationEventMulticaster.multicastEvent(activityCreateEvent);
//优化:这里可以发送MQ
return activityConfigVO;
}
@Deprecated
@Transactional(rollbackFor = Exception.class)
@Override
public ActivityConfigVO update(ActivityConfigUpdateCmd cmd) {
ActivityVO activityVO = activityUpdateCmdExe.execute(cmd.getActivityUpdateCmd());
activityRuleDeleteCmdExe.execute(activityVO.getId());
List<RuleVO> ruleVOList = addActivityRule(activityVO, cmd.getRuleIdList());
List<AwardVO> awardVOList = updateAward(activityVO,cmd.getAwardUpdateCmdList());
ActivityConfigVO activityConfigVO = new ActivityConfigVO();
activityConfigVO.setActivityVO(activityVO);
activityConfigVO.setRuleVOList(ruleVOList);
activityConfigVO.setAwardVOList(awardVOList);
return activityConfigVO;
}
@Override
public ActivityConfigVO getOne(Long id) {
ActivityListQuery activityListQuery = new ActivityListQuery();
activityListQuery.setId(id);
List<ActivityVO> activityVOS = activityListQueryExe.execute(activityListQuery).getRecords();
AssertUtil.isTrue(CollectionUtil.isEmpty(activityVOS),"活动数据不存在");
ActivityConfigVO activityConfigVO = new ActivityConfigVO();
ActivityVO activityVO = activityVOS.get(0);
ActivityRuleListQuery activityRuleListQuery = new ActivityRuleListQuery();
activityRuleListQuery.setActivityId(activityVO.getId());
List<ActivityRuleVO> activityRuleVOS = activityRuleListQueryExe.execute(activityRuleListQuery);
AwardListQuery awardListQuery = new AwardListQuery();
awardListQuery.setActivityId(activityVO.getId());
awardListQuery.setPageSize(100);
List<AwardVO> awardVOList = awardListQueryCmdExe.execute(awardListQuery).getRecords();
List<RuleVO> ruleVOList = getRuleVOList(activityRuleVOS.stream().map(ActivityRuleVO::getRuleId).collect(Collectors.toList()));
activityConfigVO.setActivityVO(activityVO);
activityConfigVO.setRuleVOList(ruleVOList);
activityConfigVO.setAwardVOList(awardVOList);
return activityConfigVO;
}
@Override
public ActivityConfigCopyVO copy(Long id) {
ActivityConfigCopyVO copyVO = new ActivityConfigCopyVO();
ActivityConfigVO activityConfigVO = getOne(id);
ActivityVO activityVO = activityConfigVO.getActivityVO();
copyVO.setActivityAddCmd(ActivityAssembler.toAddCmd(activityVO));
copyVO.setRuleIdList(activityConfigVO.getRuleVOList().stream().map(RuleVO::getId).collect(Collectors.toList()));
copyVO.setAwardAddCmdList(
new Page<AwardVO>().setRecords(activityConfigVO.getAwardVOList())
.convert(AwardAssembler::toAddCmd).getRecords()
);
return copyVO;
}
@Deprecated
private List<AwardAddCmd> getAwardAddCmdList(ActivityConfigVO activityConfigVO) {
List<AwardAddCmd> awardAddCmdList = new ArrayList<>();
for (AwardVO awardVO : activityConfigVO.getAwardVOList()) {
AwardAddCmd awardAddCmd = AwardAssembler.toAddCmd(awardVO);
awardAddCmdList.add(awardAddCmd);
}
return awardAddCmdList;
}
private List<RuleVO> getRuleVOList(List<Long> ruleIdList){
RuleListQuery ruleListQuery = new RuleListQuery();
ruleListQuery.setIds(ruleIdList);
ruleListQuery.setPageSize(1000);
return ruleListQueryCmdExe.execute(ruleListQuery).getRecords();
}
private List<AwardVO> updateAward(ActivityVO activityVO, List<AwardUpdateCmd> awardUpdateCmdList) {
AssertUtil.isTrue(CollectionUtil.isEmpty(awardUpdateCmdList),"奖项更新列表不为空");
List<AwardVO> awardVOList = new ArrayList<>();
for (AwardUpdateCmd awardUpdateCmd : awardUpdateCmdList) {
AwardVO awardVO = awardUpdateCmdExe.execute(awardUpdateCmd);
awardVOList.add(awardVO);
}
return awardVOList;
}
private List<AwardVO> addAward(ActivityVO activityVO, List<AwardAddCmd> awardAddCmdList) {
AssertUtil.isTrue(CollectionUtil.isEmpty(awardAddCmdList),"奖项添加列表不为空");
ArrayList<AwardVO> awardVOS = new ArrayList<>();
for (AwardAddCmd awardAddCmd : awardAddCmdList) {
awardAddCmd.setActivityId(activityVO.getId());
AwardVO awardVO = awardAddCmdExe.execute(awardAddCmd);
awardVOS.add(awardVO);
//// TODO: 2022/12/22 0022 添加完奖项后扣除奖品库存 在奖项的执行器中
}
return awardVOS;
}
/**
* 添加若干规则
*/
priv
没有合适的资源?快使用搜索试试~ 我知道了~
一个基于SpringBoot、Redis、RocketMQ的抽奖项目源码.zip
共254个文件
java:205个
xml:30个
yml:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 180 浏览量
2022-12-30
11:22:41
上传
评论
收藏 218KB ZIP 举报
温馨提示
一个基于SpringBoot、Redis、RocketMQ的抽奖项目源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
一个基于SpringBoot、Redis、RocketMQ的抽奖项目源码.zip (254个子文件)
spring.factories 96B
.gitignore 400B
ActivityConfigServiceImpl.java 8KB
RedisDeductionAwardNumberDrawExe.java 5KB
RedisConfig.java 5KB
JwtTokenGlobalFilter.java 4KB
DefaultDrawExe.java 4KB
IpRequestRateLimiterGatewayFilterFactory.java 3KB
AwardAssembler.java 3KB
SysExceptionHandler.java 3KB
ResponseResultHandler.java 3KB
BaseDrawExe.java 3KB
ActivityAssembler.java 3KB
UserServiceImpl.java 3KB
ActivityServiceImpl.java 3KB
JwtUtil.java 3KB
PrizeAssembler.java 2KB
DruidConfig.java 2KB
AwardConvertor.java 2KB
UserGatewayImpl.java 2KB
RuleAssembler.java 2KB
ActivityRuleGateWayImpl.java 2KB
PrizeGateWayImpl.java 2KB
UserAssembler.java 2KB
AwardGatewayImpl.java 2KB
ActivityGateWayImpl.java 2KB
SecurityInterceptor.java 2KB
RuleGateWayImpl.java 2KB
PrizeConvertor.java 2KB
ActivityConvertor.java 2KB
AwardInventoryToRedisApplicationListener.java 2KB
JasyptUtil.java 2KB
ActivityDrawMessageProduct.java 2KB
UserConvertor.java 2KB
ActivityRuleConvertor.java 2KB
RuleConvertor.java 2KB
AwardServiceImpl.java 2KB
PrizeServiceImpl.java 2KB
ActivityDrawMessageConsume.java 1KB
RuleServiceImpl.java 1KB
AdminPrizeController.java 1KB
AdminAwardController.java 1KB
ActivityTime.java 1KB
AwardAddCmdExe.java 1KB
ActivityRuleAddCmdExe.java 1KB
UserController.java 1KB
ActivityRuleAssembler.java 1KB
AdminRuleController.java 1KB
ActivityController.java 1KB
LdCodeException.java 1KB
UserRegisterCmdExe.java 1KB
AdminActivityConfigController.java 1KB
ActivityRuleListQueryExe.java 1KB
UserLoginQueryExe.java 1KB
UserDB.java 1KB
Record.java 1KB
RecordStatus.java 1KB
SecurityUtil.java 1KB
ActivityRuleServiceImpl.java 1KB
RecordDB.java 1014B
UserService.java 1007B
ActivityAddCmd.java 1005B
ActivityDB.java 1002B
MyMetaObjectHandler.java 1001B
AwardDB.java 978B
Prize.java 978B
PrizeGateWay.java 977B
Activity.java 972B
PrizeDB.java 969B
ActivityAddCmdExe.java 968B
RecordEntity.java 966B
LocalDateTimeSerializerConfig.java 966B
Award.java 957B
ActivityUpdateCmd.java 956B
AcceptPrize.java 943B
RecordStatusScheduled.java 942B
RuleDB.java 940B
PrizeEntity.java 936B
Rule.java 933B
UserMapper.java 925B
User.java 911B
PrizeUpdateCmd.java 900B
PrizeMapper.java 897B
AdminUserController.java 888B
PassWord.java 888B
UserListByParamQueryExe.java 877B
PrizeAddCmd.java 877B
MyWebMvcConfig.java 861B
AwardEntity.java 860B
AwardUpdateCmd.java 858B
AwardAddCmd.java 842B
FileLoadUtil.java 836B
ActivityRuleDB.java 830B
RuleUpdateCmd.java 819B
UserEntity.java 815B
AwardMapper.java 802B
ActivityListQueryExe.java 793B
ActivityEntity.java 789B
PrizeListQueryExe.java 787B
UserUpdateCmd.java 785B
共 254 条
- 1
- 2
- 3
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6651
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功