From 7af51253563063dc0584896a06e01d54542eeaff Mon Sep 17 00:00:00 2001 From: bynt Date: Thu, 20 Apr 2023 14:49:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B8=A0=E9=81=93=E5=95=86?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ad-platform-management/pom.xml | 7 ++ .../controller/CustomManageController.java | 12 ++- .../agent/entity/ChannelCustomTag.java | 63 +++++++++++ .../ChannelCustomRepository.java} | 15 ++- .../ChannelCustomTagRepository.java | 40 +++++++ .../ChannelResourceAssignRepository.java} | 4 +- .../agent/service/CustomManageService.java | 26 +++++ .../impl/ChannelManageServiceImpl.java | 18 ++-- .../ChannelResourceAssignServiceImpl.java | 16 +-- .../service/impl/CustomManageServiceImpl.java | 100 +++++++++++++++--- .../baiye/modules/platform/domain/Agent.java | 1 - .../system/service/impl/UserServiceImpl.java | 7 +- .../main/java/com/baiye/util/CSVFileUtil.java | 6 +- .../main/java/com/baiye/util/FirstLetter.java | 37 +++++++ .../src/main/resources/config/application.yml | 5 +- .../src/test/java/com/baiye/CustomTest.java | 42 ++++++++ .../com/baiye/model/enums/UrlLinkEnum.java | 59 +++++++++++ pom.xml | 8 ++ 18 files changed, 418 insertions(+), 48 deletions(-) create mode 100644 ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/entity/ChannelCustomTag.java rename ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/{dao/ChannelCustomDao.java => repository/ChannelCustomRepository.java} (74%) create mode 100644 ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelCustomTagRepository.java rename ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/{dao/ChannelResourceAssignDao.java => repository/ChannelResourceAssignRepository.java} (60%) create mode 100644 ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/FirstLetter.java create mode 100644 ad-platform-manage/ad-platform-management/src/test/java/com/baiye/CustomTest.java create mode 100644 ad-platform-pojo/src/main/java/com/baiye/model/enums/UrlLinkEnum.java diff --git a/ad-platform-manage/ad-platform-management/pom.xml b/ad-platform-manage/ad-platform-management/pom.xml index 63352de4..4b21db2c 100644 --- a/ad-platform-manage/ad-platform-management/pom.xml +++ b/ad-platform-manage/ad-platform-management/pom.xml @@ -174,12 +174,19 @@ core 3.1.0 + + com.google.zxing javase 3.1.0 + + com.belerweb + pinyin4j + + diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/controller/CustomManageController.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/controller/CustomManageController.java index b8b65679..d61a5a9e 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/controller/CustomManageController.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/controller/CustomManageController.java @@ -6,12 +6,15 @@ import com.baiye.modules.agent.entity.query.ChannelQuery; import com.baiye.modules.agent.service.CustomManageService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Map; + /** * @author wjt * @date 2023/4/12 @@ -44,7 +47,14 @@ public class CustomManageController { @GetMapping("/link") @ApiOperation("生成链接") public CommonResponse addLink(@RequestParam("customId") Long customId, @RequestParam("type") Integer type) { + String linkUrl = customManageService.createLinkUrl(customId, type); + return CommonResponse.createBySuccess(linkUrl); + } + - return CommonResponse.createBySuccess(); + @GetMapping("/linkList") + @ApiOperation("渠道商链接地址") + public CommonResponse> findCustomList(@RequestParam("customId") Long customId) { + return CommonResponse.createBySuccess(customManageService.findUrlByCustomId(customId)); } } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/entity/ChannelCustomTag.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/entity/ChannelCustomTag.java new file mode 100644 index 00000000..ca88feb9 --- /dev/null +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/entity/ChannelCustomTag.java @@ -0,0 +1,63 @@ +/* +* Copyright 2019-2020 Zheng Jie +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package com.baiye.modules.agent.entity; + +import com.baiye.model.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; + +/** +* @website https://el-admin.vip +* @description / +* @author Enzo +* @date 2021-12-30 +**/ +@Entity +@Getter +@Setter +@Table(name="tb_channel_custom_tag") +@EntityListeners(AuditingEntityListener.class) +public class ChannelCustomTag extends BaseEntity implements Serializable { + + private static final long serialVersionUID = -1582474376747148049L; + + @Id + @Column(name = "id") + @ApiModelProperty(value = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + + @Column(name = "tag_type") + @ApiModelProperty(value = "标志类型") + private Integer tagType; + + @Column(name = "tag_str") + @ApiModelProperty(value = "标志值") + private String tagStr; + + + @ApiModelProperty(value = "渠道商id") + @Column(name = "channel_id") + private Long channelId; + + +} diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/dao/ChannelCustomDao.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelCustomRepository.java similarity index 74% rename from ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/dao/ChannelCustomDao.java rename to ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelCustomRepository.java index fce6bae3..91e8f78f 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/dao/ChannelCustomDao.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelCustomRepository.java @@ -1,4 +1,4 @@ -package com.baiye.modules.agent.dao; +package com.baiye.modules.agent.repository; import com.baiye.modules.agent.entity.ChannelCustom; import org.springframework.data.jpa.repository.JpaRepository; @@ -15,7 +15,7 @@ import java.util.Set; * @date 2023/4/12 */ @Repository -public interface ChannelCustomDao extends JpaRepository, JpaSpecificationExecutor { +public interface ChannelCustomRepository extends JpaRepository, JpaSpecificationExecutor { /** * 通过名称查询 @@ -52,4 +52,15 @@ public interface ChannelCustomDao extends JpaRepository, Jp * @return */ ChannelCustom findByUserId(Long userId); + + + /** + * 用户id查询渠道商 + * + * @param userId + * @param status + * @return + */ + @Query("from ChannelCustom where userId = ?1 and status = ?2") + ChannelCustom findByUserIdAndStatus(Long userId, Integer status); } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelCustomTagRepository.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelCustomTagRepository.java new file mode 100644 index 00000000..dff69a12 --- /dev/null +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelCustomTagRepository.java @@ -0,0 +1,40 @@ +package com.baiye.modules.agent.repository; + +import com.baiye.modules.agent.entity.ChannelCustom; +import com.baiye.modules.agent.entity.ChannelCustomTag; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author Enzo + * @date 2023-4-20 + */ +@Repository +public interface ChannelCustomTagRepository extends JpaRepository, JpaSpecificationExecutor { + + + + /** + * 查询配置 + * @param customId 渠道商 + * @return + */ + List findByChannelId(Long customId); + + /** + * 查询配置 + * @param customId 渠道商 + * @param type 类型 + * @return + */ + @Query("from ChannelCustomTag where channelId = ?1 and tagType = ?2") + ChannelCustomTag findByCustomIdAndType(Long customId, Integer type); + + + + +} diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/dao/ChannelResourceAssignDao.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelResourceAssignRepository.java similarity index 60% rename from ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/dao/ChannelResourceAssignDao.java rename to ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelResourceAssignRepository.java index 21fdf7e3..d457ac06 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/dao/ChannelResourceAssignDao.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/repository/ChannelResourceAssignRepository.java @@ -1,4 +1,4 @@ -package com.baiye.modules.agent.dao; +package com.baiye.modules.agent.repository; import com.baiye.modules.agent.entity.ChannelResourceAssign; import org.springframework.data.jpa.repository.JpaRepository; @@ -10,5 +10,5 @@ import org.springframework.stereotype.Repository; * @date 2023/4/13 */ @Repository -public interface ChannelResourceAssignDao extends JpaRepository, JpaSpecificationExecutor { +public interface ChannelResourceAssignRepository extends JpaRepository, JpaSpecificationExecutor { } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/CustomManageService.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/CustomManageService.java index 27165198..1f141d1f 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/CustomManageService.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/CustomManageService.java @@ -5,6 +5,8 @@ import com.baiye.modules.agent.entity.ChannelCustom; import com.baiye.modules.agent.entity.query.ChannelQuery; import org.springframework.data.domain.Pageable; +import java.util.Map; + /** * @author wjt * @date 2023/4/12 @@ -37,4 +39,28 @@ public interface CustomManageService { */ Object queryAll(ChannelQuery channelCustomQuery, Pageable pageable); + /** + * 创建智能链接 + * @param customId + * @param type + * @return + */ + String createLinkUrl(Long customId, Integer type); + + /** + * 渠道id查询列表 + * @param customId + * @return + */ + Map findUrlByCustomId(Long customId); + + + /** + * 根据用户id查询代理商 + * + * @param userId + * @param status + * @return + */ + ChannelCustom findCustomByUserIdAndStatus(Long userId, Integer status); } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelManageServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelManageServiceImpl.java index b7f7e529..7a451233 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelManageServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelManageServiceImpl.java @@ -3,7 +3,7 @@ package com.baiye.modules.agent.service.impl; import cn.hutool.core.collection.CollUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.http.CommonResponse; -import com.baiye.modules.agent.dao.ChannelCustomDao; +import com.baiye.modules.agent.repository.ChannelCustomRepository; import com.baiye.modules.agent.entity.ChannelCustom; import com.baiye.modules.agent.entity.query.ChannelQuery; import com.baiye.modules.agent.service.ChannelManageService; @@ -29,12 +29,12 @@ import java.util.stream.Collectors; @Service @RequiredArgsConstructor public class ChannelManageServiceImpl implements ChannelManageService { - private final ChannelCustomDao channelCustomDao; + private final ChannelCustomRepository channelCustomRepository; private final UserService userService; @Override public CommonResponse addChannel(String channelName, String phone, Long userId) { - channelCustomDao.save(new ChannelCustom().addChannel(channelName, phone, userId)); + channelCustomRepository.save(new ChannelCustom().addChannel(channelName, phone, userId)); return CommonResponse.createBySuccess(); } @@ -50,7 +50,7 @@ public class ChannelManageServiceImpl implements ChannelManageService { } PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort); - Page channelCustoms = channelCustomDao.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, channelQuery, criteriaBuilder), pageRequest); + Page channelCustoms = channelCustomRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, channelQuery, criteriaBuilder), pageRequest); List content = new ArrayList<>(channelCustoms.getContent()); if (CollUtil.isEmpty(content)) { return channelCustoms; @@ -64,7 +64,7 @@ public class ChannelManageServiceImpl implements ChannelManageService { } //查询出所有子集 Set set = parentMap.keySet(); - List byParentId = channelCustomDao.findByParentId(set); + List byParentId = channelCustomRepository.findByParentId(set); content.addAll(byParentId); //子集 Map> userMap = content.stream().filter(channelCustom -> channelCustom.getParentId() != null) @@ -77,7 +77,7 @@ public class ChannelManageServiceImpl implements ChannelManageService { if (parentMap.containsKey(key)) { channelCustom = parentMap.get(key); } else { - channelCustom = channelCustomDao.findById(key).orElse(new ChannelCustom()); + channelCustom = channelCustomRepository.findById(key).orElse(new ChannelCustom()); } List children = userMap.get(key); if (CollUtil.isNotEmpty(children)) { @@ -99,7 +99,7 @@ public class ChannelManageServiceImpl implements ChannelManageService { @Override @Transactional(rollbackFor = Exception.class) public CommonResponse active(Set ids) { - List channelCustoms = channelCustomDao.findAllById(ids); + List channelCustoms = channelCustomRepository.findAllById(ids); for (ChannelCustom channelCustom : channelCustoms) { String channelName = channelCustom.getChannelName(); String phone = channelCustom.getPhone(); @@ -110,14 +110,14 @@ public class ChannelManageServiceImpl implements ChannelManageService { channelCustom.setUserId(userId); channelCustom.setStatus(DefaultNumberConstants.ONE_NUMBER); } - channelCustomDao.saveAll(channelCustoms); + channelCustomRepository.saveAll(channelCustoms); return CommonResponse.createBySuccess(); } @Override @Transactional(rollbackFor = Exception.class) public CommonResponse forbidden(Set ids) { - channelCustomDao.updateCustomStatus(ids, 3); + channelCustomRepository.updateCustomStatus(ids, 3); userService.updateUserStatusByCompanyId(false, new ArrayList<>(ids)); return CommonResponse.createBySuccess(); } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelResourceAssignServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelResourceAssignServiceImpl.java index 73ffe4f9..63bcf90b 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelResourceAssignServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/ChannelResourceAssignServiceImpl.java @@ -1,8 +1,8 @@ package com.baiye.modules.agent.service.impl; import com.baiye.http.CommonResponse; -import com.baiye.modules.agent.dao.ChannelCustomDao; -import com.baiye.modules.agent.dao.ChannelResourceAssignDao; +import com.baiye.modules.agent.repository.ChannelCustomRepository; +import com.baiye.modules.agent.repository.ChannelResourceAssignRepository; import com.baiye.modules.agent.entity.ChannelCustom; import com.baiye.modules.agent.entity.ChannelResourceAssign; import com.baiye.modules.agent.entity.query.ChannelQuery; @@ -25,8 +25,8 @@ import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor public class ChannelResourceAssignServiceImpl implements ChannelResourceAssignService { - private final ChannelResourceAssignDao channelResourceAssignDao; - private final ChannelCustomDao channelCustomDao; + private final ChannelResourceAssignRepository channelResourceAssignRepository; + private final ChannelCustomRepository channelCustomRepository; @Override public Object queryAll(ChannelQuery channelQuery, Pageable pageable) { @@ -40,24 +40,24 @@ public class ChannelResourceAssignServiceImpl implements ChannelResourceAssignSe } channelQuery.setId(null); PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort); - Page channelCustoms = channelResourceAssignDao.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, channelQuery, criteriaBuilder), pageRequest); + Page channelCustoms = channelResourceAssignRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, channelQuery, criteriaBuilder), pageRequest); return PageUtil.toPage(channelCustoms); } @Override public Object queryAssign(ResourceAssignInfoQuery resourceAssignInfoQuery, Pageable pageable) { PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by(Sort.Direction.DESC, "create_time")); - return channelResourceAssignDao.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, resourceAssignInfoQuery, criteriaBuilder), pageRequest); + return channelResourceAssignRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, resourceAssignInfoQuery, criteriaBuilder), pageRequest); } @Override @Transactional(rollbackFor = Exception.class) public CommonResponse assignNum(Long customId, Integer assignNum) { - ChannelCustom channelCustom = channelCustomDao.findById(customId).orElse(new ChannelCustom()); + ChannelCustom channelCustom = channelCustomRepository.findById(customId).orElse(new ChannelCustom()); //增加客户的总量和余量 channelCustom.setTotalNum(channelCustom.getTotalNum() + assignNum); channelCustom.setSurplusNum(channelCustom.getSurplusNum() + assignNum); - channelCustomDao.save(channelCustom); + channelCustomRepository.save(channelCustom); return CommonResponse.createBySuccess(); } } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/CustomManageServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/CustomManageServiceImpl.java index 83f7d8c7..8a8c67b4 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/CustomManageServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/service/impl/CustomManageServiceImpl.java @@ -2,24 +2,32 @@ package com.baiye.modules.agent.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.text.CharSequenceUtil; +import cn.hutool.core.text.StrPool; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import com.baiye.constant.DefaultNumberConstants; import com.baiye.http.CommonResponse; -import com.baiye.modules.agent.dao.ChannelCustomDao; -import com.baiye.modules.agent.dao.ChannelResourceAssignDao; +import com.baiye.model.enums.UrlLinkEnum; import com.baiye.modules.agent.entity.ChannelCustom; +import com.baiye.modules.agent.entity.ChannelCustomTag; import com.baiye.modules.agent.entity.ChannelResourceAssign; import com.baiye.modules.agent.entity.query.ChannelQuery; +import com.baiye.modules.agent.repository.ChannelCustomRepository; +import com.baiye.modules.agent.repository.ChannelCustomTagRepository; +import com.baiye.modules.agent.repository.ChannelResourceAssignRepository; import com.baiye.modules.agent.service.CustomManageService; import com.baiye.modules.platform.service.dto.CreateUserDTO; import com.baiye.modules.system.domain.Role; import com.baiye.modules.system.domain.User; import com.baiye.modules.system.service.impl.UserServiceImpl; +import com.baiye.util.FirstLetter; import com.baiye.util.PageUtil; import com.baiye.util.QueryHelp; import com.baiye.util.SecurityUtils; import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -29,7 +37,10 @@ import org.springframework.transaction.annotation.Transactional; import java.text.DecimalFormat; import java.util.HashSet; +import java.util.List; +import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; /** * @author wjt @@ -38,15 +49,23 @@ import java.util.Set; @Service @RequiredArgsConstructor public class CustomManageServiceImpl implements CustomManageService { - private final ChannelCustomDao channelCustomDao; - private final ChannelResourceAssignDao channelResourceAssignDao; + private final ChannelCustomRepository channelCustomRepository; + + private final ChannelCustomTagRepository channelCustomTagRepository; + + private final ChannelResourceAssignRepository channelResourceAssignRepository; + private final UserServiceImpl userServiceImpl; + + @Value("${generate.url}") + private String configurationUrl; + @Override @Transactional(rollbackFor = Exception.class) public CommonResponse addCustom(ChannelCustom channelCustom) { //验证重复 - ChannelCustom byAndChannelName = channelCustomDao.findByAndChannelName(channelCustom.getChannelName()); + ChannelCustom byAndChannelName = channelCustomRepository.findByAndChannelName(channelCustom.getChannelName()); if (ObjectUtil.isNotEmpty(byAndChannelName)) { return CommonResponse.createByErrorMessage("名称重复"); } @@ -67,7 +86,7 @@ public class CustomManageServiceImpl implements CustomManageService { } } //获取父账号的总量 - ChannelCustom parent = channelCustomDao.findById(channelCustom.getParentId()).orElse(new ChannelCustom()); + ChannelCustom parent = channelCustomRepository.findById(channelCustom.getParentId()).orElse(new ChannelCustom()); if (parent.getSurplusNum() == null || parent.getSurplusNum() < channelCustom.getTotalNum()) { return CommonResponse.createByErrorMessage("可分配的余量不足"); } @@ -78,8 +97,8 @@ public class CustomManageServiceImpl implements CustomManageService { String activeCode = "by" + getFourNum(channelCustom.getParentId().intValue()) + DateUtil.format(DateUtil.date(), "MMdd") + RandomUtil.randomString(4); channelCustom.setActivationCode(activeCode); - channelCustomDao.save(channelCustom); - channelCustomDao.save(parent); + channelCustomRepository.save(channelCustom); + channelCustomRepository.save(parent); //这里如果是代理商 直接同步 CreateUserDTO createUserDTO = new CreateUserDTO().addCreateUserDTO(channelCustom.getChannelName(), channelCustom.getPhone()); User user = new User(); @@ -95,15 +114,15 @@ public class CustomManageServiceImpl implements CustomManageService { userServiceImpl.create(user); //分配记录 ChannelResourceAssign channelResourceAssign = new ChannelResourceAssign().addChannelResourceAssign(parent.getParentId(), channelCustom.getTotalNum(), channelCustom.getId(), channelCustom.getChannelName()); - channelResourceAssignDao.save(channelResourceAssign); + channelResourceAssignRepository.save(channelResourceAssign); return CommonResponse.createBySuccess(); } @Override @Transactional(rollbackFor = Exception.class) public CommonResponse assignNum(Long customId, Integer assignNum) { - ChannelCustom channelCustom = channelCustomDao.findById(customId).orElse(new ChannelCustom()); - ChannelCustom parent = channelCustomDao.findById(channelCustom.getParentId()).orElse(new ChannelCustom()); + ChannelCustom channelCustom = channelCustomRepository.findById(customId).orElse(new ChannelCustom()); + ChannelCustom parent = channelCustomRepository.findById(channelCustom.getParentId()).orElse(new ChannelCustom()); int parentTotalNum = parent.getTotalNum(); if (channelCustom.getType() == DefaultNumberConstants.ONE_NUMBER) { @@ -123,11 +142,11 @@ public class CustomManageServiceImpl implements CustomManageService { //增加客户的总量和余量 channelCustom.setTotalNum(channelCustom.getTotalNum() + assignNum); channelCustom.setSurplusNum(channelCustom.getSurplusNum() + assignNum); - channelCustomDao.save(parent); - channelCustomDao.save(channelCustom); + channelCustomRepository.save(parent); + channelCustomRepository.save(channelCustom); //添加分配记录 ChannelResourceAssign channelResourceAssign = new ChannelResourceAssign().addChannelResourceAssign(parent.getParentId(), assignNum, channelCustom.getId(), channelCustom.getChannelName()); - channelResourceAssignDao.save(channelResourceAssign); + channelResourceAssignRepository.save(channelResourceAssign); return CommonResponse.createBySuccess(); } @@ -143,14 +162,63 @@ public class CustomManageServiceImpl implements CustomManageService { } //这里的id 是userId; Long id = SecurityUtils.getCurrentUserId(); - ChannelCustom byUserId = channelCustomDao.findByUserId(id); + ChannelCustom byUserId = channelCustomRepository.findByUserId(id); channelCustomQuery.setId(byUserId.getId()); PageRequest pageRequest = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), sort); - Page channelCustoms = channelCustomDao.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, channelCustomQuery, criteriaBuilder), pageRequest); + Page channelCustoms = channelCustomRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, channelCustomQuery, criteriaBuilder), pageRequest); return PageUtil.toPage(channelCustoms); } + @Override + public String createLinkUrl(Long customId, Integer type) { + ChannelCustomTag customTag = channelCustomTagRepository.findByCustomIdAndType(customId, type); + // 已存在直接返回 + if (ObjectUtil.isNotNull(customTag)) { + UrlLinkEnum linkEnum = UrlLinkEnum.find(type); + if (ObjectUtil.isNotNull(linkEnum) && linkEnum.getUrl() != null) { + return configurationUrl.concat(linkEnum.getUrl()).concat(customTag.getTagStr()); + } + } + ChannelCustom channelCustom = channelCustomRepository.findById(customId).orElseGet(ChannelCustom::new); + if (StringUtils.isNotBlank(channelCustom.getChannelName())) { + // 公司名字转小写 拼接平台 + String firstPinYin = FirstLetter.getFirstPinYin(channelCustom.getChannelName()); + UrlLinkEnum linkEnum = UrlLinkEnum.find(type); + if (ObjectUtil.isNotNull(linkEnum) && linkEnum.getUrl() != null) { + String tagUrl = linkEnum.name().toLowerCase().concat(StrPool.DASHED) + .concat(firstPinYin.toLowerCase()) + .concat(StrPool.DASHED).concat(DateUtil.format(DateUtil.date(), "MMdd")) + .concat(StrPool.DASHED).concat(RandomUtil.randomString + (DefaultNumberConstants.FOUR_NUMBER)); + String fullLink = configurationUrl.concat(linkEnum.getUrl()).concat(tagUrl); + ChannelCustomTag channelCustomTag = new ChannelCustomTag(); + channelCustomTag.setTagType(type); + channelCustomTag.setTagStr(tagUrl); + channelCustomTag.setChannelId(customId); + channelCustomTagRepository.save(channelCustomTag); + return fullLink; + } + } + return CharSequenceUtil.EMPTY; + } + + @Override + public Map findUrlByCustomId(Long customId) { + List byChannelId = channelCustomTagRepository.findByChannelId(customId); + return byChannelId.stream().collect(Collectors.toMap(ChannelCustomTag::getTagType, tag -> { + String tagStr = tag.getTagStr(); + Integer tagType = tag.getTagType(); + UrlLinkEnum linkEnum = UrlLinkEnum.find(tagType); + return configurationUrl.concat(linkEnum.getUrl()).concat(tagStr); + })); + } + + @Override + public ChannelCustom findCustomByUserIdAndStatus(Long userId, Integer status) { + return channelCustomRepository.findByUserIdAndStatus(userId, status); + } + private String getFourNum(Integer num) { DecimalFormat decimalFormat = new DecimalFormat("0000"); return decimalFormat.format(num); diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/domain/Agent.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/domain/Agent.java index 379148d5..746a7a90 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/domain/Agent.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/domain/Agent.java @@ -31,7 +31,6 @@ public class Agent extends BaseEntity implements Serializable { @Column(name = "agency_name") private String agencyName; - @ApiModelProperty("邀请码") @Column(name = "invitation_code") private Integer invitationCode; diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java index 8dfcbc83..8d13cc32 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/system/service/impl/UserServiceImpl.java @@ -35,7 +35,7 @@ import com.baiye.feign.IRemoteAuthService; import com.baiye.feign.SourceClueClient; import com.baiye.model.dto.*; import com.baiye.model.enums.ResponseCode; -import com.baiye.modules.agent.dao.ChannelCustomDao; +import com.baiye.modules.agent.repository.ChannelCustomRepository; import com.baiye.modules.agent.entity.ChannelCustom; import com.baiye.modules.platform.domain.*; import com.baiye.modules.platform.repository.*; @@ -61,7 +61,6 @@ import com.google.common.collect.Sets; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -134,7 +133,7 @@ public class UserServiceImpl implements UserService { private final ExtensionNumberService extensionNumberService; private final TaskImeiService taskImeiService; private final TaskTagRepository taskTagRepository; - private final ChannelCustomDao channelCustomDao; + private final ChannelCustomRepository channelCustomRepository; @Override @Transactional(rollbackFor = Exception.class) @@ -246,7 +245,7 @@ public class UserServiceImpl implements UserService { user.setIsReview(Boolean.FALSE); create(user); //同步渠道商信息 - channelCustomDao.save(new ChannelCustom().addChannel(userDTO.getUsername(), userDTO.getPhone(), userId)); + channelCustomRepository.save(new ChannelCustom().addChannel(userDTO.getUsername(), userDTO.getPhone(), userId)); return Collections.singletonList(user.getId()); } } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java index 906294af..7cb17072 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/CSVFileUtil.java @@ -44,7 +44,7 @@ public class CSVFileUtil { } public static void main(String[] args) { - File file = new File("C:\\Users\\a\\Desktop\\BY_20230326_1_dest.csv"); + File file = new File("C:\\Users\\a\\Desktop\\jl-tztb1-xsxt2-010.csv"); List phoneList = Lists.newArrayList(); List tagStr = Lists.newArrayList(); CsvReader reader = CsvUtil.getReader(); @@ -58,14 +58,14 @@ public class CSVFileUtil { // csv通配 data.getRows().forEach(clue -> { phoneList.add(clue.size() == DefaultNumberConstants.THREE_NUMBER - ? clue.get(DefaultNumberConstants.TWO_NUMBER) : clue.get(DefaultNumberConstants.THREE_NUMBER)); + ? clue.get(DefaultNumberConstants.TWO_NUMBER) : clue.get(DefaultNumberConstants.ZERO_NUMBER)); tagStr.add(tag); }); // 去除重复 List phoneSets = Lists.newArrayList(Sets.newHashSet(phoneList)); - File csvFile = new File("C:\\Users\\a\\Desktop\\2023-3-17-dmp.csv"); + File csvFile = new File("C:\\Users\\a\\Desktop\\2023420-jl-tztb1-xsxt2-010.csv"); //导入HuTool中CSV工具包的CsvWriter类 //设置导出字符类型, CHARSET_UTF_8 CsvWriter writer = CsvUtil.getWriter(csvFile, CharsetUtil.CHARSET_UTF_8); diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/FirstLetter.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/FirstLetter.java new file mode 100644 index 00000000..5e52ce96 --- /dev/null +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/util/FirstLetter.java @@ -0,0 +1,37 @@ +package com.baiye.util; + +import net.sourceforge.pinyin4j.PinyinHelper; +import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; +import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; +import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; +import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; + +/** + * @author Enzo + * @date : 2023/4/20 + */ +public class FirstLetter { + + private FirstLetter(){} + public static String getFirstPinYin(String chinese) { + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.UPPERCASE); + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); + + StringBuilder firstPinyin = new StringBuilder(); + char[] chineseArr = chinese.trim().toCharArray(); + try { + for (char c : chineseArr) { + if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) { + String[] pys = PinyinHelper.toHanyuPinyinStringArray(c, format); + firstPinyin.append(pys[0].charAt(0)); + } else { + firstPinyin.append(c); + } + } + } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { + badHanyuPinyinOutputFormatCombination.printStackTrace(); + } + return firstPinyin.toString(); + } +} diff --git a/ad-platform-manage/ad-platform-management/src/main/resources/config/application.yml b/ad-platform-manage/ad-platform-management/src/main/resources/config/application.yml index 25c3fe57..487849f2 100644 --- a/ad-platform-manage/ad-platform-management/src/main/resources/config/application.yml +++ b/ad-platform-manage/ad-platform-management/src/main/resources/config/application.yml @@ -9,7 +9,7 @@ spring: freemarker: check-template-location: false profiles: - active: prod + active: dev jackson: time-zone: GMT+8 data: @@ -106,4 +106,5 @@ payTemplate: wechat: gatewayHost: byqw.wework.uat.robot.ecofanli.com - +generate: + url: https://cb.tuoz.net diff --git a/ad-platform-manage/ad-platform-management/src/test/java/com/baiye/CustomTest.java b/ad-platform-manage/ad-platform-management/src/test/java/com/baiye/CustomTest.java new file mode 100644 index 00000000..cb47f841 --- /dev/null +++ b/ad-platform-manage/ad-platform-management/src/test/java/com/baiye/CustomTest.java @@ -0,0 +1,42 @@ +package com.baiye; + +import com.baiye.modules.agent.service.CustomManageService; +import lombok.extern.slf4j.Slf4j; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * @author Enzo + * @date : 2022/9/16 + */ +@Slf4j +@RunWith(SpringRunner.class) +@SpringBootTest(classes = AdPlatformManagementApplication.class, + webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class CustomTest { + + @Resource + private CustomManageService customManageService; + + + @Test + public void getSetting() { + for (int i = 1; i < 7; i++) { + String linkUrl = customManageService.createLinkUrl(1L, i); + System.out.println(linkUrl); + } + } + + @Test + public void customList() { + Map urlByCustomId = customManageService.findUrlByCustomId(1L); + System.out.println(urlByCustomId); + } + + +} diff --git a/ad-platform-pojo/src/main/java/com/baiye/model/enums/UrlLinkEnum.java b/ad-platform-pojo/src/main/java/com/baiye/model/enums/UrlLinkEnum.java new file mode 100644 index 00000000..1ce8ac86 --- /dev/null +++ b/ad-platform-pojo/src/main/java/com/baiye/model/enums/UrlLinkEnum.java @@ -0,0 +1,59 @@ +package com.baiye.model.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author Enzo + * @date : 2023/4/19 + */ + +@Getter +@AllArgsConstructor +public enum UrlLinkEnum { + + + /** + * 巨量 + */ + JL(1, "/api/jl/monitor?aid=__AID__&cid=__CID__&ctype=__CTYPE__&csite=__CSITE__&imei=__IMEI__&idfa=__IDFA__&oaid=__OAID__&os=__OS__&mac=__MAC__&mac1=__MAC1__&ip=__IP__&geo=__GEO__&TIMESTAMP=__TS__&callback_url=__CALLBACK_URL__&model=__MODEL__&caid1=__CAID1__&tag="), + + /** + * BD + */ + BD(2, "/api/bd/monitor?userid=__USER_ID__&aid=__IDEA_ID__&pid=__PLAN_ID__&uid=__UNIT_ID__&callback_url=__CALLBACK_URL__&click_id=__CLICK_ID__&idfa=__IDFA__&imei_md5=__IMEI__&oaid=__OAID__&mac=__MAC__&ip=__IP__&os=__OS__&ts=__TS__&device_info=__DEVICE_INFO__&tag="), + + /** + * UC + */ + UC(3, "/api/uc/monitor?imei={IMEI_SUM1}&oaid={OAID}&time={TS}&callback={CALLBACK_URL}&androidid={ANDROIDID_SUM1}&mac={MAC_SUM2}&ip={IP}&ua={UA}&acid={ACID}&gid={GID}&aid={AID}&cid={CID}&model={MODEL1}&idfa={IDFA1}&tag="), + + /** + * 广点通 + */ + GDT(4, "/api/gdt/monitor?click_id=__CLICK_ID__&click_time=__CLICK_TIME__&campaign_id=_CAMPAIGN_ID__&adgroup_id=__ADGROUP_ID__&ad_id=__AD_ID__&muid=__MUID__&hash_android_id=__HASH_ANDROID_ID__&oaid=__OAID__&hash_oaid=__HASH_OAID__&ip=__IP__&user_agent=__USER_AGENT__&account_id=__ACCOUNT_ID__&promoted_object_type=__PROMOTED_OBJECT_TYPE__&device_os_type=__DEVICE_OS_TYPE__&callback=__CALLBACK__&qz_gdt=__QZ_GDT__&model=__MODEL__&tag="), + + /** + * 快手 + */ + KS(5, "/api/ks/monitor?&accountid=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&dname=__DNAME__&imeiMD5=__IMEI2__&oaid=__OAID__&mac=__MAC2__&androidid=__ANDROIDID2__&os=__OS__&ts=__TS__&ip=__IP__&ua=__UA__&csite=__CSITE__&model=__MODEL__&ac_creative=__AC_CREATIVE__&idfa=__IDFA2__&tag="), + + /** + * vivo + */ + VIVO(6, "/api/vivo/monitor?os=__OS__&imei=__IMEI__&ip=__IP__&oaid=__OAID__&oaidPlain=__OAIDPLAIN__&ua=__UA__&androidId=__ANDROIDID__&location=__LOCATION__&requestId=__REQUESTID__&requestTime=__REQUESTTIME__&advertiserId=__ADVERTISERID__&adName=__ADNAME__&creativeId=__CREATIVEID__&osVersion=__OSVERSION__&model=__MODEL__&lang=__LANG__&resolution=__RESOLUTION__&netType=__NETTYPE__&ts=__TS__&tag="); + + private final int type; + + private final String url; + + public static UrlLinkEnum find(int val) { + for (UrlLinkEnum dataScopeEnum : UrlLinkEnum.values()) { + if (dataScopeEnum.getType() == val) { + return dataScopeEnum; + } + } + return null; + } + +} diff --git a/pom.xml b/pom.xml index b285ed4d..98032114 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,7 @@ 2.9.2 2.2.1 1.7.2 + 2.5.0 3.11.1 2.2.7 2.5.6 @@ -273,6 +274,13 @@ ${mybatis-plus-boot-stater.version} + + com.belerweb + pinyin4j + ${pinyin4j.version} + + +