Quellcode durchsuchen

[new]增加更新行业职位流程

zk vor 1 Jahr
Ursprung
Commit
a3a34b770c

+ 3 - 0
assets/string/base/string.xml

@@ -71,4 +71,7 @@
     <string name="talk_audio_loading">音频正在加载中</string>
     <string name="talk_all">全部谈话</string>
     <string name="talk_file_not_find">文件不存在</string>
+    <string name="account_profession_and_post_update_success">更新成功</string>
+    <string name="account_profession_suggest">请输入行业</string>
+    <string name="account_post_suggest">请输入岗位</string>
 </resources>

+ 6 - 0
lib/data/api/response/user_info_response.dart

@@ -18,6 +18,12 @@ class UserInfoResponse {
   @JsonKey(name: 'phone')
   String? phone;
 
+  @JsonKey(name: 'profession')
+  String? profession;
+
+  @JsonKey(name: 'post')
+  String? post;
+
   @JsonKey(name: 'memberInfo')
   MemberInfo? memberInfo;
 

+ 15 - 5
lib/data/repositories/account_repository.dart

@@ -14,6 +14,7 @@ import 'package:get/get.dart';
 import '../../resource/string.gen.dart';
 import '../../utils/http_handler.dart';
 import '../api/request/login_request.dart';
+import '../api/request/user_info_update_request.dart';
 import '../api/request/verification_code_request.dart';
 import '../api/response/login_response.dart';
 import '../api/response/user_info_response.dart';
@@ -29,7 +30,8 @@ class AccountRepository {
   String? _token;
   String? _phone;
   final isLogin = false.obs;
-  Rxn<MemberInfo> memberInfo = Rxn();
+
+  UserInfoResponse? _userInfo;
 
   CancelableFuture? _getUserInfoFuture;
 
@@ -46,6 +48,8 @@ class AccountRepository {
     }
   }
 
+  UserInfoResponse? get userInfo => _userInfo;
+
   String? get phone => _phone;
 
   String? get token => _token;
@@ -56,6 +60,12 @@ class AccountRepository {
         .then(HttpHandler.handle(true));
   }
 
+  Future<void> updateUserInfo(String profession, String post) {
+    return atmobApi
+        .updateUserInfo(UserInfoUpdateRequest(profession, post))
+        .then(HttpHandler.handle(true));
+  }
+
   Future<void>? refreshUserInfo() {
     if (_getUserInfoFuture != null) {
       _getUserInfoFuture?.cancel();
@@ -75,7 +85,7 @@ class AccountRepository {
         .userInfo(AppBaseRequest())
         .then(HttpHandler.handle(false))
         .then((response) {
-      memberInfo.value = response.memberInfo;
+      _userInfo = response;
       return response;
     });
   }
@@ -104,18 +114,18 @@ class AccountRepository {
 
   void logout() {
     _phone = null;
-    _phone = null;
+    _token = null;
     KVUtil.putString(ACCOUNT_TOKEN, null);
     KVUtil.putString(ACCOUNT_PHONE, null);
     isLogin.value = false;
     taskRepository.stopTask();
-    memberInfo.value = null;
+    _userInfo = null;
 
     eventBus.emit(EventUserLogout);
   }
 
   void cleanLoginInfo() {
-    _phone = null;
+    _token = null;
     _phone = null;
     KVUtil.putString(ACCOUNT_TOKEN, null);
     KVUtil.putString(ACCOUNT_PHONE, null);

+ 22 - 17
lib/module/chat/controller.dart

@@ -7,6 +7,7 @@ import 'package:electronic_assistant/data/bean/file_chat_item.dart';
 import 'package:electronic_assistant/data/bean/progressing_chat_item.dart';
 import 'package:electronic_assistant/data/bean/reference_chat_item.dart';
 import 'package:electronic_assistant/data/bean/stream_chat_origin_data.dart';
+import 'package:electronic_assistant/data/repositories/account_repository.dart';
 import 'package:electronic_assistant/data/repositories/chat_repository.dart';
 import 'package:electronic_assistant/data/repositories/talk_repository.dart';
 import 'package:electronic_assistant/module/chat/start/view.dart';
@@ -30,8 +31,6 @@ class ChatController extends BaseController {
   final Rxn<TalkBean> talkInfo = Rxn<TalkBean>();
   final Rxn<Agenda> agenda = Rxn<Agenda>();
 
-  var isOpenStart = false;
-
   @override
   void onInit() {
     super.onInit();
@@ -39,6 +38,15 @@ class ChatController extends BaseController {
     checkArguments();
   }
 
+  @override
+  void onReady() {
+    super.onReady();
+    if (accountRepository.userInfo?.profession == null ||
+        accountRepository.userInfo?.post == null) {
+      showStartSheet();
+    }
+  }
+
   void checkArguments() {
     List<dynamic> arguments = Get.arguments ?? [];
     if (arguments.isEmpty) {
@@ -109,21 +117,18 @@ class ChatController extends BaseController {
     });
   }
 
-  void showStartSheet(BuildContext context) {
-    if (!isOpenStart) {
-      WidgetsBinding.instance.addPostFrameCallback((_) {
-        showModalBottomSheet(
-          context: context,
-          isScrollControlled: true,
-          barrierColor: ColorName.black55,
-          backgroundColor: ColorName.transparent,
-          builder: (BuildContext context) {
-            return const ChatStartPage();
-          },
-        );
-      });
-      isOpenStart = true;
-    }
+  void showStartSheet() {
+    WidgetsBinding.instance.addPostFrameCallback((_) {
+      showModalBottomSheet(
+        context: Get.context!,
+        isScrollControlled: true,
+        barrierColor: ColorName.black55,
+        backgroundColor: ColorName.transparent,
+        builder: (BuildContext context) {
+          return const ChatStartPage();
+        },
+      );
+    });
   }
 
   void _sendMessage(String chatContent) {

+ 38 - 3
lib/module/chat/start/controller.dart

@@ -1,9 +1,44 @@
 import 'package:electronic_assistant/base/base_controller.dart';
+import 'package:electronic_assistant/data/repositories/account_repository.dart';
+import 'package:electronic_assistant/resource/string.gen.dart';
+import 'package:electronic_assistant/utils/error_handler.dart';
+import 'package:electronic_assistant/utils/toast_util.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:get/get.dart';
 
 class ChatStartController extends BaseController {
+  final professionController = TextEditingController();
+  final postController = TextEditingController();
+
   @override
-  void onInit() {
-    // TODO: implement onInit
-    super.onInit();
+  void onReady() {
+    super.onReady();
+    String? profession = accountRepository.userInfo?.profession;
+    if (profession != null) {
+      professionController.text = profession;
+    }
+    String? post = accountRepository.userInfo?.post;
+    if (post != null) {
+      postController.text = post;
+    }
+  }
+
+  void onNextStep() {
+    if (professionController.text.isEmpty) {
+      ToastUtil.showToast(StringName.accountProfessionSuggest.tr);
+      return;
+    }
+    if (postController.text.isEmpty) {
+      ToastUtil.showToast(StringName.accountPostSuggest.tr);
+      return;
+    }
+    accountRepository
+        .updateUserInfo(professionController.text, postController.text)
+        .then((data) {
+      Get.back();
+      ToastUtil.showToast(StringName.accountProfessionAndPostUpdateSuccess.tr);
+    }).catchError((error) {
+      ErrorHandler.toastError(error);
+    });
   }
 }

+ 3 - 1
lib/module/chat/start/view.dart

@@ -86,7 +86,7 @@ class ChatStartPage extends BasePage<ChatStartController> {
                     const Expanded(child: SizedBox()),
                     GestureDetector(
                       onTap: () {
-                        print(ScreenUtil().bottomBarHeight);
+                        controller.onNextStep();
                       },
                       child: Container(
                         margin: EdgeInsets.only(
@@ -276,6 +276,7 @@ class ChatStartPage extends BasePage<ChatStartController> {
             ),
             child: TextField(
               maxLines: 1,
+              controller: controller.professionController,
               textAlignVertical: TextAlignVertical.center,
               textInputAction: TextInputAction.search,
               decoration: InputDecoration(
@@ -320,6 +321,7 @@ class ChatStartPage extends BasePage<ChatStartController> {
             ),
             child: TextField(
               maxLines: 1,
+              controller: controller.postController,
               textAlignVertical: TextAlignVertical.center,
               textInputAction: TextInputAction.search,
               decoration: InputDecoration(

+ 0 - 1
lib/module/chat/view.dart

@@ -47,7 +47,6 @@ class ChatPage extends BasePage<ChatController> {
   @override
   Widget buildBody(BuildContext context) {
     // 第一次启动时弹出定制窗口
-    controller.showStartSheet(context);
 
     return Stack(
       children: [

+ 23 - 6
lib/module/main/drawer_view.dart

@@ -11,6 +11,19 @@ import '../../resource/assets.gen.dart';
 import '../../resource/colors.gen.dart';
 import '../../resource/string.gen.dart';
 import '../../router/app_pages.dart';
+import '../chat/start/view.dart';
+
+void showStartSheet(BuildContext context) {
+  showModalBottomSheet(
+    context: context,
+    isScrollControlled: true,
+    barrierColor: ColorName.black55,
+    backgroundColor: ColorName.transparent,
+    builder: (BuildContext context) {
+      return const ChatStartPage();
+    },
+  );
+}
 
 Widget buildDrawerContent(MainController controller, BuildContext context) {
   return SafeArea(
@@ -87,11 +100,15 @@ Widget buildDrawerContent(MainController controller, BuildContext context) {
                   StringName.mainDrawerTemplateManagement.tr,
                   () {},
                 ),
-                buildOperationItem(
-                  Assets.images.iconIndustryChange.image(),
-                  StringName.mainDrawerIndustryPositionChange.tr,
-                  () {},
-                )
+                Builder(builder: (context) {
+                  return buildOperationItem(
+                    Assets.images.iconIndustryChange.image(),
+                    StringName.mainDrawerIndustryPositionChange.tr,
+                    () {
+                      showStartSheet(context);
+                    },
+                  );
+                })
               ],
             ),
           ),
@@ -211,7 +228,7 @@ Widget buildOperationItem(Image icon, String title, Function onTap,
           ),
           const Spacer(),
           rightView ?? const SizedBox.shrink(),
-          SizedBox(width: 16.w),
+          SizedBox(width: 16.w)
         ],
       ),
     ),

+ 2 - 0
lib/router/app_pages.dart

@@ -1,3 +1,4 @@
+import 'package:electronic_assistant/module/chat/start/controller.dart';
 import 'package:electronic_assistant/module/files/controller.dart';
 import 'package:electronic_assistant/module/files/search/controller.dart';
 import 'package:electronic_assistant/module/main/controller.dart';
@@ -71,6 +72,7 @@ class AppBinding extends Bindings {
     lazyPut(() => StoreController());
     lazyPut(() => FilesController());
     lazyPut(() => FileSearchController());
+    lazyPut(() => ChatStartController());
   }
 
   void lazyPut<S>(InstanceBuilderCallback<S> builder) {