import 'dart:convert'; import 'dart:io'; import 'package:dio/dio.dart'; // import 'package:dio_log/interceptor/dio_log_interceptor.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 '../login/captcha/click_word_captcha.dart'; import 'data/add_vip_info.dart'; import 'data/balance_change_list.dart'; import 'data/balance_consumption_ranking_list.dart'; import 'data/base_data.dart'; import 'data/bus_recharge_list.dart'; import 'data/business_goods.dart'; import 'data/business_order_detail_info.dart'; import 'data/business_order_list.dart'; import 'data/business_store_list.dart'; import 'data/business_vip_list.dart'; import 'data/clerk_manage_list.dart'; import 'data/day_flow_list.dart'; import 'data/goods_category_list.dart'; import 'data/goods_type_sales_list.dart'; import 'data/order_user_detail.dart'; import 'data/phone_query_member_info.dart'; import 'data/popular_sales_list.dart'; import 'data/product_group_list.dart'; import 'data/recharge_flow_list.dart'; import 'data/refund_reason_list.dart'; import 'data/service_bug_list.dart'; import 'data/single_sales_list.dart'; import 'data/store_time_info_list.dart'; import 'data/store_total_money_info.dart'; import 'data/tenant_info.dart'; import 'data/tenant_package_calculate_details.dart'; import 'data/tenant_package_list.dart'; import 'data/ticket_details.dart'; import 'data/ticket_record.dart'; import 'data/ticket_show.dart'; import 'data/ticket_stats_list.dart'; import 'data/trade_summary_list.dart'; import 'data/upload_result.dart'; import 'data/user_info_edit.dart'; import 'data/vip_record_details_list.dart'; part 'business_api.g.dart'; ///本地 const localBaseUrl = "http://admin-api.test.yixinhuixiang.com/"; ///测试 // const localBaseUrl = "http://pos-test.admin.api.lotus-wallet.com/"; ///线上 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, bool pay = false, }) { Map headers = (token == null || token == "") ? {} : {'token': "Bearer $token"}; if (pay == true) { headers["Environment"] = "app"; } 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: 30000, receiveTimeout: 30000, headers: headers, responseType: ResponseType.json, baseUrl: baseUrl, ); // dio.interceptors.add(DioLogInterceptor()); 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 annoToken(@Body() Map param); ///加载验证码 @POST("/captcha/get") Future captchaGet(@Body() Map param); ///校验验证码 @POST("/captcha/check") Future captchaCheck(@Body() Map param); ///发送验证码 @POST("auth/sendVerify") Future> busSendVerify(@Body() Map param); ///注册 @POST("auth/tenantAppLogin") Future tenantAppLogin(@Body() Map param); ///找回密码 @POST("auth/tenantUserChangePsd") Future tenantUserChangePsd(@Body() Map param); /// 当日各种金额统计 @POST("comprehensiveReport/getDayCounts") Future> getDayCounts(@Body() Map param); ///商家概览/热销榜单,当天传0,昨天传1,最近7天传7,最近30天传30 @GET("dashBoard/store/?offsetDay={offsetDay}") Future> popularList( @Path("offsetDay") String offsetDay); ///生意总览/订单量趋势 @GET("trend/orderTrend") Future>> orderTrend(); ///会员数量统计/用户概览 @GET("largeScreenReport/getDayCounts?date={date}") Future> vipCounts(@Path("date") String date); ///今日流水/isMonth=0(当月数据),isMonth=1(当日数据) @GET("dashBoard/order?yearMonth={yearMonth}&isMonth={isMonth}") Future>> dayFlow( @Path("yearMonth") String yearMonth, @Path("isMonth") String isMonth); ///每日单品销量/单品销量报表 @POST("audit/salesLeaderboard") Future>> singleSales( @Body() Map param); ///各类商品销售状况统计/商品种类销售数据 @POST("audit/allKindsSalesStatistics") Future>> goodsSalesList( @Body() Map param); ///经营分析/查询范围 day week month custom @POST("largeScreenReport/saleBusinessAnalysis") Future> saleBusinessAnalysis( @Body() Map param); ///订单列表 @POST("order/findAdminOrderList") Future> findAdminOrderList( @Body() Map param); ///订单详情 @POST("order/getAdminOrderDetail") Future> getAdminOrderDetail( @Body() Map param); ///退款原因列表 @POST("reason/page") Future> refundReason( @Body() Map param); ///申请退款 @POST("order/refundOrder") Future refundOrder(@Body() Map param); ///商品分页列表查询/商品分组列表 @POST("productGroup/page") Future> productGroup( @Body() Map param); ///后台查询商品列表/商品列表 @POST("product/findAdminProductListNew") Future> findAdminProductLis( @Body() Map param); ///修改密码 @PUT("user") Future modifyPassword(@Body() Map param); ///商品上下架 @POST("product/putStatus") Future goodsUpdate(@Body() Map param); ///商品删除 @POST("product/delProduct") Future delProduct(@Body() Map param); ///新增或修改商品分组/商品分类-新增分类/编辑分类 @POST("productGroup/saveProductGroup") Future saveProductGroup(@Body() Map param); ///删除分组分类 @POST("productGroup/delProductCategory") Future delProductCategory(@Body() Map param); ///门店设置-列表 @GET( "store/getStoreList?tenantCode={tenantCode}&pageIndex={pageIndex}&pageSize={pageSize}") Future> getStoreList( @Path("tenantCode") String tenantCode, @Path("pageIndex") String pageIndex, @Path("pageSize") String pageSize); ///编辑门店信息 @PUT("store") Future saveStoreInfo(@Body() Map param); ///文件上传 @POST("file/upload") @MultiPart() Future> upload( @Part(name: "file") File data, @Part(name: "folderId") int folderId); ///批量核销 @POST("ticket/wipedBatchs") Future wipedBatchs(@Body() String param); ///商品排序/一键置顶 @POST("product/productSortTop") Future productSortTop(@Body() Map param); ///票券详情 @GET("ticket/code/{code}") Future> ticketCode(@Path("code") String code); ///票券列表 @POST("ticket/showList") Future> showList(@Body() Map param); ///票券核销记录 @POST("ticket/wipedRecord") Future> wipedRecord( @Body() Map param); ///票券核销统计 @POST("ticket/wipedStats") Future>> wipedStats( @Body() Map param); ///会员列表 @POST("member/page") Future> vipDataList( @Body() Map param); ///会员充值流水 @POST("audit/memberSourceRechargeDetial") Future> rechargeFlow( @Body() Map param); ///会员余额变动 @POST("member/getTenantMemberBill") Future> getTenantMemberBill( @Body() Map param); ///预约设置/店铺信息开启关闭时间 @GET("store/storeOpenTime/{storeId}") Future> storeOpenTime( @Path("storeId") String storeId); ///预约信息保存 @POST("product/updateSubscribe") Future updateSubscribe(@Body() Map param); ///确认扣款 @POST("order/balancePay") Future balancePay(@Body() Map param); ///订单列表获取用户金额详情 @GET("order/getOrderUserDetail?orderId={orderId}") Future> getOrderUserDetail( @Path("orderId") String storeId); ///根据手机号查询会员信息 @POST("member/queryMemberInfo") Future> queryMemberInfo( @Body() Map param); ///会员充值列表 @POST("rechargePreferential/get") Future> getRechargePreferential( @Body() Map param); ///会员充值支付 @POST("member/posMemberRecharge") Future posMemberRecharge(@Body() Map param); ///充值订单手动查询 @POST("member/manualQuery") Future manualQuery(@Body() Map param); ///新增会员 @GET("member/createMemberSourceByMobile?mobile={mobile}&nickName={nickName}") Future> createMemberSourceByMobile( @Path("mobile") String mobile, @Path("nickName") String nickName); ///店员列表 @POST("user/userPage") Future> clerkList( @Body() Map param); ///添加新店员,店员信息编辑 @POST("user") Future> userEdit(@Body() Map param); ///删除会员 @DELETE("user?ids[]={ids}") Future delUser(@Path("ids") String ids); ///修改用户信息 @PUT("user") Future> userModify(@Body() Map param); ///会员余额统计/消费排名 @POST("dashBoard/storeMoney") Future> storeMoney( @Body() Map param); ///会员余额统计(总会员数,总余额数)查询/消费排名(消费会员数量,销售金额)查询 @POST("dashBoard/storeTotalMoney") Future> storeTotalMoney( @Body() Map param); ///收银台创建直付订单 @POST("order/createOrder") Future createOrder(@Body() Map param); ///收银台支付 @POST("order/prePayOrder") Future prePayOrder(@Body() Map param); ///收银台直付订单手动查询 @GET("order/queryOrder/{orderId}?login={login}") Future queryCashierOrder( @Path("orderId") String orderId, @Path("login") bool login); ///会员详情-查询会员消费/充值记录 @POST("member/getMemberSourceBillDetials") Future> getMemberSourceBillDetails( @Body() Map param); ///新建商品 @POST("product/save") Future productSave(@Body() Map param); ///分类查询 @GET("productCategory/findCategoryListByDepth/1") Future>> findCategoryListByDepth(); ///服务套餐列表 @GET("tenantApply/tenantPackageList") Future>> tenantPackage(); ///服务套餐包优惠计算 @POST("tenantApply/tenantPackageCalculate") Future> tenantPackageCalculate( @Body() Map param); ///服务套餐支付 @POST("tenantApply/tenantApplyPay") Future tenantApplyPay(@Body() Map param); ///查询商户信息 @GET("tenant/tenantInfo/{tenantId}") Future> tenantInfo(@Path("tenantId") String tenantId); ///服务购买记录 @POST("tenantPackage/packageBuyList") Future> packageBuyList(@Body() Map param); }