import 'package:ef/ef.dart'; import 'package:flutter_city_picker/model/address.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:vbvs_app/controller/mh/user_data.dart'; import 'package:vbvs_app/controller/mh/muser_info_controller.dart'; part 'address_controller.g.dart'; @JsonSerializable() class AddressModel { //版本id String? province; //省份 String? city; //市 String? county; //区 String? street; //街道 String? detail; //详细信息 String? name; //名字 String? phone; //手机号 bool? ischecked = false; //是否默认 int currentType = 0; String? all_address; @JsonKey(ignore: true) List? addressList = []; AddressModel(); static AddressModel fromJson(Map json) => _$AddressModelFromJson(json); Map toJson() => _$AddressModelToJson(this); } class AddressController extends GetControllerEx { AddressController() { attr = GetModel(AddressModel()).obs; } Future updateAddress( Map address, AddressModel model) async { if (model.addressList != null && model.addressList!.isNotEmpty) { if (model.addressList!.length > 0) { address["province"] = model.addressList![0].name; // 第一个元素为省 } if (model.addressList!.length > 1) { address["city"] = model.addressList![1].name; // 第二个元素为市 } if (model.addressList!.length > 2) { address["county"] = model.addressList![2].name; // 第三个元素为区 } if (model.addressList!.length > 3) { address["street"] = model.addressList![3].name; // 第四个元素为街道 } } address['detail'] = model.detail; address['name'] = model.name; address['phone'] = model.phone; address['isChecked'] = model.ischecked; try { final data = await ef.client.rpc("get_now_datetime"); final response = await ef.client.from("app_user_address").update({ 'province': address["province"], 'city': address["city"], 'county': address["county"], 'street': address["street"], 'detail': address["detail"], 'name': address["name"], 'phone': address["phone"], 'ischecked': address['isChecked'] ? 1 : 0, 'update_time': DateFormat("yyyy-MM-dd HH:mm:ss").parse("$data").toString(), }).eq("id", address['id']); } catch (e) { print('Error fetching repairs: $e'); return e.toString(); } return ''; } addAddress(AddressModel model) async { try { final MUserInfoController userInfoController = Get.find(); UserModel user = userInfoController.model.user!; // 设置省市区街道名称 if (model.addressList != null && model.addressList!.isNotEmpty) { if (model.addressList!.length > 0) model.province = model.addressList![0].name; // 第一个元素为省 if (model.addressList!.length > 1) model.city = model.addressList![1].name; // 第二个元素为市 if (model.addressList!.length > 2) model.county = model.addressList![2].name; // 第三个元素为区 if (model.addressList!.length > 3) model.street = model.addressList![3].name; // 第四个元素为街道 } // 查询数据库是否已有该用户的地址 final existingAddresses = await ef.client .from('app_user_address') .select() .eq('user_id', user.uid!); // 如果没有地址,将新增地址默认选中 if (existingAddresses.isEmpty) { model.ischecked = true; } else if (model.ischecked == true) { // 如果新地址被选中,将其他地址的 `ischecked` 字段设为 `0` await ef.client .from('app_user_address') .update({'ischecked': 0}).eq('user_id', user.uid!); } // 添加新地址 final response = await ef.client.from('app_user_address').insert({ 'province': model.province, 'city': model.city, 'county': model.county, 'street': model.street, 'detail': model.detail, 'name': model.name, 'phone': model.phone, 'ischecked': model.ischecked! ? 1 : 0, 'user_id': user.uid, }); } catch (e) { print(e); } } Future> getData({int? level, int? pid}) async { // 构建查询 var query = ef.from("app_area_city").select(); // 如果 pid 不为 null,添加 pid 的条件 if (pid != null) { query = query.eq("pid", pid); } if (level != null) { query = query.eq("deep", level); } List arr = await query; List addressNodes = arr.map((item) { return AddressNode.fromJson({ "name": item["ext_name"], // ext_name 对应 name "code": item["id"], // id 对应 code "letter": item["pinyin_prefix_upper"], // pinyin_prefix_upper 对应 letter }); }).toList(); return addressNodes; } }