RECEIVE_FACTORY.js 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824
  1. const CMD = {}
  2. const time_count = 250;
  3. const PROT = 9101
  4. var http = require('http');
  5. const axios = require('axios')
  6. const redis_help = require('../src/use_redis');
  7. const origin_data_controllers = require('../src/data_manager/Controllers/origin_data_controllers');
  8. const helper = require('../src/helper');
  9. const HttpClient = require('../src/HttpClient')
  10. const config = require('../etc/config.json');
  11. const tools = require('../tools');
  12. var recv_data_list = []
  13. const 视频id = 0;
  14. const 视频链接 = 1;
  15. const 标题 = 2;
  16. const 发布时间 = 3;
  17. const 收藏数 = 4;
  18. const 评论数 = 5;
  19. const 点赞数 = 6;
  20. const 分享数 = 7;
  21. const 是否挂件 = 8;
  22. const 挂件地址 = 9;
  23. let task_status = false
  24. function excelDateToJs(dateStr) {
  25. // const date = moment(dateStr, "DD/MM/YYYY HH:mm:ss").toDate();
  26. // return new Date(date);
  27. return new Date()
  28. }
  29. async function processTask(){
  30. try{
  31. if(recv_data_list.length>0){
  32. const xml = recv_data_list.pop();
  33. let guajian_link = ''
  34. guajian_link = xml[挂件地址]
  35. const result = await origin_data_controllers.getOriginDataById({video_id:xml[视频id]})
  36. if(result.success){
  37. await origin_data_controllers.updateOriginData({id:result.data.id},{kepp_num:xml[收藏数],comment_num:xml[评论数],like_num:xml[点赞数],shared_num:xml[分享数],guajian_link:guajian_link})
  38. }else{
  39. await origin_data_controllers.createOriginData(
  40. {
  41. video_id:xml[视频id],
  42. video_link:xml[视频链接],
  43. title:xml[标题],
  44. // publish_time:xml[发布时间],
  45. publish_time:excelDateToJs(xml[发布时间]),
  46. kepp_num:xml[收藏数],
  47. comment_num:xml[评论数],
  48. like_num:xml[点赞数],
  49. shared_num:xml[分享数],
  50. is_guajian:xml[是否挂件],
  51. guajian_link:guajian_link,
  52. status:0,
  53. }
  54. )
  55. }
  56. }else{
  57. task_status = false;
  58. }
  59. }catch(e){
  60. console.log("数据解析错误:",e)
  61. }finally{
  62. global.setTimeout(processTask,200)
  63. }
  64. }
  65. CMD.startTask = function(data){
  66. task_status = true;
  67. let temp_list = JSON.parse(data)
  68. for (let index = 1; index < temp_list.length; index++) {
  69. let isGuaJian = parseInt(temp_list[index][是否挂件])==1
  70. if(isGuaJian){
  71. recv_data_list.push(temp_list[index])
  72. }
  73. }
  74. console.log("temp_list.length:",temp_list.length)
  75. processTask()
  76. }
  77. CMD.init = function(){
  78. redis_help.connect(()=>{
  79. })
  80. }
  81. CMD.runTask = async function(){
  82. }
  83. CMD.test_fq_book_sid_tt = async function(book_id,sid_tt){
  84. try{
  85. let client =new HttpClient()
  86. let response = await client.proxyRequest( helper.getFqRequestOpt(book_id,sid_tt))
  87. console.log("response:",response)
  88. let obj = response['data']
  89. return obj['novel_data']
  90. }catch(e){
  91. // return {"error_book_id":book_id,"error_sid_tt":sid_tt}
  92. return null
  93. }
  94. }
  95. CMD.test_fq_mf_book_sid_tt = async function(book_id,sid_tt){
  96. try{
  97. let client =new HttpClient()
  98. let response = await client.proxyGet( helper.getMfFqRequestOpt(book_id,sid_tt))
  99. console.log("response:",response)
  100. let obj = response['data']
  101. return obj['book_info']
  102. }catch(e){
  103. // return {"error_book_id":book_id,"error_sid_tt":sid_tt}
  104. return null
  105. }
  106. }
  107. CMD.get_group_mapping = function(res,type,site){
  108. let get_hy_group_mapping = require('../src/api/hy/get_hy_group_mapping');
  109. get_hy_group_mapping.get_group_mapping((data)=>{
  110. res.writeHead(200, {'Content-Type': 'application/json'});
  111. if(data.code==200){
  112. let list = data.data
  113. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  114. }else{
  115. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  116. }
  117. console.log("get_hy_group_mapping:",data)
  118. },type,site)
  119. }
  120. CMD.get_hy_rechargeTemplate = function(res){
  121. let get_hy_recharge_template = require('../src/api/hy/get_hy_recharge_template');
  122. get_hy_recharge_template.get_recharge_template("1865735741365059585",(data)=>{
  123. res.writeHead(200, {'Content-Type': 'application/json'});
  124. if(data.code==200){
  125. let list = data.data
  126. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  127. }else{
  128. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  129. }
  130. console.log("get_hy_rechargeTemplate:",data)
  131. })
  132. }
  133. CMD.get_hy_SiteTemplate = function(res){
  134. let get_hy_site_template = require('../src/api/hy/get_hy_site_template');
  135. get_hy_site_template.get_callback_template((data)=>{
  136. res.writeHead(200, {'Content-Type': 'application/json'});
  137. if(data.code==200){
  138. let list = data.data
  139. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  140. }else{
  141. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  142. }
  143. console.log("get_hy_SiteTemplate:",data)
  144. })
  145. }
  146. CMD.get_hy_passBackTemplate = function(res,is_free){
  147. if(is_free){
  148. let get_hy_call_back_template = require('../src/api/hy/get_hy_call_back_template');
  149. get_hy_call_back_template.adPassBackTemplate((data)=>{
  150. res.writeHead(200, {'Content-Type': 'application/json'});
  151. if(data.code==200){
  152. let list = data.data
  153. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  154. }else{
  155. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  156. }
  157. console.log("get_hy_passBackTemplate:",data)
  158. })
  159. }else{
  160. let get_hy_call_back_template = require('../src/api/hy/get_hy_call_back_template');
  161. get_hy_call_back_template.get_callback_template((data)=>{
  162. res.writeHead(200, {'Content-Type': 'application/json'});
  163. if(data.code==200){
  164. let list = data.data
  165. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  166. }else{
  167. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  168. }
  169. console.log("get_hy_passBackTemplate:",data)
  170. })
  171. }
  172. }
  173. CMD.get_fq_callback_template = async function(res,distributor_id) {
  174. let data = await require('../src/api/fq/get_fq_call_back_template').get_callback_template(distributor_id)
  175. res.writeHead(200, {'Content-Type': 'application/json'});
  176. if(data==null){
  177. res.end(JSON.stringify({ message:"成功!",data:{},code:10000}));
  178. }else{
  179. console.log('get_fq_callback_template:', data);
  180. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  181. }
  182. }
  183. CMD.get_fq_rechargeTemplate = function(res,distributor_id){
  184. // var distributorId = config.fanqie_config.distributorId;
  185. var distributorId = distributor_id
  186. var secretKey = config.fanqie_config.secretKey;
  187. const postData = {
  188. distributor_id: distributorId,
  189. ts: helper.getCurrentUnixTimestamp(),
  190. sign: helper.getSign(distributorId,secretKey),
  191. page_size: 100,
  192. page_index:0,
  193. };
  194. // console.log("get_recharge_template:")
  195. var url = config.fanqie_config.recharge_list_host
  196. var base_params = `/?distributor_id=${postData.distributor_id}&ts=${postData.ts}&sign=${postData.sign}`
  197. var other_params = `&page_size=${postData.page_size}&page_index=${postData.page_index}`
  198. axios.get(`${url}${base_params}${other_params}`)
  199. .then(response => {
  200. // console.log('Response data:', response.data );
  201. let data = response.data
  202. res.writeHead(200, {'Content-Type': 'application/json'});
  203. if(data.code==200){
  204. let list = data.data
  205. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  206. }else{
  207. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  208. }
  209. console.log("get_fq_rechargeTemplate:",data)
  210. })
  211. .catch(error => {
  212. console.error('Error:', error);
  213. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  214. });
  215. }
  216. // 应用业务类型。枚举值,提供该字段则只返回对应业务类型分包列表
  217. // - 快应用 = 1
  218. // - 微信h5 = 3
  219. // - 微信短剧 = 4
  220. // - 抖音短剧 = 7
  221. // - 抖小网文 = 8
  222. // - 微小网文 = 12
  223. CMD.get_fq_package_list = function(res,distributorId,app_type){
  224. var secretKey = config.fanqie_config.secretKey;
  225. const postData = {
  226. distributor_id: distributorId,
  227. ts: helper.getCurrentUnixTimestamp(),
  228. sign: helper.getSign(distributorId,secretKey),
  229. page_size: 50,
  230. page_index:0,
  231. app_type:app_type
  232. };
  233. var url = config.fanqie_config.get_fq_package_list
  234. var base_params = `/?distributor_id=${postData.distributor_id}&ts=${postData.ts}&sign=${postData.sign}&app_type=${postData.app_type}`
  235. var other_params = `&page_size=${postData.page_size}&page_index=${postData.page_index}`
  236. console.log("url:",`${url}${base_params}${other_params}`)
  237. axios.get(`${url}${base_params}${other_params}`)
  238. .then(response => {
  239. // console.log('Response data:', response.data );
  240. let data = response.data
  241. res.writeHead(200, {'Content-Type': 'application/json'});
  242. if(data.code==200){
  243. res.end(JSON.stringify({ message:"成功!",data:data.package_info_open_list,code:10000}));
  244. }else{
  245. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  246. }
  247. console.log("get_fq_package_list:",data)
  248. })
  249. .catch(error => {
  250. console.error('Error:', error);
  251. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  252. });
  253. }
  254. CMD.get_fq_bound_package_list = function(res,distributorId,app_id){
  255. var secretKey = config.fanqie_config.secretKey;
  256. const postData = {
  257. distributor_id: distributorId,
  258. ts: helper.getCurrentUnixTimestamp(),
  259. sign: helper.getSign(distributorId,secretKey),
  260. page_size: 50,
  261. page_index:0,
  262. app_id:app_id
  263. };
  264. var url = config.fanqie_config.get_bound_package_list
  265. var base_params = `/?distributor_id=${postData.distributor_id}&ts=${postData.ts}&sign=${postData.sign}&app_id=${postData.app_id}`
  266. var other_params = `&page_size=${postData.page_size}&page_index=${postData.page_index}`
  267. console.log("url:",`${url}${base_params}${other_params}`)
  268. axios.get(`${url}${base_params}${other_params}`)
  269. .then(response => {
  270. // console.log('Response data:', response.data );
  271. let data = response.data
  272. res.writeHead(200, {'Content-Type': 'application/json'});
  273. if(data.code==200){
  274. res.end(JSON.stringify({ message:"成功!",data:data.wx_package_info_open_list,code:10000}));
  275. }else{
  276. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  277. }
  278. console.log("get_fq_bound_package_list:",data)
  279. })
  280. .catch(error => {
  281. console.error('Error:', error);
  282. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  283. });
  284. }
  285. CMD.get_pull_token = async function(res){
  286. let token = await redis_help.getKeyValue("pull_data_token")
  287. res.writeHead(200, {'Content-Type': 'application/json'});
  288. res.end(JSON.stringify({ message:"成功!",data:{token:token},code:10000}));
  289. console.log('get_pull_token:', token);
  290. }
  291. CMD.get_dz_book = async function(book_id,res) {
  292. let data = await require('../src/api/dz/dz_search_book').search_id(book_id)
  293. res.writeHead(200, {'Content-Type': 'application/json'});
  294. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  295. console.log('get_dz_book:', data);
  296. }
  297. CMD.get_dz_callback_template = async function(isFree,channelId,res) {
  298. console.log("get_dz_callback_template!")
  299. if(isFree==1){
  300. require('../src/api/dz/get_dz_call_back_template').get_mf_callback_template(channelId,(data)=>{
  301. console.log('get_dz_callback_template:', data);
  302. res.writeHead(200, {'Content-Type': 'application/json'});
  303. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  304. })
  305. }else{
  306. require('../src/api/dz/get_dz_call_back_template').get_callback_template(channelId,(data)=>{
  307. console.log('get_dz_callback_template:', data);
  308. res.writeHead(200, {'Content-Type': 'application/json'});
  309. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  310. })
  311. }
  312. }
  313. CMD.get_dz_channel_Info_list = async function(isFree,is_wx,res) {
  314. console.log("get_dz_channel_Info_list!")
  315. if(isFree==1){
  316. require('../src/api/dz/get_channel_Info_list').get_mf_channel_Info_list(is_wx,(data)=>{
  317. console.log('get_dz_channel_Info_list:', data);
  318. res.writeHead(200, {'Content-Type': 'application/json'});
  319. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  320. })
  321. }else{
  322. require('../src/api/dz/get_channel_Info_list').get_channel_Info_list(is_wx,(data)=>{
  323. console.log('get_dz_channel_Info_list:', data);
  324. res.writeHead(200, {'Content-Type': 'application/json'});
  325. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  326. })
  327. }
  328. }
  329. CMD.get_dz_recharge_template = async function(channelId,res) {
  330. await require('../src/api/dz/get_dz_recharge_template').get_recharge_template(channelId,(data)=>{
  331. console.log('get_dz_recharge_template:', data);
  332. res.writeHead(200, {'Content-Type': 'application/json'});
  333. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  334. })
  335. }
  336. CMD.get_qm_callback_template = async function(res,mini_program_platform_id,qm_id) {
  337. let data = await require('../src/api/qm/get_qm_call_back_template').get_callback_template_new(mini_program_platform_id,qm_id)
  338. console.log('get_qm_callback_template:', data);
  339. res.writeHead(200, {'Content-Type': 'application/json'});
  340. res.end(JSON.stringify({ message:"成功!",data:data.data.list,code:10000}));
  341. }
  342. CMD.get_qm_recharge_template = async function(res,category,mini_program_platform_id,qm_id) {
  343. let data = await require('../src/api/qm/get_qm_recharge_template').get_recharge_template_new(mini_program_platform_id,qm_id)
  344. console.log('get_qm_recharge_template:', data);
  345. res.writeHead(200, {'Content-Type': 'application/json'});
  346. res.end(JSON.stringify({ message:"成功!",data:data.data.list,code:10000}));
  347. }
  348. CMD.get_qm_account_list = async function(res) {
  349. let data = await require('../src/api/qm/get_qm_account_list').get_qm_account_list()
  350. console.log('get_qm_account_list:', data);
  351. res.writeHead(200, {'Content-Type': 'application/json'});
  352. res.end(JSON.stringify({ message:"成功!",data:data.list,code:10000}));
  353. }
  354. CMD.get_yw_recharge_template = async function(res,yw_id) {
  355. let data = await require('../src/api/yw/get_yw_recharge_template').get_recharge_template(yw_id)
  356. console.log('get_yw_recharge_template:', data);
  357. res.writeHead(200, {'Content-Type': 'application/json'});
  358. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  359. }
  360. CMD.test_open_sessid = async function(res,book_id) {
  361. let yw_book_data = await require('../src/api/yw/yw_search_book').search_test_id(book_id)
  362. res.writeHead(200, {'Content-Type': 'application/json'});
  363. res.end(JSON.stringify({ message:"成功!",data:yw_book_data,code:10000}));
  364. }
  365. CMD.get_yw_open_sessid_status = async function(res) {
  366. let OPENSESSID = await redis_help.getKeyValue("OPENSESSID")
  367. console.log('get_yw_open_sessid_status:', OPENSESSID);
  368. res.writeHead(200, {'Content-Type': 'application/json'});
  369. res.end(JSON.stringify({ message:"成功!",data:OPENSESSID,code:10000}));
  370. }
  371. CMD.get_yw_account_list = async function(res,coopid) {
  372. let data = await require('../src/api/yw/get_yw_account_list').get_yw_account_list(coopid)
  373. console.log('get_yw_account_list:', JSON.stringify(data));
  374. res.writeHead(200, {'Content-Type': 'application/json'});
  375. res.end(JSON.stringify({ message:"成功!",data:data.data.list,code:10000}));
  376. }
  377. // CMD.get_zh_callback_template = async function(res) {
  378. // let data = await require('../src/api/zh/get_zh_call_back_template').get_zh_call_back_template()
  379. // console.log('get_zh_callback_template:', data);
  380. // res.writeHead(200, {'Content-Type': 'application/json'});
  381. // res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  382. // }
  383. CMD.get_zh_callback_template = async function(res,member_token,app_id) {
  384. let data = await require('../src/api/zh/get_zh_call_back_template').get_zh_call_back_template_new(member_token,app_id)
  385. console.log('get_zh_callback_template:', data);
  386. res.writeHead(200, {'Content-Type': 'application/json'});
  387. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  388. }
  389. // CMD.get_zh_recharge_template = async function(res,app_type) {
  390. // let data = await require('../src/api/zh/get_zh_recharge_template').get_zh_recharge_template(app_type)
  391. // console.log('get_zh_recharge_template:', data);
  392. // res.writeHead(200, {'Content-Type': 'application/json'});
  393. // res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  394. // }
  395. CMD.get_zh_recharge_template = async function(res,member_token,app_id) {
  396. let data = await require('../src/api/zh/get_zh_recharge_template').get_zh_recharge_template_new(member_token,app_id)
  397. console.log('get_zh_recharge_template:', data);
  398. res.writeHead(200, {'Content-Type': 'application/json'});
  399. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  400. }
  401. CMD.hy_iapPassBackTemplate = async function(res,accountId) {
  402. let timestamp = helper.getCurrentUnixTimestamp()
  403. let sign = helper.generateSign({
  404. "pid":config.heiyan_config.pid,
  405. "timestamp":timestamp,
  406. "sign":"",
  407. "accountId":accountId
  408. },config.heiyan_config.key)
  409. var url = config.heiyan_config.iapPassBackTemplate
  410. var base_params = `/?sign=${sign}&pid=${config.heiyan_config.pid}&timestamp=${timestamp}`
  411. var other_params = `&accountId=${accountId}`
  412. url = `${url}${base_params}${other_params}`
  413. // console.log("url:",url)
  414. let response = await axios.get(url)
  415. let data = response.data
  416. console.log("response:",response)
  417. if(data.code==1){
  418. res.writeHead(200, {'Content-Type': 'application/json'});
  419. res.end(JSON.stringify({ message:"成功!",data:data.data,code:10000}));
  420. }else{
  421. res.writeHead(200, {'Content-Type': 'application/json'});
  422. res.end(JSON.stringify({ message:"失败",data:null,code:10001}));
  423. }
  424. }
  425. CMD.hy_iaaPassBackTemplate = async function(res,accountId) {
  426. let timestamp = helper.getCurrentUnixTimestamp()
  427. let sign = helper.generateSign({
  428. "pid":config.heiyan_config.pid,
  429. "timestamp":timestamp,
  430. "sign":"",
  431. "accountId":accountId
  432. },config.heiyan_config.key)
  433. var url = config.heiyan_config.iaaPassBackTemplate
  434. var base_params = `/?sign=${sign}&pid=${config.heiyan_config.pid}&timestamp=${timestamp}`
  435. var other_params = `&accountId=${accountId}`
  436. url = `${url}${base_params}${other_params}`
  437. // console.log("url:",url)
  438. let response = await axios.get(url)
  439. let data = response.data
  440. console.log("response:",response)
  441. if(data.code==1){
  442. res.writeHead(200, {'Content-Type': 'application/json'});
  443. res.end(JSON.stringify({ message:"成功!",data:data.data,code:10000}));
  444. }else{
  445. res.writeHead(200, {'Content-Type': 'application/json'});
  446. res.end(JSON.stringify({ message:"失败",data:null,code:10001}));
  447. }
  448. }
  449. CMD.hy_topUpTemplate = async function(res,accountId) {
  450. let timestamp = helper.getCurrentUnixTimestamp()
  451. let sign = helper.generateSign({
  452. "pid":config.heiyan_config.pid,
  453. "timestamp":timestamp,
  454. "sign":"",
  455. "accountId":accountId
  456. },config.heiyan_config.key)
  457. var url = config.heiyan_config.topUpTemplate
  458. var base_params = `/?sign=${sign}&pid=${config.heiyan_config.pid}&timestamp=${timestamp}`
  459. var other_params = `&accountId=${accountId}`
  460. url = `${url}${base_params}${other_params}`
  461. // console.log("url:",url)
  462. let response = await axios.get(url)
  463. let data = response.data
  464. console.log("response:",response)
  465. if(data.code==1){
  466. res.writeHead(200, {'Content-Type': 'application/json'});
  467. res.end(JSON.stringify({ message:"成功!",data:data.data,code:10000}));
  468. }else{
  469. res.writeHead(200, {'Content-Type': 'application/json'});
  470. res.end(JSON.stringify({ message:"失败",data:null,code:10001}));
  471. }
  472. }
  473. CMD.hy_accountMapping = async function(res) {
  474. let timestamp = helper.getCurrentUnixTimestamp()
  475. let sign = helper.generateSign({
  476. "pid":config.heiyan_config.pid,
  477. "timestamp":timestamp,
  478. "sign":""
  479. },config.heiyan_config.key)
  480. var url = config.heiyan_config.accountMapping
  481. var base_params = `/?sign=${sign}&pid=${config.heiyan_config.pid}&timestamp=${timestamp}`
  482. url = `${url}${base_params}`
  483. // console.log("url:",url)
  484. let response = await axios.get(url)
  485. let data = response.data
  486. console.log("response:",response)
  487. if(data.code==1){
  488. res.writeHead(200, {'Content-Type': 'application/json'});
  489. res.end(JSON.stringify({ message:"成功!",data:data.data,code:10000}));
  490. }else{
  491. res.writeHead(200, {'Content-Type': 'application/json'});
  492. res.end(JSON.stringify({ message:"失败",data:null,code:10001}));
  493. }
  494. }
  495. CMD.get_qm_mf_callback_template = async function(res,mini_program_platform_id,qm_id) {
  496. let data = await require('../src/api/qm_mf/get_qm_mf_call_back_template').get_callback_template(mini_program_platform_id,qm_id)
  497. console.log('get_qm_mf_callback_template:', data);
  498. res.writeHead(200, {'Content-Type': 'application/json'});
  499. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  500. }
  501. CMD.get_qm_mf_recharge_template = async function(res,category,mini_program_platform_id,qm_id) {
  502. let data = await require('../src/api/qm_mf/get_qm_mf_recharge_template').get_recharge_template(category,mini_program_platform_id,qm_id)
  503. console.log('get_qm_mf_recharge_template:', data);
  504. res.writeHead(200, {'Content-Type': 'application/json'});
  505. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  506. }
  507. CMD.get_qm_mf_account_list = async function(res) {
  508. let data = await require('../src/api/qm_mf/get_qm_mf_account_list').get_qm_account_list()
  509. console.log('get_qm_mf_account_list:', data);
  510. res.writeHead(200, {'Content-Type': 'application/json'});
  511. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  512. }
  513. CMD.get_zy_account_list = async function(res) {
  514. let token = await require('../src/api/zy/get_zy_token').get_token()
  515. console.log("token:",token)
  516. let clinet = tools.getOneNewClinet()
  517. let response = await clinet.get(`https://openapi-gaia.zhangyue.com/opendata/reseller/info?access_token=${token}`)
  518. let list = null
  519. if(response.data.code!=0){
  520. console.error("get_zy_account_list error:",response)
  521. }else{
  522. list = response.data.body.users
  523. }
  524. res.writeHead(200, {'Content-Type': 'application/json'});
  525. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  526. }
  527. CMD.get_zy_callback_template = async function(res,owner,page,size) {
  528. let token = await require('../src/api/zy/get_zy_token').get_token()
  529. let clinet = tools.getOneNewClinet()
  530. let response = await clinet.post(`https://openapi-gaia.zhangyue.com/opendata/reseller/pay/book/callback/list`,{
  531. access_token:token,
  532. owner:parseInt(owner),
  533. page:page,
  534. size:size
  535. })
  536. let list = null
  537. if(response.data.code!=0){
  538. console.error("get_zy_account_list error:",response)
  539. }else{
  540. list = response.data.body.list
  541. }
  542. res.writeHead(200, {'Content-Type': 'application/json'});
  543. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  544. }
  545. CMD.get_match_book_info = async function(res,book_id,platform) {
  546. let book_info = null
  547. if(platform==config.platform_fanqie){
  548. book_info = await require('../src/api/fq/fq_search_book').根据番茄付费ID查询免费书籍(book_id)
  549. }else if(platform==config.platform_fanqiemf){
  550. book_info = await require('../src/api/fq/fq_search_book').根据番茄免费ID查询付费书籍(book_id)
  551. }else if(platform==config.platform_qimao){
  552. book_info = await require('../src/api/qm_mf/qm_mf_search_book').根据七猫付费ID查询免费书籍(book_id)
  553. }else if(platform==config.platform_qmmf){
  554. book_info = await require('../src/api/qm/qm_search_book').根据七猫免费D查询付费书籍(book_id)
  555. }
  556. res.writeHead(200, {'Content-Type': 'application/json'});
  557. if(book_info==null){
  558. res.end(JSON.stringify({ message:"没找到对应的匹配书籍!",data:{},code:10001}));
  559. }else{
  560. res.end(JSON.stringify({ message:"成功!",data:book_info,code:10000}));
  561. }
  562. }
  563. CMD.get_zy_recharge_template = async function(res,user_id,page,size) {
  564. let token = await require('../src/api/zy/get_zy_token').get_token()
  565. let clinet = tools.getOneNewClinet()
  566. let response = await clinet.post(`https://openapi-gaia.zhangyue.com/opendata/reseller/pay/book/recharge`,{
  567. access_token:token,
  568. user_id:parseInt(user_id),
  569. page:page,
  570. size:size
  571. })
  572. let list = null
  573. if(response.data.code!=0){
  574. console.error("get_zy_recharge_template error:",response)
  575. }else{
  576. list = response.data.body.list
  577. }
  578. res.writeHead(200, {'Content-Type': 'application/json'});
  579. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  580. }
  581. var server = http.createServer(function(req,res){
  582. res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有域的请求,注意:在生产环境中应该限制为特定的域
  583. res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); // 允许的方法
  584. res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // 允许的头部
  585. let body = '';
  586. // 监听数据块
  587. req.on('data', chunk => {
  588. body += chunk.toString(); // 将接收到的数据块转换为字符串并拼接
  589. });
  590. // 监听请求结束
  591. req.on('end', async () => {
  592. if (req.method === 'POST') {
  593. if (req.headers['content-type'] === 'application/x-www-form-urlencoded') {
  594. try {
  595. // 解析 JSON 数据
  596. const jsonData = JSON.parse(body);
  597. console.log("recv msg:",jsonData)
  598. if(jsonData['fun']=="start_filter"&&jsonData['cmd']=="filter_task"){
  599. res.writeHead(200, {'Content-Type': 'application/json'});
  600. if(task_status==false){
  601. CMD.startTask(jsonData['data'])
  602. res.end(JSON.stringify({ msg: 'success!',code:10000,data:{}}));
  603. }else{
  604. res.end(JSON.stringify({ msg: '服务器繁忙!',code:10000,data:{}}));
  605. }
  606. }else if(jsonData['fun']=="test_fq_book_sid_tt"&&jsonData['cmd']=="fq_book"){
  607. let book_id = jsonData['data']['book_id']
  608. let sid_tt = jsonData['data']['sid_tt']
  609. let info = await CMD.test_fq_book_sid_tt(book_id,sid_tt)
  610. res.writeHead(200, {'Content-Type': 'application/json'});
  611. if(info==null){
  612. res.end(JSON.stringify({ message:"失败",code:10001}));
  613. }else{
  614. res.end(JSON.stringify({ message:"成功!",data:info,code:10000}));
  615. }
  616. }else if(jsonData['fun']=="test_fq_mf_book_sid_tt"&&jsonData['cmd']=="fq_mf_book"){
  617. let book_id = jsonData['data']['book_id']
  618. let sid_tt = jsonData['data']['sid_tt']
  619. let info = await CMD.test_fq_mf_book_sid_tt(book_id,sid_tt)
  620. res.writeHead(200, {'Content-Type': 'application/json'});
  621. if(info==null){
  622. res.end(JSON.stringify({ message:"失败",code:10001}));
  623. }else{
  624. res.end(JSON.stringify({ message:"成功!",data:info,code:10000}));
  625. }
  626. }else if(jsonData['fun']=="groupMapping"&&jsonData['cmd']=="hy_link"){
  627. let type = jsonData['data']['type']
  628. let site = jsonData['data']['site']
  629. CMD.get_group_mapping(res,type,site)
  630. }else if(jsonData['fun']=="rechargeTemplate"&&jsonData['cmd']=="hy_link"){
  631. CMD.get_hy_rechargeTemplate(res)
  632. }else if(jsonData['fun']=="get_hy_SiteTemplate"&&jsonData['cmd']=="hy_link"){
  633. CMD.get_hy_SiteTemplate(res)
  634. }else if(jsonData['fun']=="passBackTemplate"&&jsonData['cmd']=="hy_link"){
  635. let is_free = jsonData['data']['is_free']
  636. CMD.get_hy_passBackTemplate(res,is_free)
  637. }else if(jsonData['fun']=="rechargeTemplate"&&jsonData['cmd']=="fq_link"){
  638. let distributor_id = jsonData['data']['distributor_id']
  639. CMD.get_fq_rechargeTemplate(res,distributor_id)
  640. }else if(jsonData['fun']=="get_fq_package_list"&&jsonData['cmd']=="fq_link"){
  641. let app_type = jsonData['data']['app_type']
  642. // let distributor_id = jsonData['data']['distributor_id']
  643. CMD.get_fq_package_list(res,config.fanqie_config.distributorId,app_type)
  644. }else if(jsonData['fun']=="get_fq_bound_package_list"&&jsonData['cmd']=="fq_link"){
  645. let app_id = jsonData['data']['app_id']
  646. // let distributor_id = jsonData['data']['distributor_id']
  647. CMD.get_fq_bound_package_list(res,config.fanqie_config.distributorId,app_id)
  648. }else if(jsonData['fun']=="get_pull_token"&&jsonData['cmd']=="pull_data_config"){
  649. CMD.get_pull_token(res)
  650. }else if(jsonData['fun']=="get_dz_book"&&jsonData['cmd']=="dz_link"){
  651. let book_id = jsonData['data']['book_id']
  652. CMD.get_dz_book(book_id,res)
  653. }else if(jsonData['fun']=="get_dz_callback_template"&&jsonData['cmd']=="dz_link"){
  654. let channelId = jsonData['data']['channelId']
  655. let isFree = jsonData['data']['isFree']
  656. CMD.get_dz_callback_template(isFree,channelId,res)
  657. }else if(jsonData['fun']=="get_dz_recharge_template"&&jsonData['cmd']=="dz_link"){
  658. let channelId = jsonData['data']['channelId']
  659. CMD.get_dz_recharge_template(channelId,res)
  660. }else if(jsonData['fun']=="get_dz_channel_Info_list"&&jsonData['cmd']=="dz_link"){
  661. let is_wx = jsonData['data']['is_wx']
  662. let isFree = jsonData['data']['isFree']
  663. CMD.get_dz_channel_Info_list(isFree,is_wx,res)
  664. }else if(jsonData['fun']=="get_qm_recharge_template"&&jsonData['cmd']=="qm_link"){
  665. let category = jsonData['data']['category']
  666. let qm_id = jsonData['data']['qm_id']
  667. let mini_program_platform_id = jsonData['data']['mini_program_platform_id']
  668. CMD.get_qm_recharge_template(res,category,mini_program_platform_id,qm_id)
  669. }else if(jsonData['fun']=="get_qm_callback_template"&&jsonData['cmd']=="qm_link"){
  670. let mini_program_platform_id = jsonData['data']['mini_program_platform_id']
  671. let qm_id = jsonData['data']['qm_id']
  672. CMD.get_qm_callback_template(res,mini_program_platform_id,qm_id)
  673. }else if(jsonData['fun']=="get_qm_account_list"&&jsonData['cmd']=="qm_link"){
  674. CMD.get_qm_account_list(res)
  675. }else if(jsonData['fun']=="get_fq_callback_template"&&jsonData['cmd']=="fq_link"){
  676. let distributor_id = jsonData['data']['distributor_id']
  677. CMD.get_fq_callback_template(res,distributor_id)
  678. }else if(jsonData['fun']=="get_yw_recharge_template"&&jsonData['cmd']=="yw_link"){
  679. let yw_id = jsonData['data']['yw_id']
  680. CMD.get_yw_recharge_template(res,yw_id)
  681. }else if(jsonData['fun']=="test_open_sessid"&&jsonData['cmd']=="yw_link"){
  682. let book_id = jsonData['data']['book_id']
  683. CMD.test_open_sessid(res,book_id)
  684. }else if(jsonData['fun']=="get_yw_open_sessid_status"&&jsonData['cmd']=="yw_link"){
  685. CMD.get_yw_open_sessid_status(res)
  686. } else if(jsonData['fun']=="get_yw_account_list"&&jsonData['cmd']=="yw_link"){
  687. let coopid = jsonData['data']['coopid']
  688. CMD.get_yw_account_list(res,coopid)
  689. } else if(jsonData['fun']=="get_zh_recharge_template"&&jsonData['cmd']=="zh_link"){
  690. let app_id = jsonData['data']['app_id']
  691. let member_token = jsonData['data']['member_token']
  692. CMD.get_zh_recharge_template(res,member_token,app_id)
  693. }else if(jsonData['fun']=="get_zh_callback_template"&&jsonData['cmd']=="zh_link"){
  694. let app_id = jsonData['data']['app_id']
  695. let member_token = jsonData['data']['member_token']
  696. CMD.get_zh_callback_template(res,member_token,app_id)
  697. } else if(jsonData['fun']=="hy_accountMapping"&&jsonData['cmd']=="hy_link"){
  698. CMD.hy_accountMapping(res)
  699. } else if(jsonData['fun']=="hy_iaaPassBackTemplate"&&jsonData['cmd']=="hy_link"){
  700. let accountId = jsonData['data']['accountId']
  701. CMD.hy_iaaPassBackTemplate(res,accountId)
  702. }else if(jsonData['fun']=="hy_iapPassBackTemplate"&&jsonData['cmd']=="hy_link"){
  703. let accountId = jsonData['data']['accountId']
  704. CMD.hy_iapPassBackTemplate(res,accountId)
  705. }else if(jsonData['fun']=="hy_topUpTemplate"&&jsonData['cmd']=="hy_link"){
  706. let accountId = jsonData['data']['accountId']
  707. CMD.hy_topUpTemplate(res,accountId)
  708. }else if(jsonData['fun']=="get_qm_mf_recharge_template"&&jsonData['cmd']=="qm_link"){
  709. let category = jsonData['data']['category']
  710. let qm_id = jsonData['data']['qm_id']
  711. let mini_program_platform_id = jsonData['data']['mini_program_platform_id']
  712. CMD.get_qm_mf_recharge_template(res,category,mini_program_platform_id,qm_id)
  713. }else if(jsonData['fun']=="get_qm_mf_callback_template"&&jsonData['cmd']=="qm_link"){
  714. let mini_program_platform_id = jsonData['data']['mini_program_platform_id']
  715. let qm_id = jsonData['data']['qm_id']
  716. CMD.get_qm_mf_callback_template(res,mini_program_platform_id,qm_id)
  717. }else if(jsonData['fun']=="get_qm_mf_account_list"&&jsonData['cmd']=="qm_link"){
  718. CMD.get_qm_mf_account_list(res)
  719. }else if(jsonData['fun']=="get_zy_recharge_template"&&jsonData['cmd']=="zy_link"){
  720. let user_id = jsonData['data']['user_id']
  721. let page = jsonData['data']['page']==undefined?1:jsonData['data']['page']
  722. let size = jsonData['data']['size']==undefined?20:jsonData['data']['size']
  723. CMD.get_zy_recharge_template(res,user_id,page,size)
  724. }else if(jsonData['fun']=="get_zy_callback_template"&&jsonData['cmd']=="zy_link"){
  725. let owner = jsonData['data']['owner']
  726. let page = jsonData['data']['page']==undefined?1:jsonData['data']['page']
  727. let size = jsonData['data']['size']==undefined?100:jsonData['data']['size']
  728. CMD.get_zy_callback_template(res,owner,page,size)
  729. }else if(jsonData['fun']=="get_zy_account_list"&&jsonData['cmd']=="zy_link"){
  730. CMD.get_zy_account_list(res)
  731. }else if(jsonData['fun']=="get_match_book_info"&&jsonData['cmd']=="match"){
  732. let book_id = jsonData['data']['book_id']
  733. let platform = parseInt(jsonData['data']['platform'])
  734. await CMD.get_match_book_info(res,book_id,platform)
  735. } else{
  736. res.writeHead(200, {'Content-Type': 'application/json'});
  737. res.end(JSON.stringify({ message: 'fun 错误',code:100}));
  738. }
  739. } catch (error) {
  740. // 处理解析错误
  741. console.error('Error parsing JSON:', error);
  742. res.writeHead(200, {'Content-Type': 'application/json'});
  743. res.end(JSON.stringify({ error: 'Invalid JSON' }));
  744. }
  745. } else {
  746. // 如果不是 JSON 内容类型,返回错误
  747. res.writeHead(200, {'Content-Type': 'text/plain'});
  748. res.end('Unsupported Media Type. Please send data as JSON.');
  749. }
  750. }else{
  751. res.writeHead(200, {'Content-Type': 'text/plain'});
  752. res.end(' Please Use Post.');
  753. }
  754. });
  755. })
  756. server.listen(PROT,()=>{
  757. });
  758. CMD.init()