You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

207 lines
7.4 KiB

import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:huixiang/retrofit/data/day_count.dart';
import 'package:huixiang/retrofit/data/order_trend.dart';
import 'package:huixiang/retrofit/data/vip_counts_info.dart';
import 'package:retrofit/retrofit.dart';
import 'data/base_data.dart';
import 'data/business_goods.dart';
import 'data/business_order_detail_info.dart';
import 'data/business_order_list.dart';
import 'data/day_flow_list.dart';
import 'data/goods_type_sales_list.dart';
import 'data/popular_sales_list.dart';
import 'data/product_group_list.dart';
import 'data/refund_reason_list.dart';
import 'data/single_sales_list.dart';
import 'data/trade_summary_list.dart';
part 'business_api.g.dart';
///本地
const localBaseUrl = "http://admin-api.test.yixinhuixiang.com/";
///测试
// const localBaseUrl = "http://test-merchant.lotus-wallet.com/test-merchant/";
///线上
const serviceBaseUrl = "http://pos.tenant.lotus-wallet.com/test-merchant/";
@RestApi(baseUrl: localBaseUrl)
abstract class BusinessApiService {
factory BusinessApiService(
Dio dio, {
String baseUrl,
BuildContext context,
String token,
bool showLoading = false,
String url,
String tenant,
String storeId,
bool showErrorToast = true,
}) {
Map<String, dynamic> headers =
(token == null || token == "") ? {} : {'token': "Bearer $token"};
if (tenant != null && tenant != "") {
headers["tenant"] = tenant;
}
if (storeId != null && storeId != "") {
headers["store-id"] = storeId;
}
if (kReleaseMode) baseUrl = serviceBaseUrl;
if (url != null) baseUrl = url;
dio.options = BaseOptions(
connectTimeout: 60000,
receiveTimeout: 60000,
headers: headers,
responseType: ResponseType.json,
baseUrl: baseUrl,
);
dio.interceptors.add(
InterceptorsWrapper(onRequest: (RequestOptions options) {
debugPrint("\n======================= 请求数据 =======================");
debugPrint("method = ${options.method.toString()}");
debugPrint("url = ${options.uri.toString()}");
debugPrint("headers = ${options.headers}");
if (showLoading && !EasyLoading.isShow) {
//是否显示loading
EasyLoading.show(status: "正在加载...");
}
if (options.data is FormData) {
debugPrint("params data = FormData");
} else {
debugPrint("params data = ${jsonEncode(options.data)}");
}
debugPrint("params queryParameters = ${options.queryParameters}");
}, onResponse: (Response response) {
if (showLoading && EasyLoading.isShow) EasyLoading.dismiss();
debugPrint("\n======================= 响应数据开始 =======================");
debugPrint("code = ${response.statusCode}");
p(jsonEncode(response.data));
// debugPrint(jsonEncode(response.data), wrapWidth: response.data.toString().length * 10);
Map map = response.data;
// if (map["code"] != 0) {
// EasyLoading.dismiss();
// }
// if (map["code"] == 40005 || map["code"] == 40001) {
// if (!LoginTipsDialog().isShow) {
// print("show: ${LoginTipsDialog().isShow}");
// LoginTipsDialog().show(context);
// }
// }
if (showErrorToast &&
map["code"] == 404 &&
(map["msg"] ?? map["message"]) != null) {
SmartDialog.showToast(map["msg"] ?? map["message"],
alignment: Alignment.center);
}
debugPrint("======================= 响应数据结束 =======================\n");
}, onError: (DioError e) {
if (EasyLoading.isShow) EasyLoading.dismiss();
// SmartDialog.showToast("网络错误,请切换网络或稍后再试!", alignment: Alignment.center);
// SmartDialog.showToast(AppUtils.dioErrorTypeToString(e.type),
// alignment: Alignment.center);
debugPrint("\n======================= 错误响应数据 =======================");
debugPrint("type = ${e.type}");
debugPrint("message = ${e.message}");
debugPrint("\n");
}),
);
return _BusinessApiService(dio, baseUrl: baseUrl);
}
void dispose();
static void p(String msg) {
//因为String的length是字符数量不是字节数量所以为了防止中文字符过多,
// 把4*1024的MAX字节打印长度改为1000字符数
int maxStrLength = 900;
//大于1000时
while (msg.length > maxStrLength) {
debugPrint(msg.substring(0, maxStrLength), wrapWidth: maxStrLength);
msg = msg.substring(maxStrLength);
}
//剩余部分
debugPrint(msg, wrapWidth: maxStrLength);
}
/// 获取认证token/管理系统登录
@POST("anno/token")
Future<BaseData> annoToken(@Body() Map<String, dynamic> param);
/// 当日各种金额统计
@POST("comprehensiveReport/getDayCounts")
Future<BaseData<DayCount>> getDayCounts(@Body() Map<String, dynamic> param);
///商家概览/热销榜单,当天传0,昨天传1,最近7天传7,最近30天传30
@GET("dashBoard/store/?offsetDay={offsetDay}")
Future<BaseData<PopularSalesList>> popularList(
@Path("offsetDay") String offsetDay);
///生意总览/订单量趋势
@GET("trend/orderTrend")
Future<BaseData<List<OrderTrend>>> orderTrend();
///会员数量统计/用户概览
@GET("largeScreenReport/getDayCounts?date={date}")
Future<BaseData<VipCountsInfo>> vipCounts(@Path("date") String date);
///今日流水/isMonth=0(当月数据),isMonth=1(当日数据)
@GET("dashBoard/order?yearMonth={yearMonth}&isMonth={isMonth}")
Future<BaseData<List<DayFlowList>>> dayFlow(
@Path("yearMonth") String yearMonth, @Path("isMonth") String isMonth);
///每日单品销量/单品销量报表
@POST("audit/salesLeaderboard")
Future<BaseData<List<SingleSalesList>>> singleSales(
@Body() Map<String, dynamic> param);
///各类商品销售状况统计/商品种类销售数据
@POST("audit/allKindsSalesStatistics")
Future<BaseData<List<GoodsTypeSalesList>>> goodsSalesList(
@Body() Map<String, dynamic> param);
///经营分析/查询范围 day week month custom
@POST("largeScreenReport/saleBusinessAnalysis")
Future<BaseData<TradeSummaryList>> saleBusinessAnalysis(
@Body() Map<String, dynamic> param);
///订单列表
@POST("order/findAdminOrderList")
Future<BaseData<BusinessOrderList>> findAdminOrderList(
@Body() Map<String, dynamic> param);
///订单详情
@POST("order/getAdminOrderDetail")
Future<BaseData<BusinessOrderDetailInfo>> getAdminOrderDetail(
@Body() Map<String, dynamic> param);
///退款原因列表
@POST("reason/page")
Future<BaseData<RefundReasonList>> refundReason(
@Body() Map<String, dynamic> param);
///申请退款
@POST("order/refundOrder")
Future<BaseData> refundOrder(@Body() Map<String, dynamic> param);
///商品分页列表查询/商品分组列表
@POST("productGroup/page")
Future<BaseData<ProductGroupList>> productGroup(
@Body() Map<String, dynamic> param);
///后台查询商品列表/商品列表
@POST("product/findAdminProductListNew")
Future<BaseData<BusinessGoods>> findAdminProductLis(
@Body() Map<String, dynamic> param);
}