新增抖音接口

master
bynt 2 years ago
parent 34a89948ae
commit 699fb0b3c6

@ -0,0 +1,15 @@
package com.baiye.constant;
/**
* @author Enzo
*/
public class UrlConstants {
public static String CONNECT_OAUTH2_AUTHORIZE_URL = "https://ad.oceanengine.com/openapi/audit/oauth.html?app_id=%s&state=%s&material_auth=1&redirect_uri=%s";
public static String OAUTH2_ACCESS_TOKEN_URL = "https://ad.oceanengine.com/open_api/oauth2/access_token/";
public static String OAUTH2_REFRESH_TOKEN_URL = "https://ad.oceanengine.com/open_api/oauth2/refresh_token/";
public static String OAUTH2_AUTH_ADVERTISER_URL = "https://ad.oceanengine.com/open_api/oauth2/advertiser/get/?access_token=%s&app_id=%s&secret=%s";
}

@ -0,0 +1,25 @@
package com.baiye.http;
import cn.hutool.core.text.CharSequenceUtil;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @author Enzo
*/
@Getter
@Setter
public class OceanEngineResponse<T> {
private T data;
@JsonProperty("code")
private int code;
@JsonProperty("message")
private String message;
@JsonProperty("request_id")
private String requestId = CharSequenceUtil.EMPTY;
}

@ -0,0 +1,30 @@
package com.baiye.model.base;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
/**
* @author Enzo
* @date 2022-9-14
*/
public class BaseModel {
/**
* Returns a JSON string corresponding to object state
*
* @return JSON representation
*/
public String toJson() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
Gson gson = gsonBuilder.create();
return gson.toJson(this);
}
@Override
public String toString() {
return toJson();
}
}

@ -0,0 +1,20 @@
package com.baiye.config.properties;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @author Enzo
*/
@Data
@Configuration
@Accessors(chain = true)
@ConfigurationProperties(prefix = "ocean.engine")
public class OceanEngineConfig {
private String appId;
private String appSecret;
private String redirectUrl;
private String welcomeUrl;
}

@ -0,0 +1,21 @@
package com.baiye.modules.auth;
import com.baiye.model.base.BaseModel;
import lombok.Getter;
import lombok.Setter;
/**
* @author Enzo
*/
@Getter
@Setter
public class AccessTokenRequest extends BaseModel {
private String appId;
private String secret;
private String grantType;
private String authCode;
}

@ -0,0 +1,39 @@
package com.baiye.modules.auth;
import com.baiye.http.OceanEngineResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author Enzo
*/
@Getter
@Setter
public class AccessTokenResponse extends OceanEngineResponse<AccessTokenResponse.Data> {
@lombok.Data
public static class Data {
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("expires_in")
private Long expiresIn;
@JsonProperty("refresh_token")
private String refreshToken;
@JsonProperty("advertiser_id")
private Long advertiserId;
@JsonProperty("advertiser_ids")
private List<String> advertiserIds;
@JsonProperty("refresh_token_expires_in")
private Long refreshTokenExpiresIn;
}
}

@ -0,0 +1,19 @@
package com.baiye.modules.auth;
import com.baiye.model.base.BaseModel;
import lombok.Getter;
import lombok.Setter;
/**
* @author Enzo
*/
@Getter
@Setter
public class AuthAdvertiserRequest extends BaseModel {
private String accessToken;
private String appId;
private String secret;
}

@ -0,0 +1,38 @@
package com.baiye.modules.auth;
import com.baiye.http.OceanEngineResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* @author Enzo
*/
@Getter
@Setter
public class AuthAdvertiserResponse extends OceanEngineResponse<AuthAdvertiserResponse.Data> {
@lombok.Data
public static class Data {
List<AuthAdvertiserInfo> list;
}
@lombok.Data
public static class AuthAdvertiserInfo {
@JsonProperty("advertiser_id")
private Long advertiserId;
@JsonProperty("advertiserName")
private String advertiserName;
@JsonProperty("account_role")
private String accountRole;
@JsonProperty("advertiser_role")
private Integer advertiserRole;
@JsonProperty("is_valid")
private Boolean isValid;
}
}

@ -0,0 +1,21 @@
package com.baiye.modules.auth;
import com.baiye.model.base.BaseModel;
import lombok.Getter;
import lombok.Setter;
/**
* @author Enzo
*/
@Getter
@Setter
public class RefreshTokenRequest extends BaseModel {
private String appId;
private String secret;
private String grantType;
private String refreshToken;
}

@ -0,0 +1,30 @@
package com.baiye.modules.auth;
import com.baiye.http.OceanEngineResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @author Enzo
*/
@Getter
@Setter
public class RefreshTokenResponse extends OceanEngineResponse<RefreshTokenResponse.Data> {
@lombok.Data
public static class Data {
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("expires_in")
private Long expiresIn;
@JsonProperty("refresh_token")
private String refreshToken;
@JsonProperty("refresh_token_expires_in")
private Long refreshTokenExpiresIn;
}
}

@ -134,27 +134,28 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
.antMatchers("/api/users/info/findByName").permitAll()
.antMatchers("/api/users/info/deptIds").permitAll()
.antMatchers("/api/roles/user/authority").permitAll()
.antMatchers( "/api/form/user/**").permitAll()
.antMatchers( "/api/debt/**").permitAll()
.antMatchers("/api/form/user/**").permitAll()
.antMatchers("/api/debt/**").permitAll()
.antMatchers( "/api/report/organize").permitAll()
.antMatchers( "/api/download/task").permitAll()
.antMatchers("/api/report/organize").permitAll()
.antMatchers("/api/download/task").permitAll()
.antMatchers("/api/task/saveTask").permitAll()
.antMatchers("/api/task/update").permitAll()
.antMatchers( "/api/users/admin").permitAll()
.antMatchers( "/api/task/query").permitAll()
.antMatchers( "/api/task/sendErrMessage").permitAll()
.antMatchers( "/api/organize/queryAll").permitAll()
.antMatchers( "/api/back/cdrUrl").permitAll()
.antMatchers( "/api/back/status").permitAll()
.antMatchers( "/api/roll/cdrUrl").permitAll()
.antMatchers( "/api/report/turnOn").permitAll()
.antMatchers( "/api/users/info/findById").permitAll()
.antMatchers( "/api/users/info/findIsReview").permitAll()
.antMatchers( "/wechat/**").permitAll()
.antMatchers( "/api/users/info/id").permitAll()
.antMatchers("/api/users/admin").permitAll()
.antMatchers("/api/task/query").permitAll()
.antMatchers("/api/task/sendErrMessage").permitAll()
.antMatchers("/api/organize/queryAll").permitAll()
.antMatchers("/api/back/cdrUrl").permitAll()
.antMatchers("/api/back/status").permitAll()
.antMatchers("/api/roll/cdrUrl").permitAll()
.antMatchers("/api/report/turnOn").permitAll()
.antMatchers("/api/users/info/findById").permitAll()
.antMatchers("/api/users/info/findIsReview").permitAll()
.antMatchers("/wechat/**").permitAll()
.antMatchers("/api/users/info/id").permitAll()
// 支付回调
.antMatchers( "/pay/aliPay/pay-notify").permitAll()
.antMatchers("/pay/aliPay/pay-notify").permitAll()
.antMatchers("/api/oceanEngine/callback").permitAll()
// 自定义匿名访问所有url放行允许匿名和带Token访问细腻化到每个 Request 类型
// GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()
@ -223,7 +224,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
}
@Override
public void configure(WebSecurity webSecurity){
public void configure(WebSecurity webSecurity) {
webSecurity.ignoring().antMatchers(
"/ws/**"
);

@ -94,5 +94,9 @@ public class Company extends BaseEntity implements Serializable {
private Long templateId;
@ApiModelProperty("公司类型")
@Column(name = "template_type")
private Integer companyType;
}

@ -0,0 +1,65 @@
package com.baiye.modules.system.domain;
import com.baiye.util.JpaConverterListJson;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.util.List;
/**
* @author Enzo
* @date : 2022/9/15
*/
@Getter
@Setter
@Entity
@Table(name="tb_ocean_engine_token")
public class OceanEngineToken {
private static final long serialVersionUID = 8623354712013889005L;
@Id
@Column(name = "id")
@ApiModelProperty(value = "ID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "status")
@ApiModelProperty(value = "状态")
private Integer status;
@Column(name = "user_id")
@ApiModelProperty(value = "用户id")
private Long userId;
@Column(name = "company_id")
@ApiModelProperty(value = "公司id")
private Long companyId;
@Column(name = "access_token")
@ApiModelProperty(value = "刷新token值")
private String accessToken;
@Column(name = "refresh_token")
@ApiModelProperty(value = "刷新accessToken")
private String refreshToken;
@Convert(converter = JpaConverterListJson.class)
@Column(name = "advertiser_ids")
@ApiModelProperty(value = "显示授权账号")
private List<String> advertiserIds;
@Column(name = "expires_in")
@ApiModelProperty(value = "accessToken剩余有效时间,单位(秒)")
private Long expiresIn;
@Column(name = "refresh_token_expires_in")
@ApiModelProperty(value = "refreshToken剩余有效时间,单位(秒)")
private Long refreshTokenExpiresIn;
}

@ -0,0 +1,62 @@
package com.baiye.modules.system.repository;
import com.baiye.modules.system.domain.OceanEngineToken;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* @author Enzo
* @date : 2022/9/15
*/
public interface OceanEngineRepository extends JpaRepository<OceanEngineToken, Long>, JpaSpecificationExecutor<OceanEngineToken> {
/**
* token
*
* @param oneNumber
* @return
*/
List<OceanEngineToken> findByStatus(int oneNumber);
/**
* id
*
* @param companyId
* @return
*/
OceanEngineToken findByCompanyId(Long companyId);
/**
* token
*
* @param accessToken
* @param refreshToken
* @param expiresIn
* @param refreshTokenExpiresIn
* @param id
* @param ids
* @return
*/
@Modifying
@Query("UPDATE OceanEngineToken o set o.accessToken = ?1,o.refreshToken = ?2,o.expiresIn=?3,o.refreshTokenExpiresIn=?4,o.advertiserIds = ?5 where o.id = ?6")
int updateOceanEngin(String accessToken, String refreshToken, Long expiresIn, Long refreshTokenExpiresIn, String ids, Long id);
/**
* token
*
* @param accessToken
* @param refreshToken
* @param expiresIn
* @param refreshTokenExpiresIn
* @param id
* @return
*/
@Modifying
@Query("UPDATE OceanEngineToken o set o.accessToken = ?1,o.refreshToken = ?2,o.expiresIn=?3,o.refreshTokenExpiresIn=?4 where o.id = ?5")
int updateOceanEngin(String accessToken, String refreshToken, Long expiresIn, Long refreshTokenExpiresIn, Long id);
}

@ -0,0 +1,47 @@
package com.baiye.modules.system.rest;
import cn.hutool.json.JSONUtil;
import com.baiye.modules.system.service.OceanEngineService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* 广
* @author Enzo
* @date : 2022/9/14
*/
@Slf4j
@RestController
@Api(tags = "巨量投放相关")
@RequiredArgsConstructor
@RequestMapping("/api/oceanEngine")
public class OceanEngineController {
private final OceanEngineService oceanEngineService;
@ApiOperation("获取投放请求")
@GetMapping(value = "/{id}")
public ResponseEntity<String> query(@PathVariable Long id){
return new ResponseEntity<>(oceanEngineService.buildAuthorizationUrl(id), HttpStatus.OK);
}
@ApiOperation("获取回调请求")
@GetMapping(value = "/callback")
public ResponseEntity<Void> callback(@RequestParam("state") String state,@RequestParam("auth_code") String authCode){
log.info("================== the state as {},authCode as {} ================", state, authCode);
oceanEngineService.processRequest(state, authCode);
return new ResponseEntity<>(HttpStatus.OK);
}
}

@ -0,0 +1,62 @@
package com.baiye.modules.system.service;
import com.baiye.modules.auth.RefreshTokenResponse;
import com.baiye.modules.system.domain.OceanEngineToken;
import java.util.List;
/**
* @author Enzo
* @date : 2022/9/14
*/
public interface OceanEngineService {
/**
*
* @param id
* @return
*/
String buildAuthorizationUrl(Long id);
/**
*
*
* @param state
* @param authCode
*/
void processRequest(String state, String authCode);
/**
*
* @param oneNumber
* @return
*/
List<OceanEngineToken> findByStatus(int oneNumber);
/**
* token
*
* @param data
* @param id
* @param companyId
* @return
*/
Boolean updateOceanEnginByResponse(RefreshTokenResponse.Data data, Long id, Long companyId);
/**
* token
* @param companyId
* @return
*/
OceanEngineToken getOceanEnginByCompanyId(Long companyId);
/**
* token
* @param accountToken
* @param companyId
* @param id
* @return
*/
String refreshToken(String accountToken,Long id,Long companyId);
}

@ -21,6 +21,7 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import javax.persistence.Column;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ -83,5 +84,9 @@ public class CompanyDto extends BaseDTO implements Serializable {
@ApiModelProperty("模板")
private Long templateId;
@ApiModelProperty("公司类型")
private Integer companyType;
}

@ -83,6 +83,8 @@ public class CreateUserDTO {
@ApiModelProperty(value = "套餐id")
private Long templateId;
@ApiModelProperty(value = "公司类型")
private Integer companyType;
@Override
public int hashCode() {

@ -0,0 +1,152 @@
package com.baiye.modules.system.service.impl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.config.properties.OceanEngineConfig;
import com.baiye.constant.AdPlatFormConstants;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.UrlConstants;
import com.baiye.modules.auth.AccessTokenRequest;
import com.baiye.modules.auth.AccessTokenResponse;
import com.baiye.modules.auth.RefreshTokenRequest;
import com.baiye.modules.auth.RefreshTokenResponse;
import com.baiye.modules.system.domain.OceanEngineToken;
import com.baiye.modules.system.repository.OceanEngineRepository;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.system.service.OceanEngineService;
import com.baiye.modules.system.service.dto.CompanyDto;
import com.baiye.util.AESUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @author Enzo
* @date : 2022/9/14
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class OceanEngineServiceImpl implements OceanEngineService {
private final CompanyService companyService;
private final OceanEngineConfig oceanEngineConfig;
private final OceanEngineRepository oceanEngineRepository;
@Override
public String buildAuthorizationUrl(Long id) {
return String.format
(UrlConstants.CONNECT_OAUTH2_AUTHORIZE_URL,
oceanEngineConfig.getAppId(),
AESUtils.encrypt(id.toString(),
AdPlatFormConstants.AD_PLATFORM),
oceanEngineConfig.getRedirectUrl());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void processRequest(String state, String authCode) {
AccessTokenRequest request = new AccessTokenRequest();
request.setAppId(oceanEngineConfig.getAppId());
request.setSecret(oceanEngineConfig.getAppSecret());
request.setGrantType("auth_code");
request.setAuthCode(authCode);
String requestBody = request.toString();
String result = HttpUtil.post(UrlConstants.OAUTH2_ACCESS_TOKEN_URL, requestBody);
if (StringUtils.isNotBlank(requestBody)) {
AccessTokenResponse accessTokenResponse = JSONUtil.toBean(result, AccessTokenResponse.class);
AccessTokenResponse.Data data = accessTokenResponse.getData();
log.info("=================== the response as data {} ==========", JSONUtil.toJsonStr(data));
if (accessTokenResponse.getCode() == DefaultNumberConstants.ZERO_NUMBER) {
String decrypt = AESUtils.decrypt(state, AdPlatFormConstants.AD_PLATFORM);
if (StringUtils.isNotBlank(decrypt)) {
long parseLong = Long.parseLong(decrypt);
OceanEngineToken byCompanyId = oceanEngineRepository.findByCompanyId(parseLong);
CompanyDto companyById = companyService.findCompanyById(parseLong);
if (ObjectUtil.isNull(byCompanyId) && ObjectUtil.isNotNull(companyById)) {
if (ObjectUtil.isNull(companyById.getUserId())) {
return;
}
byCompanyId = new OceanEngineToken();
byCompanyId.setCompanyId(parseLong);
byCompanyId.setExpiresIn(data.getExpiresIn());
byCompanyId.setUserId(companyById.getUserId());
byCompanyId.setAccessToken(data.getAccessToken());
byCompanyId.setRefreshToken(data.getRefreshToken());
byCompanyId.setAdvertiserIds(data.getAdvertiserIds());
byCompanyId.setStatus(DefaultNumberConstants.ONE_NUMBER);
byCompanyId.setRefreshTokenExpiresIn(data.getRefreshTokenExpiresIn());
oceanEngineRepository.save(byCompanyId);
return;
}
// 修改信息
oceanEngineRepository.updateOceanEngin
(data.getAccessToken(), data.getRefreshToken(), data.getExpiresIn(),
data.getRefreshTokenExpiresIn(), JSONUtil.toJsonStr(data.getAdvertiserIds()), byCompanyId.getId());
}
}
}
}
@Override
public List<OceanEngineToken> findByStatus(int oneNumber) {
return oceanEngineRepository.findByStatus(oneNumber);
}
@Override
@Transactional(rollbackFor = Exception.class)
@CacheEvict(cacheNames = "oceanEnginCache", key = "'companyId:' + #companyId")
public Boolean updateOceanEnginByResponse(RefreshTokenResponse.Data data, Long id, Long companyId) {
return oceanEngineRepository.updateOceanEngin
(data.getAccessToken(), data.getRefreshToken(), data.getExpiresIn(),
data.getRefreshTokenExpiresIn(), id)
> DefaultNumberConstants.ZERO_NUMBER;
}
@Override
@Cacheable(value = "oceanEnginCache", key = "'companyId:' + #companyId")
public OceanEngineToken getOceanEnginByCompanyId(Long companyId) {
return oceanEngineRepository.findByCompanyId(companyId);
}
@Override
@Transactional(rollbackFor = Exception.class)
@CacheEvict(cacheNames = "oceanEnginCache", key = "'companyId:' + #companyId")
public String refreshToken(String accountToken, Long id, Long companyId) {
RefreshTokenRequest request = new RefreshTokenRequest();
request.setRefreshToken(accountToken);
request.setAppId(oceanEngineConfig.getAppId());
request.setSecret(oceanEngineConfig.getAppSecret());
request.setGrantType("refresh_token");
String requestBody = request.toString();
String result = HttpUtil.post(UrlConstants.OAUTH2_REFRESH_TOKEN_URL, requestBody);
if (StringUtils.isNotBlank(requestBody)) {
RefreshTokenResponse refreshTokenResponse = JSONUtil.toBean(result, RefreshTokenResponse.class);
if (refreshTokenResponse.getCode() == DefaultNumberConstants.ZERO_NUMBER) {
RefreshTokenResponse.Data data = refreshTokenResponse.getData();
// 判断信息是否为空
if (StringUtils.isNotBlank(data.getAccessToken())
&& StringUtils.isNotBlank(data.getRefreshToken())) {
// 修改信息
oceanEngineRepository.updateOceanEngin
(data.getAccessToken(), data.getRefreshToken(), data.getExpiresIn(),
data.getRefreshTokenExpiresIn(), id);
return data.getAccessToken();
}
}
}
return CharSequenceUtil.EMPTY;
}
}

@ -188,6 +188,7 @@ public class UserServiceImpl implements UserService {
CompanyDto companyDto = new CompanyDto();
companyDto.setCompanyName(userDTO.getUsername());
companyDto.setTemplateId(userDTO.getTemplateId());
companyDto.setCompanyType(userDTO.getCompanyType());
companyDto.setStatus(DefaultNumberConstants.ZERO_NUMBER);
companyId = companyService.createCompany(companyDto).getId();
}

@ -0,0 +1,64 @@
package com.baiye.timed;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.config.properties.OceanEngineConfig;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.constant.UrlConstants;
import com.baiye.modules.auth.RefreshTokenRequest;
import com.baiye.modules.auth.RefreshTokenResponse;
import com.baiye.modules.system.domain.OceanEngineToken;
import com.baiye.modules.system.service.OceanEngineService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author Enzo
* @date : 2022/9/14
*/
@Slf4j
@Component
@RequiredArgsConstructor
public class RefreshTokenTask {
private final OceanEngineConfig oceanEngineConfig;
private final OceanEngineService oceanEngineService;
// @Scheduled(cron = "0 0/1 * * * ?")
@Scheduled(cron = "0 45 23 * * ?")
public void updateAccountMassNum() {
List<OceanEngineToken> engineTokens
= oceanEngineService.findByStatus(DefaultNumberConstants.ONE_NUMBER);
if (CollUtil.isNotEmpty(engineTokens)) {
for (OceanEngineToken engineToken : engineTokens) {
RefreshTokenRequest request = new RefreshTokenRequest();
request.setRefreshToken(engineToken.getRefreshToken());
request.setSecret(oceanEngineConfig.getAppSecret());
request.setAppId(oceanEngineConfig.getAppId());
request.setGrantType("refresh_token");
String requestBody = request.toString();
String result = HttpUtil.post(UrlConstants.OAUTH2_REFRESH_TOKEN_URL, requestBody);
if (StringUtils.isNotBlank(requestBody)) {
RefreshTokenResponse refreshTokenResponse = JSONUtil.toBean(result, RefreshTokenResponse.class);
if (refreshTokenResponse.getCode() == DefaultNumberConstants.ZERO_NUMBER) {
RefreshTokenResponse.Data data = refreshTokenResponse.getData();
if (StringUtils.isNotBlank(data.getAccessToken()) && StringUtils.isNotBlank(data.getRefreshToken())) {
Boolean response = oceanEngineService.updateOceanEnginByResponse(data, engineToken.getId(), engineToken.getCompanyId());
log.info("============= update token former token as {}, response token as {}, update response as {} =============",
engineToken.getAccessToken(), data.getAccessToken(), response);
}
}
}
}
}
}
}

@ -169,3 +169,12 @@ debt:
qrcodeUrl: /home/eladmin/qrcode/
qrcodeLogo: /home/eladmin/qrcode/qrcode.jpg
reqUrl: /qrcode/
# 巨量引擎配置
ocean:
engine:
appId: 1744002574259247
appSecret: f1bef553cd635b7cd8057052654ebaaa30fa92a5
redirectUrl: http://8.130.96.163:8866/api/oceanEngine/callback
welcomeUrl: https://baiyee.vip/

@ -170,3 +170,10 @@ debt:
qrcodeUrl: /home/eladmin/qrcode/
qrcodeLogo: /home/eladmin/qrcode/qrcode.jpg
reqUrl: /qrcode/
# 巨量引擎配置
ocean:
engine:
appId: app1
appSecret: xxxx
redirectUrl: https://baiyee.vip/api/oceanEngine/callback
welcomeUrl: https://baiyee.vip/

@ -62,8 +62,6 @@ code:
rsa:
private_key: MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKLhn7fPqFSK9z3Ao4yFFisDO8YV1dOn1I3wpwj1IIu3Z7vkaHyynBf7eF8fo86EQRvnJIo3jVO2jUw5Lor2OYcZVK72oxD5LIULVYI/eXJogzd1C+tJ5IHC7dmTJ37qfjP9VV3mDWlsRusdCoVPE2xUI13H4bPOCE4DyyeldXlFAgMBAAECgYBakWx3D5+AyvipPKl0JDhsWFLvVQrdss+M0Uh/wZWEOsoSfvHejI4hA7It6nDyDzYI5uC5fiQ2bSZqQM1xdXIMmq4F0WM2+ni4Q/bYbaLt9UDGs6GXwHcg3gOTBJoSJq0SZxBpflxbfVOj63ITehTl51q0FvaedxWl63hf6bikQQJBANT3s1usMZmubYxQPLrBeK1mcXG1JxwKDK6n7bJnlBeZy1GCUZ7bwBgr32gRvUXtgqrzT3IyZlld5cUScX601TUCQQDDyxVAPExwbpxD0Ao7CZE9LRYC8YaMQ46NENqaIhnmhMa4vqoTky8t2nLZITmk0EqecTBt/Io+37+X/KCHD+XRAkAraGmIb+qUNndhuCEIt9KPFWheEtxr3KiFGPlb+by3qsNEU9mrFYNr6dVZcvQvQp/1lC5HSnqOEJN6va2gc99ZAkEAnYtF+EAMydNXDgHSmZqjMXSb55Zsy2R4ye2r2KZj7Ocd9/4DYGjoZ58FFs3zUjkAMemmLHouy1TDGAsBKGyUYQJBAJ1io1DxuejCE+sN/bu4Y2S7oQ2Mpfjh7jRYGruDzhdqVnnLxf0spaqJZ5HekQz3uMpkQQGkcN1MZZcRpoWJ7XU=
#配置短信参数
sms:
aliyun:
@ -83,3 +81,4 @@ payTemplate:
wechat:
gatewayHost: byqw.wework.uat.robot.ecofanli.com

@ -0,0 +1,123 @@
package com.baiye;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baiye.modules.system.service.OceanEngineService;
import lombok.extern.slf4j.Slf4j;
import net.minidev.json.JSONObject;
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
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.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.HashMap;
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 OceanEngineTest {
@Resource
private OceanEngineService oceanEngineService;
@Test
public void getSetting() {
String s = oceanEngineService.buildAuthorizationUrl(888L);
String accessToken = getClueList();
log.info("========= the accessToken as {} ==============", accessToken);
}
public String getClueList() {
String access_token = "2dd63ff8c5518f1be2a58a89127f309ff1fffad3";
final String[] advertiser_ids = new String[]{"1741649024454664"};
final String start_time = "2022-06-17";
final String end_time = "2022-09-17";
// 请求地址
String open_api_url_prefix = "https://ad.oceanengine.com/open_api/2/";
String uri = "tools/clue/get/";
// 请求参数
Map data = new HashMap(){
{
put("advertiser_ids", advertiser_ids);
put("start_time", start_time);
put("end_time", end_time);
}
};
// 构造请求
HttpEntityEnclosingRequestBase httpEntity = new HttpEntityEnclosingRequestBase() {
@Override
public String getMethod() {
return "GET";
}
};
httpEntity.setHeader("Access-Token",access_token);
CloseableHttpResponse response = null;
CloseableHttpClient client = null;
try {
client = HttpClientBuilder.create().build();
httpEntity.setURI(URI.create(open_api_url_prefix + uri));
httpEntity.setEntity(new StringEntity(JSONObject.toJSONString(data), ContentType.APPLICATION_JSON));
response = client.execute(httpEntity);
System.out.println(response);
if (response != null && response.getStatusLine().getStatusCode() == 200) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while((line = bufferedReader.readLine()) != null) {
result.append(line);
}
bufferedReader.close();
return result.toString();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}

@ -1,11 +1,16 @@
package com.baiye;
import com.baiye.model.dto.UserDto;
import com.baiye.modules.system.domain.User;
import com.baiye.modules.system.repository.OrganizeUserRepository;
import com.baiye.modules.system.service.RoleService;
import com.baiye.modules.system.service.UserService;
import lombok.extern.slf4j.Slf4j;
import net.minidev.json.JSONObject;
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.apache.hc.core5.http.ContentType;
import org.apache.hc.core5.http.io.entity.StringEntity;
import org.apache.http.client.ClientProtocolException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
@ -13,8 +18,11 @@ import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
/**
* @author Enzo
@ -34,9 +42,126 @@ public class OrganizeTest {
@Test
@Transactional(rollbackFor = Exception.class)
public void getSetting() {
List<Long> list = new ArrayList<>();
list.add(8L);
List<User> userDtos = roleService.roleFindUserId(list);
log.debug("");
String accessToken = getAdvertiser();
log.info(accessToken);
}
public static String getAccessToken() {
String access_token = "xxx";
// 请求地址
String open_api_url_prefix = "https://ad.oceanengine.com/open_api/";
String uri = "oauth2/advertiser/get/";
// 请求参数
Map data = new HashMap() {
{
put("app_id", 1744002574259247L);
put("secret", "f1bef553cd635b7cd8057052654ebaaa30fa92a5");
put("access_token", "2dd63ff8c5518f1be2a58a89127f309ff1fffad3");
}
};
// 构造请求
HttpGet httpEntity = new HttpGet(open_api_url_prefix + uri);
CloseableHttpResponse response = null;
CloseableHttpClient client = null;
try {
client = HttpClientBuilder.create().build();
httpEntity.setEntity(new StringEntity(JSONObject.toJSONString(data), ContentType.APPLICATION_JSON));
response = client.execute(httpEntity);
if (response != null) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
result.append(line);
}
bufferedReader.close();
return result.toString();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
public static String getAdvertiser() {
String access_token = "2dd63ff8c5518f1be2a58a89127f309ff1fffad3";
final Long advertiser_id = 1741649030315008L;
// 请求地址
String open_api_url_prefix = "https://ad.oceanengine.com/open_api/2/";
String uri = "majordomo/advertiser/select/";
// 请求参数
Map data = new HashMap(){
{
put("advertiser_id", advertiser_id);
}
};
// 构造请求
HttpGet httpEntity = new HttpGet(open_api_url_prefix + uri);
httpEntity.setHeader("Access-Token",access_token);
CloseableHttpResponse response = null;
CloseableHttpClient client = null;
try {
client = HttpClientBuilder.create().build();
httpEntity.setEntity(new StringEntity(JSONObject.toJSONString(data), ContentType.APPLICATION_JSON));
response = client.execute(httpEntity);
if (response != null ) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while((line = bufferedReader.readLine()) != null) {
result.append(line);
}
bufferedReader.close();
return result.toString();
// return JSONObject.parseObject(result.toString());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (response != null) {
response.close();
}
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}

@ -5,12 +5,13 @@ package com.baiye.service;
* @date : 2021/12/17
*/
import org.apache.commons.lang3.tuple.ImmutablePair;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.tuple.Pair;
import java.util.*;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Java ,
@ -38,25 +39,38 @@ public class WeightRandomStrategyX<K, V extends Number> {
}
public static void main(String[] args) {
List<Pair<String, Integer>> list = new ArrayList<>();
list.add(new ImmutablePair<>("A", 10));
list.add(new ImmutablePair<>("B", 20));
list.add(new ImmutablePair<>("C", 30));
list.add(new ImmutablePair<>("D", 40));
WeightRandomStrategyX<String, Integer> strategy = new WeightRandomStrategyX<>(list);
Map<String, AtomicInteger> count = new HashMap<>(8);
for (int i = 0; i < 10; i++) {
String key=strategy.random();
AtomicInteger ai = new AtomicInteger(0);
AtomicInteger old = count.putIfAbsent(key,ai);
if(old==null){
old=ai;
}
old.incrementAndGet();
}
System.out.println(count);
List<String> list = Lists.newArrayList("a", "b", "c", "d", "e", "f", "7");
List<List<String>> lists = averageAssign(list, 3);
}
/**
* Listnlist,
*
* @param source
* @param n
* @return
*/
public static <T> List<List<T>> averageAssign(List<T> source, int n) {
List<List<T>> result = Lists.newArrayList();
//(先计算出余数)
int remainder = source.size() % n;
//然后是商
int number = source.size() / n;
//偏移量
int offset = 0;
for (int i = 0; i < n; i++) {
List<T> value;
if (remainder > 0) {
value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
remainder--;
offset++;
} else {
value = source.subList(i * number + offset, (i + 1) * number + offset);
}
result.add(value);
}
return result;
}
}

Loading…
Cancel
Save