对接积分签到

master
张萌 3 years ago
parent d9b5cc81b5
commit 3670693a18

@ -28,6 +28,8 @@ class API {
static _House house = _House(); static _House house = _House();
static _SarsApi sarsApi = _SarsApi(); static _SarsApi sarsApi = _SarsApi();
static _Bracelet bracelet = _Bracelet(); static _Bracelet bracelet = _Bracelet();
static _Intergral intergral = _Intergral();
} }
class _Bracelet { class _Bracelet {
@ -35,6 +37,14 @@ class _Bracelet {
String get data => '/user/aqg/getData'; String get data => '/user/aqg/getData';
} }
class _Intergral {
///
String get sign => '/user/points/sign';
///
String get info => '/user/points/getPointsInfo';
}
class _Login { class _Login {
/// ///
String get sendSMSCode => '/login/sendMMSLogin'; String get sendSMSCode => '/login/sendMMSLogin';

@ -4,15 +4,17 @@ part 'clocked_record_list_model.g.dart';
@JsonSerializable() @JsonSerializable()
class ClockedRecordListModel { class ClockedRecordListModel {
final int day; final int id;
final String date; final int addNums;
final int addIntegral; final int serialNumber;
final String signDate;
factory ClockedRecordListModel.fromJson(Map<String, dynamic> json) => factory ClockedRecordListModel.fromJson(Map<String, dynamic> json) =>
_$ClockedRecordListModelFromJson(json); _$ClockedRecordListModelFromJson(json);
const ClockedRecordListModel({ const ClockedRecordListModel({
required this.day, required this.id,
required this.date, required this.addNums,
required this.addIntegral, required this.serialNumber,
required this.signDate,
}); });
} }

@ -9,7 +9,8 @@ part of 'clocked_record_list_model.dart';
ClockedRecordListModel _$ClockedRecordListModelFromJson( ClockedRecordListModel _$ClockedRecordListModelFromJson(
Map<String, dynamic> json) => Map<String, dynamic> json) =>
ClockedRecordListModel( ClockedRecordListModel(
day: json['day'] as int, id: json['id'] as int,
date: json['date'] as String, addNums: json['addNums'] as int,
addIntegral: json['addIntegral'] as int, serialNumber: json['serialNumber'] as int,
signDate: json['signDate'] as String,
); );

@ -0,0 +1,23 @@
import 'package:aku_new_community/models/integral/clocked_record_list_model.dart';
import 'package:json_annotation/json_annotation.dart';
part 'integral_info_model.g.dart';
@JsonSerializable()
class IntegralInfoModel {
final int points;
final String rewardSetting;
final int serialNumber;
final bool isSign;
final List<ClockedRecordListModel> signRecordList;
factory IntegralInfoModel.fromJson(Map<String, dynamic> json) =>
_$IntegralInfoModelFromJson(json);
const IntegralInfoModel({
required this.points,
required this.rewardSetting,
required this.serialNumber,
required this.isSign,
required this.signRecordList,
});
}

@ -0,0 +1,19 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'integral_info_model.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
IntegralInfoModel _$IntegralInfoModelFromJson(Map<String, dynamic> json) =>
IntegralInfoModel(
points: json['points'] as int,
rewardSetting: json['rewardSetting'] as String,
serialNumber: json['serialNumber'] as int,
isSign: json['isSign'] as bool,
signRecordList: (json['signRecordList'] as List<dynamic>)
.map(
(e) => ClockedRecordListModel.fromJson(e as Map<String, dynamic>))
.toList(),
);

@ -5,9 +5,12 @@ import 'package:aku_new_community/extensions/widget_list_ext.dart';
import 'package:aku_new_community/gen/assets.gen.dart'; import 'package:aku_new_community/gen/assets.gen.dart';
import 'package:aku_new_community/models/integral/add_integral_config_model.dart'; import 'package:aku_new_community/models/integral/add_integral_config_model.dart';
import 'package:aku_new_community/models/integral/clocked_record_list_model.dart'; import 'package:aku_new_community/models/integral/clocked_record_list_model.dart';
import 'package:aku_new_community/models/integral/integral_info_model.dart';
import 'package:aku_new_community/pages/personal/clock_in/clock_success_dialog.dart'; import 'package:aku_new_community/pages/personal/clock_in/clock_success_dialog.dart';
import 'package:aku_new_community/utils/network/net_util.dart';
import 'package:aku_new_community/widget/bee_back_button.dart'; import 'package:aku_new_community/widget/bee_back_button.dart';
import 'package:aku_new_community/widget/others/user_tool.dart'; import 'package:aku_new_community/widget/others/user_tool.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -22,31 +25,39 @@ class ClockInPage extends StatefulWidget {
} }
class _ClockInPageState extends State<ClockInPage> { class _ClockInPageState extends State<ClockInPage> {
List<AddIntegralConfigModel> _configs = [ IntegralInfoModel? _integralModel;
AddIntegralConfigModel(addIntegral: 1, hasClocked: false), List<AddIntegralConfigModel> _configs = [];
AddIntegralConfigModel(addIntegral: 2, hasClocked: false),
AddIntegralConfigModel(addIntegral: 3, hasClocked: false),
AddIntegralConfigModel(addIntegral: 5, hasClocked: false),
AddIntegralConfigModel(addIntegral: 8, hasClocked: false),
AddIntegralConfigModel(addIntegral: 15, hasClocked: false),
AddIntegralConfigModel(addIntegral: 50, hasClocked: false),
];
List<ClockedRecordListModel> _records = [ List<ClockedRecordListModel> _records = [];
ClockedRecordListModel(day: 1, date: '2021-12-29 13:29:24', addIntegral: 1),
ClockedRecordListModel(day: 2, date: '2021-12-28 13:29:24', addIntegral: 2),
ClockedRecordListModel(day: 3, date: '2021-12-27 13:29:24', addIntegral: 3),
ClockedRecordListModel(day: 4, date: '2021-12-26 13:29:24', addIntegral: 5),
ClockedRecordListModel(day: 5, date: '2021-12-25 13:29:24', addIntegral: 8),
ClockedRecordListModel(
day: 6, date: '2021-12-24 13:29:24', addIntegral: 15),
ClockedRecordListModel(
day: 7, date: '2021-12-23 13:29:24', addIntegral: 50),
ClockedRecordListModel(day: 1, date: '2021-12-22 13:29:24', addIntegral: 1),
];
bool _openRemind = false; // bool _openRemind = false; //
bool get hasClocked => _configs[0].hasClocked; bool get hasClocked => _integralModel?.isSign ?? false;
Future getData() async {
var base = await NetUtil().get(API.intergral.info);
if (base.status ?? false) {
_integralModel = IntegralInfoModel.fromJson(base.data);
} else {
BotToast.showText(text: base.message!);
}
}
@override
void initState() {
getData().then((value) {
if (_integralModel != null) {
_records = _integralModel!.signRecordList;
_configs = _integralModel!.rewardSetting
.split(',')
.mapIndexed((currentValue, index) => AddIntegralConfigModel(
addIntegral: int.parse(currentValue),
hasClocked: index < _integralModel!.serialNumber))
.toList();
setState(() {});
}
});
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -94,7 +105,10 @@ class _ClockInPageState extends State<ClockInPage> {
Text.rich( Text.rich(
TextSpan(children: [ TextSpan(children: [
'已连续签到 '.textSpan.make(), '已连续签到 '.textSpan.make(),
'1'.textSpan.size(40.sp).make(), '${_integralModel?.serialNumber ?? 0}'
.textSpan
.size(40.sp)
.make(),
''.textSpan.make(), ''.textSpan.make(),
]), ]),
style: TextStyle( style: TextStyle(
@ -104,7 +118,9 @@ class _ClockInPageState extends State<ClockInPage> {
), ),
4.hb, 4.hb,
Text( Text(
'明日签到即可获得2积分', '明日签到即可获得'
'${_configs.isNotEmpty ? _configs[_integralModel!.serialNumber != 7 ? _integralModel!.serialNumber : 0].addIntegral : 0}'
'积分',
style: TextStyle( style: TextStyle(
fontSize: 24.sp, fontSize: 24.sp,
color: Colors.black.withOpacity(0.45), color: Colors.black.withOpacity(0.45),
@ -132,7 +148,11 @@ class _ClockInPageState extends State<ClockInPage> {
children: [ children: [
Assets.icons.intergral.image(width: 36.w, height: 36.w), Assets.icons.intergral.image(width: 36.w, height: 36.w),
12.wb, 12.wb,
'123'.text.size(32.sp).white.make(), '${_integralModel?.points ?? 0}'
.text
.size(32.sp)
.white
.make(),
], ],
), ),
), ),
@ -175,9 +195,9 @@ class _ClockInPageState extends State<ClockInPage> {
width: 72.w, width: 72.w,
height: 40.w, height: 40.w,
child: Switch( child: Switch(
value: _openRemind, value: UserTool.userProvider.userConfig.clockRemind,
onChanged: (value) { onChanged: (value) {
_openRemind = value; UserTool.userProvider.changeClockRemind();
setState(() {}); setState(() {});
}, },
)), )),
@ -201,12 +221,15 @@ class _ClockInPageState extends State<ClockInPage> {
onPressed: hasClocked onPressed: hasClocked
? null ? null
: () async { : () async {
await Get.dialog(ClockSuccessDialog( var base = await NetUtil().get(API.intergral.sign);
todayIntegral: _configs[0].addIntegral, if (base.status ?? false) {
tomorrowIntegral: _configs[1].addIntegral)); await Get.dialog(ClockSuccessDialog(
_configs[0] = AddIntegralConfigModel( todayIntegral: 1, tomorrowIntegral: 2));
addIntegral: _configs[0].addIntegral, hasClocked: true); await UserTool.userProvider.changeTodayClocked();
setState(() {}); await getData();
} else {
BotToast.showText(text: base.message!);
}
}, },
elevation: 0, elevation: 0,
color: kPrimaryColor, color: kPrimaryColor,
@ -246,9 +269,9 @@ class _ClockInPageState extends State<ClockInPage> {
children: [ children: [
..._records ..._records
.mapIndexed((currentValue, index) => recordListTile( .mapIndexed((currentValue, index) => recordListTile(
currentValue.day, currentValue.serialNumber,
currentValue.date, currentValue.signDate,
currentValue.addIntegral)) currentValue.addNums))
.toList(), .toList(),
Container( Container(
width: double.infinity, width: double.infinity,

@ -12,7 +12,9 @@ import 'package:aku_new_community/ui/profile/car/car_manage_page.dart';
import 'package:aku_new_community/ui/profile/car_parking/car_parking_page.dart'; import 'package:aku_new_community/ui/profile/car_parking/car_parking_page.dart';
import 'package:aku_new_community/ui/profile/house/house_owners_page.dart'; import 'package:aku_new_community/ui/profile/house/house_owners_page.dart';
import 'package:aku_new_community/utils/headers.dart'; import 'package:aku_new_community/utils/headers.dart';
import 'package:aku_new_community/utils/network/net_util.dart';
import 'package:aku_new_community/widget/others/user_tool.dart'; import 'package:aku_new_community/widget/others/user_tool.dart';
import 'package:bot_toast/bot_toast.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart';
@ -333,10 +335,16 @@ class _PersonalIndexState extends State<PersonalIndex>
Spacer(), Spacer(),
MaterialButton( MaterialButton(
onPressed: () async { onPressed: () async {
await Get.dialog(ClockSuccessDialog( var base =
todayIntegral: 1, tomorrowIntegral: 2)); await NetUtil().get(API.intergral.sign);
await UserTool.userProvider if (base.status ?? false) {
.changeTodayClocked(); await Get.dialog(ClockSuccessDialog(
todayIntegral: 1, tomorrowIntegral: 2));
await UserTool.userProvider
.changeTodayClocked();
} else {
BotToast.showText(text: base.message!);
}
}, },
elevation: 0, elevation: 0,
color: Colors.white, color: Colors.white,

Loading…
Cancel
Save