SupplyChainServiceImpl.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. package com.ruixuan.isc.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.kuaishou.merchant.open.api.KsMerchantApiException;
  5. import com.kuaishou.merchant.open.api.client.AccessTokenKsMerchantClient;
  6. import com.kuaishou.merchant.open.api.common.utils.GsonUtils;
  7. import com.kuaishou.merchant.open.api.request.distribution.OpenDistributionCpsLeaderOrderCursorListRequest;
  8. import com.kuaishou.merchant.open.api.request.distribution.OpenDistributionInvestmentActivityOpenListRequest;
  9. import com.kuaishou.merchant.open.api.response.distribution.OpenDistributionCpsLeaderOrderCursorListResponse;
  10. import com.kuaishou.merchant.open.api.response.distribution.OpenDistributionInvestmentActivityOpenListResponse;
  11. import com.ruixuan.common.utils.Check;
  12. import com.ruixuan.common.utils.DateUtils;
  13. import com.ruixuan.isc.entity.KuaiShouActivityInfo;
  14. import com.ruixuan.isc.entity.KuaishouAccessToken;
  15. import com.ruixuan.isc.entity.KuaishouSupplyChain;
  16. import com.ruixuan.isc.mapper.KuaishouItemListMapper;
  17. import com.ruixuan.isc.mapper.SupplyChainMapper;
  18. import com.ruixuan.isc.service.IAccessTokenService;
  19. import com.ruixuan.isc.service.ISupplyChainService;
  20. import lombok.extern.slf4j.Slf4j;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Service;
  23. import java.util.ArrayList;
  24. import java.util.HashMap;
  25. import java.util.List;
  26. import java.util.Map;
  27. @Slf4j
  28. @Service
  29. public class SupplyChainServiceImpl implements ISupplyChainService {
  30. @Autowired
  31. private SupplyChainMapper supplyChainMapper;
  32. @Autowired
  33. private KuaishouItemListMapper itemListMapper;
  34. @Autowired
  35. private IAccessTokenService accessTokenService;
  36. // 获取订单数据 
  37. @Override
  38. public List<JSONObject> getOrderList(Map<String, Object> requestMap) {
  39. List<JSONObject> list = supplyChainMapper.getOrderList(requestMap);
  40. if (!Check.isNull(list)) {
  41. for (int i = 0; i < list.size(); i++) {
  42. JSONObject jsonObject = list.get(i);
  43. String promoterId = jsonObject.getString("promoterId");
  44. requestMap.put("promoterId", promoterId);
  45. List<JSONObject> topOrders = supplyChainMapper.getTopOrders(requestMap);
  46. jsonObject.put("topOrders", topOrders);
  47. }
  48. }
  49. return list;
  50. }
  51. //达人带货详情
  52. @Override
  53. public List<JSONObject> anchorOrderDetail(Map<String, Object> requestMap) {
  54. return supplyChainMapper.anchorOrderDetail(requestMap);
  55. }
  56. //订单统计
  57. @Override
  58. public List<JSONObject> orderStatistics(Map<String, Object> requestMap) {
  59. return supplyChainMapper.orderStatistics(requestMap);
  60. }
  61. //商品列表
  62. @Override
  63. public List<JSONObject> itemList(Map<String, Object> requestMap) {
  64. List<JSONObject> list = supplyChainMapper.itemList(requestMap);
  65. return list;
  66. }
  67. @Override
  68. public List<JSONObject> itemBindList(Map<String, Object> requestMap) {
  69. return supplyChainMapper.itemBindList(requestMap);
  70. }
  71. @Override
  72. public List<JSONObject> itemDetail(Map<String, Object> requestMap) {
  73. return supplyChainMapper.itemDetail(requestMap);
  74. }
  75. @Override
  76. public List<JSONObject> itemServiceCharge(Map<String, Object> requestMap) {
  77. return supplyChainMapper.itemServiceCharge(requestMap);
  78. }
  79. @Override
  80. public JSONObject getOrderTotal(Map<String, Object> requestMap) {
  81. return supplyChainMapper.getOrderTotal(requestMap);
  82. }
  83. @Override
  84. public Double getOrderTotalRatio(Map<String, Object> ratioMap) {
  85. return supplyChainMapper.getOrderTotalRatio(ratioMap);
  86. }
  87. @Override
  88. public JSONObject getAmountTotal(Map<String, Object> requestMap) {
  89. return supplyChainMapper.getAmountTotal(requestMap);
  90. }
  91. @Override
  92. public Double getAmountTotalRatio(Map<String, Object> ratioMap) {
  93. return supplyChainMapper.getAmountTotalRatio(ratioMap);
  94. }
  95. @Override
  96. public JSONObject getServiceAmountTotal(Map<String, Object> requestMap) {
  97. return supplyChainMapper.getServiceAmountTotal(requestMap);
  98. }
  99. @Override
  100. public List<JSONObject> getOrderRankRatioList(Map<String, Object> requestMap) {
  101. return supplyChainMapper.getOrderRankRatioList(requestMap);
  102. }
  103. @Override
  104. public List<JSONObject> getOrderRankList(Map<String, Object> requestMap) {
  105. return supplyChainMapper.getOrderRankList(requestMap);
  106. }
  107. @Override
  108. public List<JSONObject> getPromoterRankRatioList(Map<String, Object> requestMap) {
  109. return supplyChainMapper.getPromoterRankRatioList(requestMap);
  110. }
  111. @Override
  112. public List<JSONObject> getPromoterRatioList(Map<String, Object> requestMap) {
  113. return supplyChainMapper.getPromoterRatioList(requestMap);
  114. }
  115. @Override
  116. public List<JSONObject> exportPromoterTotal(Map<String, Object> requestMap) {
  117. return supplyChainMapper.exportPromoterTotal(requestMap);
  118. }
  119. @Override
  120. public List<JSONObject> exportPromoter(Map<String, Object> requestMap) {
  121. return supplyChainMapper.exportPromoter(requestMap);
  122. }
  123. @Override
  124. public List<JSONObject> exportOrder(Map<String, Object> requestMap) {
  125. return supplyChainMapper.exportOrder(requestMap);
  126. }
  127. @Override
  128. public List<JSONObject> getTopPromoterByItemId(Map<String, Object> requestMap) {
  129. return supplyChainMapper.getTopPromoterByItemId(requestMap);
  130. }
  131. @Override
  132. public List<JSONObject> bindUserItemList(Map<String, Object> requestMap) {
  133. return supplyChainMapper.bindUserItemList(requestMap);
  134. }
  135. @Override
  136. public List<JSONObject> getSupplyChainUserList() {
  137. return supplyChainMapper.getSupplyChainUserList();
  138. }
  139. @Override
  140. public boolean unbindUser(Long itemId) {
  141. return supplyChainMapper.unbindUser(itemId);
  142. }
  143. @Override
  144. public boolean bindUser(Long itemId, Long userId, String nikeName) {
  145. return supplyChainMapper.bindUser(itemId, userId, nikeName);
  146. }
  147. @Override
  148. public List<JSONObject> adminReportList(Map<String, Object> requestMap) {
  149. return supplyChainMapper.adminReportList(requestMap);
  150. }
  151. @Override
  152. public List<JSONObject> userItemDetail(Map<String, Object> requestMap) {
  153. return supplyChainMapper.userItemDetail(requestMap);
  154. }
  155. @Override
  156. public JSONObject getTimeIntervalRatio(Map<String, Object> requestMap) {
  157. return supplyChainMapper.getTimeIntervalRatio(requestMap);
  158. }
  159. @Override
  160. public List<JSONObject> indexStatistics(Map<String, Object> requestMap) {
  161. return supplyChainMapper.indexStatistics(requestMap);
  162. }
  163. @Override
  164. public JSONObject itemBindSummary() {
  165. return supplyChainMapper.itemBindSummary();
  166. }
  167. @Override
  168. public JSONObject userItemTotal(Map<String, Object> requestMap) {
  169. return supplyChainMapper.userItemTotal(requestMap);
  170. }
  171. @Override
  172. public List<JSONObject> exportUserItemDetail(Map<String, Object> requestMap) {
  173. return supplyChainMapper.exportUserItemDetail(requestMap);
  174. }
  175. @Override
  176. public JSONObject selectOrderInfo(List<String> promoterIds, String startDate, String endDate) {
  177. return supplyChainMapper.selectOrderInfo(promoterIds, startDate, endDate);
  178. }
  179. @Override
  180. public JSONObject selectOrderRate(List<String> promoterIds, List<Long> itemIds, Long statDate, Long endDate) {
  181. return supplyChainMapper.selectOrderRate(promoterIds, itemIds, statDate, endDate);
  182. }
  183. @Override
  184. public JSONObject selectOrderRateBytedance(List<String> promoterIds, List<Long> itemIds, Long statDate, Long endDate) {
  185. return supplyChainMapper.selectOrderRateBytedance(promoterIds, itemIds, statDate, endDate);
  186. }
  187. @Override
  188. public List<JSONObject> getMonthOrderAmount(Map<String, Object> map) {
  189. return supplyChainMapper.getMonthOrderAmount(map);
  190. }
  191. @Override
  192. public List<JSONObject> getMonthOrderAmountBytedance(Map<String, Object> map) {
  193. return supplyChainMapper.getMonthOrderAmountBytedance(map);
  194. }
  195. @Override
  196. public JSONObject getMonthOrderAmountTotalBytedance(Map<String, Object> map) {
  197. return supplyChainMapper.getMonthOrderAmountTotalBytedance(map);
  198. }
  199. @Override
  200. public List<JSONObject> getMonthOrderAmountByItemsBytedance(Map<String, Object> map) {
  201. return supplyChainMapper.getMonthOrderAmountByItemsBytedance(map);
  202. }
  203. @Override
  204. public JSONObject getMonthOrderAmountTotalByItemsBytedance(Map<String, Object> map) {
  205. return supplyChainMapper.getMonthOrderAmountTotalByItemsBytedance(map);
  206. }
  207. @Override
  208. public List<JSONObject> getOrderRankRatioListBytedance(Map<String, Object> requestMap) {
  209. return supplyChainMapper.getOrderRankRatioListBytedance(requestMap);
  210. }
  211. @Override
  212. public List<JSONObject> getOrderRankListBytedance(Map<String, Object> requestMap) {
  213. return supplyChainMapper.getOrderRankListBytedance(requestMap);
  214. }
  215. @Override
  216. public List<JSONObject> getPromoterRankRatioListBytedance(Map<String, Object> requestMap) {
  217. return supplyChainMapper.getPromoterRankRatioListBytedance(requestMap);
  218. }
  219. @Override
  220. public List<JSONObject> getPromoterRatioListBytedance(Map<String, Object> requestMap) {
  221. return supplyChainMapper.getPromoterRatioListBytedance(requestMap);
  222. }
  223. @Override
  224. public JSONObject selectOrderInfoBytedance(List<String> promoterIds, Long startDate, Long endDate) {
  225. return supplyChainMapper.selectOrderInfoBytedance(promoterIds, startDate, endDate);
  226. }
  227. @Override
  228. public List<JSONObject> bdReportListV2ByBind(Map<String, Object> requestMap) {
  229. return supplyChainMapper.bdReportListV2ByBind(requestMap);
  230. }
  231. @Override
  232. public List<JSONObject> exportBindOrder(Map<String, Object> requestMap) {
  233. return supplyChainMapper.exportBindOrder(requestMap);
  234. }
  235. @Override
  236. public JSONObject getMonthOrderAmountTotal(Map<String, Object> map) {
  237. return supplyChainMapper.getMonthOrderAmountTotal(map);
  238. }
  239. @Override
  240. public JSONObject selectOrderInfoByItemIds(List<Long> itemIds, String startDate, String endDate) {
  241. return supplyChainMapper.selectOrderInfoByItemIds(itemIds, startDate, endDate);
  242. }
  243. @Override
  244. public List<JSONObject> getMonthOrderAmountByItems(Map<String, Object> map) {
  245. return supplyChainMapper.getMonthOrderAmountByItems(map);
  246. }
  247. @Override
  248. public JSONObject getMonthOrderAmountTotalByItems(Map<String, Object> map) {
  249. return supplyChainMapper.getMonthOrderAmountTotalByItems(map);
  250. }
  251. @Override
  252. public List<JSONObject> bdReportList(Map<String, Object> requestMap) {
  253. return supplyChainMapper.bdReportList(requestMap);
  254. }
  255. @Override
  256. public List<JSONObject> bdDetailList(Map<String, Object> requestMap) {
  257. return supplyChainMapper.bdDetailList(requestMap);
  258. }
  259. @Override
  260. public List<JSONObject> bdTotal(Map<String, Object> requestMap) {
  261. return supplyChainMapper.bdTotal(requestMap);
  262. }
  263. @Override
  264. public List<JSONObject> exportBdDetail(Map<String, Object> requestMap) {
  265. return supplyChainMapper.exportBdDetail(requestMap);
  266. }
  267. @Override
  268. public String getUserName(Long promoterId) {
  269. return supplyChainMapper.getUserName(promoterId);
  270. }
  271. @Override
  272. public List<JSONObject> exportBdReportList(Map<String, Object> requestMap) {
  273. return supplyChainMapper.exportBdReportList(requestMap);
  274. }
  275. @Override
  276. public List<JSONObject> exportAdminReportList(Map<String, Object> requestMap) {
  277. return supplyChainMapper.exportAdminReportList(requestMap);
  278. }
  279. @Override
  280. public List<JSONObject> getSupplyChainCourtshipUserList() {
  281. return supplyChainMapper.getSupplyChainCourtshipUserList();
  282. }
  283. @Override
  284. public List<JSONObject> adminReportListByBind(Map<String, Object> requestMap) {
  285. return supplyChainMapper.adminReportListByBind(requestMap);
  286. }
  287. @Override
  288. public List<JSONObject> exportAdminReportListByBind(Map<String, Object> requestMap) {
  289. return supplyChainMapper.exportAdminReportListByBind(requestMap);
  290. }
  291. @Override
  292. public List<JSONObject> bdReportListV2(Map<String, Object> requestMap) {
  293. return supplyChainMapper.bdReportListV2(requestMap);
  294. }
  295. @Override
  296. public List<JSONObject> bdTotalV2(Map<String, Object> requestMap) {
  297. return supplyChainMapper.bdTotalV2(requestMap);
  298. }
  299. @Override
  300. public List<JSONObject> bdDetailListV2(Map<String, Object> requestMap) {
  301. return supplyChainMapper.bdDetailListV2(requestMap);
  302. }
  303. @Override
  304. public JSONObject selectOrderInfoByItemIdsBytedance(List<Long> itemIds, Long startDate, Long endDate) {
  305. return supplyChainMapper.selectOrderInfoByItemIdsBytedance(itemIds, startDate, endDate);
  306. }
  307. @Override
  308. public void updateOrder(JSONObject eventJSon) {
  309. try {
  310. JSONObject info = eventJSon.getJSONObject("info");
  311. if (!Check.isNull(info)) {
  312. Long oid = info.getLong("oid");
  313. Integer cpsOrderStatus = info.getInteger("cpsOrderStatus");
  314. if (cpsOrderStatus == 30) {
  315. return;
  316. }
  317. if (cpsOrderStatus == 60) {
  318. supplyChainMapper.updateOrderRegimentalSettleAmount(oid, cpsOrderStatus);
  319. } else {
  320. supplyChainMapper.updateOrder(oid, cpsOrderStatus);
  321. }
  322. log.info("订单ID:{},状态:{} 修改成功", oid, cpsOrderStatus);
  323. }
  324. } catch (Exception e) {
  325. e.printStackTrace();
  326. }
  327. }
  328. @Override
  329. public void updateItem(JSONObject eventJSon) {
  330. try {
  331. JSONObject info = eventJSon.getJSONObject("info");
  332. if (!Check.isNull(info)) {
  333. Long itemId = info.getLong("itemId");
  334. Integer status = info.getInteger("status");
  335. supplyChainMapper.updateItem(itemId, status);
  336. log.info("商品id:{},状态:{} 修改成功", itemId, status);
  337. }
  338. } catch (Exception e) {
  339. e.printStackTrace();
  340. }
  341. }
  342. @Override
  343. public void addList(String beginDate, String endDate, String pcursor) throws InterruptedException {
  344. String url = "https://openapi.kwaixiaodian.com";
  345. Long beginTime = DateUtils.getStartLongTime(beginDate);
  346. Long endTime = DateUtils.getEndLongTime(endDate);
  347. // Map<Long, Long> itemMap = getItemMap();
  348. List<KuaishouAccessToken> tokens = accessTokenService.getTokenInfos();
  349. for (KuaishouAccessToken accessToken : tokens) {
  350. getInfo(accessToken, beginTime, endTime, url, pcursor, 1);
  351. }
  352. Thread.sleep(600000);
  353. List<KuaishouAccessToken> mgsTokens = accessTokenService.getMgsTokenInfos();
  354. for (KuaishouAccessToken accessToken : mgsTokens) {
  355. getMgsInfo(accessToken, beginTime, endTime, url, pcursor, 1);
  356. }
  357. }
  358. private void getInfo(KuaishouAccessToken accessToken, Long beginTime, Long endTime, String url, String pcursor, Integer counts) throws InterruptedException {
  359. List<Long> list = new ArrayList<>();
  360. String appKey = accessToken.getAppKey();
  361. String signSecret = accessToken.getSignSecret();
  362. if (Check.isNull(signSecret) || Check.isNull(appKey)) {
  363. return;
  364. }
  365. AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(url, appKey, signSecret);
  366. OpenDistributionCpsLeaderOrderCursorListRequest request = new OpenDistributionCpsLeaderOrderCursorListRequest();
  367. request.setAccessToken(accessToken.getAccessToken());
  368. request.setApiMethodVersion(1L);
  369. //排序类型 [1:按指定查询类型降序] [2:按指定查询类型升序]
  370. request.setSortType(1);
  371. //查询类型 [1:按分销订单创建时间查询] [2:按分销订单更新时间查询][4:按订单实际创建时间查询]
  372. request.setQueryType(2);
  373. //分销订单状态 [0:全部订单] [30:已付款] [50:已收货] [60:已结算] [80:已失效]
  374. request.setCpsOrderStatus(0);
  375. request.setDistributorId(0l);
  376. request.setBeginTime(beginTime);
  377. request.setEndTime(endTime);
  378. request.setPcursor(pcursor);
  379. request.setPageize(100);
  380. request.setFundType(1);
  381. OpenDistributionCpsLeaderOrderCursorListResponse response = null;
  382. try {
  383. response = client.execute(request);
  384. } catch (KsMerchantApiException e) {
  385. e.printStackTrace();
  386. }
  387. JSONObject obj = JSONObject.parseObject(GsonUtils.toJSON(response));
  388. String code = obj.getString("code");
  389. if ("1".equals(code)) {
  390. JSONObject data = obj.getJSONObject("data");
  391. pcursor = data.getString("pcursor");
  392. JSONArray orderView = data.getJSONArray("orderView");
  393. for (int i = 0; i < orderView.size(); i++) {
  394. JSONObject info = orderView.getJSONObject(i);
  395. Integer sendStatus = info.getInteger("sendStatus");
  396. if (Check.isNotNull(sendStatus) && sendStatus == 1) {
  397. list.add(info.getLong("oid"));
  398. }
  399. }
  400. } else {
  401. log.error("===查询分销团长订单列表(open.distribution.cps.leader.order.cursor.list)失败,信息:{}", obj.getString("msg"));
  402. log.error("游标:{},执行次数:{}", pcursor, counts);
  403. if (counts <= 3) {
  404. getInfo(accessToken, beginTime, endTime, url, pcursor, counts + 1);
  405. }
  406. }
  407. if (Check.isNotNull(list) && list.size() > 0) {
  408. supplyChainMapper.updateKuaishouSupplyChain(list);
  409. Thread.sleep(200);
  410. }
  411. if (!"nomore".equals(pcursor)) {
  412. getInfo(accessToken, beginTime, endTime, url, pcursor, 1);
  413. }
  414. }
  415. private void getMgsInfo(KuaishouAccessToken accessToken, Long beginTime, Long endTime, String url, String pcursor, Integer counts) throws InterruptedException {
  416. List<Long> list = new ArrayList<>();
  417. String appKey = accessToken.getAppKey();
  418. String signSecret = accessToken.getSignSecret();
  419. if (Check.isNull(signSecret) || Check.isNull(appKey)) {
  420. return;
  421. }
  422. AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(url, appKey, signSecret);
  423. OpenDistributionCpsLeaderOrderCursorListRequest request = new OpenDistributionCpsLeaderOrderCursorListRequest();
  424. request.setAccessToken(accessToken.getAccessToken());
  425. request.setApiMethodVersion(1L);
  426. //排序类型 [1:按指定查询类型降序] [2:按指定查询类型升序]
  427. request.setSortType(1);
  428. //查询类型 [1:按分销订单创建时间查询] [2:按分销订单更新时间查询][4:按订单实际创建时间查询]
  429. request.setQueryType(2);
  430. //分销订单状态 [0:全部订单] [30:已付款] [50:已收货] [60:已结算] [80:已失效]
  431. request.setCpsOrderStatus(0);
  432. request.setDistributorId(0l);
  433. request.setBeginTime(beginTime);
  434. request.setEndTime(endTime);
  435. request.setPcursor(pcursor);
  436. request.setPageize(100);
  437. request.setFundType(1);
  438. OpenDistributionCpsLeaderOrderCursorListResponse response = null;
  439. try {
  440. response = client.execute(request);
  441. } catch (KsMerchantApiException e) {
  442. e.printStackTrace();
  443. }
  444. JSONObject obj = JSONObject.parseObject(GsonUtils.toJSON(response));
  445. String code = obj.getString("code");
  446. if ("1".equals(code)) {
  447. JSONObject data = obj.getJSONObject("data");
  448. pcursor = data.getString("pcursor");
  449. JSONArray orderView = data.getJSONArray("orderView");
  450. for (int i = 0; i < orderView.size(); i++) {
  451. JSONObject info = orderView.getJSONObject(i);
  452. Integer sendStatus = info.getInteger("sendStatus");
  453. if (Check.isNotNull(sendStatus) && sendStatus == 1) {
  454. list.add(info.getLong("oid"));
  455. }
  456. }
  457. } else {
  458. log.error("===查询分销团长订单列表(open.distribution.cps.leader.order.cursor.list)失败,信息:{}", obj.getString("error_msg"));
  459. log.error("游标:{},执行次数:{}", pcursor, counts);
  460. if (counts <= 3) {
  461. getMgsInfo(accessToken, beginTime, endTime, url, pcursor, counts + 1);
  462. }
  463. }
  464. if (Check.isNotNull(list) && list.size() > 0) {
  465. supplyChainMapper.updateMgsKuaishouSupplyChain(list);
  466. Thread.sleep(200);
  467. }
  468. if (!"nomore".equals(pcursor)) {
  469. getMgsInfo(accessToken, beginTime, endTime, url, pcursor, 1);
  470. }
  471. }
  472. private KuaishouSupplyChain organizeData(JSONObject jsonObject, Map<Long, Long> itemMap) {
  473. KuaishouSupplyChain supplyChain = new KuaishouSupplyChain();
  474. supplyChain.setOid(jsonObject.getLong("oid"));
  475. JSONObject item = jsonObject.getJSONArray("cpsOrderProductView").getJSONObject(0);
  476. if (!Check.isNull(item)) {
  477. supplyChain.setItemId(item.getLong("itemId"));
  478. supplyChain.setItemTitle(item.getString("itemTitle"));
  479. supplyChain.setReservePrice(item.getLong("itemPrice"));
  480. supplyChain.setImageUrl(itemListMapper.getItemImgUrl(item.getLong("itemId")));
  481. supplyChain.setSellerId(item.getLong("sellerId"));
  482. }
  483. supplyChain.setOrderStatus(jsonObject.getInteger("cpsOrderStatus"));
  484. supplyChain.setOrderCreateTime(jsonObject.getLong("orderCreateTime"));
  485. supplyChain.setSendStatus(jsonObject.getInteger("sendStatus"));
  486. supplyChain.setSettlementBizType(jsonObject.getInteger("settlementBizType"));
  487. supplyChain.setSettlementBizTypeDesc(getSettlementBizTypeDesc(jsonObject.getInteger("settlementBizType")));
  488. supplyChain.setSendTime(jsonObject.getLong("sendTime"));
  489. supplyChain.setRecvTime(jsonObject.getLong("recvTime"));
  490. supplyChain.setPromoterId(jsonObject.getLong("promotionId"));
  491. supplyChain.setPromoterNickName(jsonObject.getString("promotionNickName"));
  492. supplyChain.setActivityId(jsonObject.getLong("activityId"));
  493. supplyChain.setOrderAmount(jsonObject.getLong("payAmount"));
  494. supplyChain.setPayAmount(jsonObject.getLong("payAmount"));
  495. supplyChain.setRegimentalPromotionRate(jsonObject.getLong("regimentalPromotionRate"));
  496. supplyChain.setShareRate(jsonObject.getLong("shareRateStr"));
  497. supplyChain.setBaseAmount(jsonObject.getLong("baseAmount"));
  498. supplyChain.setRegimentalPromotionAmount(jsonObject.getLong("regimentalPromotionAmount") / 1000);
  499. supplyChain.setTotalRegimentalSettleAmount(jsonObject.getLong("settlementAmount"));
  500. supplyChain.setStatDate(DateUtils.tempToDate(jsonObject.getLong("orderCreateTime")));
  501. supplyChain.setItemCommissionRate(itemMap.get(item.getLong("itemId")));
  502. return supplyChain;
  503. }
  504. private String getSettlementBizTypeDesc(Integer settlementBizType) {
  505. return settlementBizType == 1 ? "快分销" : "聚力计划";
  506. }
  507. // 获取订单佣金率
  508. public Map<Long, Long> getItemMap() {
  509. Map<Long, Long> returnMap = new HashMap<>();
  510. List<JSONObject> list = itemListMapper.itemList();
  511. if (!Check.isNull(list)) {
  512. for (int i = 0; i < list.size(); i++) {
  513. JSONObject jsonObject = list.get(i);
  514. returnMap.put(jsonObject.getLong("itemId"), jsonObject.getLong("itemCommissionRate"));
  515. }
  516. }
  517. return returnMap;
  518. }
  519. @Override
  520. public void addListKuaishouActivityInfo() throws InterruptedException {
  521. String url = "https://openapi.kwaixiaodian.com";
  522. List<KuaishouAccessToken> tokens = accessTokenService.getTokenInfos();
  523. for (KuaishouAccessToken accessToken : tokens) {
  524. getInfoKuaishouActivityInfo(accessToken, url);
  525. }
  526. Thread.sleep(600000);
  527. List<KuaishouAccessToken> mgsTokens = accessTokenService.getMgsTokenInfos();
  528. for (KuaishouAccessToken mgsToken : mgsTokens) {
  529. getMgsInfoKuaishouActivityInfo(mgsToken, url);
  530. }
  531. }
  532. @Override
  533. public List<JSONObject> getBytedanceOrderHourDataList(Long date) {
  534. return supplyChainMapper.getBytedanceOrderHourDataList(date);
  535. }
  536. @Override
  537. public List<JSONObject> getKuaishouOrderHourDataList(String date) {
  538. return supplyChainMapper.getKuaishouOrderHourDataList(date);
  539. }
  540. private void getInfoKuaishouActivityInfo(KuaishouAccessToken accessToken, String url) {
  541. List<KuaiShouActivityInfo> list = new ArrayList<>();
  542. String appKey = accessToken.getAppKey();
  543. String signSecret = accessToken.getSignSecret();
  544. if (Check.isNull(signSecret) || Check.isNull(appKey)) {
  545. return;
  546. }
  547. AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(url, appKey, signSecret);
  548. OpenDistributionInvestmentActivityOpenListRequest request = new OpenDistributionInvestmentActivityOpenListRequest();
  549. request.setAccessToken(accessToken.getAccessToken());
  550. request.setApiMethodVersion(1L);
  551. //每页活动数量
  552. request.setLimit(5000);
  553. OpenDistributionInvestmentActivityOpenListResponse response = null;
  554. try {
  555. response = client.execute(request);
  556. } catch (KsMerchantApiException e) {
  557. e.printStackTrace();
  558. }
  559. JSONObject obj = JSONObject.parseObject(GsonUtils.toJSON(response));
  560. String code = obj.getString("code");
  561. if ("1".equals(code)) {
  562. JSONObject data = obj.getJSONObject("data");
  563. JSONArray result = data.getJSONArray("result");
  564. for (int i = 0; i < result.size(); i++) {
  565. JSONObject info = result.getJSONObject(i);
  566. KuaiShouActivityInfo activityInfo = organizeKuaishouActivityInfo(info);
  567. list.add(activityInfo);
  568. }
  569. } else {
  570. log.error("===团长查询招商活动列表(open.distribution.investment.activity.open.list)失败,信息:{}" + obj.getString("msg"));
  571. return;
  572. }
  573. if (Check.isNotNull(list) && list.size() > 0) {
  574. supplyChainMapper.replaceKuaishouActivityInfo(list);
  575. }
  576. }
  577. private KuaiShouActivityInfo organizeKuaishouActivityInfo(JSONObject jsonObject) {
  578. KuaiShouActivityInfo activityInfo = new KuaiShouActivityInfo();
  579. activityInfo.setActivityId(jsonObject.getLong("activityId"));
  580. activityInfo.setRegimentalId(jsonObject.getLong("activityUserId"));
  581. activityInfo.setActivityTitle(jsonObject.getString("activityTitle"));
  582. activityInfo.setActivityType(jsonObject.getInteger("activityType"));
  583. activityInfo.setActivityBeginTime(DateUtils.tempToDate(jsonObject.getLong("activityBeginTime")));
  584. activityInfo.setActivityEndTime(DateUtils.tempToDate(jsonObject.getLong("activityEndTime")));
  585. activityInfo.setActivityStatus(jsonObject.getInteger("activityStatus"));
  586. JSONObject activityItemDataInfo = jsonObject.getJSONObject("activityItemDataView");
  587. if (!Check.isNull(activityItemDataInfo)) {
  588. activityInfo.setApplyItemCount(activityItemDataInfo.getInteger("applyItemCount"));
  589. activityInfo.setWaitAuditItemCount(activityItemDataInfo.getInteger("waitAuditItemCount"));
  590. activityInfo.setAuditPassItemCount(activityItemDataInfo.getInteger("auditPassItemCount"));
  591. }
  592. return activityInfo;
  593. }
  594. private void getMgsInfoKuaishouActivityInfo(KuaishouAccessToken accessToken, String url) {
  595. List<KuaiShouActivityInfo> list = new ArrayList<>();
  596. String appKey = accessToken.getAppKey();
  597. String signSecret = accessToken.getSignSecret();
  598. if (Check.isNull(signSecret) || Check.isNull(appKey)) {
  599. return;
  600. }
  601. AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(url, appKey, signSecret);
  602. OpenDistributionInvestmentActivityOpenListRequest request = new OpenDistributionInvestmentActivityOpenListRequest();
  603. request.setAccessToken(accessToken.getAccessToken());
  604. request.setApiMethodVersion(1L);
  605. //每页活动数量
  606. request.setLimit(5000);
  607. OpenDistributionInvestmentActivityOpenListResponse response = null;
  608. try {
  609. response = client.execute(request);
  610. } catch (KsMerchantApiException e) {
  611. e.printStackTrace();
  612. }
  613. JSONObject obj = JSONObject.parseObject(GsonUtils.toJSON(response));
  614. String code = obj.getString("code");
  615. if ("1".equals(code)) {
  616. JSONObject data = obj.getJSONObject("data");
  617. JSONArray result = data.getJSONArray("result");
  618. for (int i = 0; i < result.size(); i++) {
  619. JSONObject info = result.getJSONObject(i);
  620. KuaiShouActivityInfo activityInfo = organizeKuaishouActivityInfo(info);
  621. list.add(activityInfo);
  622. }
  623. } else {
  624. log.error("===团长查询招商活动列表(open.distribution.investment.activity.open.list)失败,信息:{}" + obj.getString("msg"));
  625. return;
  626. }
  627. if (Check.isNotNull(list) && list.size() > 0) {
  628. supplyChainMapper.replaceMgsKuaishouActivityInfo(list);
  629. }
  630. }
  631. }