소스 검색

Merge remote-tracking branch 'origin/test' into test

syh 5 년 전
부모
커밋
65113f6585

+ 2 - 1
module-common/src/main/java/cn/com/ctop/common/module/mapper/xml/CtopOauthTokenMapper.xml

@@ -15,7 +15,7 @@
         <result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
     </resultMap>
 
-    <sql id="Base_Column_List">
+    <sql id="Base_Column_List">selectAll
         id,media_id,advertiser_id,account_id,access_token,refresh_token,access_token_expires_in,refresh_token_expires_in,create_time,update_time
    </sql>
 
@@ -23,6 +23,7 @@
         select
         <include refid="Base_Column_List"/>
         from ctop_oauth_token
+        group by account_id
     </select>
 
 

+ 17 - 4
module-common/src/main/java/cn/com/ctop/common/module/service/impl/CtopOauthTokenServiceImpl.java

@@ -70,9 +70,20 @@ public class CtopOauthTokenServiceImpl extends ServiceImpl<CtopOauthTokenMapper,
         }
         JSONObject data = resultObject.getJSONObject("data");
         CtopOauthToken refreshToken = new CtopOauthToken(token, data);
-        cTopOauthTokenMapper.deleteById(token.getId());
+       /* cTopOauthTokenMapper.deleteById(token.getId());
         cTopOauthTokenMapper.insert(refreshToken);
-        log.info("头条刷新token成功:accountId:{}", accountId);
+        CtopOauthToken topOauthToken = new CtopOauthToken();
+        topOauthToken.setAccessToken(refreshToken.getAccessToken());
+        topOauthToken.setRefreshToken(refreshToken.getRefreshToken());*/
+
+        QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account_id", accountId);
+        queryWrapper.eq("media_id", 1);
+
+        int i = cTopOauthTokenMapper.update(refreshToken, queryWrapper);
+        if (i > 0) {
+            log.info("头条刷新token成功:accountId:{}", accountId);
+        }
         resultMap.put("message", "token刷新成功");
         resultMap.put("code", 0);
         return resultMap;
@@ -104,7 +115,6 @@ public class CtopOauthTokenServiceImpl extends ServiceImpl<CtopOauthTokenMapper,
                     if (!Check.isNull(oauthToken)) {
                         JSONObject dataJson = resultJson.getJSONObject("data");
                         if (!Check.isNull(dataJson)) {
-                            oauthToken.setAccountId(accountId);
                             oauthToken.setAccessToken(dataJson.getString("access_token"));
                             long accessTokenExpireIn = dataJson.getLong("access_token_expires_in") * 1000L;
                             long now = System.currentTimeMillis();
@@ -115,7 +125,10 @@ public class CtopOauthTokenServiceImpl extends ServiceImpl<CtopOauthTokenMapper,
                             Date refreshTokenExpireInDate = new Date(now + refreshTokenExpireIn);
                             oauthToken.setRefreshTokenExpiresIn(refreshTokenExpireInDate);
                             oauthToken.setUpdateTime(new Date());
-                            int i = cTopOauthTokenMapper.updateByPrimaryKeySelective(oauthToken);
+                            QueryWrapper<CtopOauthToken> queryWrapper = new QueryWrapper<>();
+                            queryWrapper.eq("account_id", accountId);
+                            queryWrapper.eq("media_id", 2);
+                            int i = cTopOauthTokenMapper.update(oauthToken, queryWrapper);
                             if (i > 0) {
                                 log.info("快手刷新token成功,accountId:{}", accountId);
                             }

+ 6 - 3
module-common/src/main/java/cn/com/ctop/common/module/utils/HttpClientUtils.java

@@ -83,7 +83,7 @@ public class HttpClientUtils {
                 }
                 result = builder.toString();
             }
-
+            log.info(httpClientEntity.getResult());
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -92,6 +92,7 @@ public class HttpClientUtils {
     }
 
     public HttpClientEntity httpPostParamRequest(HttpClientEntity httpClientEntity) {
+        String result = "";
         try {
             CookieStore cs = httpClientEntity.getCookieStore();
             if (cs != null) {
@@ -118,17 +119,18 @@ public class HttpClientUtils {
             if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
                 String newUrl = response.getFirstHeader("Location").getValue();
                 httpClientEntity.setUrl(newUrl);
+                result = EntityUtils.toString(response.getEntity());
                 return httpPostParamRequest(httpClientEntity);
             } else if (statusCode == HttpStatus.SC_OK) {
-                String result = EntityUtils.toString(response.getEntity());
+                result = EntityUtils.toString(response.getEntity());
                 log.info(result);
-                httpClientEntity.setResult(result);
                 httpClientEntity.setCloseableHttpClient(httpClient);
             }
         } catch (Exception e) {
             e.printStackTrace();
             log.error(e.getMessage());
         }
+        httpClientEntity.setResult(result);
         System.out.println(new Gson().toJson(cookieStore.getCookies()));
         httpClientEntity.setCookieStore(cookieStore);
         return httpClientEntity;
@@ -161,6 +163,7 @@ public class HttpClientUtils {
                 builder.append(line);
             }
             httpClientEntity.setResult(builder.toString());
+            log.info(httpClientEntity.getResult());
         } catch (Exception e) {
             e.printStackTrace();
         }

+ 14 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/graphql/controller/KuaishouWebController.java

@@ -116,6 +116,20 @@ public class KuaishouWebController {
         return result;
     }
 
+    @PostMapping(value = "/comment/add")
+    public Result<Map<String, Object>> commentAdd(String ksid, String photoId, String principalId, String content, Long replyToCommentId, Long repltTo) {
+        Result<Map<String, Object>> result = new Result<Map<String, Object>>();
+        try {
+            Map<String, Object> statusMap = kuaishouWebInterfaceService.commentAdd(ksid, photoId, principalId, content, replyToCommentId, repltTo);
+            result.setSuccess(true);
+            result.setResult(statusMap);
+        } catch (Exception e) {
+            e.printStackTrace();
+            result.setSuccess(false);
+        }
+        return result;
+    }
+
     @PostMapping(value = "/subcomment/list")
     public Result<Map<String, Object>> subCommentList(String ksid, String photoId, Long rootCommentId, String pcursor) {
         Result<Map<String, Object>> result = new Result<Map<String, Object>>();

+ 2 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/graphql/service/IKuaishouWebInterfaceService.java

@@ -28,5 +28,7 @@ public interface IKuaishouWebInterfaceService {
 
     public Map<String, Object> commentList(String ksid, String photoId, String pcursor);
 
+    public Map<String, Object> commentAdd(String ksid, String photoId, String principalId, String content, Long replyToCommentId, Long replyTo);
+
     public Map<String, Object> subCommentList(String ksid, String photoId, Long rootCommentId, String pcursor);
 }

+ 79 - 14
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/graphql/service/impl/KuaishouWebInterfaceServiceImpl.java

@@ -316,13 +316,71 @@ public class KuaishouWebInterfaceServiceImpl implements IKuaishouWebInterfaceSer
             params.put("photoId", photoId);
             params.put("commentId", commentId);
             System.out.println(new Gson().toJson(params));
+            Map<String, String> headers = getHeaders();
+            headers.put("Content-Type", "application/x-www-form-urlencoded");
+            headers.put("kpn", "GAME_ZONE");
+            headers.put("kpf", "PC_WEB");
             HttpClientEntity httpClientEntity = new HttpClientEntity();
             HttpClientUtils httpClientUtils = new HttpClientUtils();
             httpClientEntity.setCloseableHttpClient(httpClientUtils.createSSLClientDefault());
-            httpClientEntity.setUrl("https://id.kuaishou.com/pass/kuaishou/login/qr/callback");
+            httpClientEntity.setUrl("https://live.kuaishou.com/rest/wd/comment/delete");
             httpClientEntity.setResult("");
             httpClientEntity.setCookieStore(cookieTransfer(kuaishouUserCookie.getCookie()));
-            httpClientEntity.setHeaders(getHeaders());
+            List<Cookie> list = httpClientEntity.getCookieStore().getCookies();
+            String did = "";
+            for (Cookie ck : list) {
+                if (ck.getName().equals("did")) {
+                    did = ck.getValue();
+                }
+            }
+            headers.put("Referer", "https://live.kuaishou.com/u/" + kuaishouUserCookie.getEid() + "/" + photoId + "?did=" + did);
+            httpClientEntity.setHeaders(headers);
+            httpClientEntity.setParams(params);
+            httpClientEntity = httpClientUtils.httpPostParamRequest(httpClientEntity);
+            try {
+                ObjectMapper mapper = new ObjectMapper();
+                resultMap = mapper.readValue(httpClientEntity.getResult(), new TypeReference<Map<String, Object>>() {
+                });
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return resultMap;
+    }
+
+    public Map<String, Object> commentAdd(String ksid, String photoId, String principalId, String content, Long replyToCommentId, Long replyTo) {
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        QueryWrapper<KuaishouUserCookie> queryWrapper = new QueryWrapper<KuaishouUserCookie>();
+        Map<String, Object> resultMap = new HashMap<>();
+        queryWrapper.eq("user_id", user.getId());
+        queryWrapper.eq("ksid", ksid);
+        KuaishouUserCookie kuaishouUserCookie = kuaishouUserCookieService.getOne(queryWrapper);
+        if (kuaishouUserCookie != null) {
+            Map<String, Object> params = new HashMap<String, Object>();
+            params.put("photoId", photoId);
+            params.put("principalId", principalId);
+            params.put("content", content);
+            params.put("replyToCommentId", replyToCommentId);
+            params.put("replyTo", replyTo);
+            Map<String, String> headers = getHeaders();
+            headers.put("Content-Type", "application/x-www-form-urlencoded");
+            headers.put("kpn", "GAME_ZONE");
+            headers.put("kpf", "PC_WEB");
+            System.out.println(new Gson().toJson(params));
+            HttpClientEntity httpClientEntity = new HttpClientEntity();
+            HttpClientUtils httpClientUtils = new HttpClientUtils();
+            httpClientEntity.setCloseableHttpClient(httpClientUtils.createSSLClientDefault());
+            httpClientEntity.setUrl("https://live.kuaishou.com/rest/wd/photo/comment/add");
+            httpClientEntity.setResult("");
+            List<Cookie> list = httpClientEntity.getCookieStore().getCookies();
+            String did = "";
+            for (Cookie ck : list) {
+                if (ck.getName().equals("did")) {
+                    did = ck.getValue();
+                }
+            }
+            headers.put("Referer", "https://live.kuaishou.com/u/" + kuaishouUserCookie.getEid() + "/" + photoId + "?did=" + did);
+            httpClientEntity.setHeaders(headers);
             httpClientEntity.setParams(params);
             httpClientEntity = httpClientUtils.httpPostParamRequest(httpClientEntity);
             try {
@@ -341,7 +399,7 @@ public class KuaishouWebInterfaceServiceImpl implements IKuaishouWebInterfaceSer
         try {
             ObjectMapper mapper = new ObjectMapper();
             JsonNode jsonNode = mapper.readTree(json);
-            SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy H:m:s aaa");
+            SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy h:m:s aa", Locale.ENGLISH);
             if (jsonNode != null) {
                 JsonNode cookiesNode = jsonNode.get("cookies");
                 if (cookiesNode != null && cookiesNode.isArray()) {
@@ -996,18 +1054,25 @@ public class KuaishouWebInterfaceServiceImpl implements IKuaishouWebInterfaceSer
                         System.out.println(threadHttpClientEntity.getResult());
                         threadHttpClientEntity = httpClientUtils.callingGraph(threadHttpClientEntity, userInfoQuery());
                         System.out.println(threadHttpClientEntity.getResult());
-                        KuaishouUserCookie kuaishouUserCookie = new KuaishouUserCookie();
-                        kuaishouUserCookie.setCookie(new Gson().toJson(threadHttpClientEntity.getCookieStore()));
-                        kuaishouUserCookie.setKsid(String.valueOf(kuaishouUserVO.getUserId()));
-                        kuaishouUserCookie.setEid(kuaishouUserVO.getEid());
-                        kuaishouUserCookie.setUserName(kuaishouUserVO.getUserName());
                         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-//                        if(user == null){
-//                            user = new LoginUser();
-//                            user.setId("xxa");
-//                        }
-                        kuaishouUserCookie.setUserId(user.getId());
-                        kuaishouUserCookieService.saveOrUpdate(kuaishouUserCookie);
+                        QueryWrapper<KuaishouUserCookie> queryWrapper = new QueryWrapper<>();
+                        queryWrapper.eq("user_id", user.getId());
+                        queryWrapper.eq("ksid", kuaishouUserVO.getUserId());
+                        KuaishouUserCookie kuaishouUserCookie = kuaishouUserCookieService.getOne(queryWrapper);
+                        if (kuaishouUserCookie == null) {
+                            kuaishouUserCookie = new KuaishouUserCookie();
+                            kuaishouUserCookie.setCookie(new Gson().toJson(threadHttpClientEntity.getCookieStore()));
+                            kuaishouUserCookie.setKsid(String.valueOf(kuaishouUserVO.getUserId()));
+                            kuaishouUserCookie.setEid(kuaishouUserVO.getEid());
+                            kuaishouUserCookie.setUserName(kuaishouUserVO.getUserName());
+                            kuaishouUserCookie.setUserId(user.getId());
+                            kuaishouUserCookieService.save(kuaishouUserCookie);
+                        } else {
+                            kuaishouUserCookie.setCookie(new Gson().toJson(threadHttpClientEntity.getCookieStore()));
+                            kuaishouUserCookie.setUserName(kuaishouUserVO.getUserName());
+                            kuaishouUserCookieService.update(kuaishouUserCookie, queryWrapper);
+                        }
+
                     } catch (Exception e) {
                         e.printStackTrace();
                     }

+ 15 - 0
module-kuaishou/src/main/java/cn/com/ctop/kuaishou/modules/graphql/vo/KuaishouAcceptVO.java

@@ -2,10 +2,25 @@ package cn.com.ctop.kuaishou.modules.graphql.vo;
 
 import lombok.Data;
 
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Locale;
+
 @Data
 public class KuaishouAcceptVO {
     private Integer result;
     private String qrToken;
     private String callback;
     private String sid;
+
+    public static void main(String[] args) {
+        SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy h:m:s aa", Locale.ENGLISH);
+        try {
+            Date d = sdf.parse("Oct 10, 2019 7:49:30 PM");
+            System.out.println(d.toLocaleString());
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+    }
 }

+ 4 - 5
module-report/src/main/java/cn/com/ctop/bytedance/controller/BytedanceReportController.java

@@ -19,16 +19,15 @@ public class BytedanceReportController {
      *
      * @return
      */
-    @RequestMapping(value = "/cost")
-    public JSONObject getCost() {
+    @RequestMapping(value = "/accountReport")
+    public JSONObject getAccountReport() {
         /*LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         if (Check.isNull(user)) {
             JSONObject json = bytedanceReportService.getCost(user.getId());
         }*/
 
-
-        JSONObject json = bytedanceReportService.getCost("e9ca23d68d884d4ebb19d07889727dae");
-        return null;
+        JSONObject json = bytedanceReportService.getAccountReport("e9ca23d68d884d4ebb19d07889727dae");
+        return json;
 
     }
 

+ 6 - 0
module-report/src/main/java/cn/com/ctop/bytedance/mapper/BytedanceReportMapper.java

@@ -0,0 +1,6 @@
+package cn.com.ctop.bytedance.mapper;
+
+
+public interface BytedanceReportMapper {
+
+}

+ 5 - 0
module-report/src/main/java/cn/com/ctop/bytedance/mapper/xml/BytedanceReportMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.com.ctop.bytedance.mapper.BytedanceReportMapper">
+
+</mapper>

+ 1 - 1
module-report/src/main/java/cn/com/ctop/bytedance/service/IBytedanceReportService.java

@@ -3,5 +3,5 @@ package cn.com.ctop.bytedance.service;
 import com.alibaba.fastjson.JSONObject;
 
 public interface IBytedanceReportService {
-    JSONObject getCost(String loginId);
+    JSONObject getAccountReport(String loginId);
 }

+ 123 - 26
module-report/src/main/java/cn/com/ctop/bytedance/service/impl/BytedanceReportServiceImpl.java

@@ -2,10 +2,14 @@ package cn.com.ctop.bytedance.service.impl;
 
 import cn.com.ctop.bytedance.entity.BytedanceAdvertiserDailyReport;
 import cn.com.ctop.bytedance.mapper.BytedanceAdvertiserDailyReportMapper;
+import cn.com.ctop.bytedance.mapper.BytedanceReportMapper;
 import cn.com.ctop.bytedance.service.IBytedanceReportService;
 import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.UserAllocationMapper;
 import cn.com.ctop.common.module.utils.Check;
+import cn.com.ctop.kuaishou.modules.report.entity.KuaishouReportDailyAccount;
+import cn.com.ctop.kuaishou.modules.report.mapper.KuaishouReportDailyAccountMapper;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,25 +26,28 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
     @Autowired
     private BytedanceAdvertiserDailyReportMapper bytedanceAdvertiserDailyReportMapper;
 
+    @Autowired
+    private BytedanceReportMapper bytedanceReportMapper;
+
+    @Autowired
+    private KuaishouReportDailyAccountMapper kuaishouReportDailyAccountMapper;
+
     /**
-     * 获取 媒体昨日总消耗
+     * 媒体昨日总消耗
      *
      * @param loginId
      * @return
      */
     @Override
-    public JSONObject getCost(String loginId) {
-
+    public JSONObject getAccountReport(String loginId) {
         JSONObject returnJson = new JSONObject();
-
-
         QueryWrapper<UserAllocation> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("user_id", loginId);
-        queryWrapper.eq("media_id", 1);
         queryWrapper.isNotNull("account_id");
         queryWrapper.groupBy("account_id");
         List<UserAllocation> userAllocations = userAllocationMapper.selectList(queryWrapper);
         if (!Check.isNull(userAllocations)) {
+            // 头条相关
             JSONObject bytedanceJson = new JSONObject();
             BigDecimal byteDanceCost = new BigDecimal(0);
             Long byteDanceClick = 0L;
@@ -49,26 +56,105 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
             Long byteDanceForm = 0L;
             Long byteDanceNextDayOpen = 0L;
             Long byteDanceActive = 0L;
+            JSONArray bytedanceDetail = new JSONArray();
+
+            // 快手相关
+            JSONArray kuaishouDetail = new JSONArray();
+            JSONObject kuaishouJson = new JSONObject();
+            BigDecimal kuaishouCost = new BigDecimal(0);
+
+            Long kuaishouClick = 0L;
+            Long kuaishouShow = 0L;
+            Long kuaishouConvert = 0L;
+            Long kuaishouForm = 0L;
+            Long kuaishouNextDayOpen = 0L;
+            Long kuaishouActive = 0L;
+
+
             for (UserAllocation userAllocation : userAllocations) {
-                QueryWrapper<BytedanceAdvertiserDailyReport> bytedanceAdvertiserDailyReportQueryWrapper = new QueryWrapper<>();
-                bytedanceAdvertiserDailyReportQueryWrapper.eq("advertiser_id", userAllocation.getAccountId());
-                //   Map<String, Object> beforeDate = DateUtils.getBeforeDate();
-                //  bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", beforeDate.get("startDate"), beforeDate.get("endDate"));
-                bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", "2019-07-01 00:00:00", "2019-07-01 23:59:59");
-                bytedanceAdvertiserDailyReportQueryWrapper.orderByDesc("create_time");
-                bytedanceAdvertiserDailyReportQueryWrapper.last("limit 1");
-                BytedanceAdvertiserDailyReport bytedanceAdvertiserDailyReport = bytedanceAdvertiserDailyReportMapper.selectOne(bytedanceAdvertiserDailyReportQueryWrapper);
-
-                if (!Check.isNull(bytedanceAdvertiserDailyReport)) {
-                    byteDanceCost = byteDanceCost.add(bytedanceAdvertiserDailyReport.getCost());
-                    byteDanceClick += bytedanceAdvertiserDailyReport.getClick();
-                    byteDanceShow += bytedanceAdvertiserDailyReport.getShowNum();
-                    byteDanceConvert += bytedanceAdvertiserDailyReport.getConvertNum();
-                    byteDanceForm += bytedanceAdvertiserDailyReport.getForm();
-                    byteDanceNextDayOpen += bytedanceAdvertiserDailyReport.getNextDayOpen();
-                    byteDanceActive += bytedanceAdvertiserDailyReport.getActive();
-                }
+                if ("1".equals(userAllocation.getMediaId())) {
+                    QueryWrapper<BytedanceAdvertiserDailyReport> bytedanceAdvertiserDailyReportQueryWrapper = new QueryWrapper<>();
+                    bytedanceAdvertiserDailyReportQueryWrapper.eq("advertiser_id", userAllocation.getAccountId());
+                    //   Map<String, Object> beforeDate = DateUtils.getBeforeDate();
+                    //  bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", beforeDate.get("startDate"), beforeDate.get("endDate"));
+                    bytedanceAdvertiserDailyReportQueryWrapper.between("stat_datetime", "2019-07-01 00:00:00", "2019-07-01 23:59:59");
+                    bytedanceAdvertiserDailyReportQueryWrapper.orderByDesc("create_time");
+                    bytedanceAdvertiserDailyReportQueryWrapper.last("limit 1");
+                    BytedanceAdvertiserDailyReport bytedanceAdvertiserDailyReport = bytedanceAdvertiserDailyReportMapper.selectOne(bytedanceAdvertiserDailyReportQueryWrapper);
+                    if (!Check.isNull(bytedanceAdvertiserDailyReport)) {
+                        JSONObject bytedanceDetailJson = new JSONObject();
+                        BigDecimal cost = bytedanceAdvertiserDailyReport.getCost();
+                        bytedanceDetailJson.put("cost", cost); // 账号总消耗
+                        byteDanceCost = byteDanceCost.add(cost);
+                        Long click = bytedanceAdvertiserDailyReport.getClick();
+                        bytedanceDetailJson.put("click", click); // 账号总点击
+                        byteDanceClick += click;
+                        Long showNum = bytedanceAdvertiserDailyReport.getShowNum();
+                        bytedanceDetailJson.put("show", showNum); // 账号总展示
+                        byteDanceShow += showNum;
+                        Long convertNum = bytedanceAdvertiserDailyReport.getConvertNum();
+                        bytedanceDetailJson.put("convert", convertNum); // 账号总转化
+                        byteDanceConvert += convertNum;
+                        Long form = bytedanceAdvertiserDailyReport.getForm();
+                        bytedanceDetailJson.put("form", form); // 账号总表单提交
+                        byteDanceForm += form;
+                        Long nextDayOpen = bytedanceAdvertiserDailyReport.getNextDayOpen();
+                        bytedanceDetailJson.put("nextDayOpen", nextDayOpen); // 账号总次日留存
+                        byteDanceNextDayOpen += nextDayOpen;
+                        Long active = bytedanceAdvertiserDailyReport.getActive();
+                        bytedanceDetailJson.put("active", active); // 账号总激活
+                        byteDanceActive += active;
+                        bytedanceDetailJson.put("accountId", userAllocation.getAccountId()); // 账号
+                        bytedanceDetailJson.put("accountName", userAllocation.getAuthName()); // 账号 名称
+                        bytedanceDetail.add(bytedanceDetailJson);
+                    }
+
+                } else if ("2".equals(userAllocation.getMediaId())) {
+                    // 查询快手相关报表数据
+
+                    QueryWrapper<KuaishouReportDailyAccount> kuaishouReportDailyAccountQueryWrapper = new QueryWrapper<>();
+                    kuaishouReportDailyAccountQueryWrapper.eq("account_id", userAllocation.getAccountId());
+                    //  Map<String, Object> beforeDate = DateUtils.getBeforeDate();
+                    //  kuaishouReportDailyAccountQueryWrapper.between("stat_datetime", beforeDate.get("startDate"), beforeDate.get("endDate"));
+                    kuaishouReportDailyAccountQueryWrapper.between("stat_date", "2019-10-08 00:00:00", "2019-10-08 23:59:59");
+                    kuaishouReportDailyAccountQueryWrapper.orderByDesc("create_time");
+                    kuaishouReportDailyAccountQueryWrapper.last("limit 1");
+                    KuaishouReportDailyAccount reportDailyAccount = kuaishouReportDailyAccountMapper.selectOne(kuaishouReportDailyAccountQueryWrapper);
+                    if (!Check.isNull(reportDailyAccount)) {
+                        JSONObject kuaishouDetailJson = new JSONObject();
+                        kuaishouDetailJson.put("accountId", userAllocation.getAccountId());
+                        kuaishouDetailJson.put("accountName", userAllocation.getAuthName());
+
+                        BigDecimal cost = reportDailyAccount.getCharge();// 花费
+                        kuaishouDetailJson.put("cost", cost);
+                        kuaishouCost = kuaishouCost.add(cost);
+
+                        Long click = reportDailyAccount.getAclick();
+                        kuaishouDetailJson.put("click", click);
+                        kuaishouClick += click;
+
+                        Long show = reportDailyAccount.getShow();
+                        kuaishouDetailJson.put("show", show);
+                        kuaishouShow += show;
+
+                        Long convert = reportDailyAccount.getBclick();
+                        kuaishouDetailJson.put("convert", convert);
+                        kuaishouConvert += convert;
+
+                        Long form = reportDailyAccount.getSubmit();
+                        kuaishouDetailJson.put("form", form);
+                        kuaishouForm += form;
+
+
+                        Long active = reportDailyAccount.getActivation();
+                        kuaishouDetailJson.put("active", active);
+                        kuaishouActive += active;
+
+                        kuaishouDetail.add(kuaishouDetailJson);
+
+                    }
 
+                }
             }
             bytedanceJson.put("cost", byteDanceCost); // 总消耗
             bytedanceJson.put("click", byteDanceClick); // 总点击
@@ -78,14 +164,25 @@ public class BytedanceReportServiceImpl implements IBytedanceReportService {
             bytedanceJson.put("nextDayOpen", byteDanceNextDayOpen); // 总次留数
             bytedanceJson.put("active", byteDanceActive); // 总激活
 
-
             returnJson.put("bytedance", bytedanceJson);
+            returnJson.put("bytedanceDetail", bytedanceDetail);
+
+
+            kuaishouJson.put("cost", kuaishouCost);
+            kuaishouJson.put("click", kuaishouClick);
+            kuaishouJson.put("show", kuaishouShow);
+            kuaishouJson.put("convert", kuaishouConvert);
+            kuaishouJson.put("form", kuaishouForm);
+            kuaishouJson.put("nextDayOpen", 0);
+            kuaishouJson.put("active", kuaishouActive);
+            returnJson.put("kuaishou", kuaishouJson);
+            returnJson.put("kuaishouDetail", kuaishouDetail);
             System.err.println(returnJson);
 
         }
 
 
-        return null;
+        return returnJson;
     }