对接收益页接口

master
laiiihz 5 years ago
parent 206d33605d
commit e40c2f27f5

@ -1,5 +1,6 @@
class APIV2 {
static UserAPI userAPI = UserAPI();
static BenefitAPI benefitAPI = BenefitAPI();
}
class UserAPI {
@ -59,3 +60,11 @@ class UserAPI {
///
String get recommendDiamond => '/v2/app/user/recommend_diamond';
}
class BenefitAPI {
///
String get dayIncome => '/v2/app/user/income/day_incomes';
///
String get monthIncome => '/v2/app/user/income/month_incomes';
}

@ -2,6 +2,7 @@ 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_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';
@ -9,6 +10,11 @@ import 'package:recook/pages/user/model/user_benefit_sub_model.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<UserBenefitModel> update() async {
ResultData result = await HttpManager.post(APIV2.userAPI.userBenefit, {});
@ -91,4 +97,31 @@ class UserBenefitFunc {
);
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']);
}
}

@ -0,0 +1,113 @@
class UserBenefitCommonModel {
Purchase purchase;
Purchase guide;
Team team;
Team recommend;
Team reward;
double get allAmount =>
(this.guide?.amount ?? 0) +
(this.purchase?.amount ?? 0) +
(this.recommend?.amount ?? 0) +
(this.reward?.amount ?? 0) +
(this.team?.amount ?? 0) +
.0;
UserBenefitCommonModel(
{this.purchase, this.guide, this.team, this.recommend, this.reward});
UserBenefitCommonModel.fromJson(Map<String, dynamic> json) {
purchase = json['purchase'] != null
? new Purchase.fromJson(json['purchase'])
: null;
guide = json['guide'] != null ? new Purchase.fromJson(json['guide']) : null;
team = json['team'] != null ? new Team.fromJson(json['team']) : null;
recommend =
json['recommend'] != null ? new Team.fromJson(json['recommend']) : null;
reward = json['reward'] != null ? new Team.fromJson(json['reward']) : null;
}
UserBenefitCommonModel.zero() {
purchase = Purchase.zero();
guide = Purchase.zero();
team = Team.zero();
recommend = Team.zero();
reward = Team.zero();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.purchase != null) {
data['purchase'] = this.purchase.toJson();
}
if (this.guide != null) {
data['guide'] = this.guide.toJson();
}
if (this.team != null) {
data['team'] = this.team.toJson();
}
if (this.recommend != null) {
data['recommend'] = this.recommend.toJson();
}
if (this.reward != null) {
data['reward'] = this.reward.toJson();
}
return data;
}
}
class Purchase {
num count;
num salesVolume;
num amount;
Purchase({this.count, this.salesVolume, this.amount});
Purchase.fromJson(Map<String, dynamic> json) {
count = json['count'];
salesVolume = json['salesVolume'];
amount = json['amount'];
}
Purchase.zero() {
count = 0;
salesVolume = 0;
amount = 0;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['count'] = this.count;
data['salesVolume'] = this.salesVolume;
data['amount'] = this.amount;
return data;
}
}
class Team {
num salesVolume;
num amount;
num ratio;
Team({this.salesVolume, this.amount, this.ratio});
Team.fromJson(Map<String, dynamic> json) {
salesVolume = json['salesVolume'];
amount = json['amount'];
ratio = json['ratio'];
}
Team.zero() {
ratio = 0;
salesVolume = 0;
amount = 0;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['salesVolume'] = this.salesVolume;
data['amount'] = this.amount;
data['ratio'] = this.ratio;
return data;
}
}

@ -1,5 +1,7 @@
import 'package:flutter/material.dart';
import 'package:recook/pages/user/benefit_view_gen.dart';
import 'package:recook/pages/user/functions/user_benefit_func.dart';
import 'package:recook/pages/user/model/user_benefit_common_model.dart';
import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/custom_image_button.dart';
import 'package:velocity_x/velocity_x.dart';
@ -21,10 +23,57 @@ class _UserBenefitPageState extends State<UserBenefitPage>
with TickerProviderStateMixin {
List<String> tabs = ['今日', '昨日', '本月', '上月'];
TabController _tabController;
Widget _buildTabView(String value) {
UserBenefitCommonModel _displayModel = UserBenefitCommonModel.zero();
UserBenefitCommonModel _todayModel = UserBenefitCommonModel.zero();
UserBenefitCommonModel _yestodayModel = UserBenefitCommonModel.zero();
UserBenefitCommonModel _thisMonthModel = UserBenefitCommonModel.zero();
UserBenefitCommonModel _lastMonthModel = UserBenefitCommonModel.zero();
Future getData() async {
_todayModel = await UserBenefitFunc.getCommonModel(
BenefitDateType.DAY,
DateTime.now(),
);
_yestodayModel = await UserBenefitFunc.getCommonModel(
BenefitDateType.DAY,
DateTime.now().subtract(Duration(days: 1)),
);
_thisMonthModel = await UserBenefitFunc.getCommonModel(
BenefitDateType.MONTH,
DateTime.now(),
);
_thisMonthModel = await UserBenefitFunc.getCommonModel(
BenefitDateType.MONTH,
DateTime(DateTime.now().year, DateTime.now().month - 1),
);
_displayModel = _todayModel;
setState(() {});
}
Widget _buildTabView(int index) {
double allCount = 0;
switch (index) {
case 0:
allCount = _todayModel.allAmount;
break;
case 1:
allCount = _yestodayModel.allAmount;
break;
case 2:
allCount = _thisMonthModel.allAmount;
break;
case 3:
allCount = _lastMonthModel.allAmount;
break;
}
return <Widget>[
'预估收益'.text.color(Colors.black54).size(18.sp).make(),
value.text.color(Color(0xFF333333)).size(28.sp).make(),
allCount
.toStringAsFixed(2)
.text
.color(Color(0xFF333333))
.size(28.sp)
.make(),
].column(
alignment: MainAxisAlignment.center,
);
@ -50,7 +99,8 @@ class _UserBenefitPageState extends State<UserBenefitPage>
),
),
TabBarView(
children: tabs.map((e) => _buildTabView(e)).toList(),
children:
List.generate(tabs.length, (index) => _buildTabView(index)),
controller: _tabController,
).expand(),
].column(),
@ -146,11 +196,17 @@ class _UserBenefitPageState extends State<UserBenefitPage>
onTap: () => CRoute.push(context, BenefitViewGen()),
path: R.ASSETS_USER_PINK_BUYER_PNG,
title: '自购收益',
firstItem: _ItemClass(title: '订单(笔)', value: '151X'),
secondItem: _ItemClass(title: '销售额(元)', value: '1111.11X'),
firstItem: _ItemClass(
title: '订单(笔)',
value: _displayModel.purchase.count.toString(),
),
secondItem: _ItemClass(
title: '销售额(元)',
value: _displayModel.purchase.salesVolume.toStringAsFixed(2),
),
thirdItem: _ItemClass(
title: '预估收益(瑞币)',
value: '124.12X',
value: _displayModel.purchase.amount.toStringAsFixed(2),
onHelper: () {},
),
),
@ -158,11 +214,17 @@ class _UserBenefitPageState extends State<UserBenefitPage>
onTap: () {},
path: R.ASSETS_USER_PINK_SHARE_PNG,
title: '导购收益',
firstItem: _ItemClass(title: '订单(笔)', value: '151X'),
secondItem: _ItemClass(title: '销售额(元)', value: '1111.11X'),
firstItem: _ItemClass(
title: '订单(笔)',
value: _displayModel.guide.count.toString(),
),
secondItem: _ItemClass(
title: '销售额(元)',
value: _displayModel.guide.salesVolume.toStringAsFixed(2),
),
thirdItem: _ItemClass(
title: '预估收益(瑞币)',
value: '124.12X',
value: _displayModel.guide.amount.toStringAsFixed(2),
onHelper: () {},
),
),
@ -172,13 +234,16 @@ class _UserBenefitPageState extends State<UserBenefitPage>
title: '团队收益',
firstItem: _ItemClass(
title: '团队销售额(元)',
value: '151.00X',
value: _displayModel.team.salesVolume.toStringAsFixed(2),
onHelper: () {},
),
secondItem: _ItemClass(title: '提成比例(%)', value: '3X'),
secondItem: _ItemClass(
title: '提成比例(%)',
value: _displayModel.team.ratio.toString(),
),
thirdItem: _ItemClass(
title: '预估收益(瑞币)',
value: '124.12X',
value: _displayModel.team.amount.toStringAsFixed(2),
onHelper: () {},
),
),
@ -188,13 +253,16 @@ class _UserBenefitPageState extends State<UserBenefitPage>
title: '推荐收益',
firstItem: _ItemClass(
title: '团队销售额(元)',
value: '151.00X',
value: _displayModel.recommend.salesVolume.toStringAsFixed(2),
onHelper: () {},
),
secondItem: _ItemClass(title: '提成比例(%)', value: '3X'),
secondItem: _ItemClass(
title: '提成比例(%)',
value: _displayModel.recommend.ratio.toString(),
),
thirdItem: _ItemClass(
title: '预估收益(瑞币)',
value: '124.12X',
value: _displayModel.recommend.amount.toStringAsFixed(2),
onHelper: () {},
),
),
@ -204,13 +272,16 @@ class _UserBenefitPageState extends State<UserBenefitPage>
title: '平台奖励',
firstItem: _ItemClass(
title: '团队销售额(元)',
value: '151.00X',
value: _displayModel.reward.salesVolume.toStringAsFixed(2),
onHelper: () {},
),
secondItem: _ItemClass(title: '提成比例(%)', value: '3X'),
secondItem: _ItemClass(
title: '提成比例(%)',
value: _displayModel.reward.ratio.toString(),
),
thirdItem: _ItemClass(
title: '预估收益(瑞币)',
value: '124.12X',
value: _displayModel.reward.amount.toStringAsFixed(2),
onHelper: () {},
),
),
@ -220,7 +291,25 @@ class _UserBenefitPageState extends State<UserBenefitPage>
@override
void initState() {
super.initState();
_tabController = TabController(length: 4, vsync: this);
_tabController = TabController(length: 4, vsync: this)
..addListener(() {
switch (_tabController.index) {
case 0:
_displayModel = _todayModel;
break;
case 1:
_displayModel = _yestodayModel;
break;
case 2:
_displayModel = _thisMonthModel;
break;
case 3:
_displayModel = _lastMonthModel;
break;
}
setState(() {});
});
getData();
}
@override

Loading…
Cancel
Save