import 'dart:convert'; import 'dart:io'; 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/generated/l10n.dart'; import 'package:huixiang/retrofit/data/activity.dart'; import 'package:huixiang/retrofit/data/article.dart'; import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/comunity_comment.dart'; import 'package:huixiang/retrofit/data/coupon.dart'; import 'package:huixiang/retrofit/data/login_info.dart'; import 'package:huixiang/retrofit/data/order_info.dart'; import 'package:huixiang/view_widget/login_tips_dialog.dart'; import 'package:retrofit/retrofit.dart'; import 'data/achievement_detail_list.dart'; import 'data/address.dart'; import 'data/banner.dart'; import 'data/brand_data.dart'; import 'data/category_select_list.dart'; import 'data/chapter.dart'; import 'data/collect_class_list.dart'; import 'data/course_details.dart'; import 'data/course_list.dart'; import 'data/exchange_order.dart'; import 'data/follow_list.dart'; import 'data/goods.dart'; import 'data/goods_category.dart'; import 'data/headlines_list.dart'; import 'data/headlines_list_details.dart'; import 'data/logistics.dart'; import 'data/member_comment_list.dart'; import 'data/message.dart'; import 'data/page.dart'; import 'data/rank.dart'; import 'data/second_card_list.dart'; import 'data/sign_info.dart'; import 'data/social_info.dart'; import 'data/store.dart'; import 'data/upload_result.dart'; import 'data/user_bill.dart'; import 'data/user_info.dart'; import 'data/vip_badges_list.dart'; import 'data/vip_benefit_list.dart'; import 'data/vip_card.dart'; import 'data/vip_rule_details.dart'; import 'data/wx_pay.dart'; part 'retrofit_api.g.dart'; // const base_url = "https://pos.platform.lotus-wallet.com/app/"; ///正式 // const baseUrl = "https://pos.platform.lotus-wallet.com/app/"; ///正式 // const base_url = "http://platform.prod.kunqi.lotus-wallet.com/app/"; ///222 // const baseUrl = "http://platform.prod.kunqi.lotus-wallet.com/app/"; ///222 // const base_url = "http://192.168.10.236:8766/app/"; ///费韬 // const baseUrl = "http://192.168.10.236:8766/app/"; ///费韬 // const base_url = "http://192.168.10.37:8766/app/"; // const baseUrl = "http://192.168.10.37:8766/app/"; const base_url = "http://192.168.10.142:8766/app/";///詹云久 const baseUrl = "http://192.168.10.142:8766/app/";///詹云久 @RestApi(baseUrl: baseUrl) abstract class ApiService { factory ApiService( Dio dio, { String baseUrl, BuildContext context, String token, bool showLoading = true, bool pay = false, }) { Map headers = (token == null || token == "") ? {} : {'token': "Bearer $token"}; if (pay) { headers["Environment"] = "app"; } dio.options = BaseOptions( connectTimeout: 60000, receiveTimeout: 60000, headers: headers, responseType: ResponseType.json, ); 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: S.of(context).zhengzaijiazai); } if (options.data is FormData) { debugPrint("params data = FormData"); } else { debugPrint("params data = ${jsonEncode(options.data)}"); } debugPrint("params queryParameters = ${options.queryParameters}"); }, onResponse: (Response response) { debugPrint("\n======================= 响应数据开始 ======================="); if (showLoading && EasyLoading.isShow) { EasyLoading.dismiss(); } 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); } } else if (map["code"] != 0 && response.request.baseUrl == baseUrl) { ///高德地图的poi服务请求不需要toast SmartDialog.showToast(map["msg"], alignment: Alignment.center); } debugPrint("======================= 响应数据结束 =======================\n"); }, onError: (DioError e) { if (EasyLoading.isShow) { EasyLoading.dismiss(); } debugPrint("\n======================= 错误响应数据 ======================="); debugPrint("type = ${e.type}"); debugPrint("message = ${e.message}"); debugPrint("\n"); }), ); if (kReleaseMode) { baseUrl = base_url; } return _ApiService(dio, baseUrl: baseUrl); } 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); } ///文件上传 @POST("/file/upload") @MultiPart() Future> upload( @Part(name: "file") File data, @Part(name: "folderId") int folderId); /// 周边搜索 @GET( "https://restapi.amap.com/v3/place/around?key=542b46afa8e4b88fe1eb3c4d0ba0872f&location={lat},{lng}&keywords={keywords}&offset={size}&page={page}&extensions=all") Future searchPoi(@Path("lat") String lat, @Path("lng") String lng, @Path("keywords") String keywords, int size, int page); /// 用户登录 @POST("/auth/platform/memberLogin") Future> memberLogin(@Body() Map param); ///发送验证码 @GET("/auth/sendVerify/{mobile}") Future sendVerify(@Path("mobile") String mobile); ///积分商城商品列表 @POST("/creditGoods/list") Future>> creditGoods( @Body() Map param); ///积分商城商品分類列表 @POST("/creditGoodsCategory/page") Future>> goodsCategory( @Body() Map param); ///积分商城商品详情 @GET("/creditGoods/{id}") Future> creditGoodsById(@Path("id") String id); ///查询用户信息 @GET("/member/info") Future> queryInfo(); ///编辑用户信息 @POST("/member/editMemberInfo") Future editInfo(@Body() Map param); ///用户签到信息 @GET("/member/signInInfo") Future> signInInfo(); ///用户签到 @GET("/member/signIn") Future signIn(); ///平台充值 @POST("/wallet/recharge") Future> recharge(@Body() Map param); ///领取优惠券 @GET("/coupon/receive?couponId={couponId}") Future receiveCoupon(@Path("couponId") String couponId); ///兑换订单列表 @POST("/creditOrder/list") Future>> creditOrderList( @Body() Map param); ///创建积分订单 @POST("/creditOrder/create") Future creditOrder(@Body() Map param); ///保存收货地址 @POST("/address/add") Future addAddress(@Body() Map param); ///删除收货地址 @POST("/address/delete") Future deleteAddress(@Body() Map param); ///查询收货地址 @GET("/address/detail/{id}") Future queryAddress(@Path("id") String id); ///查询用户所有的收货地址 @GET("/address/queryMemberAddress") Future>> queryMemberAddress(); ///更新收货地址 @POST("/address/update") Future updateAddress(@Body() Map param); ///查询领券列表 @POST("/coupon/centreList") Future>> queryCoupon( @Body() Map param); ///查询卡包列表 @POST("/coupon/packageList") Future>> queryCard( @Body() Map param); ///门店地址列表 @POST("/store/list") Future>> queryStore(@Body() Map param); ///分页查看资讯列表 @POST("/information/list") Future>> informationList( @Body() Map param); ///查看资讯详情 @GET("/information/{id}") Future> informationInfo(@Path("id") String id); ///查看活动详情 @GET("/information/{id}") Future> activityInfo(@Path("id") String id); ///积分订单兑换到券包 @GET("/creditOrder/receive/{id}") Future creditOrderReceive(@Path("id") String id); ///首页数据 @GET("/home/home") Future> queryHome(); ///查询店铺商家详情 @GET("/store/{id}") Future queryStoreInfo(@Path("id") String id); ///分页查看资讯列表 @POST("/information/list") Future>> queryArticle(@Body() Map param); ///banner查询 @POST("/banner/page") Future>> queryBanner(@Body() Map param); ///品牌信息 @GET("/home/brand") Future queryHomeBrand(); /// 小程序会员登录 @GET("/auth/mini/login/{storeId}") Future minLogin(@Path("storeId") String storeId); /// 各种消费记录 @POST("/member/listBill") Future>> queryBillInfo( @Body() Map param); ///会员等级列表 @GET("/member/rankList") Future>> rankList(); ///订单列表 @POST("/order/list") Future>> orderList( @Body() Map param); ///订单详情 @GET("/order/orderDetail?id={id}") Future> orderDetail(@Path("id") String id); ///继续付款 @POST("/order/continuePay") Future continuePay(@Body() Map param); ///积分订单兑换到券包 @GET("/creditOrder/receive/{id}") Future receiveToCard(@Path("id") String id); ///会员卡列表 @POST("/member/vipList") Future>> vipList(@Body() Map param); ///会员卡详情 @POST("/member/vipDetail") Future> vipDetail(@Body() Map param); ///分页查询App消息列表 @POST("/app-msg/list") Future>> msgList( @Body() Map param); ///App消息详情 @GET("/app-msg/{id}") Future queryMsg(@Path("id") String id); ///给文章/活动点赞 @GET("/information/likes/{id}") Future informationLikes(@Path("id") String id); ///发布评论 @POST("/memberComment") Future memberComment(@Body() Map param); ///查询评论列表 @POST("/memberComment/list") Future>> memberCommentList( @Body() Map param); ///评论点赞 @GET("/memberComment/likes/{id}") Future commentLike(@Path("id") String id); ///评论删除 @DELETE("/memberComment/{id}") Future delComment(@Path("id") String id); ///查询物流轨迹 @GET("/order/getShippingTrace/{shipperCode}/{logisticCode}") Future> shippingTrace( @Path("shipperCode") String shipperCode, @Path("logisticCode") String logisticCode); ///反馈 @POST("/other/report") Future> report(@Body() Map map); ///取消订单 @GET("/order/cancel/{id}") Future> orderCancel(@Path("id") String id); ///继续付款? @POST("/order/settlement") Future> settlement(@Body() Map map); /// 发表动态 @POST("/information/trend") Future> trend(@Body() Map map); /// 动态列表 @POST("/information/trend-list") Future>> trendList(@Body() Map map); /// 我关注/粉丝的会员列表 @POST("/member/follow/list") Future>> followList(@Body() Map map); ///关注/取关会员 @PUT("/member/follow/{followId}") Future follow(@Path("followId") String followId); ///删除动态 @DELETE("/information/trend/{id}") Future deleteTrend(@Path("id") String id); ///个人社交信息(粉丝/关注数量/成就数量) @GET("/member/socialInfo") Future> socialInfo(); ///课程分类列表 @GET("/course/categoryList") Future>> categoryList(); ///课程章节列表 @GET("/course/catalogList/{courseId}") Future>> catalogList(@Path("courseId") String courseId); /// 课程列表 @POST("/course/list") Future>> courseList(@Body() Map map); ///课程的合集列表 @GET("/course/collectList") Future>> collectList(); ///合集包含的课程列表 @GET("/course/collect/{collectId}") Future>> collect(@Path("collectId") String collectId); ///课程详情 @GET("/course/{id}") Future> course(@Path("id") String id); ///给文章/活动点赞 @GET("/course/likes/{courseId}") Future courseLikes(@Path("courseId") String courseId); /// APP查询所有成就徽章 并显示会员完成的 @POST("/app-memberAchievement/findBadges") Future>> findBadges(@Body() Map map); ///查看一个成就大类详情 @GET("/app-memberAchievement/getAchievementDetail?achievementCategoryId={achievementCategoryId}") Future>> getAchievementDetail(@Path("achievementCategoryId") String achievementCategoryId); ///会员的权益列表 @GET("/member/benefitList") Future>> benefitList(); ///会员权益 @GET("/home/vipBenefit") Future> vipBenefit(); ///查询副卡列表 @GET("/member/secondCardList") Future>> secondCardList(); ///绑定副卡 @GET("/member/bindSecondCard/{phone}") Future bindSecondCard(@Path("phone") String phone); ///解绑副卡 @GET("/member/unbindSecondCard/{phone}") Future unbindSecondCard(@Path("phone") String phone); ///查看积分订单物流 @GET("/creditOrder/getAppShippingTrace?orderId={orderId}") Future> getAppShippingTrace(@Path("orderId") String orderId); ///购买会员等级 @POST("/member/rankBuy") Future> rankBuy(@Body() Map param); ///文章合集列表 @GET("/information/categoryList") Future>> headlinesList(); ///文章合集详情 @GET("/information/category/{id}") Future> headlinesDetails(@Path("id") String id); }