新增抖音接口
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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue