feat:编写增值服务记录页面,联调接口

This commit is contained in:
ante 2024-04-16 11:33:26 +08:00
parent 3d491ffaf2
commit 1e57d0aee2
11 changed files with 295 additions and 40 deletions

View File

@ -44,6 +44,7 @@ import 'package:star_lock/mine/mineSet/transferGateway/selectGetewayList_page.da
import 'package:star_lock/mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_page.dart';
import 'package:star_lock/mine/mineSet/transferSmartLock/selectBranch/selectBranch_page.dart';
import 'package:star_lock/mine/mineSet/transferSmartLock/transferSmartLockList/transferSmartLock_page.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart';
import 'common/safetyVerification/safetyVerification_page.dart';
import 'login/forgetPassword/starLock_forgetPassword_page.dart';
@ -184,7 +185,7 @@ import 'mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServic
import 'mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_page.dart';
import 'mine/valueAddedServices/valueAddedServicesList/valueAddedServicesList_page.dart';
import 'mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedServicesNoteAndEmailDetail_page.dart';
import 'mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart';
import 'mine/valueAddedServices/valueAddedServicesRealName/value_added_services_real_name_page.dart';
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart';
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/valueAddedServicesListSMSTemplate_page.dart';
import 'mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart';
@ -326,6 +327,8 @@ abstract class Routers {
'/ValueAddedServicesNoteAndEmailDetailPage'; // -
static const valueAddedServicesRealNamePage =
'/ValueAddedServicesRealNamePage'; // -
static const valueAddedServicesRecordPage =
'/valueAddedServicesRecordPage'; // -
static const valueAddedServicesHighFunctionPage =
'/ValueAddedServicesHighFunctionPage'; // -
static const valueAddedServicesBuyPage =
@ -811,6 +814,10 @@ abstract class AppRouters {
name: Routers.valueAddedServicesRealNamePage,
page: () => const ValueAddedServicesRealNamePage(),
),
GetPage(
name: Routers.valueAddedServicesRecordPage,
page: () => ValueAddedServicesRecordPage(),
),
GetPage(
name: Routers.valueAddedServicesBuyPage,
page: () => const ValueAddedServicesBuyPage(),

View File

@ -1,7 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/appRouters.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/value_added_services_real_name_logic.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_arg.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/commonItem.dart';
import '../../../tools/titleAppBar.dart';
@ -83,7 +85,10 @@ class _ValueAddedServicesRealNamePageState
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
GestureDetector(
onTap: () {},
onTap: () {
Get.toNamed(Routers.valueAddedServicesRecordPage,
arguments: UseRecordListArg.cloudauth);
},
child: Container(
width: 200.w,
// height: 70.h,

View File

@ -0,0 +1,25 @@
class BuyRecordListEntity {
BuyRecordListEntity({
this.description,
this.errorCode,
this.errorMsg,
});
BuyRecordListEntity.fromJson(dynamic json) {
description = json['description'];
errorCode = json['errorCode'];
errorMsg = json['errorMsg'];
}
String? description;
int? errorCode;
String? errorMsg;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['description'] = description;
map['errorCode'] = errorCode;
map['errorMsg'] = errorMsg;
return map;
}
}

View File

@ -0,0 +1,14 @@
class UseRecordListArg {
static Map<String, String> sms = {
'type': 'sms',
};
static Map<String, String> vip = {
'type': 'vip',
};
static Map<String, String> email = {
'type': 'email',
};
static Map<String, String> cloudauth = {
'type': 'cloudauth',
};
}

View File

@ -0,0 +1,25 @@
class UseRecordListEntity {
UseRecordListEntity({
this.description,
this.errorCode,
this.errorMsg,
});
UseRecordListEntity.fromJson(dynamic json) {
description = json['description'];
errorCode = json['errorCode'];
errorMsg = json['errorMsg'];
}
String? description;
int? errorCode;
String? errorMsg;
Map<String, dynamic> toJson() {
final map = <String, dynamic>{};
map['description'] = description;
map['errorCode'] = errorCode;
map['errorMsg'] = errorMsg;
return map;
}
}

View File

@ -0,0 +1,52 @@
import 'dart:async';
import 'package:get/get.dart';
import 'package:get/utils.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/face_authentication_entity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/buy_record_list_entity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_state.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../network/api_repository.dart';
import '../../../tools/eventBusEventManage.dart';
class ValueAddedServicesRecordLogic extends BaseGetXController {
ValueAddedServicesRecordLogic();
final ValueAddedServicesRecordState state = ValueAddedServicesRecordState();
int buyPageNo = 1;
late String type;
@override
void onInit() {
super.onInit();
dynamic data = Get.arguments;
if (data is! Map && data['type'] is! String) {
Get.back();
return;
}
type = data['type'];
}
//
Future<void> loadBuyRecordList(bool load) async {
if (!load) {
buyPageNo = 1;
}
BuyRecordListEntity entity = await ApiRepository.to.getBuyRecordList(
type: type,
recordType: 10,
pageNo: buyPageNo,
);
if (entity.errorCode!.codeIsSuccessful) {}
}
@override
void onReady() {
super.onReady();
}
@override
void onClose() {
super.onClose();
}
}

View File

@ -0,0 +1,77 @@
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_logic.dart';
import '../../../app_settings/app_colors.dart';
import '../../../tools/titleAppBar.dart';
class ValueAddedServicesRecordPage extends StatefulWidget {
ValueAddedServicesRecordPage({
Key? key,
}) : super(key: key);
@override
State<ValueAddedServicesRecordPage> createState() =>
_ValueAddedServicesRealNamePageState();
}
class _ValueAddedServicesRealNamePageState
extends State<ValueAddedServicesRecordPage> {
@override
Widget build(BuildContext context) {
return GetBuilder<ValueAddedServicesRecordLogic>(
init: ValueAddedServicesRecordLogic(),
builder: (ValueAddedServicesRecordLogic logic) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: '记录'.tr,
haveBack: true,
backgroundColor: AppColors.mainColor),
body: DefaultTabController(
length: 2,
child: Column(
children: [
TabBar(
tabs: [
Text('购买记录'.tr),
Text('使用记录'.tr),
],
),
Expanded(
child: TabBarView(children: [
_PurchaseRecords(),
Text('使用记录'),
]),
),
],
),
),
);
});
}
}
class _PurchaseRecords extends StatefulWidget {
const _PurchaseRecords({key});
@override
State<_PurchaseRecords> createState() => _PurchaseRecordsState();
}
//
class _PurchaseRecordsState extends State<_PurchaseRecords> {
@override
Widget build(BuildContext context) {
return GetBuilder<ValueAddedServicesRecordLogic>(
builder: (ValueAddedServicesRecordLogic logic) {
return EasyRefresh(
onRefresh: () async {},
onLoad: () async {},
child: ListView.builder(itemBuilder: (BuildContext context, int index) {
return SizedBox();
}),
);
});
}
}

View File

@ -0,0 +1,3 @@
class ValueAddedServicesRecordState {
int index = 0;
}

View File

@ -198,4 +198,11 @@ abstract class Api {
final String setFaceAuthenticationURL =
'/v2/service/setFaceAuthentication'; //
final String getBuyRecordListURL =
'/v2/service/getBuyRecordList'; //
final String getUseRecordListURL =
'/v2/service/getUseRecordList'; //使
}

View File

@ -281,6 +281,7 @@ class ApiProvider extends BaseProvider {
"startDate": startDate,
'endDate': endDate,
}));
//
Future<Response> lockRecordUploadData(String lockId, List records) => post(
lockRecordUploadURL.toUrl,
@ -453,10 +454,7 @@ class ApiProvider extends BaseProvider {
//
Future<Response> checkKeyboardpwdName(
String lockId,
String keyboardPwdName,
String keyboardPwd
) =>
String lockId, String keyboardPwdName, String keyboardPwd) =>
post(
passwordKeyCheckKeyboardpwdNameURL.toUrl,
jsonEncode({
@ -1556,14 +1554,16 @@ class ApiProvider extends BaseProvider {
}));
//-
Future<Response> updateUserNameInfo(String nickname) =>
post(updateUserInfoURL.toUrl, jsonEncode({
Future<Response> updateUserNameInfo(String nickname) => post(
updateUserInfoURL.toUrl,
jsonEncode({
'nickname': nickname,
}));
//-
Future<Response> updateUserHeadUrlInfo(String headUrl) =>
post(updateUserInfoURL.toUrl, jsonEncode({
Future<Response> updateUserHeadUrlInfo(String headUrl) => post(
updateUserInfoURL.toUrl,
jsonEncode({
'headUrl': headUrl,
}));
@ -1626,10 +1626,10 @@ class ApiProvider extends BaseProvider {
// upToken updateUserInfo
Future<Response> getUpHeadToken(
String userId,
String filename,
int size,
) =>
String userId,
String filename,
int size,
) =>
post(
getUpTokenURL.toUrl,
jsonEncode({
@ -1641,7 +1641,9 @@ class ApiProvider extends BaseProvider {
//
Future<Response> uploadFile(String url, dynamic boay) => post(url, boay,
isUnUploadFile: false, contentType: 'multipart/form-data', isUserBaseUrl: false);
isUnUploadFile: false,
contentType: 'multipart/form-data',
isUserBaseUrl: false);
//Token
Future<Response> unbindPhoneToken(String verificationCode) => post(
@ -1786,6 +1788,28 @@ class ApiProvider extends BaseProvider {
jsonEncode({
'face_auth_frequence': faceAuthFrequence,
}));
// 使
Future<Response> getBuyRecordList(
String type, int recordType, int pageNo, int pageSize) =>
post(
getBuyRecordListURL.toUrl,
jsonEncode({
'type': type,
'record_type': recordType,
'pageNo': pageNo,
'pageSize': pageSize,
}));
// 使
Future<Response> getUseRecordList(String type, int pageNo, int pageSize) =>
post(
getUseRecordListURL.toUrl,
jsonEncode({
'type': type,
'pageNo': pageNo,
'pageSize': pageSize,
}));
}
extension ExtensionString on String {

View File

@ -22,6 +22,8 @@ import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireFinge
import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList/keyListByUserEntity.dart';
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/face_authentication_entity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/buy_record_list_entity.dart';
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart';
import '../common/safetyVerification/entity/CheckSafetyVerificationEntity.dart';
import '../common/safetyVerification/entity/SafetyVerificationEntity.dart';
import '../login/login/entity/LoginEntity.dart';
@ -59,6 +61,7 @@ class ApiRepository {
final ApiProvider apiProvider;
static ApiRepository get to => Get.find<ApiRepository>();
ApiRepository(this.apiProvider);
// (使) 12
@ -102,12 +105,10 @@ class ApiRepository {
//
Future<LoginEntity> login(
{
required String loginType,
required String password,
required String countryCode,
required String username
}) async {
{required String loginType,
required String password,
required String countryCode,
required String username}) async {
final res =
await apiProvider.login(loginType, password, countryCode, username);
return LoginEntity.fromJson(res.body);
@ -275,7 +276,8 @@ class ApiRepository {
}
// NO
Future<LockNetTokenEntity> updateLockUserNo({required String keyId, required String lockUserNo}) async {
Future<LockNetTokenEntity> updateLockUserNo(
{required String keyId, required String lockUserNo}) async {
final res = await apiProvider.updateLockUserNo(keyId, lockUserNo);
return LockNetTokenEntity.fromJson(res.body);
}
@ -402,8 +404,7 @@ class ApiRepository {
}
//
Future<LockListInfoEntity> deletOwnerLockData(
{required int lockId}) async {
Future<LockListInfoEntity> deletOwnerLockData({required int lockId}) async {
final res = await apiProvider.deletLockInfo(lockId);
return LockListInfoEntity.fromJson(res.body);
}
@ -457,13 +458,11 @@ class ApiRepository {
//
Future<PasswordKeyEntity> checkKeyboardpwdName(
{
required String lockId,
required String keyboardPwdName,
required String keyboardPwd
}) async {
final res = await apiProvider.checkKeyboardpwdName(lockId, keyboardPwdName,
keyboardPwd);
{required String lockId,
required String keyboardPwdName,
required String keyboardPwd}) async {
final res = await apiProvider.checkKeyboardpwdName(
lockId, keyboardPwdName, keyboardPwd);
return PasswordKeyEntity.fromJson(res.body);
}
@ -1602,8 +1601,7 @@ class ApiRepository {
}
//-
Future<PasswordKeyListEntity> updateUserNameInfo(
{
Future<PasswordKeyListEntity> updateUserNameInfo({
required String nickname,
}) async {
final res = await apiProvider.updateUserNameInfo(nickname);
@ -1612,9 +1610,7 @@ class ApiRepository {
//-
Future<PasswordKeyListEntity> updateUserHeadUrlInfo(
{
required String headUrl
}) async {
{required String headUrl}) async {
final res = await apiProvider.updateUserHeadUrlInfo(headUrl);
return PasswordKeyListEntity.fromJson(res.body);
}
@ -1674,8 +1670,7 @@ class ApiRepository {
required String filename,
required int size,
}) async {
final res =
await apiProvider.getUpHeadToken(userId, filename, size);
final res = await apiProvider.getUpHeadToken(userId, filename, size);
return MinePersonGetUploadFileInfoEntity.fromJson(res.body);
}
@ -1815,11 +1810,32 @@ class ApiRepository {
return VersionUndateEntity.fromJson(res.body);
}
//
//
Future<FaceAuthenticationEntity> setFaceAuthentication(
{required int faceAuthFrequence}) async {
final res = await apiProvider.setFaceAuthentication(faceAuthFrequence);
return FaceAuthenticationEntity.fromJson(res.body);
}
// 使
Future<BuyRecordListEntity> getBuyRecordList({
required String type,
required int pageNo,
required int recordType,
int pageSize = 10,
}) async {
final res =
await apiProvider.getBuyRecordList(type, recordType, pageNo, pageSize);
return BuyRecordListEntity.fromJson(res.body);
}
//
Future<UseRecordListEntity> getUseRecordList({
required String type,
required int pageNo,
int pageSize = 10,
}) async {
final res = await apiProvider.getUseRecordList(type, pageNo, pageSize);
return UseRecordListEntity.fromJson(res.body);
}
}