|
@@ -0,0 +1,220 @@
|
|
|
|
|
+/*
|
|
|
|
|
+无边星链一键下架
|
|
|
|
|
+*/
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+const scriptName = `无边星链一键下架`;
|
|
|
|
|
+const magicJS = MagicJS(scriptName, "INFO");
|
|
|
|
|
+
|
|
|
|
|
+const WuBianConstKey = {
|
|
|
|
|
+ // 基础数据
|
|
|
|
|
+ UserInfo: 'WubianUserInfo',
|
|
|
|
|
+ Token: 'WubianProToken',
|
|
|
|
|
+ ActivityListData: 'WubianActivityListData',
|
|
|
|
|
+ ActivityGoodsList: 'WubianActivityGoodsList',
|
|
|
|
|
+ ActivityTaskCaptureEnabled: 'WubianActivityTaskCaptureEnabled',
|
|
|
|
|
+ ActivityTagName: 'WubianActivityActivityTagName',
|
|
|
|
|
+ ActivityIndexName: 'WubianActivityIndexName',
|
|
|
|
|
+ ActivityId: 'WubianActivityId',
|
|
|
|
|
+ TenantId: 'WubianTenantId',
|
|
|
|
|
+ FirstOrderCaptureEnabled: 'WubianFirstOrderCaptureEnabled',
|
|
|
|
|
+ FirstArtListData: 'WubianFirstArtListData',
|
|
|
|
|
+ FirstGoodsId: 'WubianFirstGoodsId',
|
|
|
|
|
+ FirstGoodsName: 'WubianFirstGoodsName',
|
|
|
|
|
+ CreateFirstOrderData: 'WubianCreateFirstOrderData',
|
|
|
|
|
+ FirstGrabConcurrentMode: 'WubianFirstGrabConcurrentMode',
|
|
|
|
|
+ FirstGrabRunsPerSecond: 'WubianFirstGrabRunsPerSecond',
|
|
|
|
|
+
|
|
|
|
|
+ ConsignmentCaptureEnabled: 'WubianConsignmentCaptureEnabled',
|
|
|
|
|
+ MyCollectListData: 'WubianMyCollectListData',
|
|
|
|
|
+ ConsignmentArtName: 'WubianConsignmentArtName',
|
|
|
|
|
+ ConsignmentArtId: 'WubianConsignmentArtId',
|
|
|
|
|
+ ConsignmentArtPrice: 'WubianConsignmentArtPrice',
|
|
|
|
|
+ ConsignmentArtAmount: 'WubianConsignmentArtAmount',
|
|
|
|
|
+
|
|
|
|
|
+ CloseSaleArtName: 'WubianCloseSaleArtName',
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+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`;
|
|
|
|
|
+const gHost = `api.wubian.pro`;
|
|
|
|
|
+let gToken = magicJS.data.read(WuBianConstKey.Token, '');
|
|
|
|
|
+const gCommonHeaders = {
|
|
|
|
|
+ 'Accept': `*/*`,
|
|
|
|
|
+ 'Accept-Encoding': `gzip, deflate, br`,
|
|
|
|
|
+ 'Connection': `keep-alive`,
|
|
|
|
|
+ 'Content-Type': `application/json`,
|
|
|
|
|
+ 'Cookie': `token=${gToken}`,
|
|
|
|
|
+ 'Host': gHost,
|
|
|
|
|
+ 'User-Agent': gUserAgent,
|
|
|
|
|
+ 'CLIENT-TYPE': `APP`,
|
|
|
|
|
+ 'token': gToken,
|
|
|
|
|
+ 'Accept-Language': `zh-CN,zh-Hans;q=0.9`
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
|
|
+let gRetBody;
|
|
|
|
|
+
|
|
|
|
|
+async function Main() {
|
|
|
|
|
+ if (magicJS.isStrictRequest) {
|
|
|
|
|
+ magicJS.checkRecordRequestBody();
|
|
|
|
|
+ }
|
|
|
|
|
+ if (magicJS.isRequest) {
|
|
|
|
|
+ checkHandleRequest();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ updateHeaders();
|
|
|
|
|
+ await tryCloseSale();
|
|
|
|
|
+ }
|
|
|
|
|
+ magicJS.notification.msg('');
|
|
|
|
|
+ if (gRetBody) {
|
|
|
|
|
+ magicJS.done({
|
|
|
|
|
+ body: JSON.stringify(gRetBody)
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ magicJS.done();
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+function checkHandleRequest() {
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function updateHeaders() {
|
|
|
|
|
+ gToken = magicJS.data.read(WuBianConstKey.Token, '');
|
|
|
|
|
+ gCommonHeaders['token'] = gToken;
|
|
|
|
|
+ gCommonHeaders['cookie'] = `token=${gToken}`;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function getTenantId() {
|
|
|
|
|
+ let tenantId = magicJS.data.read(WuBianConstKey.TenantId, '238bw8l9n5');
|
|
|
|
|
+ return tenantId;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function getCloseSaleName() {
|
|
|
|
|
+ return magicJS.data.read(WuBianConstKey.CloseSaleArtName, '');
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function tryCloseSale() {
|
|
|
|
|
+ let tenantId = getTenantId();
|
|
|
|
|
+ let name = getCloseSaleName();
|
|
|
|
|
+ let page = 1;
|
|
|
|
|
+ while (page < 100) {
|
|
|
|
|
+ let retCollectList = await queryUserCollectList(tenantId, 1, 2, page);
|
|
|
|
|
+ if (retCollectList && retCollectList.code == 200) {
|
|
|
|
|
+ let collectList = retCollectList.data.list;
|
|
|
|
|
+ for (let i = 0; i < collectList.length; ++i) {
|
|
|
|
|
+ let goodsItem = collectList[i];
|
|
|
|
|
+ magicJS.logger.info(`[${goodsItem.title}#${goodsItem.ver}]¥${goodsItem.price}寄售单状态:${goodsItem.status}`);
|
|
|
|
|
+ // if (goodsItem.status == -1) {//锁定中
|
|
|
|
|
+ // continue;
|
|
|
|
|
+ // }
|
|
|
|
|
+ if (goodsItem.status == -2) {//寄售中
|
|
|
|
|
+ }
|
|
|
|
|
+ if (goodsItem.title.indexOf(name) > -1) {
|
|
|
|
|
+ let retGoodsDetail = await getMarketGoodsInfo(goodsItem.goodsId, 1);
|
|
|
|
|
+ let goodsBaseInfo = retGoodsDetail.data?.info;
|
|
|
|
|
+ let retCancelOpt = await cancelConsignmentOrder(goodsItem.artId, goodsItem.goodsId);
|
|
|
|
|
+ if (retCancelOpt && retCancelOpt.code == 200) {
|
|
|
|
|
+ magicJS.notification.appendNotifyInfo(`[${goodsItem.title}#${goodsItem.ver}]¥${goodsItem.price}寄售单取消成功!`);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ magicJS.notification.appendNotifyInfo(`[${goodsItem.title}#${goodsItem.ver}]¥${goodsItem.price}寄售单取消失败,原因:${retCancelOpt?.msg}!`);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (retCollectList.data.next == 1) {
|
|
|
|
|
+ page++;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param {*} type
|
|
|
|
|
+ * @param {*} state 1=收藏中 2=转让中 3=已转让
|
|
|
|
|
+ * @param {*} page
|
|
|
|
|
+ * @returns
|
|
|
|
|
+ */
|
|
|
|
|
+async function queryUserCollectList(tenantId, type, state, page) {
|
|
|
|
|
+ const url = `https://api.wubian.pro/vmf/app/user/collect/list`;
|
|
|
|
|
+ const reqData = {
|
|
|
|
|
+ type: type,
|
|
|
|
|
+ state: state,
|
|
|
|
|
+ page: page,
|
|
|
|
|
+ tenantId: tenantId,
|
|
|
|
|
+ };
|
|
|
|
|
+ let options = {
|
|
|
|
|
+ url: url,
|
|
|
|
|
+ headers: gCommonHeaders,
|
|
|
|
|
+ body: JSON.stringify(reqData),
|
|
|
|
|
+ };
|
|
|
|
|
+ let result = await magicJS.http.post(options).then(response => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ let rspData = response.body;
|
|
|
|
|
+ // magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
|
|
|
|
|
+ return rspData;
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ magicJS.logger.error(e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(err => {
|
|
|
|
|
+ const msg = `获取个人拥有的产品列表数据异常\n${JSON.stringify(err)}`;
|
|
|
|
|
+ magicJS.logger.error(msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ return result;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+async function getMarketGoodsInfo(goodsId, type) {
|
|
|
|
|
+ const url = `https://api.wubian.pro/vmf/app/market/goodsInfo`;
|
|
|
|
|
+ const reqData = {
|
|
|
|
|
+ goodsId: goodsId,
|
|
|
|
|
+ type: String(type),
|
|
|
|
|
+ };
|
|
|
|
|
+ let options = {
|
|
|
|
|
+ url: url,
|
|
|
|
|
+ headers: gCommonHeaders,
|
|
|
|
|
+ body: JSON.stringify(reqData),
|
|
|
|
|
+ };
|
|
|
|
|
+ let result = await magicJS.http.post(options).then(response => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ let rspData = response.body;
|
|
|
|
|
+ // magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
|
|
|
|
|
+ return rspData;
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ magicJS.logger.error(e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(err => {
|
|
|
|
|
+ const msg = `请求产品信息异常\n${JSON.stringify(err)}`;
|
|
|
|
|
+ magicJS.logger.error(msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ return result;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function cancelConsignmentOrder(artHashId, goodsHashId) {
|
|
|
|
|
+ const url = `https://api.wubian.pro/vmf/app/order/cancelConsignmentOrder`;
|
|
|
|
|
+ const reqData = {
|
|
|
|
|
+ artHashId: artHashId,
|
|
|
|
|
+ goodsHashId: goodsHashId,
|
|
|
|
|
+ };
|
|
|
|
|
+ let options = {
|
|
|
|
|
+ url: url,
|
|
|
|
|
+ headers: gCommonHeaders,
|
|
|
|
|
+ body: JSON.stringify(reqData),
|
|
|
|
|
+ };
|
|
|
|
|
+ let result = await magicJS.http.post(options).then(response => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ let rspData = response.body;
|
|
|
|
|
+ magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
|
|
|
|
|
+ return rspData;
|
|
|
|
|
+ } catch (e) {
|
|
|
|
|
+ magicJS.logger.error(e);
|
|
|
|
|
+ }
|
|
|
|
|
+ }).catch(err => {
|
|
|
|
|
+ const msg = `请求取消寄售异常\n${JSON.stringify(err)}`;
|
|
|
|
|
+ magicJS.logger.error(msg);
|
|
|
|
|
+ });
|
|
|
|
|
+ return result;
|
|
|
|
|
+}
|