yw_create_link.js 8.8 KB

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