|
...
|
...
|
@@ -8,6 +8,7 @@ import com.ruoyi.common.core.domain.AjaxResult; |
|
|
|
import com.ruoyi.common.utils.DateUtils;
|
|
|
|
import com.ruoyi.common.utils.GsonConstructor;
|
|
|
|
import com.zhonglai.luhui.api.controller.test.dto.ClueData;
|
|
|
|
import com.zhonglai.luhui.api.controller.test.dto.TenantAccessToken;
|
|
|
|
import com.zhonglai.luhui.config.requestbodymiss.RequestReaderHttpServletRequestWrapper;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
...
|
...
|
@@ -75,68 +76,42 @@ public class TestController { |
|
|
|
@RequestMapping(value = "douyin")
|
|
|
|
public String douyin(@RequestBody String jsr) throws IOException {
|
|
|
|
ClueData clueData = GsonConstructor.get().fromJson(jsr, ClueData.class);
|
|
|
|
|
|
|
|
String tenant_access_token = gettenant_access_token();
|
|
|
|
JsonObject field = new JsonObject();
|
|
|
|
field.addProperty("日期",DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss",new Date(Integer.parseInt(clueData.getCreate_time())*1000l)));
|
|
|
|
field.addProperty("发送人","");
|
|
|
|
field.addProperty("接收人",clueData.getRefer_dy_name());
|
|
|
|
field.addProperty("内容",clueData.getTelephone());
|
|
|
|
field.addProperty("线索来源","抖音");
|
|
|
|
field.addProperty("地址",clueData.getLocation());
|
|
|
|
subFeishuTables(tenant_access_token,"YY58bkeMjahX5Uskh4WcnYOCnZc","tbldo1VjlU9jY51Y",field);
|
|
|
|
|
|
|
|
// switch (clueData.getActionType())
|
|
|
|
// {
|
|
|
|
// case 0: // 0: 其他
|
|
|
|
// break;
|
|
|
|
// case 1: // 1: 短视频
|
|
|
|
// break;
|
|
|
|
// case 2: // 2: 直播
|
|
|
|
// break;
|
|
|
|
// case 3: // 3: 企业主页
|
|
|
|
// break;
|
|
|
|
// case 4: // 4: 私信
|
|
|
|
// break;
|
|
|
|
// case 5: // 5: 订阅文章
|
|
|
|
// break;
|
|
|
|
// case 6: // 6: 群聊
|
|
|
|
// break;
|
|
|
|
// case 7: // 7: 独立店铺
|
|
|
|
// break;
|
|
|
|
// case 8: // 8: 搜索服务卡
|
|
|
|
// break;
|
|
|
|
// }
|
|
|
|
|
|
|
|
subData(clueData);
|
|
|
|
return "{\n" +
|
|
|
|
" \"code\": \"1\",\n" +
|
|
|
|
" \"message\": \"success\"\n" +
|
|
|
|
"}";
|
|
|
|
}
|
|
|
|
|
|
|
|
private static String tenant_access_token;
|
|
|
|
private static long tokenExpireTime = 0; // 添加token过期时间字段
|
|
|
|
|
|
|
|
private String gettenant_access_token() {
|
|
|
|
private static Map<String, TenantAccessToken> tenant_access_token_map = new HashMap<>();
|
|
|
|
|
|
|
|
private static String gettenant_access_token(String yy_app_id,String yy_app_secret) {
|
|
|
|
if(tenant_access_token_map.containsKey(yy_app_id))
|
|
|
|
{
|
|
|
|
TenantAccessToken tenant_access_token = tenant_access_token_map.get(yy_app_id);
|
|
|
|
// 判断token是否未超时
|
|
|
|
if (tenant_access_token != null && System.currentTimeMillis() < tokenExpireTime) {
|
|
|
|
return tenant_access_token;
|
|
|
|
if (tenant_access_token.getTenant_access_token() != null && System.currentTimeMillis() < tenant_access_token.getTokenExpireTime()) {
|
|
|
|
return tenant_access_token.getTenant_access_token();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
String url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal";
|
|
|
|
JsonObject params = new JsonObject();
|
|
|
|
params.addProperty("app_id", "cli_a77e560b9475100c"); // 替换为实际的 app_id
|
|
|
|
params.addProperty("app_secret", "7E80HFwgkmHjngFWDNsz6Pe1aqtKLC3m"); // 替换为实际的 app_secret
|
|
|
|
params.addProperty("app_id", yy_app_id); // 替换为实际的 app_id
|
|
|
|
params.addProperty("app_secret", yy_app_secret); // 替换为实际的 app_secret
|
|
|
|
|
|
|
|
String str = HttpRequest.post(url).header("Content-Type", "application/json; charset=utf-8").body(params.toString()).execute().body();
|
|
|
|
|
|
|
|
JsonObject responseMap = GsonConstructor.get().fromJson(str, JsonObject.class);
|
|
|
|
|
|
|
|
if (responseMap != null && responseMap.get("code").getAsInt()==0) {
|
|
|
|
tenant_access_token = responseMap.get("tenant_access_token").getAsString();
|
|
|
|
TenantAccessToken tenant_access_token = new TenantAccessToken();
|
|
|
|
tenant_access_token.setTenant_access_token(responseMap.get("tenant_access_token").getAsString());
|
|
|
|
// 设置token过期时间,假设token有效期为7200秒
|
|
|
|
tokenExpireTime = System.currentTimeMillis() + responseMap.get("expire").getAsInt() * 1000;
|
|
|
|
return tenant_access_token;
|
|
|
|
tenant_access_token.setTokenExpireTime(System.currentTimeMillis() + responseMap.get("expire").getAsInt() * 1000);
|
|
|
|
tenant_access_token_map.put(yy_app_id, tenant_access_token);
|
|
|
|
return tenant_access_token.getTenant_access_token();
|
|
|
|
} else {
|
|
|
|
throw new RuntimeException("Failed to get tenant_access_token: " + str);
|
|
|
|
}
|
|
...
|
...
|
@@ -152,7 +127,7 @@ public class TestController { |
|
|
|
*
|
|
|
|
* 请求头 :Authorization、Content-Type
|
|
|
|
*/
|
|
|
|
private void subFeishuTables(String tenant_access_token,String app_token,String table_id, JsonObject field )
|
|
|
|
private static void subFeishuTables(String tenant_access_token,String app_token,String table_id, JsonObject field )
|
|
|
|
{
|
|
|
|
String url = "https://open.feishu.cn/open-apis/bitable/v1/apps/"+app_token+"/tables/"+table_id+"/records";
|
|
|
|
|
|
...
|
...
|
@@ -165,8 +140,36 @@ public class TestController { |
|
|
|
}
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
String jsr= "{\"store_id\":0,\"create_time\":\"1745031148\",\"gender\":\"未知\",\"action_type\":4,\"telephone\":\"13063963982\",\"promotion_id\":0,\"clue_source\":5,\"store_pack_id\":0,\"refer_dy_id\":\"2046931013\",\"app_name\":\"暂未获取到\",\"ad_id\":\"0\",\"module_id\":\"0\",\"flow_type\":1,\"name\":\"未命名\",\"site_id\":\"0\",\"remark_dict\":{},\"adv_id\":\"0\",\"clue_type\":1,\"location\":\"江苏+常州\",\"id\":\"7494853024813154342\",\"clue_convert_status\":\"外部流量\",\"refer_dy_name\":\"鱼儿乐智慧渔业系统\"}";
|
|
|
|
String jsr= "{\"store_id\":0,\"create_time\":\"1746668144\",\"gender\":\"未知\",\"action_type\":3,\"telephone\":\"18061271693\",\"promotion_id\":0,\"clue_source\":5,\"store_pack_id\":0,\"refer_dy_id\":\"2046931013\",\"app_name\":\"暂未获取到\",\"ad_id\":\"0\",\"module_id\":\"1805421364269097\",\"flow_type\":1,\"name\":\"未命名\",\"site_id\":\"0\",\"remark_dict\":{},\"adv_id\":\"0\",\"clue_type\":2,\"location\":\"山东+泰安\",\"id\":\"7501883876034215974\",\"module_name\":\"官方电话\",\"clue_convert_status\":\"外部流量\",\"refer_dy_name\":\"鱼儿乐>智慧渔业系统\"}";
|
|
|
|
ClueData clueData = GsonConstructor.get().fromJson(jsr, ClueData.class);
|
|
|
|
System.out.println(clueData);
|
|
|
|
subData(clueData);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void subData(ClueData clueData)
|
|
|
|
{
|
|
|
|
subFeishuLiushuiyu(clueData);
|
|
|
|
subFeishuLuhui(clueData);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static void subFeishuLiushuiyu(ClueData clueData)
|
|
|
|
{
|
|
|
|
JsonObject field = new JsonObject();
|
|
|
|
field.addProperty("账号",clueData.getRefer_dy_name());
|
|
|
|
field.addProperty("联系方式",clueData.getTelephone());
|
|
|
|
field.addProperty("渠道","抖音");
|
|
|
|
field.addProperty("地址",clueData.getLocation());
|
|
|
|
subFeishuTables(gettenant_access_token("cli_a88a14d3b279d01c","Z3hpYKHeR1yR2aiv6Rp0mcnwKvehkzmT"),"VLGDbZTtPaJIrgsAzzJcyb8Vnve","tblgzxv9TNwKjUFv",field);
|
|
|
|
}
|
|
|
|
private static void subFeishuLuhui(ClueData clueData)
|
|
|
|
{
|
|
|
|
JsonObject field = new JsonObject();
|
|
|
|
field.addProperty("日期",Integer.parseInt(clueData.getCreate_time())*1000l);
|
|
|
|
field.addProperty("发送人","");
|
|
|
|
field.addProperty("接收人",clueData.getRefer_dy_name());
|
|
|
|
field.addProperty("内容",clueData.getTelephone());
|
|
|
|
field.addProperty("线索来源","抖音");
|
|
|
|
field.addProperty("地址",clueData.getLocation());
|
|
|
|
subFeishuTables(gettenant_access_token("cli_a77e560b9475100c","7E80HFwgkmHjngFWDNsz6Pe1aqtKLC3m"),"YY58bkeMjahX5Uskh4WcnYOCnZc","tbldo1VjlU9jY51Y",field);
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|