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 818effda..a8fdc488 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 @@ -5,6 +5,7 @@ import com.baiye.annotation.Log; import com.baiye.http.CommonResponse; import com.baiye.modules.agent.entity.ChannelCustom; import com.baiye.modules.agent.entity.query.ChannelQuery; +import com.baiye.modules.agent.entity.vo.CreateLinkUrlVO; import com.baiye.modules.agent.service.CustomManageService; import com.baiye.valid.AddGroup; import io.swagger.annotations.Api; @@ -58,8 +59,13 @@ public class CustomManageController { @GetMapping("/link") @ApiOperation("生成链接") - public CommonResponse addLink(@RequestParam("customId") Long customId, @RequestParam("type") Integer type) { - String linkUrl = customManageService.createLinkUrl(customId, type); + @Log(value = "生成链接") + public CommonResponse addLink(@RequestParam("customId") Long customId, + @RequestParam("type") Integer type, + @RequestParam(value = "vpoint", required = false) String vpoint, + @RequestParam(value = "version", required = false) Integer version, + @RequestParam(value = "akey", required = false) String akey) { + List linkUrl = customManageService.createLinkUrl(customId, type, vpoint, akey, version); return CommonResponse.createBySuccess(linkUrl); } @@ -69,7 +75,13 @@ public class CustomManageController { return CommonResponse.createBySuccess(customManageService.findUrlByCustomId(customId)); } - @Log + @GetMapping("/linkAKey") + @ApiOperation("查询aKey") + public CommonResponse> findAKey(@RequestParam("customId") Long customId) { + return CommonResponse.createBySuccess(customManageService.findAKey(customId)); + } + + @Log("修改数量") @Inner @ApiOperation("修改数量") @GetMapping("/update/quantity") 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 index ca88feb9..9f6ed2ef 100644 --- 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 @@ -59,5 +59,9 @@ public class ChannelCustomTag extends BaseEntity implements Serializable { @Column(name = "channel_id") private Long channelId; + @ApiModelProperty(value = "百度aKey") + @Column(name = "a_key") + private String aKey; + } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/entity/vo/CreateLinkUrlVO.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/entity/vo/CreateLinkUrlVO.java new file mode 100644 index 00000000..c0bd0688 --- /dev/null +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/agent/entity/vo/CreateLinkUrlVO.java @@ -0,0 +1,22 @@ +package com.baiye.modules.agent.entity.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author YQY + * @Date 2023/6/2 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class CreateLinkUrlVO { + + private String url; + + private Integer type; + + private String vpoInt; + +} 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 index dff69a12..60e2e751 100644 --- 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 @@ -1,6 +1,5 @@ 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; @@ -17,9 +16,9 @@ import java.util.List; public interface ChannelCustomTagRepository extends JpaRepository, JpaSpecificationExecutor { - /** * 查询配置 + * * @param customId 渠道商 * @return */ @@ -27,6 +26,7 @@ public interface ChannelCustomTagRepository extends JpaRepository createLinkUrl(Long customId, Integer type, String vpoint, String akey, Integer version); /** * 渠道id查询列表 @@ -67,6 +68,10 @@ public interface CustomManageService { */ List> findUrlByCustomId(Long customId); + /** + * 渠道id查询AKey + */ + Map findAKey(Long customId); /** * 根据用户id查询代理商 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 52376d99..69b23477 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 @@ -17,6 +17,7 @@ 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.entity.vo.CreateLinkUrlVO; import com.baiye.modules.agent.entity.vo.CustomReportVo; import com.baiye.modules.agent.repository.ChannelCustomRepository; import com.baiye.modules.agent.repository.ChannelCustomTagRepository; @@ -64,6 +65,9 @@ public class CustomManageServiceImpl implements CustomManageService { private Long channelId; private final PasswordEncoder passwordEncoder; + private final Integer[] TAG_TYPE = {1, 2, 4, 5}; + private final String VPOINT_URL = "&vpoint="; + @Override @Transactional(rollbackFor = Exception.class) public CommonResponse addCustom(ChannelCustom channelCustom) { @@ -220,37 +224,100 @@ public class CustomManageServiceImpl implements CustomManageService { return CommonResponse.createBySuccess(); } +// @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 String createLinkUrl(Long customId, Integer type) { + public List createLinkUrl(Long customId, Integer type, String vpoInt, String aKey, Integer version) { + if (Arrays.asList(TAG_TYPE).contains(type) && StringUtils.isBlank(vpoInt)) { + throw new BadRequestException("请选择链接检测方式"); + } + List returnList = new ArrayList<>(); + List vpoIntList = new ArrayList<>(); + String tagUrl = ""; + if (StringUtils.isNotBlank(vpoInt)) vpoIntList = Arrays.asList(vpoInt.split(",")); + + UrlLinkEnum linkEnum = UrlLinkEnum.find(type); + String url = linkEnum.getUrl(); + //巨量v2版本处理,获取v2的url + if (type == DefaultNumberConstants.ONE_NUMBER && version != null && version == DefaultNumberConstants.TWO_NUMBER) { + url = UrlLinkEnum.find(DefaultNumberConstants.SEVEN_NUMBER).getUrl(); + } + 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()); + tagUrl = customTag.getTagStr(); + if (StringUtils.isNotBlank(customTag.getAKey())) aKey = customTag.getAKey(); + } else { + ChannelCustom channelCustom = channelCustomRepository.findById(customId).orElseGet(ChannelCustom::new); + if (StringUtils.isNotBlank(channelCustom.getChannelName())) { + // 公司名字转小写 拼接平台 + String firstPinYin = FirstLetter.getFirstPinYin(channelCustom.getChannelName()); + if (ObjectUtil.isNotNull(linkEnum) && linkEnum.getUrl() != null) { + 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)); + ChannelCustomTag channelCustomTag = new ChannelCustomTag(); + channelCustomTag.setTagType(type); + channelCustomTag.setTagStr(tagUrl); + channelCustomTag.setChannelId(customId); + if (StringUtils.isNotBlank(aKey)) channelCustomTag.setAKey(aKey); + channelCustomTagRepository.save(channelCustomTag); + } } } - 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; + //巨量v2版本处理tag,最后位置追加标识 + if (type == DefaultNumberConstants.ONE_NUMBER && version != null && version == DefaultNumberConstants.TWO_NUMBER) { + tagUrl = tagUrl.concat("-v2"); + } + //生成链接 + String fullLink = configurationUrl.concat(url).concat(tagUrl); + if (Arrays.asList(TAG_TYPE).contains(type) && CollUtil.isNotEmpty(vpoIntList)) { + for (String vpoIntStr : vpoIntList) { + String newUrl = fullLink.concat(VPOINT_URL).concat(vpoIntStr); + if (StringUtils.isNotBlank(aKey)) { + newUrl = newUrl.concat("&akey=").concat(aKey); + } + CreateLinkUrlVO createLinkUrlVO = new CreateLinkUrlVO(newUrl, type, vpoIntStr); + returnList.add(createLinkUrlVO); } + } else { + CreateLinkUrlVO createLinkUrlVO = new CreateLinkUrlVO(fullLink, type, ""); + returnList.add(createLinkUrlVO); } - return CharSequenceUtil.EMPTY; + return returnList; } @Override @@ -272,6 +339,15 @@ public class CustomManageServiceImpl implements CustomManageService { return list; } + @Override + public Map findAKey(Long customId) { + Map map = new HashMap<>(1); + map.put("aKey", ""); + ChannelCustomTag tag = channelCustomTagRepository.findByChannelIdAndTagType(customId, DefaultNumberConstants.TWO_NUMBER); + if (tag != null && StringUtils.isNotBlank(tag.getAKey())) map.put("aKey", tag.getAKey()); + return map; + } + @Override public ChannelCustom findCustomByUserIdAndStatus(Long userId, Integer status) { return channelCustomRepository.findByUserIdAndStatus(userId, status); @@ -411,7 +487,8 @@ public class CustomManageServiceImpl implements CustomManageService { } } - private void disableChannelById(ChannelCustom custom, List channelCustoms, List num, List bill) { + private void disableChannelById(ChannelCustom + custom, List channelCustoms, List num, List bill) { num.add(custom.getSurplusNum()); bill.add(custom.getSurplusPhoneBill()); custom.setStatus(3); @@ -430,4 +507,27 @@ public class CustomManageServiceImpl implements CustomManageService { } } } + +// /** +// * 拼接参数 向returnList集合中add +// * +// * @param vpoIntList vpoint集合 +// * @param aKey 百度需要的值 +// * @param url 要拼接的路径 +// */ +// public List> montageParameter(List vpoIntList, String aKey, String url, Integer type) { +// List> list = new ArrayList<>(); +// for (String vpoIntStr : vpoIntList) { +// String newUrl = url.concat(VPOINT_URL).concat(vpoIntStr); +// if (StringUtils.isNotBlank(aKey)) { +// newUrl = newUrl.concat("&akey=").concat(aKey); +// } +// Map map = new HashMap<>(); +// map.put("url", newUrl); +// map.put("type", type); +// map.put("vpoInt", vpoIntStr); +// list.add(map); +// } +// return list; +// } } diff --git a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java index 808d1322..a3d8f10b 100644 --- a/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java +++ b/ad-platform-manage/ad-platform-management/src/main/java/com/baiye/modules/platform/service/OrganizeService.java @@ -144,4 +144,9 @@ public interface OrganizeService { * 组成员变动 */ void convert(OrganizeConvertDTO organizeConvertDTO); + + /** + * 组员用户ID查询组名 + */ + Map findOrganizeName(Set userIds); } 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 index 1ce8ac86..25ad9d9d 100644 --- 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 @@ -16,12 +16,12 @@ 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="), + JL(1, "/api/jl/new/monitor/v1?aid=__AID__&aid_name=__AID_NAME__&cid=__CID__&cid_name=__CID_NAME__&campaign_id=__CAMPAIGN_ID__&campaign_name=__CAMPAIGN_NAME__&ctype=__CTYPE__&csite=__CSITE__&convert_id=__CONVERT_ID__&request_id=__REQUEST_ID__&track_id=__TRACK_ID__&os=__OS__&ua=__UA__&geo=__GEO__&ts=__TS__&model=__MODEL__&imei=__IMEI__&idfa=__IDFA__&idfa_md5=__IDFA_MD5__&oaid=__OAID__&oaid_md5=__OAID_MD5__&mac=__MAC__&callback_param=__CALLBACK_PARAM__&callback_url=__CALLBACK_URL__&advertiser_id=__ADVERTISER_ID__&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="), + BD(2, "/api/bd/new/monitor?userId=__USER_ID__&aid=__IDEA_ID__&pid=__PLAN_ID__&uid=__UNIT_ID__&callbackUrl=__CALLBACK_URL__&extInfo=__EXT_INFO__&clickId=__CLICK_ID__&idfa=__IDFA__&imei=__IMEI__&oaidMD5=__OAID_MD5__&oaid=__OAID__&mac=__MAC__&ip=__IP__&ua=__UA__&osType=__OS_TYPE__&ts=__TS__&interactionsType=__INTERACTIONS_TYPE__&tag="), /** * UC @@ -31,17 +31,22 @@ public enum UrlLinkEnum { /** * 广点通 */ - 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="), + GDT(4, "/api/gdt/new/monitor?account_id=__ACCOUNT_ID__&click_id=__CLICK_ID__&click_time=__CLICK_TIME__&device_os_type=__DEVICE_OS_TYPE__&muid=__MUID__&hash_oaid=__HASH_OAID__&hash_mac=__HASH_MAC__&campaign_id=__CAMPAIGN_ID__&adgroup_id=__ADGROUP_ID__&ad_id=__AD_ID__&promoted_object_id=__PROMOTED_OBJECT_ID__&ip=__IP__&user_agent=__USER_AGENT__&callback=__CALLBACK__&promoted_object_type=__PROMOTED_OBJECT_TYPE__&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="), + KS(5, "/api/ks/new/monitor?accountid=__ACCOUNTID__&aid=__AID__&cid=__CID__&did=__DID__&dname=__DNAME__&photoid=__PHOTOID__&oaid=__OAID2__&imei=__IMEI2__&imeiHash=__IMEI3__&idfa=__IDFA2__&idfaHash=__IDFA3__&macBak=__MAC2__&mac=__MAC3__&ts=__TS__&ua=__UA__&os=__OS__&model=__MODEL__&callback=__CALLBACK__&ip=__IP__&csite=__CSITE__&ac_creative=__AC_CREATIVE__&win_for_id=__WINFOID__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="); + 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="), + + /** + * 巨量v2版本 + */ + JL2(7, "/api/jl/new/monitor/v2?promotion_id=__PROMOTION_ID__&project_id=__PROJECT_ID__&promotion_name=__PROMOTION_NAME__&project_name=__PROJECT_NAME__&mid1=__MID1__&mid2=__MID2__&mid3=__MID3__&mid4=__MID4__&mid5=__MID5__&mid6=__MID6__&csite=__CSITE__&convert_id=__CONVERT_ID__&request_id=__REQUEST_ID__&track_id=__TRACK_ID__&os=__OS__&ua=__UA__&geo=__GEO__&ts=__TS__&model=__MODEL__&imei=__IMEI__&idfa=__IDFA__&idfa_md5=__IDFA_MD5__&oaid=__OAID__&oaid_md5=__OAID_MD5__&mac=__MAC__&callback_param=__CALLBACK_PARAM__&callback_url=__CALLBACK_URL__&advertiser_id=__ADVERTISER_ID__&tag="); private final int type;