|
@@ -1,23 +1,37 @@
|
|
|
package com.zanxiang.manage.service.Impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.zanxiang.common.enums.DeleteEnum;
|
|
|
+import com.zanxiang.common.enums.StatusEnum;
|
|
|
+import com.zanxiang.common.text.UUID;
|
|
|
import com.zanxiang.common.utils.bean.BeanUtils;
|
|
|
import com.zanxiang.manage.domain.dto.PromoChannelDTO;
|
|
|
+import com.zanxiang.manage.domain.dto.PromoMediaDTO;
|
|
|
+import com.zanxiang.manage.domain.params.PromoChannelAddUpdateParam;
|
|
|
+import com.zanxiang.manage.domain.params.PromoChannelListParam;
|
|
|
import com.zanxiang.manage.domain.vo.PromoChannelChoiceVO;
|
|
|
+import com.zanxiang.manage.domain.vo.PromoChannelListVO;
|
|
|
import com.zanxiang.manage.service.PromoAccountService;
|
|
|
import com.zanxiang.manage.service.PromoChannelService;
|
|
|
+import com.zanxiang.manage.service.PromoMediaService;
|
|
|
+import com.zanxiang.manage.service.PromoSiteService;
|
|
|
+import com.zanxiang.mybatis.entity.PromoAccount;
|
|
|
import com.zanxiang.mybatis.entity.PromoChannel;
|
|
|
+import com.zanxiang.mybatis.entity.PromoSite;
|
|
|
import com.zanxiang.mybatis.mapper.PromoChannelMapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.logging.log4j.util.Strings;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.*;
|
|
|
import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -33,6 +47,104 @@ public class PromoChannelServiceImpl extends ServiceImpl<PromoChannelMapper, Pro
|
|
|
@Autowired
|
|
|
private PromoAccountService promoAccountService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PromoMediaService promoMediaService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private PromoSiteService promoSiteService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询推广媒体列表
|
|
|
+ *
|
|
|
+ * @param param : 推广媒体列表查询参数
|
|
|
+ * @return : 返回分页信息
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public IPage<PromoChannelListVO> list(PromoChannelListParam param) {
|
|
|
+ Map<Long, PromoMediaDTO> promoMediaMap = promoMediaService.promoMediaMap();
|
|
|
+ return page(param.toPage(), new QueryWrapper<PromoChannel>().lambda()
|
|
|
+ .orderByDesc(PromoChannel::getCreateTime))
|
|
|
+ .convert(promoAccount -> this.toVo(promoMediaMap, promoAccount));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 给签证官
|
|
|
+ *
|
|
|
+ * @param promoMediaMap 促销媒体地图
|
|
|
+ * @param promoChannel 推广渠道
|
|
|
+ * @return {@link PromoChannelListVO}
|
|
|
+ */
|
|
|
+ private PromoChannelListVO toVo(Map<Long, PromoMediaDTO> promoMediaMap, PromoChannel promoChannel) {
|
|
|
+ PromoChannelListVO promoChannelListVO = BeanUtils.copy(promoChannel, PromoChannelListVO.class);
|
|
|
+ if (Objects.isNull(promoChannelListVO)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return promoChannelListVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 推广账号新增或者更新
|
|
|
+ *
|
|
|
+ * @param param : 更新参数
|
|
|
+ * @return : 返回结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean addOrUpdate(PromoChannelAddUpdateParam param) {
|
|
|
+ PromoAccount promoAccount = promoAccountService.getById(param.getPromoAccountId());
|
|
|
+ PromoSite promoSite = promoSiteService.getById(param.getPromoSiteId());
|
|
|
+ Long id = param.getId();
|
|
|
+ //更新
|
|
|
+ if (id != null) {
|
|
|
+ PromoChannel promoChannel = super.getById(param.getId());
|
|
|
+ promoChannel.setAccountId(promoAccount.getId());
|
|
|
+ promoChannel.setMediaId(promoAccount.getMediaId());
|
|
|
+ promoChannel.setPromoSiteId(promoSite.getId());
|
|
|
+ promoChannel.setProviderId(param.getProviderId());
|
|
|
+ promoChannel.setGameId(param.getGameId());
|
|
|
+ promoChannel.setRemark(param.getRemark());
|
|
|
+ promoChannel.setUpdateTime(LocalDateTime.now());
|
|
|
+ return super.updateById(promoChannel);
|
|
|
+ }
|
|
|
+ //创建对象
|
|
|
+ PromoChannel promoChannel = PromoChannel.builder()
|
|
|
+ .accountId(promoAccount.getId())
|
|
|
+ .mediaId(promoAccount.getMediaId())
|
|
|
+ .promoSiteId(promoSite.getId())
|
|
|
+ .providerId(param.getProviderId())
|
|
|
+ .gameId(param.getGameId())
|
|
|
+ .remark(param.getRemark())
|
|
|
+ .status(StatusEnum.YES.getCode())
|
|
|
+ .isDelete(DeleteEnum.NO.getCode())
|
|
|
+ .createTime(LocalDateTime.now())
|
|
|
+ .updateTime(LocalDateTime.now())
|
|
|
+ .build();
|
|
|
+ //创建渠道
|
|
|
+ Integer channelCount = param.getChannelCount();
|
|
|
+ List<PromoChannel> promoChannelList = new ArrayList<>();
|
|
|
+ for (int i = 0; i < channelCount; i++) {
|
|
|
+ PromoChannel channel = BeanUtils.copy(promoChannel, PromoChannel.class);
|
|
|
+ channel.setChannel(UUID.randomUUID().toString().replace("-", ""));
|
|
|
+ }
|
|
|
+ return super.saveBatch(promoChannelList);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据主键更新状态
|
|
|
+ *
|
|
|
+ * @param id : 主键id
|
|
|
+ * @param status : 状态
|
|
|
+ * @return : 返回更新结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Boolean statusUpdate(Long id, Integer status) {
|
|
|
+ return super.update(new LambdaUpdateWrapper<PromoChannel>()
|
|
|
+ .set(PromoChannel::getStatus, status)
|
|
|
+ .set(PromoChannel::getUpdateTime, LocalDateTime.now())
|
|
|
+ .eq(PromoChannel::getId, id));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 注册渠道选择列表查询
|
|
|
*
|
|
@@ -58,6 +170,13 @@ public class PromoChannelServiceImpl extends ServiceImpl<PromoChannelMapper, Pro
|
|
|
return Collections.emptyMap();
|
|
|
}
|
|
|
List<PromoChannelDTO> promoChannelDTOList = BeanUtils.copyList(promoChannelList, PromoChannelDTO.class);
|
|
|
+ Map<Long, PromoMediaDTO> promoMediaMap = promoMediaService.promoMediaMap();
|
|
|
+ promoChannelDTOList.forEach(promoChannelDTO -> {
|
|
|
+ Long mediaId = promoChannelDTO.getMediaId();
|
|
|
+ if (promoMediaMap.get(mediaId) != null) {
|
|
|
+ promoChannelDTO.setMediaName(promoMediaMap.get(mediaId).getName());
|
|
|
+ }
|
|
|
+ });
|
|
|
return promoChannelDTOList.stream().collect(Collectors.toMap(PromoChannelDTO::getId, Function.identity()));
|
|
|
}
|
|
|
|
|
@@ -73,6 +192,13 @@ public class PromoChannelServiceImpl extends ServiceImpl<PromoChannelMapper, Pro
|
|
|
return Collections.emptyMap();
|
|
|
}
|
|
|
List<PromoChannelDTO> promoChannelDTOList = BeanUtils.copyList(promoChannelList, PromoChannelDTO.class);
|
|
|
+ Map<Long, PromoMediaDTO> promoMediaMap = promoMediaService.promoMediaMap();
|
|
|
+ promoChannelDTOList.forEach(promoChannelDTO -> {
|
|
|
+ Long mediaId = promoChannelDTO.getMediaId();
|
|
|
+ if (promoMediaMap.get(mediaId) != null) {
|
|
|
+ promoChannelDTO.setMediaName(promoMediaMap.get(mediaId).getName());
|
|
|
+ }
|
|
|
+ });
|
|
|
return promoChannelDTOList.stream().collect(Collectors.toMap(PromoChannelDTO::getId, Function.identity()));
|
|
|
}
|
|
|
|