wubianCloseSale.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. /*
  2. 无边星链一键下架
  3. */
  4. const scriptName = `无边星链一键下架`;
  5. const magicJS = MagicJS(scriptName, "INFO");
  6. const WuBianConstKey = {
  7. // 基础数据
  8. UserInfo: 'WubianUserInfo',
  9. Token: 'WubianProToken',
  10. ActivityListData: 'WubianActivityListData',
  11. ActivityGoodsList: 'WubianActivityGoodsList',
  12. ActivityTaskCaptureEnabled: 'WubianActivityTaskCaptureEnabled',
  13. ActivityTagName: 'WubianActivityActivityTagName',
  14. ActivityIndexName: 'WubianActivityIndexName',
  15. ActivityId: 'WubianActivityId',
  16. TenantId: 'WubianTenantId',
  17. FirstOrderCaptureEnabled: 'WubianFirstOrderCaptureEnabled',
  18. FirstArtListData: 'WubianFirstArtListData',
  19. FirstGoodsId: 'WubianFirstGoodsId',
  20. FirstGoodsName: 'WubianFirstGoodsName',
  21. CreateFirstOrderData: 'WubianCreateFirstOrderData',
  22. FirstGrabConcurrentMode: 'WubianFirstGrabConcurrentMode',
  23. FirstGrabRunsPerSecond: 'WubianFirstGrabRunsPerSecond',
  24. ConsignmentCaptureEnabled: 'WubianConsignmentCaptureEnabled',
  25. MyCollectListData: 'WubianMyCollectListData',
  26. ConsignmentArtName: 'WubianConsignmentArtName',
  27. ConsignmentArtId: 'WubianConsignmentArtId',
  28. ConsignmentArtPrice: 'WubianConsignmentArtPrice',
  29. ConsignmentArtAmount: 'WubianConsignmentArtAmount',
  30. CloseSaleArtName: 'WubianCloseSaleArtName',
  31. };
  32. const gUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Html5Plus/1.0 (Immersed/20) uni-app`;
  33. const gHost = `api.wubian.pro`;
  34. let gToken = magicJS.data.read(WuBianConstKey.Token, '');
  35. const gCommonHeaders = {
  36. 'Accept': `*/*`,
  37. 'Accept-Encoding': `gzip, deflate, br`,
  38. 'Connection': `keep-alive`,
  39. 'Content-Type': `application/json`,
  40. 'Cookie': `token=${gToken}`,
  41. 'Host': gHost,
  42. 'User-Agent': gUserAgent,
  43. 'CLIENT-TYPE': `APP`,
  44. 'token': gToken,
  45. 'Accept-Language': `zh-CN,zh-Hans;q=0.9`
  46. };
  47. let gRetBody;
  48. async function Main() {
  49. if (magicJS.isStrictRequest) {
  50. magicJS.checkRecordRequestBody();
  51. }
  52. if (magicJS.isRequest) {
  53. checkHandleRequest();
  54. } else {
  55. updateHeaders();
  56. await tryCloseSale();
  57. }
  58. magicJS.notification.msg('');
  59. if (gRetBody) {
  60. magicJS.done({
  61. body: JSON.stringify(gRetBody)
  62. });
  63. } else {
  64. magicJS.done();
  65. }
  66. }
  67. function checkHandleRequest() {
  68. }
  69. function updateHeaders() {
  70. gToken = magicJS.data.read(WuBianConstKey.Token, '');
  71. gCommonHeaders['token'] = gToken;
  72. gCommonHeaders['cookie'] = `token=${gToken}`;
  73. }
  74. function getTenantId() {
  75. let tenantId = magicJS.data.read(WuBianConstKey.TenantId, '238bw8l9n5');
  76. return tenantId;
  77. }
  78. function getCloseSaleName() {
  79. return magicJS.data.read(WuBianConstKey.CloseSaleArtName, '');
  80. }
  81. async function tryCloseSale() {
  82. let tenantId = getTenantId();
  83. let name = getCloseSaleName();
  84. let page = 1;
  85. while (page < 100) {
  86. let retCollectList = await queryUserCollectList(tenantId, 1, 2, page);
  87. if (retCollectList && retCollectList.code == 200) {
  88. let collectList = retCollectList.data.list;
  89. for (let i = 0; i < collectList.length; ++i) {
  90. let goodsItem = collectList[i];
  91. magicJS.logger.info(`[${goodsItem.title}#${goodsItem.ver}]¥${goodsItem.price}寄售单状态:${goodsItem.status}`);
  92. // if (goodsItem.status == -1) {//锁定中
  93. // continue;
  94. // }
  95. if (goodsItem.status == -2) {//寄售中
  96. }
  97. if (goodsItem.title.indexOf(name) > -1) {
  98. let retGoodsDetail = await getMarketGoodsInfo(goodsItem.goodsId, 1);
  99. let goodsBaseInfo = retGoodsDetail.data?.info;
  100. let retCancelOpt = await cancelConsignmentOrder(goodsItem.artId, goodsItem.goodsId);
  101. if (retCancelOpt && retCancelOpt.code == 200) {
  102. magicJS.notification.appendNotifyInfo(`[${goodsItem.title}#${goodsItem.ver}]¥${goodsItem.price}寄售单取消成功!`);
  103. } else {
  104. magicJS.notification.appendNotifyInfo(`[${goodsItem.title}#${goodsItem.ver}]¥${goodsItem.price}寄售单取消失败,原因:${retCancelOpt?.msg}!`);
  105. }
  106. }
  107. }
  108. if (retCollectList.data.next == 1) {
  109. page++;
  110. } else {
  111. break;
  112. }
  113. }
  114. }
  115. }
  116. /**
  117. *
  118. * @param {*} type
  119. * @param {*} state 1=收藏中 2=转让中 3=已转让
  120. * @param {*} page
  121. * @returns
  122. */
  123. async function queryUserCollectList(tenantId, type, state, page) {
  124. const url = `https://api.wubian.pro/vmf/app/user/collect/list`;
  125. const reqData = {
  126. type: type,
  127. state: state,
  128. page: page,
  129. tenantId: tenantId,
  130. };
  131. let options = {
  132. url: url,
  133. headers: gCommonHeaders,
  134. body: JSON.stringify(reqData),
  135. };
  136. let result = await magicJS.http.post(options).then(response => {
  137. try {
  138. let rspData = response.body;
  139. // magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
  140. return rspData;
  141. } catch (e) {
  142. magicJS.logger.error(e);
  143. }
  144. }).catch(err => {
  145. const msg = `获取个人拥有的产品列表数据异常\n${JSON.stringify(err)}`;
  146. magicJS.logger.error(msg);
  147. });
  148. return result;
  149. }
  150. async function getMarketGoodsInfo(goodsId, type) {
  151. const url = `https://api.wubian.pro/vmf/app/market/goodsInfo`;
  152. const reqData = {
  153. goodsId: goodsId,
  154. type: String(type),
  155. };
  156. let options = {
  157. url: url,
  158. headers: gCommonHeaders,
  159. body: JSON.stringify(reqData),
  160. };
  161. let result = await magicJS.http.post(options).then(response => {
  162. try {
  163. let rspData = response.body;
  164. // magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
  165. return rspData;
  166. } catch (e) {
  167. magicJS.logger.error(e);
  168. }
  169. }).catch(err => {
  170. const msg = `请求产品信息异常\n${JSON.stringify(err)}`;
  171. magicJS.logger.error(msg);
  172. });
  173. return result;
  174. }
  175. async function cancelConsignmentOrder(artHashId, goodsHashId) {
  176. const url = `https://api.wubian.pro/vmf/app/order/cancelConsignmentOrder`;
  177. const reqData = {
  178. artHashId: artHashId,
  179. goodsHashId: goodsHashId,
  180. };
  181. let options = {
  182. url: url,
  183. headers: gCommonHeaders,
  184. body: JSON.stringify(reqData),
  185. };
  186. let result = await magicJS.http.post(options).then(response => {
  187. try {
  188. let rspData = response.body;
  189. magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
  190. return rspData;
  191. } catch (e) {
  192. magicJS.logger.error(e);
  193. }
  194. }).catch(err => {
  195. const msg = `请求取消寄售异常\n${JSON.stringify(err)}`;
  196. magicJS.logger.error(msg);
  197. });
  198. return result;
  199. }