RECEIVE_FACTORY.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519
  1. const CMD = {}
  2. const time_count = 250;
  3. const PROT = 9106
  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.get_fq_callback_template = async function(res,distributor_id) {
  82. let data = await require('../src/api/fq/get_fq_call_back_template').get_callback_template(distributor_id)
  83. res.writeHead(200, {'Content-Type': 'application/json'});
  84. if(data==null){
  85. res.end(JSON.stringify({ message:"成功!",data:{},code:10000}));
  86. }else{
  87. console.log('get_fq_callback_template:', data);
  88. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  89. }
  90. }
  91. CMD.get_fq_rechargeTemplate = function(res,distributor_id){
  92. // var distributorId = config.fanqie_config.distributorId;
  93. var distributorId = distributor_id
  94. var secretKey = config.fanqie_config.secretKey;
  95. const postData = {
  96. distributor_id: distributorId,
  97. ts: helper.getCurrentUnixTimestamp(),
  98. sign: helper.getSign(distributorId,secretKey),
  99. page_size: 100,
  100. page_index:0,
  101. };
  102. // console.log("get_recharge_template:")
  103. var url = config.fanqie_config.recharge_list_host
  104. var base_params = `/?distributor_id=${postData.distributor_id}&ts=${postData.ts}&sign=${postData.sign}`
  105. var other_params = `&page_size=${postData.page_size}&page_index=${postData.page_index}`
  106. axios.get(`${url}${base_params}${other_params}`)
  107. .then(response => {
  108. // console.log('Response data:', response.data );
  109. let data = response.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_fq_rechargeTemplate:",data)
  118. })
  119. .catch(error => {
  120. console.error('Error:', error);
  121. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  122. });
  123. }
  124. // 应用业务类型。枚举值,提供该字段则只返回对应业务类型分包列表
  125. // - 快应用 = 1
  126. // - 微信h5 = 3
  127. // - 微信短剧 = 4
  128. // - 抖音短剧 = 7
  129. // - 抖小网文 = 8
  130. // - 微小网文 = 12
  131. CMD.get_fq_package_list = function(res,distributorId,app_type){
  132. var secretKey = config.fanqie_config.secretKey;
  133. const postData = {
  134. distributor_id: distributorId,
  135. ts: helper.getCurrentUnixTimestamp(),
  136. sign: helper.getSign(distributorId,secretKey),
  137. page_size: 50,
  138. page_index:0,
  139. app_type:app_type
  140. };
  141. var url = config.fanqie_config.get_fq_package_list
  142. var base_params = `/?distributor_id=${postData.distributor_id}&ts=${postData.ts}&sign=${postData.sign}&app_type=${postData.app_type}`
  143. var other_params = `&page_size=${postData.page_size}&page_index=${postData.page_index}`
  144. console.log("url:",`${url}${base_params}${other_params}`)
  145. axios.get(`${url}${base_params}${other_params}`)
  146. .then(response => {
  147. // console.log('Response data:', response.data );
  148. let data = response.data
  149. res.writeHead(200, {'Content-Type': 'application/json'});
  150. if(data.code==200){
  151. res.end(JSON.stringify({ message:"成功!",data:data.package_info_open_list,code:10000}));
  152. }else{
  153. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  154. }
  155. console.log("get_fq_package_list:",data)
  156. })
  157. .catch(error => {
  158. console.error('Error:', error);
  159. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  160. });
  161. }
  162. CMD.get_fq_bound_package_list = function(res,distributorId,app_id){
  163. var secretKey = config.fanqie_config.secretKey;
  164. const postData = {
  165. distributor_id: distributorId,
  166. ts: helper.getCurrentUnixTimestamp(),
  167. sign: helper.getSign(distributorId,secretKey),
  168. page_size: 50,
  169. page_index:0,
  170. app_id:app_id
  171. };
  172. var url = config.fanqie_config.get_bound_package_list
  173. var base_params = `/?distributor_id=${postData.distributor_id}&ts=${postData.ts}&sign=${postData.sign}&app_id=${postData.app_id}`
  174. var other_params = `&page_size=${postData.page_size}&page_index=${postData.page_index}`
  175. console.log("url:",`${url}${base_params}${other_params}`)
  176. axios.get(`${url}${base_params}${other_params}`)
  177. .then(response => {
  178. // console.log('Response data:', response.data );
  179. let data = response.data
  180. res.writeHead(200, {'Content-Type': 'application/json'});
  181. if(data.code==200){
  182. res.end(JSON.stringify({ message:"成功!",data:data.wx_package_info_open_list,code:10000}));
  183. }else{
  184. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  185. }
  186. console.log("get_fq_bound_package_list:",data)
  187. })
  188. .catch(error => {
  189. console.error('Error:', error);
  190. res.end(JSON.stringify({ message:"fail!",data:data,code:data.code}));
  191. });
  192. }
  193. CMD.test_fq_book_sid_tt = async function(book_id,sid_tt){
  194. try{
  195. let client =new HttpClient()
  196. let {url,params,headers} = helper.getFqRequestOpt(book_id,sid_tt)
  197. let response = await client.fqProxyGet(url, params,headers)
  198. console.log("response:",response.data)
  199. let obj = response['data']
  200. return obj['video_info']
  201. // console.log("url:",url)
  202. // console.log("params:",params)
  203. // console.log("headers:",headers)
  204. // axios.get(url, {
  205. // params: params,
  206. // headers: headers
  207. // })
  208. // .then(response => {
  209. // console.log(response.data);
  210. // })
  211. // .catch(error => {
  212. // console.error('Error:', error);
  213. // });
  214. }catch(e){
  215. console.log("test_fq_book_sid_tt:error:",e)
  216. // return {"error_book_id":book_id,"error_sid_tt":sid_tt}
  217. return null
  218. }
  219. }
  220. CMD.get_fq_ji_jiang_xia_jia = async function(res) {
  221. try{
  222. let response = await require("../src/api/fq/fq_search_book").new_search_ji_jiang_xia_jia()
  223. console.log("response:",response)
  224. res.writeHead(200, {'Content-Type': 'application/json'});
  225. if(response.code==0){
  226. res.end(JSON.stringify({ message:"成功!",data:response.data.data,code:10000}));
  227. }else{
  228. res.end(JSON.stringify({ message:"fail!",data:response,code:response.code}));
  229. }
  230. }catch(e){
  231. console.error('Error:', error);
  232. res.end(JSON.stringify({ message:"fail!",data:null,code:response.code}));
  233. }
  234. }
  235. CMD.get_pull_token = async function(res){
  236. let token = await redis_help.getKeyValue("pull_data_token")
  237. res.writeHead(200, {'Content-Type': 'application/json'});
  238. res.end(JSON.stringify({ message:"成功!",data:{token:token},code:10000}));
  239. console.log('get_pull_token:', token);
  240. }
  241. CMD.get_detail = async function(res,token,list) {
  242. const response = await axios.post("https://dongxiaoju.com"+config.pull_data_config.get_detail,{ list:list,}, {
  243. headers: {
  244. 'Accept': 'application/json, text/plain, */*',
  245. 'token':token
  246. }
  247. });
  248. console.log("response:",response.data.data.list)
  249. res.writeHead(200, {'Content-Type': 'application/json'});
  250. res.end(JSON.stringify({ message:"成功!",data:{response:response.data.data.list},code:10000}));
  251. }
  252. CMD.get_dz_book = async function(book_id,res) {
  253. let data = await require('../src/api/dz/dz_search_book').search_id(book_id)
  254. res.writeHead(200, {'Content-Type': 'application/json'});
  255. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  256. console.log('get_dz_book:', data);
  257. }
  258. CMD.get_dz_callback_template = async function(channelId,isFree,res) {
  259. console.log("get_dz_callback_template!")
  260. require('../src/api/dz/get_dz_call_back_template').get_callback_template(channelId,(data)=>{
  261. console.log('get_dz_callback_template:', data);
  262. res.writeHead(200, {'Content-Type': 'application/json'});
  263. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  264. },isFree)
  265. }
  266. CMD.get_dz_channel_Info_list = async function(res,isFree) {
  267. console.log("get_dz_channel_Info_list!")
  268. require('../src/api/dz/get_channel_Info_list').get_channel_Info_list((data)=>{
  269. console.log('get_dz_channel_Info_list:', data);
  270. res.writeHead(200, {'Content-Type': 'application/json'});
  271. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  272. },isFree)
  273. }
  274. CMD.get_dz_recharge_template = async function(channelId,res) {
  275. await require('../src/api/dz/get_dz_recharge_template').get_recharge_template(channelId,(data)=>{
  276. console.log('get_dz_recharge_template:', data);
  277. res.writeHead(200, {'Content-Type': 'application/json'});
  278. res.end(JSON.stringify({ message:"成功!",data:data,code:10000}));
  279. })
  280. }
  281. CMD.get_zy_account_list = async function(res) {
  282. let token = await require('../src/api/zy/get_zy_token').get_token()
  283. console.log("token:",token)
  284. let clinet = tools.getOneNewClinet()
  285. let response = await clinet.get(`https://openapi-gaia.zhangyue.com/opendata/reseller/info?access_token=${token}`)
  286. let list = null
  287. if(response.data.code!=0){
  288. console.error("get_zy_account_list error:",response)
  289. }else{
  290. list = response.data.body.users
  291. }
  292. res.writeHead(200, {'Content-Type': 'application/json'});
  293. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  294. }
  295. CMD.get_zy_callback_template = async function(res,owner,page,size) {
  296. let token = await require('../src/api/zy/get_zy_token').get_token()
  297. let clinet = tools.getOneNewClinet()
  298. let response = await clinet.post(`https://openapi-gaia.zhangyue.com/opendata/reseller/pay/series/callback/list`,{
  299. access_token:token,
  300. owner:parseInt(owner),
  301. page:page,
  302. size:size
  303. })
  304. let list = null
  305. if(response.data.code!=0){
  306. console.error("get_zy_account_list error:",response)
  307. }else{
  308. list = response.data.body.list
  309. }
  310. res.writeHead(200, {'Content-Type': 'application/json'});
  311. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  312. }
  313. CMD.get_zy_recharge_template = async function(res,user_id,page,size) {
  314. let token = await require('../src/api/zy/get_zy_token').get_token()
  315. let clinet = tools.getOneNewClinet()
  316. let response = await clinet.post(`https://openapi-gaia.zhangyue.com/opendata/reseller/pay/series/recharge`,{
  317. access_token:token,
  318. user_id:parseInt(user_id),
  319. page:page,
  320. size:size
  321. })
  322. let list = null
  323. if(response.data.code!=0){
  324. console.error("get_zy_recharge_template error:",response)
  325. }else{
  326. list = response.data.body.items
  327. }
  328. res.writeHead(200, {'Content-Type': 'application/json'});
  329. res.end(JSON.stringify({ message:"成功!",data:list,code:10000}));
  330. }
  331. var server = http.createServer(function(req,res){
  332. res.setHeader('Access-Control-Allow-Origin', '*'); // 允许所有域的请求,注意:在生产环境中应该限制为特定的域
  333. res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); // 允许的方法
  334. res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // 允许的头部
  335. let body = '';
  336. // 监听数据块
  337. req.on('data', chunk => {
  338. body += chunk.toString(); // 将接收到的数据块转换为字符串并拼接
  339. });
  340. // 监听请求结束
  341. req.on('end', async () => {
  342. if (req.method === 'POST') {
  343. if (req.headers['content-type'] === 'application/x-www-form-urlencoded') {
  344. try {
  345. // 解析 JSON 数据
  346. const jsonData = JSON.parse(body);
  347. console.log("recv msg:",jsonData)
  348. if(jsonData['fun']=="start_filter"&&jsonData['cmd']=="filter_task"){
  349. res.writeHead(200, {'Content-Type': 'application/json'});
  350. if(task_status==false){
  351. CMD.startTask(jsonData['data'])
  352. res.end(JSON.stringify({ msg: 'success!',code:10000,data:{}}));
  353. }else{
  354. res.end(JSON.stringify({ msg: '服务器繁忙!',code:10000,data:{}}));
  355. }
  356. }else if(jsonData['fun']=="test_fq_book_sid_tt"&&jsonData['cmd']=="fq_book"){
  357. let book_id = jsonData['data']['book_id']
  358. let sid_tt = jsonData['data']['sid_tt']
  359. let info = await CMD.test_fq_book_sid_tt(book_id,sid_tt)
  360. res.writeHead(200, {'Content-Type': 'application/json'});
  361. if(info==null){
  362. res.end(JSON.stringify({ message:"失败",code:10001}));
  363. }else{
  364. res.end(JSON.stringify({ message:"成功!",data:info,code:10000}));
  365. }
  366. }else if(jsonData['fun']=="test_fq_mf_book_sid_tt"&&jsonData['cmd']=="fq_mf_book"){
  367. let book_id = jsonData['data']['book_id']
  368. let sid_tt = jsonData['data']['sid_tt']
  369. let info = await CMD.test_fq_mf_book_sid_tt(book_id,sid_tt)
  370. res.writeHead(200, {'Content-Type': 'application/json'});
  371. if(info==null){
  372. res.end(JSON.stringify({ message:"失败",code:10001}));
  373. }else{
  374. res.end(JSON.stringify({ message:"成功!",data:info,code:10000}));
  375. }
  376. }else if(jsonData['fun']=="groupMapping"&&jsonData['cmd']=="hy_link"){
  377. CMD.get_group_mapping(res)
  378. }else if(jsonData['fun']=="rechargeTemplate"&&jsonData['cmd']=="hy_link"){
  379. CMD.get_hy_rechargeTemplate(res)
  380. }else if(jsonData['fun']=="get_hy_SiteTemplate"&&jsonData['cmd']=="hy_link"){
  381. CMD.get_hy_SiteTemplate(res)
  382. }else if(jsonData['fun']=="passBackTemplate"&&jsonData['cmd']=="hy_link"){
  383. let is_free = jsonData['data']['is_free']
  384. CMD.get_hy_passBackTemplate(res,is_free)
  385. }else if(jsonData['fun']=="rechargeTemplate"&&jsonData['cmd']=="fq_link"){
  386. let distributor_id = jsonData['data']['distributor_id']
  387. CMD.get_fq_rechargeTemplate(res,distributor_id)
  388. }else if(jsonData['fun']=="get_fq_package_list"&&jsonData['cmd']=="fq_link"){
  389. let app_type = jsonData['data']['app_type']
  390. // let distributor_id = jsonData['data']['distributor_id']
  391. CMD.get_fq_package_list(res,config.fanqie_config.distributorId,app_type)
  392. }else if(jsonData['fun']=="get_fq_bound_package_list"&&jsonData['cmd']=="fq_link"){
  393. let app_id = jsonData['data']['app_id']
  394. // let distributor_id = jsonData['data']['distributor_id']
  395. CMD.get_fq_bound_package_list(res,config.fanqie_config.distributorId,app_id)
  396. }else if(jsonData['fun']=="get_pull_token"&&jsonData['cmd']=="pull_data_config"){
  397. CMD.get_pull_token(res)
  398. }else if(jsonData['fun']=="get_dz_book"&&jsonData['cmd']=="dz_link"){
  399. let book_id = jsonData['data']['book_id']
  400. CMD.get_dz_book(book_id,res)
  401. }else if(jsonData['fun']=="get_dz_callback_template"&&jsonData['cmd']=="dz_link"){
  402. let channelId = jsonData['data']['channelId']
  403. let isFree = jsonData['data']['isFree']==1
  404. CMD.get_dz_callback_template(channelId,isFree,res)
  405. }else if(jsonData['fun']=="get_dz_recharge_template"&&jsonData['cmd']=="dz_link"){
  406. let channelId = jsonData['data']['channelId']
  407. CMD.get_dz_recharge_template(channelId,res)
  408. }else if(jsonData['fun']=="get_dz_channel_Info_list"&&jsonData['cmd']=="dz_link"){
  409. let isFree = jsonData['data']['isFree']==1
  410. CMD.get_dz_channel_Info_list(res,isFree)
  411. }else if(jsonData['fun']=="get_qm_recharge_template"&&jsonData['cmd']=="qm_link"){
  412. let category = jsonData['data']['category']
  413. let qm_id = jsonData['data']['qm_id']
  414. let mini_program_platform_id = jsonData['data']['mini_program_platform_id']
  415. CMD.get_qm_recharge_template(res,category,mini_program_platform_id,qm_id)
  416. }else if(jsonData['fun']=="get_qm_callback_template"&&jsonData['cmd']=="qm_link"){
  417. let mini_program_platform_id = jsonData['data']['mini_program_platform_id']
  418. let qm_id = jsonData['data']['qm_id']
  419. CMD.get_qm_callback_template(res,mini_program_platform_id,qm_id)
  420. }else if(jsonData['fun']=="get_qm_account_list"&&jsonData['cmd']=="qm_link"){
  421. CMD.get_qm_account_list(res)
  422. }else if(jsonData['fun']=="get_fq_callback_template"&&jsonData['cmd']=="fq_link"){
  423. let distributor_id = jsonData['data']['distributor_id']
  424. CMD.get_fq_callback_template(res,distributor_id)
  425. }else if(jsonData['fun']=="get_yw_recharge_template"&&jsonData['cmd']=="yw_link"){
  426. let yw_id = jsonData['data']['yw_id']
  427. CMD.get_yw_recharge_template(res,yw_id)
  428. }else if(jsonData['fun']=="test_open_sessid"&&jsonData['cmd']=="yw_link"){
  429. let book_id = jsonData['data']['book_id']
  430. CMD.test_open_sessid(res,book_id)
  431. }else if(jsonData['fun']=="get_yw_open_sessid_status"&&jsonData['cmd']=="yw_link"){
  432. CMD.get_yw_open_sessid_status(res)
  433. } else if(jsonData['fun']=="get_zh_recharge_template"&&jsonData['cmd']=="zh_link"){
  434. let app_type = jsonData['data']['app_type']
  435. CMD.get_zh_recharge_template(res,app_type)
  436. }else if(jsonData['fun']=="get_zh_callback_template"&&jsonData['cmd']=="zh_link"){
  437. CMD.get_zh_callback_template(res)
  438. }else if(jsonData['fun']=="get_detail"&&jsonData['cmd']=="pull_data"){
  439. let token = jsonData['data']['token']
  440. let list = jsonData['data']['list']
  441. CMD.get_detail(res,token,list)
  442. }else if(jsonData['fun']=="get_fq_ji_jiang_xia_jia"&&jsonData['cmd']=="fq_link"){
  443. await CMD.get_fq_ji_jiang_xia_jia(res)
  444. }else if(jsonData['fun']=="get_zy_recharge_template"&&jsonData['cmd']=="zy_link"){
  445. let user_id = jsonData['data']['user_id']
  446. let page = jsonData['data']['page']==undefined?1:jsonData['data']['page']
  447. let size = jsonData['data']['size']==undefined?20:jsonData['data']['size']
  448. CMD.get_zy_recharge_template(res,user_id,page,size)
  449. }else if(jsonData['fun']=="get_zy_callback_template"&&jsonData['cmd']=="zy_link"){
  450. let owner = jsonData['data']['owner']
  451. let page = jsonData['data']['page']==undefined?1:jsonData['data']['page']
  452. let size = jsonData['data']['size']==undefined?100:jsonData['data']['size']
  453. CMD.get_zy_callback_template(res,owner,page,size)
  454. }else if(jsonData['fun']=="get_zy_account_list"&&jsonData['cmd']=="zy_link"){
  455. CMD.get_zy_account_list(res)
  456. }
  457. else{
  458. res.writeHead(200, {'Content-Type': 'application/json'});
  459. res.end(JSON.stringify({ message: 'fun 错误',code:100}));
  460. }
  461. } catch (error) {
  462. // 处理解析错误
  463. console.error('Error parsing JSON:', error);
  464. res.writeHead(200, {'Content-Type': 'application/json'});
  465. res.end(JSON.stringify({ error: 'Invalid JSON' }));
  466. }
  467. } else {
  468. // 如果不是 JSON 内容类型,返回错误
  469. res.writeHead(200, {'Content-Type': 'text/plain'});
  470. res.end('Unsupported Media Type. Please send data as JSON.');
  471. }
  472. }else{
  473. res.writeHead(200, {'Content-Type': 'text/plain'});
  474. res.end(' Please Use Post.');
  475. }
  476. });
  477. })
  478. server.listen(PROT,()=>{
  479. });
  480. CMD.init()