yw_create_link.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. const fetch = require('node-fetch'); // Node.js 18以下版本需要安装 node-fetch
  2. const helper = require('../src/helper');
  3. const config = require('../etc/config.json');
  4. const redis_help = require('../src/use_redis');
  5. const CMD = {}
  6. CMD.get_promotion_id_by_name = async function(name,yw_id) {
  7. try {
  8. let OPENSESSID = await redis_help.getKeyValue("OPENSESSID")
  9. let timestamp = helper.getCurrentUnixTimestamp()
  10. await require('../src/api/yw/switchApp').switchApp(yw_id)
  11. const response = await fetch(`https://open.yuewen.com/api/miniappspread/getPromotionList?recycle=0&startdate=&enddate=&name=${name}&id=&content_type=0&page=1&channeltype=1&pagename=`, {
  12. "headers": {
  13. "accept": "application/json, text/plain, */*",
  14. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
  15. "priority": "u=1, i",
  16. "sec-ch-ua": "\"Microsoft Edge\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"",
  17. "sec-ch-ua-mobile": "?0",
  18. "sec-ch-ua-platform": "\"Windows\"",
  19. "sec-fetch-dest": "empty",
  20. "sec-fetch-mode": "cors",
  21. "sec-fetch-site": "same-origin",
  22. "cookie": `Hm_lvt_990f9ab9737a266517417cc2949bb3f4=${timestamp}; csrfToken=9EeGTClKZ3EJFZjIQDcVozZj; OPENSESSID=${OPENSESSID}; yw_open_token=6784835e6c51a; is_read_notice=6784835e6c51a; sidebarStatus=1`,
  23. "Referer": "https://open.yuewen.com/new/library",
  24. "Referrer-Policy": "strict-origin-when-cross-origin"
  25. },
  26. "body": null,
  27. "method": "GET"
  28. });
  29. const data = await response.json();
  30. if(data.code!=0){
  31. throw data
  32. }
  33. console.log('get_promotion_id_by_name::响应状态:', response.status);
  34. console.log('get_promotion_id_by_name::响应数据:', data);
  35. return data.data.list[0];
  36. } catch (error) {
  37. console.error('get_promotion_id_by_name::请求错误:', error);
  38. return null
  39. }
  40. }
  41. CMD.test = async function() {
  42. // 设置请求头
  43. const headers = {
  44. "accept": "application/json, text/plain, */*",
  45. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
  46. "content-type": "application/json",
  47. "priority": "u=1, i",
  48. "sec-ch-ua": "\"Microsoft Edge\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"",
  49. "sec-ch-ua-mobile": "?0",
  50. "sec-ch-ua-platform": "\"Windows\"",
  51. "sec-fetch-dest": "empty",
  52. "sec-fetch-mode": "cors",
  53. "sec-fetch-site": "same-origin",
  54. "cookie": "Hm_lvt_990f9ab9737a266517417cc2949bb3f4=1736394515; csrfToken=xKm-Q0k0vYm1SvdsRLP_kXsG; OPENSESSID=e055148579455596ff9d10d1b2c72024; yw_open_token=6787602677bbd; is_read_notice=6787602677bbd; sidebarStatus=0",
  55. "Referer": "https://open.yuewen.com/new/library",
  56. "Referrer-Policy": "strict-origin-when-cross-origin"
  57. };
  58. // 设置请求体
  59. const requestBody = {
  60. "cost": 0,
  61. "name": "ceshi2222",
  62. "cbid": "30554680307186706",
  63. "ccid": "82019595711479505",
  64. "page_name": "《渣男犯了错》第1章 01",
  65. "channel_charge_setting": {
  66. "id": 478,
  67. "name": "29.9元",
  68. "tenantId": 80091658,
  69. "create_time": 1736829123000,
  70. "update_time": 1736829123000,
  71. "creator": "zyw****4013@163.com",
  72. "updater": "zyw****4013@163.com",
  73. "details": [
  74. // VIP月度会员
  75. {
  76. "vip_type": 1,
  77. "origin": 4485,
  78. "price": 2990,
  79. "gift": 0,
  80. "charge_desc": "1个月会员",
  81. "gift_desc": "仅0.96元/天",
  82. "bg_color": 0,
  83. "tag_color": 0,
  84. "tag_txt": "",
  85. "tag_type": 0,
  86. "tag_position": 0,
  87. "pay_id": 1,
  88. "first_charge": 0,
  89. "vip_charge_setting": {
  90. "type": 2,
  91. "dprice": 96,
  92. "quantity": 31,
  93. "product_id": "com.miniappvip.month.31days",
  94. "label_id": 0,
  95. "user_filter": 0,
  96. "rule_id": 0,
  97. "first_period_conf": []
  98. },
  99. "charge_setting_type": 1
  100. },
  101. // 其他会员配置...
  102. ]
  103. },
  104. "backup_book_status": 2,
  105. "channel_type": 1,
  106. "force_style": "1"
  107. };
  108. // 发起请求
  109. let response = await fetch("https://open.yuewen.com/api/miniappspread/addH5Spread", {
  110. method: "POST",
  111. headers: headers,
  112. body: JSON.stringify(requestBody)
  113. });
  114. console.log("response:",response)
  115. }
  116. CMD.runTask = async function(t_data,main_info,PlatformInfo,call_back){
  117. try{
  118. let chapter_info = await require('../src/api/yw/get_book_tg_chapter_id').get_book_tg_chapter_id(t_data.product_id)
  119. console.log("main_info.yw_id:",main_info.yw_id)
  120. console.log("chapter_info:",chapter_info)
  121. await require('../src/api/yw/switchApp').switchApp(main_info.yw_id)
  122. let timestamp = helper.getCurrentUnixTimestamp()
  123. let tg_link_config = JSON.parse(main_info.tg_link_config)
  124. let chongzhi_id = tg_link_config['chongzhi_id']
  125. let chongzhi_list = JSON.parse(PlatformInfo.chongzhi)
  126. let channel_charge_setting = ""
  127. for (let index = 0; index < chongzhi_list.length; index++) {
  128. const cz_obj = chongzhi_list[index];
  129. if(cz_obj.id==chongzhi_id){
  130. channel_charge_setting = cz_obj.value
  131. break
  132. }
  133. }
  134. if(chapter_info==null){
  135. throw {"error_info":"get_book_tg_chapter_id error!"}
  136. }
  137. let promotion_name = `${t_data.product_name}_${timestamp}`
  138. let create_time = Date.now()
  139. // let postData = {
  140. // cost:"0",
  141. // name:promotion_name,
  142. // cbid:t_data.product_id,
  143. // ccid:chapter_info.ccid,
  144. // page_name:`《${t_data.product_name}》第1章`,
  145. // channel_charge_setting:channel_charge_setting,
  146. // backup_book_status:"2",
  147. // channel_type:"1",
  148. // force_style:"1"
  149. // }
  150. let OPENSESSID = await redis_help.getKeyValue("OPENSESSID")
  151. const headers = {
  152. "accept": "application/json, text/plain, */*",
  153. "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
  154. "content-type": "application/json",
  155. "priority": "u=1, i",
  156. "sec-ch-ua": "\"Microsoft Edge\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"",
  157. "sec-ch-ua-mobile": "?0",
  158. "sec-ch-ua-platform": "\"Windows\"",
  159. "sec-fetch-dest": "empty",
  160. "sec-fetch-mode": "cors",
  161. "sec-fetch-site": "same-origin",
  162. "cookie": `Hm_lvt_990f9ab9737a266517417cc2949bb3f4=1736394515; csrfToken=xKm-Q0k0vYm1SvdsRLP_kXsG; OPENSESSID=${OPENSESSID}; yw_open_token=6787602677bbd; is_read_notice=6787602677bbd; sidebarStatus=0`,
  163. "Referer": "https://open.yuewen.com/new/library",
  164. "Referrer-Policy": "strict-origin-when-cross-origin"
  165. };
  166. let postData = {
  167. "cost": 0,
  168. "name": promotion_name,
  169. "cbid": t_data.product_id,
  170. "ccid": chapter_info.ccid,
  171. "page_name": `《${t_data.product_name}》第1章 01`,
  172. "channel_charge_setting": {
  173. "id": channel_charge_setting.id,
  174. "name": channel_charge_setting.name,
  175. "tenantId": channel_charge_setting.tenantId,
  176. "create_time": create_time,
  177. "update_time": create_time,
  178. "creator": "zyw****4013@163.com",
  179. "updater": "zyw****4013@163.com",
  180. "details":channel_charge_setting.details
  181. },
  182. "backup_book_status": 2,
  183. "channel_type": 1,
  184. "force_style": "1"
  185. };
  186. console.log("postData:",postData)
  187. let response = await fetch("https://open.yuewen.com/api/miniappspread/addH5Spread", {
  188. method: "POST",
  189. headers: headers,
  190. body: JSON.stringify(postData)
  191. });
  192. const data = await response.json();
  193. if(data.code!=0){
  194. throw data
  195. }
  196. let promotion_info = await CMD.get_promotion_id_by_name(promotion_name,main_info.yw_id)
  197. let t_params = promotion_info.path.split('?')
  198. let start_page = t_params[0]
  199. let start_param = t_params[1]
  200. t_data.promotion_id = promotion_info.id
  201. t_data.start_page = start_page
  202. t_data.start_param = start_param
  203. console.log('CMD.runTask::响应状态:', response.status);
  204. console.log('CMD.runTask:响应数据:', data);
  205. console.log('t_data:',t_data)
  206. call_back(t_data,null)
  207. }catch(error){
  208. console.error('CMD.runTask:请求错误:', error);
  209. call_back(t_data,error)
  210. return null;
  211. }
  212. }
  213. module.exports = CMD;