circle_app/circle_app/lib/app/userinfo/logic.dart
2023-07-03 12:26:48 +08:00

350 lines
8.7 KiB
Dart

import 'dart:convert';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';
import '../../common/config.dart';
import '../../network/api.dart';
import '../../network/dio_manager.dart';
import '../../util/qiniu.dart';
import '../../util/util.dart';
import '../login/complete_material/logic.dart';
import 'state.dart';
class UserinfoLogic extends GetxController {
var userId = Get.arguments ?? "";
final UserinfoState state = UserinfoState();
final ImagePicker _picker = ImagePicker();
UserBean? userInfoBean = null;
String ageMsg = "";
var isVip = 0;
var onLineCity = "";
var isLikeFoMsg = '';
var quToken = '';
bool isMe = false;
bool isEdit = false;
bool isUrgeStatus = false;
bool isOnline = false;
bool isShowAlbum = true;
@override
void onInit() async {
super.onInit();
if (userId == '') {
isMe = true;
var data = await DioManager.instance.get(url: Api.getUserInfo);
var bean = BaseResponse<ResponseBean>.fromJson(
data, (data) => ResponseBean.fromJson(data));
if (bean.isSuccess()) {
isLikeFoMsg =
"${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
userInfoBean = bean.data.user;
isVip = userInfoBean!.vip;
onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线";
isOnline = userInfoBean!.isOnline;
if (userInfoBean!.city != null) {
onLineCity = "$onLineCity·${userInfoBean!.city}";
}
ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age,
userInfoBean!.role, userInfoBean!.orientation);
} else {
showToast(bean.msg);
}
var myAlbumData = await DioManager.instance.get(url: Api.getMyAlbum,);
var myAlbumBean = BaseResponse<AlbumResponseBean>.fromJson(
myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData));
if(myAlbumBean.isSuccess()){
myAlbumBean.data.lists.forEach((element) {
state.imaglist.add(element);
});
}
} else {
isMe = false;
var data = await DioManager.instance
.get(url: "${Api.getUserInfoTA + userId}/home");
var bean = BaseResponse<ResponseBean>.fromJson(
data, (data) => ResponseBean.fromJson(data));
if (bean.isSuccess()) {
isLikeFoMsg =
"${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
userInfoBean = bean.data!.user;
isVip = userInfoBean!.vip;
onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线";
if (userInfoBean!.city != null) {
onLineCity = "$onLineCity·${userInfoBean!.city}";
}
ageMsg = getAgeCOntent(userInfoBean!.gender, userInfoBean!.age,
userInfoBean!.role, userInfoBean!.orientation);
} else {
showToast(bean.msg);
}
var myAlbumData = await DioManager.instance.get(url: Api.getTaAlbum+userId+"/albums");
var myAlbumBean = BaseResponse<AlbumResponseBean>.fromJson(
myAlbumData, (myAlbumData) => AlbumResponseBean.fromJson(myAlbumData));
if(myAlbumBean.isSuccess()){
myAlbumBean.data.lists.forEach((element) {
state.imaglist.add(AlbumListItem(id: element.id,type: element.type,url:element.url));
});
}
var urgedata = await DioManager.instance.get(url: Api.getUrgeStatus+userId+"/urge/album/status");
var urgeBean = BaseResponse<UrgentStatus>.fromJson(
urgedata, (urgedata) => UrgentStatus.fromJson(urgedata));
isUrgeStatus = urgeBean.data.isUrgent;
}
update();
var data =
await DioManager.instance.get(url: Api.getqiniuToken, params: {});
var bean = BaseResponse<QnTokenData>.fromJson(
data, (data) => QnTokenData.fromJson(data));
if (bean.isSuccess()) {
quToken = bean.data!.token.toString();
}
}
urgeChange() async{
var data = await DioManager.instance.post(url: Api.urgeAlbum+userId+"/urge/album");
var bean = BaseResponse<String>.fromJson(data, (data) => data);
if(bean.isSuccess()){
showToast("催更成功");
isUrgeStatus = true;
update();
}
}
delAlbumImage(int index) async{
var data = await DioManager.instance.delete(url: Api.deleteAlbum+state.imaglist[index].id.toString());
var bean = BaseResponse<String>.fromJson(data, (data) => data);
if(bean.code == 200){
state.imaglist.removeAt(index);
update();
}
}
Future getImageFile() async {
try {
final XFile? pickedFile = await _picker.pickImage(
source: ImageSource.gallery,
);
if (null == pickedFile) {
return;
}
SmartDialog.showLoading();
upDataImage(quToken, pickedFile, CONFIG.USER_ALBUM_IMAGE, (result) async {
var data = await DioManager.instance.post(url: Api.updataAlbum,params: {
"type" :1,
"url": result
});
var myAlbumBean = BaseResponse<AddAlbum>.fromJson(
data, (data) => AddAlbum.fromJson(data));
if (myAlbumBean.code == 200) {
SmartDialog.dismiss();
state.imaglist.add(AlbumListItem(id:myAlbumBean.data.id,type:myAlbumBean.data.type,url: result));
update();
}
});
} catch (e) {}
}
}
class UserBean {
int id;
String nickname;
String avatar;
String birthday;
int age;
String signature;
int vip;
int gender;
int role;
int orientation;
List<Interest> interests;
double lng;
double lat;
String? city;
bool isOnline;
DateTime? offlineTime;
String avatarThumb;
UserBean({
required this.id,
required this.nickname,
required this.avatar,
required this.birthday,
required this.age,
required this.signature,
required this.vip,
required this.gender,
required this.role,
required this.orientation,
required this.interests,
required this.lng,
required this.lat,
this.city,
required this.isOnline,
this.offlineTime,
required this.avatarThumb,
});
factory UserBean.fromJson(Map<String, dynamic> json) {
return UserBean(
id: json['id'],
nickname: json['nickname'],
avatar: json['avatar'],
birthday: json['birthday'],
age: json['age'],
signature: json['signature'],
vip: json['vip'],
gender: json['gender'],
role: json['role'],
orientation: json['orientation'],
interests: List<Interest>.from(
json['interests'].map((x) => Interest.fromJson(x)),
),
lng: json['lng'],
lat: json['lat'],
city: json['city'],
isOnline: json['isOnline'],
offlineTime: json['offlineTime'] != null
? DateTime.parse(json['offlineTime'])
: null,
avatarThumb: json['avatar_thumb'],
);
}
}
class Interest {
int id;
String title;
Interest({
required this.id,
required this.title,
});
factory Interest.fromJson(Map<String, dynamic> json) {
return Interest(
id: json['id'],
title: json['title'],
);
}
}
class ResponseBean {
UserBean user;
int likeMeCount;
int imageUrgeCount;
ResponseBean({
required this.user,
required this.likeMeCount,
required this.imageUrgeCount,
});
factory ResponseBean.fromJson(Map<String, dynamic> json) {
return ResponseBean(
user: UserBean.fromJson(json['user']),
likeMeCount: json['like_me_count'],
imageUrgeCount: json['image_urge_count'],
);
}
}
class AlbumResponseBean {
List<AlbumListItem> lists;
int total;
AlbumResponseBean({
required this.lists,
required this.total,
});
factory AlbumResponseBean.fromJson(Map<String, dynamic> json) {
return AlbumResponseBean(
lists: List<AlbumListItem>.from(json['lists'].map((x) => AlbumListItem.fromJson(x))),
total: json['total'],
);
}
}
class AlbumListItem {
int id;
int type;
String url;
AlbumListItem({
required this.id,
required this.type,
required this.url,
});
factory AlbumListItem.fromJson(Map<String, dynamic> json) {
return AlbumListItem(
id: json['id'],
type: json['type'],
url: json['url'],
);
}
}
class AddAlbum {
int id;
int type;
String url;
AddAlbum({
required this.id,
required this.type,
required this.url,
});
factory AddAlbum.fromJson(Map<String, dynamic> json) {
return AddAlbum(
id: json['id'],
type: json['type'],
url: json['url'],
);
}
}
class UrgentStatus {
bool isUrgent;
UrgentStatus({
required this.isUrgent,
});
factory UrgentStatus.fromJson(Map<String, dynamic> json) {
return UrgentStatus(
isUrgent: json['is_urge'],
);
}
}