| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- // 商城服务 - 对应 supermart-mini/service/mall.js
- import { get, post, postL } from './http';
- const apis = {
- CATEGORY: '/api/spu/basic/listCategoryLimit',
- LIST: '/api/mallGoods',
- DETAIL: '/api/mallGoods/detail',
- DETAIL_BY_SPU: '/api/mallGoods/detailBySpuId',
- PREVIEW_SUBMIT: '/api/mallOrder/preSubmit',
- ORDERS: '/api/mallOrder/pageMy',
- ORDER_DETAIL: '/api/mallOrder/detail',
- APPLY: '/api/mallOrder/submit',
- ORDER_PAY: '/api/mallOrder/pay',
- RECEIVE: '/api/mallOrder/receive',
- PACKAGES: '/api/deliveryOrder/expressInfo',
- EXPRESS: '/api/deliveryOrder/expressDetail',
- UPDATE_PHONE: '/api/mallOrder/updateRestNotifyMobile',
- SPIKE_LIST: '/api/activity/mallSubject/subjectGoodsPage',
- SPIKE_TIMER: '/api/activity/mallSubject/subject',
- };
- export interface GoodsItem {
- id: string;
- name: string;
- price: number;
- cover: string;
- sellType?: number;
- worksId?: string;
- categoryId?: string;
- }
- export interface GoodsListParams {
- current: number;
- size: number;
- keyword?: string;
- worksId?: string;
- categoryId?: string;
- sellType?: string;
- }
- export interface GoodsDetail {
- id: string;
- name: string;
- price: number;
- cover: string;
- sellType?: number;
- sellFlag?: number;
- sellTime?: string;
- deposit?: number;
- subjectPrice?: number;
- spu: {
- id: string;
- name: string;
- cover: string;
- images?: string[];
- description?: string;
- };
- recommendedLuckPool?: any[];
- recommendedMallGoods?: GoodsItem[];
- }
- export interface PreviewSubmitParams {
- goodsId: string;
- quantity: number;
- subjectId?: string;
- }
- export interface PreviewSubmitResult {
- paymentAmount: number;
- depositAmount?: number;
- expressAmount?: number;
- couponAmount?: number;
- type?: number;
- cash?: {
- balance: number;
- };
- }
- export interface OrderSubmitParams {
- goodsId: string;
- paymentType: string;
- addressBookId: string;
- quantity: number;
- restNotifyMobile?: string;
- subjectId?: string;
- }
- export interface OrderItem {
- tradeNo: string;
- status: number;
- statusText: string;
- goodsName: string;
- goodsCover: string;
- quantity: number;
- paymentAmount: number;
- createTime: string;
- type?: number;
- paidAmount?: number;
- totalAmount?: number;
- couponAmount?: number;
- paymentTimeoutTime?: string;
- }
- export interface OrderDetail extends OrderItem {
- address?: {
- contactName: string;
- contactNo: string;
- province: string;
- city: string;
- district: string;
- address: string;
- };
- }
- // 获取商品分类
- export const getCategories = async (limit = 5) => {
- const res = await get(apis.CATEGORY, { limit });
- return res.data;
- };
- // 获取商品列表
- export const getGoodsList = async (params: GoodsListParams) => {
- const res = await post<GoodsItem[]>(apis.LIST, params);
- return res.data || [];
- };
- // 获取商品详情
- export const getGoodsDetail = async (goodsId: string, subjectId?: string): Promise<GoodsDetail | null> => {
- const params: any = { goodsId };
- if (subjectId) params.subjectId = subjectId;
- const res = await get<GoodsDetail>(apis.DETAIL, params);
- return res.data;
- };
- // 通过 SPU ID 获取商品详情
- export const getGoodsDetailBySpu = async (spuId: string): Promise<GoodsDetail | null> => {
- const res = await get<GoodsDetail>(apis.DETAIL_BY_SPU, { goodsId: '', spuId });
- return res.data;
- };
- // 预提交订单(获取价格信息)
- export const previewSubmit = async (params: PreviewSubmitParams): Promise<PreviewSubmitResult | null> => {
- const res = await postL<PreviewSubmitResult>(apis.PREVIEW_SUBMIT, params);
- return res.data;
- };
- // 提交订单
- export const submitOrder = async (params: OrderSubmitParams) => {
- const res = await postL(apis.APPLY, params);
- return res.data;
- };
- // 获取订单列表
- export const getOrders = async (current: number, size: number, tab?: string) => {
- const res = await post<{ records: OrderItem[]; total: number }>(apis.ORDERS, { current, size, tab });
- return res.data;
- };
- // 获取订单详情
- export const getOrderDetail = async (tradeNo: string): Promise<OrderDetail | null> => {
- const res = await get<OrderDetail>(apis.ORDER_DETAIL, { tradeNo });
- return res.data;
- };
- // 订单支付
- export const payOrder = async (tradeNo: string, paymentType: string) => {
- const res = await postL(apis.ORDER_PAY, { tradeNo, paymentType });
- return res.data;
- };
- // 确认收货
- export const confirmReceive = async (tradeNo: string) => {
- const res = await postL(apis.RECEIVE, { tradeNo });
- return res.success;
- };
- // 获取包裹信息
- export const getPackages = async (tradeNo: string) => {
- const res = await get(apis.PACKAGES, { tradeNo });
- return res.data;
- };
- // 获取物流详情
- export const getExpress = async (tradeNo: string, packageId: string) => {
- const res = await get(apis.EXPRESS, { tradeNo, packageId });
- return res.data;
- };
- // 更新尾款提醒手机号
- export const updatePhone = async (params: { tradeNo: string; restNotifyMobile: string }) => {
- const res = await postL(apis.UPDATE_PHONE, params);
- return res;
- };
- // 获取秒杀商品列表
- export const getSpikeList = async (params: any) => {
- const res = await postL(apis.SPIKE_LIST, params);
- return res.data;
- };
- // 获取秒杀活动信息
- export const getSpikeTimer = async (subjectId: string) => {
- const res = await get(`${apis.SPIKE_TIMER}/${subjectId}`);
- return res.data;
- };
- export default {
- getCategories,
- getGoodsList,
- getGoodsDetail,
- getGoodsDetailBySpu,
- previewSubmit,
- submitOrder,
- getOrders,
- getOrderDetail,
- payOrder,
- confirmReceive,
- getPackages,
- getExpress,
- updatePhone,
- getSpikeList,
- getSpikeTimer,
- };
|