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.

206 lines
6.6 KiB

import 'package:common_utils/common_utils.dart';
import 'package:recook/constants/api_v2.dart';
import 'package:recook/manager/http_manager.dart';
import 'package:recook/pages/user/model/user_accumulate_model.dart';
import 'package:recook/pages/user/model/user_benefit_common_model.dart';
import 'package:recook/pages/user/model/user_benefit_day_expect_model.dart';
import 'package:recook/pages/user/model/user_benefit_expect_extra_model.dart';
import 'package:recook/pages/user/model/user_benefit_extra_detail_model.dart';
import 'package:recook/pages/user/model/user_benefit_model.dart';
import 'package:recook/pages/user/model/user_benefit_month_detail_model.dart';
import 'package:recook/pages/user/model/user_benefit_month_expect_model.dart';
import 'package:recook/pages/user/model/user_benefit_sub_model.dart';
import 'package:recook/pages/user/model/user_income_model1.dart';
import 'package:recook/pages/user/model/user_month_income_model.dart';
import 'package:recook/pages/user/user_benefit_sub_page.dart';
enum BenefitDateType {
DAY,
MONTH,
}
class UserBenefitFunc {
//已到账收益
static Future<UserIncomeModel1> receicedIncome(
String dateStr, int type) async {
ResultData result = await HttpManager.post(
APIV2.userAPI.rceivedDetail, {'date_str': dateStr, 'type': type});
if (result.data['data'] != null) {
return UserIncomeModel1.fromJson(result.data['data']);
}
}
//未到账收益
static Future<UserIncomeModel1> notReceicedIncome(
String dateStr, int type) async {
ResultData result = await HttpManager.post(
APIV2.userAPI.rceivedDetail, {'date_str': dateStr, 'type': type});
if (result.data['data'] != null) {
return UserIncomeModel1.fromJson(result.data['data']);
}
}
static Future<UserBenefitModel> update() async {
ResultData result = await HttpManager.post(APIV2.userAPI.userBenefit, {});
return UserBenefitModel.fromJson(result.data);
}
static Future<UserAccumulateModel> accmulate() async {
ResultData result = await HttpManager.post(APIV2.userAPI.accumulate, {});
return UserAccumulateModel.fromJson(result.data);
}
static Future<List<UserMonthIncomeModel>> monthIncome({int year}) async {
ResultData result = await HttpManager.post(
APIV2.userAPI.monthIncome,
{'year': year},
);
return (result.data['data'] as List)
.map((e) => UserMonthIncomeModel.fromJson(e))
.toList();
}
static Future<UserBenefitSubModel> subInfo(UserBenefitPageType type) async {
String path = '';
switch (type) {
case UserBenefitPageType.SELF:
path = APIV2.userAPI.selfIncome;
break;
case UserBenefitPageType.GUIDE:
path = APIV2.userAPI.guideIncome;
break;
case UserBenefitPageType.TEAM:
path = APIV2.userAPI.teamIncome;
break;
case UserBenefitPageType.RECOMMEND:
path = APIV2.userAPI.recommandIncome;
break;
case UserBenefitPageType.PLATFORM:
path = APIV2.userAPI.platformIncome;
break;
}
ResultData result = await HttpManager.post(path, {});
return UserBenefitSubModel.fromJson(result.data, type);
}
static Future<List<UserBenefitMonthDetailModel>> monthDetail(
DateTime date) async {
ResultData result = await HttpManager.post(
APIV2.userAPI.monthDetail,
{'month': DateUtil.formatDate(date, format: 'yyyy-MM')},
);
if (result.data['data'] == null)
return [];
else
return (result.data['data'] as List)
.map((e) => UserBenefitMonthDetailModel.fromJson(e))
.toList();
}
static Future<UserBenefitExtraDetailModel> extraDetail({
UserBenefitPageType type,
DateTime date,
}) async {
String path = '';
switch (type) {
case UserBenefitPageType.TEAM:
path = APIV2.userAPI.groupDetail;
break;
case UserBenefitPageType.RECOMMEND:
path = APIV2.userAPI.recommendDetail;
break;
case UserBenefitPageType.PLATFORM:
path = APIV2.userAPI.platformDetail;
break;
default:
break;
}
ResultData result = await HttpManager.post(
path,
{'month': DateUtil.formatDate(date, format: 'yyyy-MM')},
);
return UserBenefitExtraDetailModel.fromJson(result.data);
}
static Future<UserBenefitCommonModel> getCommonModel(
BenefitDateType type,
DateTime date,
) async {
String path = '';
Map<String, dynamic> params = {};
switch (type) {
case BenefitDateType.DAY:
path = APIV2.benefitAPI.dayIncome;
params.putIfAbsent(
'day',
() => DateUtil.formatDate(date, format: 'yyyy-MM-dd'),
);
break;
case BenefitDateType.MONTH:
path = APIV2.benefitAPI.monthIncome;
params.putIfAbsent(
'month',
() => DateUtil.formatDate(date, format: 'yyyy-MM'),
);
break;
}
ResultData result = await HttpManager.post(path, params);
return UserBenefitCommonModel.fromJson(result.data['data']);
}
static Future<UserBenefitDayExpectModel> getBenefitDayExpect(
DateTime date) async {
String path = '';
Map<String, dynamic> params = {};
path = APIV2.benefitAPI.dayExpect;
params.putIfAbsent(
'day',
() => DateUtil.formatDate(date, format: 'yyyy-MM-dd'),
);
ResultData result = await HttpManager.post(path, params);
return UserBenefitDayExpectModel.fromJson(result.data['data']);
}
static Future<UserBenefitMonthExpectModel> getBenefitMonthExpect(
DateTime date) async {
String path = '';
Map<String, dynamic> params = {};
path = APIV2.benefitAPI.monthExpect;
params.putIfAbsent(
'month',
() => DateUtil.formatDate(date, format: 'yyyy-MM'),
);
ResultData result = await HttpManager.post(path, params);
return UserBenefitMonthExpectModel.fromJson(result.data['data']);
}
static Future<UserBenefitExpectExtraModel> getBenefitExpectExtra(
BenefitDateType type,
DateTime date,
) async {
String path = '';
Map<String, dynamic> params = {};
switch (type) {
case BenefitDateType.DAY:
path = APIV2.benefitAPI.dayExpectExtra;
params.putIfAbsent(
'day',
() => DateUtil.formatDate(date, format: 'yyyy-MM-dd'),
);
break;
case BenefitDateType.MONTH:
path = APIV2.benefitAPI.monthExpectExtra;
params.putIfAbsent(
'month',
() => DateUtil.formatDate(date, format: 'yyyy-MM'),
);
break;
}
ResultData result = await HttpManager.post(path, params);
return UserBenefitExpectExtraModel.fromJson(result.data['data']);
}
}