|
|
|
package com.zhonglai.luhui.data.file.service.controller;
|
|
|
|
|
|
|
|
import cn.hutool.db.Db;
|
|
|
|
import cn.hutool.db.Entity;
|
|
|
|
import com.ruoyi.common.core.domain.Message;
|
|
|
|
import com.ruoyi.common.core.domain.MessageCode;
|
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
|
import com.ruoyi.common.utils.GsonConstructor;
|
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
|
import com.zhonglai.luhui.data.file.service.baidu.BaiDuWangPanResponse;
|
|
|
|
import com.zhonglai.luhui.data.file.service.baidu.BaiDuWangPanService;
|
|
|
|
import com.zhonglai.luhui.data.file.service.dto.SysTripartitePlatformToken;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import org.springframework.stereotype.Controller;
|
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.sql.SQLException;
|
|
|
|
|
|
|
|
@Api(tags = "百度网盘管理")
|
|
|
|
@Controller
|
|
|
|
@RequestMapping("/baiDuWangPan")
|
|
|
|
public class BaiDuWangPanController {
|
|
|
|
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
private static String typestr = "BaiDuWangPanToken_ZL";
|
|
|
|
|
|
|
|
@ApiOperation("获取授权连接")
|
|
|
|
@GetMapping("/getOauth2Url")
|
|
|
|
public void getOauth2Url(HttpServletResponse httpServletResponse,HttpServletRequest httpServletRequest)
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
httpServletResponse.sendRedirect(BaiDuWangPanService.getOauth2Url(getRedirectUri(httpServletRequest)));
|
|
|
|
} catch (IOException e) {
|
|
|
|
logger.error("获取授权连接失败", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation("授权回调")
|
|
|
|
@GetMapping("/oauth2")
|
|
|
|
@ResponseBody
|
|
|
|
public String oauth2(String code,HttpServletRequest httpServletRequest)
|
|
|
|
{
|
|
|
|
String str = BaiDuWangPanService.oauth2(code,getRedirectUri(httpServletRequest));
|
|
|
|
logger.info("收到授权返回的数据{}", str);
|
|
|
|
if(StringUtils.isEmpty(str))
|
|
|
|
{
|
|
|
|
return "获取授权码错误";
|
|
|
|
}
|
|
|
|
saveOauth2(str);
|
|
|
|
|
|
|
|
return str;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
BaiDuWangPanController baiDuWangPanController = new BaiDuWangPanController();
|
|
|
|
baiDuWangPanController.saveOauth2("{\"expires_in\":2592000,\"refresh_token\":\"122.0053b4548d54856cceccae388c878853.Y3HekPPrUdJIXRDKIxMD7CpGAuPOWcVU61SGsQQ.1BN3ew\",\"access_token\":\"121.1cd4766c1e1cd5d58a461b3c2a09f213.YHdmmMQr0l3iHKQUJVJHNfp2f_fk3y6RFWHNSLY.GvxSuA\",\"session_secret\":\"\",\"session_key\":\"\",\"scope\":\"basic netdisk\"}\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
private void saveOauth2(String str)
|
|
|
|
{
|
|
|
|
BaiDuWangPanResponse baiDuWangPanResponse = GsonConstructor.get().fromJson(str,BaiDuWangPanResponse.class);
|
|
|
|
|
|
|
|
try {
|
|
|
|
SysTripartitePlatformToken sysTripartitePlatformToken = new SysTripartitePlatformToken();
|
|
|
|
sysTripartitePlatformToken.setTripartite_platform_type(typestr);
|
|
|
|
sysTripartitePlatformToken.setTripartite_platform_name("百度网络的授权token(钟来的)");
|
|
|
|
sysTripartitePlatformToken.setCreate_time(DateUtils.getNowTimeMilly());
|
|
|
|
sysTripartitePlatformToken.setUpdate_time(DateUtils.getNowTimeMilly());
|
|
|
|
|
|
|
|
sysTripartitePlatformToken.setAccess_token(baiDuWangPanResponse.getAccess_token());
|
|
|
|
sysTripartitePlatformToken.setAccess_token_end_time(sysTripartitePlatformToken.getUpdate_time()+baiDuWangPanResponse.getExpires_in());
|
|
|
|
sysTripartitePlatformToken.setRefresh_token(baiDuWangPanResponse.getRefresh_token());
|
|
|
|
sysTripartitePlatformToken.setRefresh_token_end_time(sysTripartitePlatformToken.getUpdate_time()+(10*365*24*60*60));
|
|
|
|
|
|
|
|
Db.use().insert(Entity.create().parse(sysTripartitePlatformToken).setTableName("sys_tripartite_platform_token"));
|
|
|
|
} catch (SQLException e) {
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@ApiOperation("获取token")
|
|
|
|
@GetMapping("/getToekn")
|
|
|
|
@ResponseBody
|
|
|
|
public Message getToekn()
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
Entity entity = Db.use().get("sys_tripartite_platform_token","tripartite_platform_type",typestr);
|
|
|
|
if(null == entity)
|
|
|
|
{
|
|
|
|
return new Message(MessageCode.DEFAULT_FAIL_CODE,"未授权");
|
|
|
|
}
|
|
|
|
SysTripartitePlatformToken sysTripartitePlatformToken = entity.toBean(SysTripartitePlatformToken.class);
|
|
|
|
int time = DateUtils.getNowTimeMilly();
|
|
|
|
if((sysTripartitePlatformToken.getAccess_token_end_time()-time)<=3600)
|
|
|
|
{
|
|
|
|
if((sysTripartitePlatformToken.getRefresh_token_end_time()-time)<=(24*60*60))
|
|
|
|
{
|
|
|
|
String str = BaiDuWangPanService.refreshToken(sysTripartitePlatformToken.getRefresh_token());
|
|
|
|
BaiDuWangPanResponse baiDuWangPanResponse = GsonConstructor.get().fromJson(str,BaiDuWangPanResponse.class);
|
|
|
|
sysTripartitePlatformToken.setAccess_token(baiDuWangPanResponse.getAccess_token());
|
|
|
|
sysTripartitePlatformToken.setAccess_token_end_time(sysTripartitePlatformToken.getUpdate_time()+baiDuWangPanResponse.getExpires_in());
|
|
|
|
sysTripartitePlatformToken.setRefresh_token(baiDuWangPanResponse.getRefresh_token());
|
|
|
|
sysTripartitePlatformToken.setRefresh_token_end_time(sysTripartitePlatformToken.getUpdate_time()+(10*365*24*60*60));
|
|
|
|
sysTripartitePlatformToken.setUpdate_time(DateUtils.getNowTimeMilly());
|
|
|
|
Db.use().update(Entity.create().parse(sysTripartitePlatformToken).setTableName("sys_tripartite_platform_token"),Entity.create().addFieldNames("id"));
|
|
|
|
}
|
|
|
|
return new Message(MessageCode.DEFAULT_FAIL_CODE,"授权到期,请重新授权");
|
|
|
|
}
|
|
|
|
return new Message(MessageCode.DEFAULT_SUCCESS_CODE,sysTripartitePlatformToken.getAccess_token());
|
|
|
|
} catch (SQLException e) {
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private String getRedirectUri(HttpServletRequest httpServletRequest)
|
|
|
|
{
|
|
|
|
String requestUrl = httpServletRequest.getRequestURL().toString();
|
|
|
|
String rootUrl = requestUrl.substring(0, requestUrl.lastIndexOf("/"));
|
|
|
|
// return rootUrl+"/baiDuWangPan/oauth2";
|
|
|
|
return "oob";
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|