import request from "@/plugin/axios"; import { tokenKey, goodsStore } from "@/assets/js/config"; import toolClass from "@/assets/js/toolClass"; import { handleQueryResourceListData, handleDetailQueryRequestData } from "../tool"; const storeApi = { /* **获取商品列表** path: 数据路径 storeInfo: 仓储 channelInfo: 频道 subAccess: queryType: 检索类型 paging: 分页 sort: 排序 fields: 自定义字段 */ getProductList: ({ path = "", storeInfo = goodsStore, storeEventIdOrRefCode = "", queryType, linkType, subAccess = [], paging = {}, sort, fields, filterList, coverSize, mainProductId, handelEBooK }) => { const query = { AccessControl: { Path: path, StoreRefCode: storeInfo + "", Type: queryType || "\\", LinkType: linkType || "" }, SubAccess: subAccess.length > 0 ? subAccess : [], PageQuery: { Start: paging.start || "0", Size: paging.size || "10" }, SortQuery: sort?.length == 0 ? [] : sort ? [sort] : [ { LinkOrder: "Desc" } ], CreateDate: [], Description: [], Name: [], Icon: [], RefCode: [], TypeId: [], SysType: [], State: [], Tag: [], BeginDate: [], EndDate: [], ProductLinkInfo: [], AllowDonate: [], // DonatePriceList: [], StoreEvent: [], SubProductCount: [], SaleMethod: [], SaleMethodValid: [], StoreEventIdOrRefCode: storeEventIdOrRefCode, ...fields, ...filterList }; if (mainProductId) { query.AccessControl.MainProductId = mainProductId; } if (handelEBooK) { query.ProductCmsQuery = [ { QueryCms: { Path: "*", Type: "\\", Name: [], Icon: [], TypeId: [], RefCode: [], ChildrenCount: [], ChildrenFolderCount: [], CreateDate: [], SysType: [], SaleMethod: [], PageQuery: { Start: 0, Size: 9999, }, ProductLinkInfo: [], }, }, ]; } const body = { query: JSON.stringify({ Query: [ { Q1: query } ] }) }; let token = toolClass.getCookie(tokenKey); let url = token ? "/store/api/ApiQueryProductByAppUser" : "/store/api/ApiQueryProduct"; return request({ url: url, method: "post", data: body }).then(resp => { if (resp.length > 0) { const data = resp[0]; const datas = handleQueryResourceListData({ datas: data.datas, fields, path, storeInfo, coverSize, handelEBooK, }); return { datas, total: data.totalCount, extraInfos: data.extraInfos?.StoreEvent }; } return { datas: [], total: 0 }; }); }, /* **获取商品详情** path: 数据路径 storeInfo: 仓储 channelInfo: 频道 subAccess: fields: 自定义字段 productId: 商品ID cmsPath:cmsPath */ getProductDetail: ({ path = "", storeInfo = goodsStore, channelInfo = "", queryType, subAccess = [], fields, productId, cmsPath, coverSize, itemId, itemFields, linkTypes, filterList, handelEBooK, }) => { const subQuery = {}; if (cmsPath) { subQuery.QueryCms = { Path: cmsPath + "", Type: "\\", Name: [], Icon: [], TypeId: [], RefCode: [], ChildrenCount: [], ChildrenFolderCount: [], CreateDate: [], SysType: [], SaleMethod: [], PageQuery: { Start: 0, Size: 100 }, ProductLinkInfo: [], ...itemFields }; if (itemId) subQuery.QueryCms["Id="] = [`${itemId}`]; } else { subQuery.QueryCms= { Path: "*", Type: "\\", Name: [], Icon: [], TypeId: [], RefCode: [], ChildrenCount: [], ChildrenFolderCount: [], CreateDate: [], SysType: [], SaleMethod: [], PageQuery: { Start: 0, Size: 9999, }, ProductLinkInfo: [], }; } // 获取关联资源 let linkFields = {}; if (linkTypes && linkTypes.length) { for (let i = 0; i < linkTypes.length; i++) { const linkType = linkTypes[i]; subQuery["QueryLink_" + linkType.linkType] = { Path: cmsPath + "", Type: "\\", Name: [], Icon: [], TypeId: [], RefCode: [], LinkTypes: [linkType.linkType], PageQuery: { Start: 0, Size: 100 }, ProductLinkInfo: [], ...linkType.fields }; linkFields = { ...linkFields, ...linkType.fields }; } } const query = { AccessControl: { Path: path, StoreRefCode: storeInfo + "", ChannelRefCode: channelInfo + "", Type: queryType || "\\" }, SubAccess: subAccess.length > 0 ? subAccess : [], PageQuery: { Start: "0", Size: "1" }, "Id=": [`${productId}`], SortQuery: [], CreateDate: [], Description: [], Name: [], Icon: [], RefCode: [], TypeId: [], SysType: [], State: [], Tag: [], BeginDate: [], EndDate: [], ProductLinkInfo: [], AllowDonate: [], DonatePriceList: [], StoreEvent: [], SaleMethod: [], SaleMethodValid: [], ProductCmsQuery: [subQuery], ...fields, ...filterList }; if (productId) query["Id="] = [`${productId}`]; const body = { query: JSON.stringify({ Query: [ { Q1: query } ] }) }; let token = toolClass.getCookie(tokenKey); let url = token ? "/store/api/ApiQueryProductByAppUser" : "/store/api/ApiQueryProduct"; return request({ url: url, method: "post", data: body }).then(resp => { if (resp.length > 0) { const data = resp[0]; if (data.datas.length) { data.datas[0].subDatas = data.datas[0].cmsDatas; const datas = handleDetailQueryRequestData({ item: data.datas[0], fields, itemFields: { ...itemFields, ...linkFields }, path, coverSize, handelEBooK }); return { datas, total: data.totalCount }; } else { return { datas: [], total: 0 }; } } return { datas: [], total: 0 }; }); }, // 获取优惠券列表 getChannelPromoteCodeList(data) { return request({ url: "/store/api/ApiGetChannelPromoteCodeList", method: "post", data }); }, // 获取用户已领取的优惠券列表 getPromoteCodeList(data) { return request({ url: "/store/api/ApiGetPromoteCodeList", method: "post", data }); }, // 获取用户浏览排行 getProductViewRank(data) { return request({ url: "/store/api/ApiGetProductViewRank", method: "post", data }); }, // 获取用户销售排行 getProductSaleRank(data) { return request({ url: "/store/api/ApiGetProductSaleRank", method: "post", data }); }, // 获取商品可用优惠券 getProductPromoteCodeList(data) { return request({ url: "/store/api/ApiGetProductPromoteCodeList", method: "post", data }); }, // 获取订单可用优惠券 getOrderPromoteCodeList(data) { return request({ url: "/store/api/GetOrderPromoteCodeList", method: "post", data }); }, // 获取销售方式可用优惠券 getSaleMethodPromoteCodeList(data) { return request({ url: "/store/api/GetSaleMethodPromoteCodeList", method: "post", data }); }, // 领取优惠卷 getPromoteCode(data) { return request({ url: "/store/api/ApiGetPromoteCode", method: "post", data }); }, // 为订单使用优惠券 updateOrderPromoteCode(data) { return request({ url: "/store/api/UpdateOrderPromoteCode", method: "post", data }); }, // 为销售方式使用优惠券 updateSaleMethodPromoteCode(data) { return request({ url: "/store/api/UpdateSaleMethodPromoteCode", method: "post", data }); }, // 通过订单号获取订单 getOrderByOrderNum(data) { return request({ url: "/store/api/GetOrderByOrderNum", method: "post", data }); }, // 创建订单 initOrder(data) { return request({ url: "/store/api/InitOrder", method: "post", data }); }, // 确认订单 confirmOrder(data) { return request({ url: "/store/api/ConfirmOrder", method: "post", data }); }, // 取消订单 cancelOrder(data) { return request({ url: "/store/api/CancelOrder", method: "post", data }); }, // 赞赏 CreateDonateOrder(data) { return request({ url: "/store/api/CreateDonateOrder", method: "post", data }); }, //获取用户订单列表 getUserOrderList(data) { return request({ url: "/store/api/GetUserOrderList", method: "post", data }); }, //获取频道下的列表 getStoreChannelList(data) { return request({ url: "/store/api/ApiGetStoreChannelList", method: "post", data }); }, //获取购物车 getShoppingCartProductList(data) { return request({ url: "/store/api/ApiGetShoppingCartProductList", method: "post", data }); }, //添加到购物车 addShoppingCart(data) { return request({ url: "/store/api/ApiAddShoppingCart", method: "post", data }); }, //购物车删除商品 delShoppingCart(data) { return request({ url: "/store/api/ApiDelShoppingCart", method: "post", data }); }, //从购物车创建订单 shoppingCartCreateOrder(data) { return request({ url: "/store/api/ApiShoppingCartCreateOrder", method: "post", data }); }, //获取已购买的商品列表 getPurchasedProductList(data) { return request({ url: "/store/api/ApiGetPurchasedProductList", method: "post", data }); }, //调取微信支付 makeWeChatPay(data) { return request({ url: "/store/api/MakeWeChatPay", method: "post", data }); }, //调取微信二维码支付 makeWeChatQrPay(data) { return request({ url: "/store/api/MakeWeChatQrPay", method: "post", data }); }, // 获取激活码详情 getActiveCode(data) { return request({ url: "/store/api/ApiGetActiveCode", method: "post", data }); }, // 使用激活码 userActiveCode(data) { return request({ url: "/store/api/ApiUseActiveCode", method: "post", data }); }, // 商品查询类型字段接口 getProductTypeField(data) { return request({ url: "/store/api/ApiGetProductTypeField", method: "post", data }); }, // 收藏或加入书架 addProductLink(data) { return request({ url: "/store/api/ApiAddProductLink", method: "post", data }); }, // 取消收藏或移除书架 delProductLink(data) { return request({ url: "/store/api/ApiDelProductLink", method: "post", data }); }, //购买免费商品 MakeFreeOrderPay(data) { return request({ url: "/store/api/MakeFreeOrderPay", method: "post", data }); }, //查询商品所在store getProductStore(data) { return request({ url: "/store/api/ApiGetProductStore", method: "post", data }); } }; export default storeApi;