Browse Source

同步Server最新接口更改

loki.wu 2 years ago
parent
commit
8a77d9d987

+ 1 - 1
lib/services/authentication.m.dart

@@ -998,7 +998,7 @@ enum CustomerRpcCode {
 	ConsultationNotOneElseOnLine,
 	ConsultationDBError,
 	NoConsultationInitiator,
-	placeHolder_829,
+	NotCertifiedPhysician,
 	placeHolder_830,
 	placeHolder_831,
 	placeHolder_832,

+ 21 - 2
lib/services/liveConsultation.dart

@@ -27,15 +27,16 @@ class LiveConsultationService extends JsonRpcClientBase {
 		FJsonConvert.setDecoder((map) => ConsultationPageDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => ConsultationDetailDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => ConsultationAssistantDTO.fromJson(map));
+		FJsonConvert.setDecoder((map) => ConsultationAssistantDoctorDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => PageResult<ClientPatientInfoBaseDTO>.fromJson(map));
 		FJsonConvert.setDecoder((map) => ClientPatientInfoBaseDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => InitiateLiveConsultationResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => InviteInLiveConsultationResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => CancelInvitingInLiveConsultationResult.fromJson(map));
-		FJsonConvert.setDecoder((map) => CancelLiveConsultationResult.fromJson(map));
-		FJsonConvert.setDecoder((map) => AcceptLiveConsultationResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => RejectLiveConsultationResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => JoinLiveConsultationResult.fromJson(map));
+		FJsonConvert.setDecoder((map) => CancelLiveConsultationResult.fromJson(map));
+		FJsonConvert.setDecoder((map) => AcceptLiveConsultationResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => LeaveLiveConsultationResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => MuteLiveConsultationResult.fromJson(map));
 		FJsonConvert.setDecoder((map) => SwitchLiveConsultationVideoResult.fromJson(map));
@@ -121,6 +122,12 @@ class LiveConsultationService extends JsonRpcClientBase {
 		return result;
 	}
 
+	Future<List<ConsultationAssistantDoctorDTO>> findOrganizationAssistantDoctorsAsync(FindOrganizationAssistantDoctorsRequest request) async {
+		var rpcRst = await call("FindOrganizationAssistantDoctorsAsync", request);
+		var result = (rpcRst as List).map((e)=>ConsultationAssistantDoctorDTO.fromJson(e as Map<String, dynamic>)).toList();
+		return result;
+	}
+
 	Future<bool> updateMyOrganizationAssistantAsync(UpdateMyOrganizationAssistantRequest request) async {
 		var rpcRst = await call("UpdateMyOrganizationAssistantAsync", request);
 		return rpcRst;
@@ -150,6 +157,18 @@ class LiveConsultationService extends JsonRpcClientBase {
 		return result;
 	}
 
+	Future<RejectLiveConsultationResult> rejectInviteLiveConsultationAsync(RejectLiveConsultationRequest request) async {
+		var rpcRst = await call("RejectInviteLiveConsultationAsync", request);
+		var result = RejectLiveConsultationResult.fromJson(rpcRst as Map<String, dynamic>);
+		return result;
+	}
+
+	Future<JoinLiveConsultationResult> joinInLiveConsultationAsync(JoinLiveConsultationRequest request) async {
+		var rpcRst = await call("JoinInLiveConsultationAsync", request);
+		var result = JoinLiveConsultationResult.fromJson(rpcRst as Map<String, dynamic>);
+		return result;
+	}
+
 	Future<CancelLiveConsultationResult> cancelLiveConsultationAsync(CancelLiveConsultationRequest request) async {
 		var rpcRst = await call("CancelLiveConsultationAsync", request);
 		var result = CancelLiveConsultationResult.fromJson(rpcRst as Map<String, dynamic>);

+ 182 - 83
lib/services/liveConsultation.m.dart

@@ -477,31 +477,50 @@ enum ConsultationStatusEnum {
 	End,
 }
 
+enum EvaluateGradeEnum {
+	UnSet,
+	Dissatisfaction,
+	General,
+	Satisfaction,
+}
+
 class ConsultationPageDTO {
 	String? consultationCode;
-	List<DataItemDTO >? patientDatas;
 	ConsultationStatusEnum consultationStatus;
 	String? patientName;
+	String? phone;
 	String? sex;
+	String? patientAge;
 	String? applyOrganizationName;
+	String? consultationTime;
+	String? expertUserName;
+	EvaluateGradeEnum consultationEvaluate;
 
 	ConsultationPageDTO({
 		this.consultationCode,
-		this.patientDatas,
 		this.consultationStatus = ConsultationStatusEnum.Applied,
 		this.patientName,
+		this.phone,
 		this.sex,
+		this.patientAge,
 		this.applyOrganizationName,
+		this.consultationTime,
+		this.expertUserName,
+		this.consultationEvaluate = EvaluateGradeEnum.UnSet,
 	});
 
 	factory ConsultationPageDTO.fromJson(Map<String, dynamic> map) {
 		return ConsultationPageDTO( 
 			consultationCode: map['ConsultationCode'],
-			patientDatas: map['PatientDatas'] != null ? (map['PatientDatas'] as List).map((e)=>DataItemDTO.fromJson(e as Map<String,dynamic>)).toList() : null,
 			consultationStatus: ConsultationStatusEnum.values.firstWhere((e) => e.index == map['ConsultationStatus']),
 			patientName: map['PatientName'],
+			phone: map['Phone'],
 			sex: map['Sex'],
+			patientAge: map['PatientAge'],
 			applyOrganizationName: map['ApplyOrganizationName'],
+			consultationTime: map['ConsultationTime'],
+			expertUserName: map['ExpertUserName'],
+			consultationEvaluate: EvaluateGradeEnum.values.firstWhere((e) => e.index == map['ConsultationEvaluate']),
 		);
 	}
 
@@ -509,15 +528,22 @@ class ConsultationPageDTO {
 		final map = Map<String, dynamic>();
 		if(consultationCode != null)
 			map['ConsultationCode'] = consultationCode;
-		if(patientDatas != null)
-			map['PatientDatas'] = patientDatas;
 		map['ConsultationStatus'] = consultationStatus.index;
 		if(patientName != null)
 			map['PatientName'] = patientName;
+		if(phone != null)
+			map['Phone'] = phone;
 		if(sex != null)
 			map['Sex'] = sex;
+		if(patientAge != null)
+			map['PatientAge'] = patientAge;
 		if(applyOrganizationName != null)
 			map['ApplyOrganizationName'] = applyOrganizationName;
+		if(consultationTime != null)
+			map['ConsultationTime'] = consultationTime;
+		if(expertUserName != null)
+			map['ExpertUserName'] = expertUserName;
+		map['ConsultationEvaluate'] = consultationEvaluate.index;
 		return map;
 	}
 }
@@ -600,26 +626,37 @@ enum QueryConsultationStatusEnum {
 }
 
 enum ConsultationQueryTypeEnum {
+	All,
 	MyApply,
 	MyArrange,
 	MyJoin,
 }
 
+enum QueryEvaluateGradeEnum {
+	All,
+	UnSet,
+	Dissatisfaction,
+	General,
+	Satisfaction,
+}
+
 class FindConsultationByPageRequest extends PageRequest{
 	String? keyword;
-	String? expertUserName;
 	DateTime? startDate;
 	DateTime? endDate;
 	QueryConsultationStatusEnum consultationStatus;
 	ConsultationQueryTypeEnum consultationQueryType;
+	QueryEvaluateGradeEnum evaluateGrade;
+	String? language;
 
 	FindConsultationByPageRequest({
 		this.keyword,
-		this.expertUserName,
 		this.startDate,
 		this.endDate,
 		this.consultationStatus = QueryConsultationStatusEnum.All,
-		this.consultationQueryType = ConsultationQueryTypeEnum.MyApply,
+		this.consultationQueryType = ConsultationQueryTypeEnum.All,
+		this.evaluateGrade = QueryEvaluateGradeEnum.All,
+		this.language,
 		int pageIndex = 0,
 		int pageSize = 0,
 		String? token,
@@ -632,11 +669,12 @@ class FindConsultationByPageRequest extends PageRequest{
 	factory FindConsultationByPageRequest.fromJson(Map<String, dynamic> map) {
 		return FindConsultationByPageRequest( 
 			keyword: map['Keyword'],
-			expertUserName: map['ExpertUserName'],
 			startDate: map['StartDate'] != null ? DateTime.parse(map['StartDate']) : null,
 			endDate: map['EndDate'] != null ? DateTime.parse(map['EndDate']) : null,
 			consultationStatus: QueryConsultationStatusEnum.values.firstWhere((e) => e.index == map['ConsultationStatus']),
 			consultationQueryType: ConsultationQueryTypeEnum.values.firstWhere((e) => e.index == map['ConsultationQueryType']),
+			evaluateGrade: QueryEvaluateGradeEnum.values.firstWhere((e) => e.index == map['EvaluateGrade']),
+			language: map['Language'],
 			pageIndex: map['PageIndex'],
 			pageSize: map['PageSize'],
 			token: map['Token'],
@@ -647,14 +685,15 @@ class FindConsultationByPageRequest extends PageRequest{
 		final map = super.toJson();
 		if(keyword != null)
 			map['Keyword'] = keyword;
-		if(expertUserName != null)
-			map['ExpertUserName'] = expertUserName;
 		if(startDate != null)
 			map['StartDate'] = JsonRpcUtils.dateFormat(startDate!);
 		if(endDate != null)
 			map['EndDate'] = JsonRpcUtils.dateFormat(endDate!);
 		map['ConsultationStatus'] = consultationStatus.index;
 		map['ConsultationQueryType'] = consultationQueryType.index;
+		map['EvaluateGrade'] = evaluateGrade.index;
+		if(language != null)
+			map['Language'] = language;
 		return map;
 	}
 }
@@ -1288,11 +1327,75 @@ class FindOrganizationAssistantsRequest extends TokenRequest{
 	}
 }
 
+class ConsultationAssistantDoctorDTO extends UserBaseDTO{
+	String? fullName;
+
+	ConsultationAssistantDoctorDTO({
+		this.fullName,
+		String? userCode,
+		String? userName,
+		String? headImageUrl,
+		DateTime? createTime,
+		DateTime? updateTime,
+	}) : super(
+			userCode: userCode,
+			userName: userName,
+			headImageUrl: headImageUrl,
+			createTime: createTime,
+			updateTime: updateTime,
+		);
+
+	factory ConsultationAssistantDoctorDTO.fromJson(Map<String, dynamic> map) {
+		return ConsultationAssistantDoctorDTO( 
+			fullName: map['FullName'],
+			userCode: map['UserCode'],
+			userName: map['UserName'],
+			headImageUrl: map['HeadImageUrl'],
+			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
+			updateTime: map['UpdateTime'] != null ? DateTime.parse(map['UpdateTime']) : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(fullName != null)
+			map['FullName'] = fullName;
+		return map;
+	}
+}
+
+class FindOrganizationAssistantDoctorsRequest extends TokenRequest{
+	String? assistantDoctorName;
+
+	FindOrganizationAssistantDoctorsRequest({
+		this.assistantDoctorName,
+		String? token,
+	}) : super(
+			token: token,
+		);
+
+	factory FindOrganizationAssistantDoctorsRequest.fromJson(Map<String, dynamic> map) {
+		return FindOrganizationAssistantDoctorsRequest( 
+			assistantDoctorName: map['AssistantDoctorName'],
+			token: map['Token'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(assistantDoctorName != null)
+			map['AssistantDoctorName'] = assistantDoctorName;
+		return map;
+	}
+}
+
 class UpdateMyOrganizationAssistantRequest extends TokenRequest{
-	String? userCode;
+	String? assistantUserCode;
+	String? assistantDoctorUserCode;
 
 	UpdateMyOrganizationAssistantRequest({
-		this.userCode,
+		this.assistantUserCode,
+		this.assistantDoctorUserCode,
 		String? token,
 	}) : super(
 			token: token,
@@ -1300,15 +1403,18 @@ class UpdateMyOrganizationAssistantRequest extends TokenRequest{
 
 	factory UpdateMyOrganizationAssistantRequest.fromJson(Map<String, dynamic> map) {
 		return UpdateMyOrganizationAssistantRequest( 
-			userCode: map['UserCode'],
+			assistantUserCode: map['AssistantUserCode'],
+			assistantDoctorUserCode: map['AssistantDoctorUserCode'],
 			token: map['Token'],
 		);
 	}
 
 	Map<String, dynamic> toJson() {
 		final map = super.toJson();
-		if(userCode != null)
-			map['UserCode'] = userCode;
+		if(assistantUserCode != null)
+			map['AssistantUserCode'] = assistantUserCode;
+		if(assistantDoctorUserCode != null)
+			map['AssistantDoctorUserCode'] = assistantDoctorUserCode;
 		return map;
 	}
 }
@@ -1579,15 +1685,15 @@ class CancelInvitingInLiveConsultationRequest extends TokenRequest{
 	}
 }
 
-class CancelLiveConsultationResult {
+class RejectLiveConsultationResult {
 	String? consultationCode;
 
-	CancelLiveConsultationResult({
+	RejectLiveConsultationResult({
 		this.consultationCode,
 	});
 
-	factory CancelLiveConsultationResult.fromJson(Map<String, dynamic> map) {
-		return CancelLiveConsultationResult( 
+	factory RejectLiveConsultationResult.fromJson(Map<String, dynamic> map) {
+		return RejectLiveConsultationResult( 
 			consultationCode: map['ConsultationCode'],
 		);
 	}
@@ -1600,18 +1706,18 @@ class CancelLiveConsultationResult {
 	}
 }
 
-class CancelLiveConsultationRequest extends TokenRequest{
+class RejectLiveConsultationRequest extends TokenRequest{
 	String? consultationCode;
 
-	CancelLiveConsultationRequest({
+	RejectLiveConsultationRequest({
 		this.consultationCode,
 		String? token,
 	}) : super(
 			token: token,
 		);
 
-	factory CancelLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
-		return CancelLiveConsultationRequest( 
+	factory RejectLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
+		return RejectLiveConsultationRequest( 
 			consultationCode: map['ConsultationCode'],
 			token: map['Token'],
 		);
@@ -1625,31 +1731,16 @@ class CancelLiveConsultationRequest extends TokenRequest{
 	}
 }
 
-class AcceptLiveConsultationResult {
+class JoinLiveConsultationResult {
 	String? consultationCode;
-	String? userCode;
-	int roomNo;
-	int appId;
-	String? userSign;
-	List<LiveConsultationMember >? memberLiveDatas;
 
-	AcceptLiveConsultationResult({
+	JoinLiveConsultationResult({
 		this.consultationCode,
-		this.userCode,
-		this.roomNo = 0,
-		this.appId = 0,
-		this.userSign,
-		this.memberLiveDatas,
 	});
 
-	factory AcceptLiveConsultationResult.fromJson(Map<String, dynamic> map) {
-		return AcceptLiveConsultationResult( 
+	factory JoinLiveConsultationResult.fromJson(Map<String, dynamic> map) {
+		return JoinLiveConsultationResult( 
 			consultationCode: map['ConsultationCode'],
-			userCode: map['UserCode'],
-			roomNo: map['RoomNo'],
-			appId: map['AppId'],
-			userSign: map['UserSign'],
-			memberLiveDatas: map['MemberLiveDatas'] != null ? (map['MemberLiveDatas'] as List).map((e)=>LiveConsultationMember.fromJson(e as Map<String,dynamic>)).toList() : null,
 		);
 	}
 
@@ -1657,31 +1748,26 @@ class AcceptLiveConsultationResult {
 		final map = Map<String, dynamic>();
 		if(consultationCode != null)
 			map['ConsultationCode'] = consultationCode;
-		if(userCode != null)
-			map['UserCode'] = userCode;
-		map['RoomNo'] = roomNo;
-		map['AppId'] = appId;
-		if(userSign != null)
-			map['UserSign'] = userSign;
-		if(memberLiveDatas != null)
-			map['MemberLiveDatas'] = memberLiveDatas;
 		return map;
 	}
 }
 
-class AcceptLiveConsultationRequest extends TokenRequest{
+class JoinLiveConsultationRequest extends TokenRequest{
 	String? consultationCode;
+	String? joinerCode;
 
-	AcceptLiveConsultationRequest({
+	JoinLiveConsultationRequest({
 		this.consultationCode,
+		this.joinerCode,
 		String? token,
 	}) : super(
 			token: token,
 		);
 
-	factory AcceptLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
-		return AcceptLiveConsultationRequest( 
+	factory JoinLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
+		return JoinLiveConsultationRequest( 
 			consultationCode: map['ConsultationCode'],
+			joinerCode: map['JoinerCode'],
 			token: map['Token'],
 		);
 	}
@@ -1690,19 +1776,21 @@ class AcceptLiveConsultationRequest extends TokenRequest{
 		final map = super.toJson();
 		if(consultationCode != null)
 			map['ConsultationCode'] = consultationCode;
+		if(joinerCode != null)
+			map['JoinerCode'] = joinerCode;
 		return map;
 	}
 }
 
-class RejectLiveConsultationResult {
+class CancelLiveConsultationResult {
 	String? consultationCode;
 
-	RejectLiveConsultationResult({
+	CancelLiveConsultationResult({
 		this.consultationCode,
 	});
 
-	factory RejectLiveConsultationResult.fromJson(Map<String, dynamic> map) {
-		return RejectLiveConsultationResult( 
+	factory CancelLiveConsultationResult.fromJson(Map<String, dynamic> map) {
+		return CancelLiveConsultationResult( 
 			consultationCode: map['ConsultationCode'],
 		);
 	}
@@ -1715,18 +1803,18 @@ class RejectLiveConsultationResult {
 	}
 }
 
-class RejectLiveConsultationRequest extends TokenRequest{
+class CancelLiveConsultationRequest extends TokenRequest{
 	String? consultationCode;
 
-	RejectLiveConsultationRequest({
+	CancelLiveConsultationRequest({
 		this.consultationCode,
 		String? token,
 	}) : super(
 			token: token,
 		);
 
-	factory RejectLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
-		return RejectLiveConsultationRequest( 
+	factory CancelLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
+		return CancelLiveConsultationRequest( 
 			consultationCode: map['ConsultationCode'],
 			token: map['Token'],
 		);
@@ -1740,16 +1828,31 @@ class RejectLiveConsultationRequest extends TokenRequest{
 	}
 }
 
-class JoinLiveConsultationResult {
+class AcceptLiveConsultationResult {
 	String? consultationCode;
+	String? userCode;
+	int roomNo;
+	int appId;
+	String? userSign;
+	List<LiveConsultationMember >? memberLiveDatas;
 
-	JoinLiveConsultationResult({
+	AcceptLiveConsultationResult({
 		this.consultationCode,
+		this.userCode,
+		this.roomNo = 0,
+		this.appId = 0,
+		this.userSign,
+		this.memberLiveDatas,
 	});
 
-	factory JoinLiveConsultationResult.fromJson(Map<String, dynamic> map) {
-		return JoinLiveConsultationResult( 
+	factory AcceptLiveConsultationResult.fromJson(Map<String, dynamic> map) {
+		return AcceptLiveConsultationResult( 
 			consultationCode: map['ConsultationCode'],
+			userCode: map['UserCode'],
+			roomNo: map['RoomNo'],
+			appId: map['AppId'],
+			userSign: map['UserSign'],
+			memberLiveDatas: map['MemberLiveDatas'] != null ? (map['MemberLiveDatas'] as List).map((e)=>LiveConsultationMember.fromJson(e as Map<String,dynamic>)).toList() : null,
 		);
 	}
 
@@ -1757,26 +1860,31 @@ class JoinLiveConsultationResult {
 		final map = Map<String, dynamic>();
 		if(consultationCode != null)
 			map['ConsultationCode'] = consultationCode;
+		if(userCode != null)
+			map['UserCode'] = userCode;
+		map['RoomNo'] = roomNo;
+		map['AppId'] = appId;
+		if(userSign != null)
+			map['UserSign'] = userSign;
+		if(memberLiveDatas != null)
+			map['MemberLiveDatas'] = memberLiveDatas;
 		return map;
 	}
 }
 
-class JoinLiveConsultationRequest extends TokenRequest{
+class AcceptLiveConsultationRequest extends TokenRequest{
 	String? consultationCode;
-	String? joinerCode;
 
-	JoinLiveConsultationRequest({
+	AcceptLiveConsultationRequest({
 		this.consultationCode,
-		this.joinerCode,
 		String? token,
 	}) : super(
 			token: token,
 		);
 
-	factory JoinLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
-		return JoinLiveConsultationRequest( 
+	factory AcceptLiveConsultationRequest.fromJson(Map<String, dynamic> map) {
+		return AcceptLiveConsultationRequest( 
 			consultationCode: map['ConsultationCode'],
-			joinerCode: map['JoinerCode'],
 			token: map['Token'],
 		);
 	}
@@ -1785,8 +1893,6 @@ class JoinLiveConsultationRequest extends TokenRequest{
 		final map = super.toJson();
 		if(consultationCode != null)
 			map['ConsultationCode'] = consultationCode;
-		if(joinerCode != null)
-			map['JoinerCode'] = joinerCode;
 		return map;
 	}
 }
@@ -2415,13 +2521,6 @@ class UpdateConsultationEvaluateRequest extends TokenRequest{
 	}
 }
 
-enum EvaluateGradeEnum {
-	UnSet,
-	Dissatisfaction,
-	General,
-	Satisfaction,
-}
-
 class ConsultationEvaluateDTO {
 	String? consultationEvaluateCode;
 	String? consultationRecordCode;

+ 150 - 88
lib/services/notification.m.dart

@@ -21,6 +21,8 @@ enum NotificationTypeEnum {
 	JoinLiveConsultationNotification,
 	NetworkErrConsultationNotification,
 	LeaveConsultationNotification,
+	JoinInLiveConsultationNotification,
+	RejectInviteLiveConsultationNotification,
 	ApplyConsultationNotification,
 	ApprovalApplyConsultationNotification,
 	InviteeConsultationNotification,
@@ -771,12 +773,14 @@ class VideoDeviceOutputInfo {
 	VideoDeviceSourceTypeEnum videoDeviceSourceType;
 	int outputWidth;
 	int outputHeight;
+	String? videoDeviceSign;
 
 	VideoDeviceOutputInfo({
 		this.videoDeviceId,
 		this.videoDeviceSourceType = VideoDeviceSourceTypeEnum.Desktop,
 		this.outputWidth = 0,
 		this.outputHeight = 0,
+		this.videoDeviceSign,
 	});
 
 	factory VideoDeviceOutputInfo.fromJson(Map<String, dynamic> map) {
@@ -785,6 +789,7 @@ class VideoDeviceOutputInfo {
 			videoDeviceSourceType: VideoDeviceSourceTypeEnum.values.firstWhere((e) => e.index == map['VideoDeviceSourceType']),
 			outputWidth: map['OutputWidth'],
 			outputHeight: map['OutputHeight'],
+			videoDeviceSign: map['VideoDeviceSign'],
 		);
 	}
 
@@ -795,6 +800,8 @@ class VideoDeviceOutputInfo {
 		map['VideoDeviceSourceType'] = videoDeviceSourceType.index;
 		map['OutputWidth'] = outputWidth;
 		map['OutputHeight'] = outputHeight;
+		if(videoDeviceSign != null)
+			map['VideoDeviceSign'] = videoDeviceSign;
 		return map;
 	}
 }
@@ -927,17 +934,15 @@ class InviteInLiveConsultationNotification {
 	NotificationTypeEnum notificationType;
 	String? consultationCode;
 	int roomNo;
-	LiveConsultationMember? initiator;
-	List<LiveConsultationMember >? userLiveData;
-	List<LiveConsultationMember >? deviceLiveData;
+	LiveConsultationMember? operator;
+	List<LiveConsultationMember >? memberLiveDatas;
 
 	InviteInLiveConsultationNotification({
 		this.notificationType = NotificationTypeEnum.ChatMsgNotification,
 		this.consultationCode,
 		this.roomNo = 0,
-		this.initiator,
-		this.userLiveData,
-		this.deviceLiveData,
+		this.operator,
+		this.memberLiveDatas,
 	});
 
 	factory InviteInLiveConsultationNotification.fromJson(Map<String, dynamic> map) {
@@ -945,9 +950,8 @@ class InviteInLiveConsultationNotification {
 			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
 			consultationCode: map['ConsultationCode'],
 			roomNo: map['RoomNo'],
-			initiator: map['Initiator'] != null ? LiveConsultationMember.fromJson(map['Initiator']) : null,
-			userLiveData: map['UserLiveData'] != null ? (map['UserLiveData'] as List).map((e)=>LiveConsultationMember.fromJson(e as Map<String,dynamic>)).toList() : null,
-			deviceLiveData: map['DeviceLiveData'] != null ? (map['DeviceLiveData'] as List).map((e)=>LiveConsultationMember.fromJson(e as Map<String,dynamic>)).toList() : null,
+			operator: map['Operator'] != null ? LiveConsultationMember.fromJson(map['Operator']) : null,
+			memberLiveDatas: map['MemberLiveDatas'] != null ? (map['MemberLiveDatas'] as List).map((e)=>LiveConsultationMember.fromJson(e as Map<String,dynamic>)).toList() : null,
 		);
 	}
 
@@ -957,12 +961,143 @@ class InviteInLiveConsultationNotification {
 		if(consultationCode != null)
 			map['ConsultationCode'] = consultationCode;
 		map['RoomNo'] = roomNo;
-		if(initiator != null)
-			map['Initiator'] = initiator;
-		if(userLiveData != null)
-			map['UserLiveData'] = userLiveData;
-		if(deviceLiveData != null)
-			map['DeviceLiveData'] = deviceLiveData;
+		if(operator != null)
+			map['Operator'] = operator;
+		if(memberLiveDatas != null)
+			map['MemberLiveDatas'] = memberLiveDatas;
+		return map;
+	}
+}
+
+class LiveConsultationJoinerInfo extends LiveConsultationMemberInfo{
+	bool isOnline;
+	bool mute;
+	bool isInitiator;
+	LoginSource loginSource;
+	LiveData? liveData;
+
+	LiveConsultationJoinerInfo({
+		this.isOnline = false,
+		this.mute = false,
+		this.isInitiator = false,
+		this.loginSource = LoginSource.PC,
+		this.liveData,
+		String? id,
+		String? name,
+		String? headImageUrl,
+	}) : super(
+			id: id,
+			name: name,
+			headImageUrl: headImageUrl,
+		);
+
+	factory LiveConsultationJoinerInfo.fromJson(Map<String, dynamic> map) {
+		return LiveConsultationJoinerInfo( 
+			isOnline: map['IsOnline'],
+			mute: map['Mute'],
+			isInitiator: map['IsInitiator'],
+			loginSource: LoginSource.values.firstWhere((e) => e.index == map['LoginSource']),
+			liveData: map['LiveData'] != null ? LiveData.fromJson(map['LiveData']) : null,
+			id: map['Id'],
+			name: map['Name'],
+			headImageUrl: map['HeadImageUrl'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		map['IsOnline'] = isOnline;
+		map['Mute'] = mute;
+		map['IsInitiator'] = isInitiator;
+		map['LoginSource'] = loginSource.index;
+		if(liveData != null)
+			map['LiveData'] = liveData;
+		return map;
+	}
+}
+
+class JoinInLiveConsultationNotification {
+	NotificationTypeEnum notificationType;
+	String? consultationCode;
+	LiveConsultationJoinerInfo? joiner;
+
+	JoinInLiveConsultationNotification({
+		this.notificationType = NotificationTypeEnum.ChatMsgNotification,
+		this.consultationCode,
+		this.joiner,
+	});
+
+	factory JoinInLiveConsultationNotification.fromJson(Map<String, dynamic> map) {
+		return JoinInLiveConsultationNotification( 
+			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
+			consultationCode: map['ConsultationCode'],
+			joiner: map['Joiner'] != null ? LiveConsultationJoinerInfo.fromJson(map['Joiner']) : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		map['NotificationType'] = notificationType.index;
+		if(consultationCode != null)
+			map['ConsultationCode'] = consultationCode;
+		if(joiner != null)
+			map['Joiner'] = joiner;
+		return map;
+	}
+}
+
+class LiveConsultationRejecterInfo extends LiveConsultationMemberInfo{
+
+	LiveConsultationRejecterInfo({
+		String? id,
+		String? name,
+		String? headImageUrl,
+	}) : super(
+			id: id,
+			name: name,
+			headImageUrl: headImageUrl,
+		);
+
+	factory LiveConsultationRejecterInfo.fromJson(Map<String, dynamic> map) {
+		return LiveConsultationRejecterInfo( 
+			id: map['Id'],
+			name: map['Name'],
+			headImageUrl: map['HeadImageUrl'],
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		return map;
+	}
+}
+
+class RejectInviteLiveConsultationNotification {
+	NotificationTypeEnum notificationType;
+	String? consultationCode;
+	LiveConsultationRejecterInfo? rejecter;
+
+	RejectInviteLiveConsultationNotification({
+		this.notificationType = NotificationTypeEnum.ChatMsgNotification,
+		this.consultationCode,
+		this.rejecter,
+	});
+
+	factory RejectInviteLiveConsultationNotification.fromJson(Map<String, dynamic> map) {
+		return RejectInviteLiveConsultationNotification( 
+			notificationType: NotificationTypeEnum.values.firstWhere((e) => e.index == map['NotificationType']),
+			consultationCode: map['ConsultationCode'],
+			rejecter: map['Rejecter'] != null ? LiveConsultationRejecterInfo.fromJson(map['Rejecter']) : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = Map<String, dynamic>();
+		map['NotificationType'] = notificationType.index;
+		if(consultationCode != null)
+			map['ConsultationCode'] = consultationCode;
+		if(rejecter != null)
+			map['Rejecter'] = rejecter;
 		return map;
 	}
 }
@@ -1027,53 +1162,6 @@ class InviteLiveConsultationToDeviceNotification {
 	}
 }
 
-class LiveConsultationJoinerInfo extends LiveConsultationMemberInfo{
-	bool isOnline;
-	bool mute;
-	bool isInitiator;
-	LoginSource loginSource;
-	LiveData? liveData;
-
-	LiveConsultationJoinerInfo({
-		this.isOnline = false,
-		this.mute = false,
-		this.isInitiator = false,
-		this.loginSource = LoginSource.PC,
-		this.liveData,
-		String? id,
-		String? name,
-		String? headImageUrl,
-	}) : super(
-			id: id,
-			name: name,
-			headImageUrl: headImageUrl,
-		);
-
-	factory LiveConsultationJoinerInfo.fromJson(Map<String, dynamic> map) {
-		return LiveConsultationJoinerInfo( 
-			isOnline: map['IsOnline'],
-			mute: map['Mute'],
-			isInitiator: map['IsInitiator'],
-			loginSource: LoginSource.values.firstWhere((e) => e.index == map['LoginSource']),
-			liveData: map['LiveData'] != null ? LiveData.fromJson(map['LiveData']) : null,
-			id: map['Id'],
-			name: map['Name'],
-			headImageUrl: map['HeadImageUrl'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		map['IsOnline'] = isOnline;
-		map['Mute'] = mute;
-		map['IsInitiator'] = isInitiator;
-		map['LoginSource'] = loginSource.index;
-		if(liveData != null)
-			map['LiveData'] = liveData;
-		return map;
-	}
-}
-
 class JoinLiveConsultationNotification {
 	NotificationTypeEnum notificationType;
 	String? consultationCode;
@@ -1216,32 +1304,6 @@ class NetworkErrConsultationNotification {
 	}
 }
 
-class LiveConsultationRejecterInfo extends LiveConsultationMemberInfo{
-
-	LiveConsultationRejecterInfo({
-		String? id,
-		String? name,
-		String? headImageUrl,
-	}) : super(
-			id: id,
-			name: name,
-			headImageUrl: headImageUrl,
-		);
-
-	factory LiveConsultationRejecterInfo.fromJson(Map<String, dynamic> map) {
-		return LiveConsultationRejecterInfo( 
-			id: map['Id'],
-			name: map['Name'],
-			headImageUrl: map['HeadImageUrl'],
-		);
-	}
-
-	Map<String, dynamic> toJson() {
-		final map = super.toJson();
-		return map;
-	}
-}
-
 class RejectLiveConsultationNotification {
 	NotificationTypeEnum notificationType;
 	String? consultationCode;

+ 78 - 76
lib/services/notificationdecoder.dart

@@ -1,113 +1,115 @@
 import 'notification.m.dart';
 
 typedef _ModelBuilder<T> = T Function(Map<String, dynamic> map);
-
 class NotificationDecoder {
-  NotificationDecoder._();
+	NotificationDecoder._();
+
+	static final _builders = _ModelBuilderCollection();
 
-  static final _builders = _ModelBuilderCollection();
+	static T decode<T>(Map<String, dynamic> map) {
+		final type = decodeType(map);
+		final builder = _builders.find(type);
+		final model = builder.call(map) as T;
+		return model;
+	}
+	static NotificationTypeEnum decodeType(Map<String, dynamic> map) {
+		final typeInt = map['NotificationType'] as int;
+		return NotificationTypeEnum.values[typeInt];
+	}
 
-  static T decode<T>(Map<String, dynamic> map) {
-    final type = decodeType(map);
-    final builder = _builders.find(type);
-    final model = builder.call(map) as T;
-    return model;
-  }
+	static void setup() {
+		/** Register notification model builders here */
+		_builders.add(NotificationTypeEnum.ChatMsgNotification,
+				(map) => ChatMsgNotification.fromJson(map));
 
-  static NotificationTypeEnum decodeType(Map<String, dynamic> map) {
-    final typeInt = map['NotificationType'] as int;
-    return NotificationTypeEnum.values[typeInt];
-  }
+		_builders.add(NotificationTypeEnum.ConnectionNotification,
+				(map) => ConnectionNotification.fromJson(map));
 
-  static void setup() {
-    /** Register notification model builders here */
-    _builders.add(NotificationTypeEnum.ChatMsgNotification,
-        (map) => ChatMsgNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.DisconnectNotification,
+				(map) => DisconnectNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.ConnectionNotification,
-        (map) => ConnectionNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.ExamRecordsFinishedNotification,
+				(map) => ExamRecordsFinishedNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.DisconnectNotification,
-        (map) => DisconnectNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.PasswordExpiredWarningNotification,
+				(map) => PasswordExpiredWarningNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.ExamRecordsFinishedNotification,
-        (map) => ExamRecordsFinishedNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.TokenReplacedNotification,
+				(map) => TokenReplacedNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.PasswordExpiredWarningNotification,
-        (map) => PasswordExpiredWarningNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.ApplyConsultationNotification,
+				(map) => ApplyConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.TokenReplacedNotification,
-        (map) => TokenReplacedNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.ApprovalApplyConsultationNotification,
+				(map) => ApprovalApplyConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.ApplyConsultationNotification,
-        (map) => ApplyConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.ConsultationRemindNotification,
+				(map) => ConsultationRemindNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.ApprovalApplyConsultationNotification,
-        (map) => ApprovalApplyConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.InviteeApproveApplyConsultationNotification,
+				(map) => InviteeApproveApplyConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.ConsultationRemindNotification,
-        (map) => ConsultationRemindNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.InviteeConsultationNotification,
+				(map) => InviteeConsultationNotification.fromJson(map));
 
-    _builders.add(
-        NotificationTypeEnum.InviteeApproveApplyConsultationNotification,
-        (map) => InviteeApproveApplyConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.InviteeRejectApplyConsultationNotification,
+				(map) => InviteeRejectApplyConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.InviteeConsultationNotification,
-        (map) => InviteeConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.RejectApplyConsultationNotification,
+				(map) => RejectApplyConsultationNotification.fromJson(map));
 
-    _builders.add(
-        NotificationTypeEnum.InviteeRejectApplyConsultationNotification,
-        (map) => InviteeRejectApplyConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.AcceptLiveConsultationNotification,
+				(map) => AcceptLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.RejectApplyConsultationNotification,
-        (map) => RejectApplyConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.CancelInvitingInLiveConsultationNotification,
+				(map) => CancelInvitingInLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.AcceptLiveConsultationNotification,
-        (map) => AcceptLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.CancelLiveConsultationNotification,
+				(map) => CancelLiveConsultationNotification.fromJson(map));
 
-    _builders.add(
-        NotificationTypeEnum.CancelInvitingInLiveConsultationNotification,
-        (map) => CancelInvitingInLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.CloseLiveConsultationNotification,
+				(map) => CloseLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.CancelLiveConsultationNotification,
-        (map) => CancelLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.InviteLiveConsultationNotification,
+				(map) => InviteLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.CloseLiveConsultationNotification,
-        (map) => CloseLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.InviteInLiveConsultationNotification,
+				(map) => InviteInLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.InviteLiveConsultationNotification,
-        (map) => InviteLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.JoinInLiveConsultationNotification,
+				(map) => JoinInLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.InviteInLiveConsultationNotification,
-        (map) => InviteInLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.RejectInviteLiveConsultationNotification,
+				(map) => RejectInviteLiveConsultationNotification.fromJson(map));
 
-    _builders.add(
-        NotificationTypeEnum.InviteLiveConsultationToDeviceNotification,
-        (map) => InviteLiveConsultationToDeviceNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.InviteLiveConsultationToDeviceNotification,
+				(map) => InviteLiveConsultationToDeviceNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.JoinLiveConsultationNotification,
-        (map) => JoinLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.JoinLiveConsultationNotification,
+				(map) => JoinLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.LeaveConsultationNotification,
-        (map) => LeaveLiveConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.LeaveConsultationNotification,
+				(map) => LeaveLiveConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.NetworkErrConsultationNotification,
-        (map) => NetworkErrConsultationNotification.fromJson(map));
+		_builders.add(NotificationTypeEnum.NetworkErrConsultationNotification,
+				(map) => NetworkErrConsultationNotification.fromJson(map));
 
-    _builders.add(NotificationTypeEnum.RejectLiveConsultationNotification,
-        (map) => RejectLiveConsultationNotification.fromJson(map));
-  }
+		_builders.add(NotificationTypeEnum.RejectLiveConsultationNotification,
+				(map) => RejectLiveConsultationNotification.fromJson(map));
+
+	}
 }
 
 class _ModelBuilderCollection {
-  final Map<NotificationTypeEnum, _ModelBuilder> _source = {};
+	final Map<NotificationTypeEnum, _ModelBuilder> _source = {};
 
-  void add(NotificationTypeEnum type, _ModelBuilder builder) {
-    _source[type] = builder;
-  }
+	void add(NotificationTypeEnum type, _ModelBuilder builder) {
+		_source[type] = builder;
+	}
 
-  _ModelBuilder find(NotificationTypeEnum type) {
-    final builder = _source[type];
-    return builder!;
-  }
+	_ModelBuilder find(NotificationTypeEnum type) {
+		final builder = _source[type];
+		return builder!;
+	}
 }
+

+ 14 - 0
lib/services/other.m.dart

@@ -754,6 +754,7 @@ class SignUpRequest extends UserDTO{
 		List<String >? deletePatientCodes,
 		bool isBatchExportDiagnoseData = false,
 		String? bindAssistantUserCode,
+		String? bindAssistantDoctorUserCode,
 		LoginLockInfoDTO? loginLockInfo,
 		String? signature,
 		String? language,
@@ -788,6 +789,7 @@ class SignUpRequest extends UserDTO{
 			deletePatientCodes: deletePatientCodes,
 			isBatchExportDiagnoseData: isBatchExportDiagnoseData,
 			bindAssistantUserCode: bindAssistantUserCode,
+			bindAssistantDoctorUserCode: bindAssistantDoctorUserCode,
 			loginLockInfo: loginLockInfo,
 			signature: signature,
 			language: language,
@@ -825,6 +827,7 @@ class SignUpRequest extends UserDTO{
 			deletePatientCodes: map['DeletePatientCodes'] != null ? map['DeletePatientCodes'].cast<String>().toList() : null,
 			isBatchExportDiagnoseData: map['IsBatchExportDiagnoseData'],
 			bindAssistantUserCode: map['BindAssistantUserCode'],
+			bindAssistantDoctorUserCode: map['BindAssistantDoctorUserCode'],
 			loginLockInfo: map['LoginLockInfo'] != null ? LoginLockInfoDTO.fromJson(map['LoginLockInfo']) : null,
 			signature: map['Signature'],
 			language: map['Language'],
@@ -4256,6 +4259,7 @@ class ManageUserInfoDTO extends UserDTO{
 		bool isDirector = false,
 		List<String >? deletePatientCodes,
 		String? bindAssistantUserCode,
+		String? bindAssistantDoctorUserCode,
 		LoginLockInfoDTO? loginLockInfo,
 		String? signature,
 		String? language,
@@ -4290,6 +4294,7 @@ class ManageUserInfoDTO extends UserDTO{
 			deletePatientCodes: deletePatientCodes,
 			isBatchExportDiagnoseData: isBatchExportDiagnoseData,
 			bindAssistantUserCode: bindAssistantUserCode,
+			bindAssistantDoctorUserCode: bindAssistantDoctorUserCode,
 			loginLockInfo: loginLockInfo,
 			signature: signature,
 			language: language,
@@ -4336,6 +4341,7 @@ class ManageUserInfoDTO extends UserDTO{
 			isDirector: map['IsDirector'],
 			deletePatientCodes: map['DeletePatientCodes'] != null ? map['DeletePatientCodes'].cast<String>().toList() : null,
 			bindAssistantUserCode: map['BindAssistantUserCode'],
+			bindAssistantDoctorUserCode: map['BindAssistantDoctorUserCode'],
 			loginLockInfo: map['LoginLockInfo'] != null ? LoginLockInfoDTO.fromJson(map['LoginLockInfo']) : null,
 			signature: map['Signature'],
 			language: map['Language'],
@@ -4409,6 +4415,7 @@ class ModifyUserRequest extends ManageUserInfoDTO{
 		bool isDirector = false,
 		List<String >? deletePatientCodes,
 		String? bindAssistantUserCode,
+		String? bindAssistantDoctorUserCode,
 		LoginLockInfoDTO? loginLockInfo,
 		String? signature,
 		String? language,
@@ -4452,6 +4459,7 @@ class ModifyUserRequest extends ManageUserInfoDTO{
 			isDirector: isDirector,
 			deletePatientCodes: deletePatientCodes,
 			bindAssistantUserCode: bindAssistantUserCode,
+			bindAssistantDoctorUserCode: bindAssistantDoctorUserCode,
 			loginLockInfo: loginLockInfo,
 			signature: signature,
 			language: language,
@@ -4499,6 +4507,7 @@ class ModifyUserRequest extends ManageUserInfoDTO{
 			isDirector: map['IsDirector'],
 			deletePatientCodes: map['DeletePatientCodes'] != null ? map['DeletePatientCodes'].cast<String>().toList() : null,
 			bindAssistantUserCode: map['BindAssistantUserCode'],
+			bindAssistantDoctorUserCode: map['BindAssistantDoctorUserCode'],
 			loginLockInfo: map['LoginLockInfo'] != null ? LoginLockInfoDTO.fromJson(map['LoginLockInfo']) : null,
 			signature: map['Signature'],
 			language: map['Language'],
@@ -7527,6 +7536,7 @@ class UserPasswordDTO extends BaseDTO{
 	List<String >? deletePatientCodes;
 	bool isBatchExportDiagnoseData;
 	String? bindAssistantUserCode;
+	String? bindAssistantDoctorUserCode;
 	DateTime? passwordUpdateTime;
 	List<String >? passwordRecords;
 	String? signature;
@@ -7557,6 +7567,7 @@ class UserPasswordDTO extends BaseDTO{
 		this.deletePatientCodes,
 		this.isBatchExportDiagnoseData = false,
 		this.bindAssistantUserCode,
+		this.bindAssistantDoctorUserCode,
 		this.passwordUpdateTime,
 		this.passwordRecords,
 		this.signature,
@@ -7594,6 +7605,7 @@ class UserPasswordDTO extends BaseDTO{
 			deletePatientCodes: map['DeletePatientCodes'] != null ? map['DeletePatientCodes'].cast<String>().toList() : null,
 			isBatchExportDiagnoseData: map['IsBatchExportDiagnoseData'],
 			bindAssistantUserCode: map['BindAssistantUserCode'],
+			bindAssistantDoctorUserCode: map['BindAssistantDoctorUserCode'],
 			passwordUpdateTime: map['PasswordUpdateTime'] != null ? DateTime.parse(map['PasswordUpdateTime']) : null,
 			passwordRecords: map['PasswordRecords'] != null ? map['PasswordRecords'].cast<String>().toList() : null,
 			signature: map['Signature'],
@@ -7648,6 +7660,8 @@ class UserPasswordDTO extends BaseDTO{
 		map['IsBatchExportDiagnoseData'] = isBatchExportDiagnoseData;
 		if(bindAssistantUserCode != null)
 			map['BindAssistantUserCode'] = bindAssistantUserCode;
+		if(bindAssistantDoctorUserCode != null)
+			map['BindAssistantDoctorUserCode'] = bindAssistantDoctorUserCode;
 		if(passwordUpdateTime != null)
 			map['PasswordUpdateTime'] = JsonRpcUtils.dateFormat(passwordUpdateTime!);
 		if(passwordRecords != null)

+ 3 - 2
lib/services/user.dart

@@ -26,6 +26,7 @@ class UserService extends JsonRpcClientBase {
 		FJsonConvert.setDecoder((map) => PageResult<ShareDeviceUserDTO>.fromJson(map));
 		FJsonConvert.setDecoder((map) => ShareDeviceUserDTO.fromJson(map));
 		FJsonConvert.setDecoder((map) => UserFeatureInfoResult.fromJson(map));
+		FJsonConvert.setDecoder((map) => UserInfoByCodeDTO.fromJson(map));
 	}
 
 	Future<bool> heartRateAsync(TokenRequest request) async {
@@ -77,9 +78,9 @@ class UserService extends JsonRpcClientBase {
 		return result;
 	}
 
-	Future<UserDTO> getUserByCodeAsync(GetUserByCodeRequest request) async {
+	Future<UserInfoByCodeDTO> getUserByCodeAsync(GetUserByCodeRequest request) async {
 		var rpcRst = await call("GetUserByCodeAsync", request);
-		var result = UserDTO.fromJson(rpcRst as Map<String, dynamic>);
+		var result = UserInfoByCodeDTO.fromJson(rpcRst as Map<String, dynamic>);
 		return result;
 	}
 

+ 137 - 0
lib/services/user.m.dart

@@ -58,6 +58,7 @@ class UserDTO extends UserBaseDTO{
 	List<String >? deletePatientCodes;
 	bool isBatchExportDiagnoseData;
 	String? bindAssistantUserCode;
+	String? bindAssistantDoctorUserCode;
 	LoginLockInfoDTO? loginLockInfo;
 	String? signature;
 	String? language;
@@ -88,6 +89,7 @@ class UserDTO extends UserBaseDTO{
 		this.deletePatientCodes,
 		this.isBatchExportDiagnoseData = false,
 		this.bindAssistantUserCode,
+		this.bindAssistantDoctorUserCode,
 		this.loginLockInfo,
 		this.signature,
 		this.language,
@@ -131,6 +133,7 @@ class UserDTO extends UserBaseDTO{
 			deletePatientCodes: map['DeletePatientCodes'] != null ? map['DeletePatientCodes'].cast<String>().toList() : null,
 			isBatchExportDiagnoseData: map['IsBatchExportDiagnoseData'],
 			bindAssistantUserCode: map['BindAssistantUserCode'],
+			bindAssistantDoctorUserCode: map['BindAssistantDoctorUserCode'],
 			loginLockInfo: map['LoginLockInfo'] != null ? LoginLockInfoDTO.fromJson(map['LoginLockInfo']) : null,
 			signature: map['Signature'],
 			language: map['Language'],
@@ -188,6 +191,8 @@ class UserDTO extends UserBaseDTO{
 		map['IsBatchExportDiagnoseData'] = isBatchExportDiagnoseData;
 		if(bindAssistantUserCode != null)
 			map['BindAssistantUserCode'] = bindAssistantUserCode;
+		if(bindAssistantDoctorUserCode != null)
+			map['BindAssistantDoctorUserCode'] = bindAssistantDoctorUserCode;
 		if(loginLockInfo != null)
 			map['LoginLockInfo'] = loginLockInfo;
 		if(signature != null)
@@ -303,6 +308,7 @@ class UserExtendDTO extends UserDTO{
 		List<String >? deletePatientCodes,
 		bool isBatchExportDiagnoseData = false,
 		String? bindAssistantUserCode,
+		String? bindAssistantDoctorUserCode,
 		LoginLockInfoDTO? loginLockInfo,
 		String? signature,
 		String? language,
@@ -337,6 +343,7 @@ class UserExtendDTO extends UserDTO{
 			deletePatientCodes: deletePatientCodes,
 			isBatchExportDiagnoseData: isBatchExportDiagnoseData,
 			bindAssistantUserCode: bindAssistantUserCode,
+			bindAssistantDoctorUserCode: bindAssistantDoctorUserCode,
 			loginLockInfo: loginLockInfo,
 			signature: signature,
 			language: language,
@@ -375,6 +382,7 @@ class UserExtendDTO extends UserDTO{
 			deletePatientCodes: map['DeletePatientCodes'] != null ? map['DeletePatientCodes'].cast<String>().toList() : null,
 			isBatchExportDiagnoseData: map['IsBatchExportDiagnoseData'],
 			bindAssistantUserCode: map['BindAssistantUserCode'],
+			bindAssistantDoctorUserCode: map['BindAssistantDoctorUserCode'],
 			loginLockInfo: map['LoginLockInfo'] != null ? LoginLockInfoDTO.fromJson(map['LoginLockInfo']) : null,
 			signature: map['Signature'],
 			language: map['Language'],
@@ -681,6 +689,135 @@ class UserFeatureInfoResult {
 	}
 }
 
+class UserInfoByCodeDTO extends UserDTO{
+	String? bindAssistantUserName;
+	String? bindAssistantDoctorUserName;
+
+	UserInfoByCodeDTO({
+		this.bindAssistantUserName,
+		this.bindAssistantDoctorUserName,
+		String? phone,
+		String? email,
+		String? nickName,
+		String? fullName,
+		String? organizationCode,
+		String? organizationName,
+		String? rootOrganizationCode,
+		String? rootOrganizationName,
+		List<String >? authorityGroups,
+		List<String >? bindDevices,
+		String? lastIP,
+		int logintimes = 0,
+		UserInfoStateEnum userState = UserInfoStateEnum.Nonactivated,
+		List<String >? roleCodes,
+		List<String >? rankCodes,
+		List<String >? positionCodes,
+		ApplyStateEnum applyState = ApplyStateEnum.NotApply,
+		String? rankName,
+		String? positionName,
+		bool isDirector = false,
+		List<String >? fieldList,
+		List<String >? deletePatientCodes,
+		bool isBatchExportDiagnoseData = false,
+		String? bindAssistantUserCode,
+		String? bindAssistantDoctorUserCode,
+		LoginLockInfoDTO? loginLockInfo,
+		String? signature,
+		String? language,
+		bool enableReportLabel = false,
+		String? userCode,
+		String? userName,
+		String? headImageUrl,
+		DateTime? createTime,
+		DateTime? updateTime,
+	}) : super(
+			phone: phone,
+			email: email,
+			nickName: nickName,
+			fullName: fullName,
+			organizationCode: organizationCode,
+			organizationName: organizationName,
+			rootOrganizationCode: rootOrganizationCode,
+			rootOrganizationName: rootOrganizationName,
+			authorityGroups: authorityGroups,
+			bindDevices: bindDevices,
+			lastIP: lastIP,
+			logintimes: logintimes,
+			userState: userState,
+			roleCodes: roleCodes,
+			rankCodes: rankCodes,
+			positionCodes: positionCodes,
+			applyState: applyState,
+			rankName: rankName,
+			positionName: positionName,
+			isDirector: isDirector,
+			fieldList: fieldList,
+			deletePatientCodes: deletePatientCodes,
+			isBatchExportDiagnoseData: isBatchExportDiagnoseData,
+			bindAssistantUserCode: bindAssistantUserCode,
+			bindAssistantDoctorUserCode: bindAssistantDoctorUserCode,
+			loginLockInfo: loginLockInfo,
+			signature: signature,
+			language: language,
+			enableReportLabel: enableReportLabel,
+			userCode: userCode,
+			userName: userName,
+			headImageUrl: headImageUrl,
+			createTime: createTime,
+			updateTime: updateTime,
+		);
+
+	factory UserInfoByCodeDTO.fromJson(Map<String, dynamic> map) {
+		return UserInfoByCodeDTO( 
+			bindAssistantUserName: map['BindAssistantUserName'],
+			bindAssistantDoctorUserName: map['BindAssistantDoctorUserName'],
+			phone: map['Phone'],
+			email: map['Email'],
+			nickName: map['NickName'],
+			fullName: map['FullName'],
+			organizationCode: map['OrganizationCode'],
+			organizationName: map['OrganizationName'],
+			rootOrganizationCode: map['RootOrganizationCode'],
+			rootOrganizationName: map['RootOrganizationName'],
+			authorityGroups: map['AuthorityGroups'] != null ? map['AuthorityGroups'].cast<String>().toList() : null,
+			bindDevices: map['BindDevices'] != null ? map['BindDevices'].cast<String>().toList() : null,
+			lastIP: map['LastIP'],
+			logintimes: map['Logintimes'],
+			userState: UserInfoStateEnum.values.firstWhere((e) => e.index == map['UserState']),
+			roleCodes: map['RoleCodes'] != null ? map['RoleCodes'].cast<String>().toList() : null,
+			rankCodes: map['RankCodes'] != null ? map['RankCodes'].cast<String>().toList() : null,
+			positionCodes: map['PositionCodes'] != null ? map['PositionCodes'].cast<String>().toList() : null,
+			applyState: ApplyStateEnum.values.firstWhere((e) => e.index == map['ApplyState']),
+			rankName: map['RankName'],
+			positionName: map['PositionName'],
+			isDirector: map['IsDirector'],
+			fieldList: map['FieldList'] != null ? map['FieldList'].cast<String>().toList() : null,
+			deletePatientCodes: map['DeletePatientCodes'] != null ? map['DeletePatientCodes'].cast<String>().toList() : null,
+			isBatchExportDiagnoseData: map['IsBatchExportDiagnoseData'],
+			bindAssistantUserCode: map['BindAssistantUserCode'],
+			bindAssistantDoctorUserCode: map['BindAssistantDoctorUserCode'],
+			loginLockInfo: map['LoginLockInfo'] != null ? LoginLockInfoDTO.fromJson(map['LoginLockInfo']) : null,
+			signature: map['Signature'],
+			language: map['Language'],
+			enableReportLabel: map['EnableReportLabel'],
+			userCode: map['UserCode'],
+			userName: map['UserName'],
+			headImageUrl: map['HeadImageUrl'],
+			createTime: map['CreateTime'] != null ? DateTime.parse(map['CreateTime']) : null,
+			updateTime: map['UpdateTime'] != null ? DateTime.parse(map['UpdateTime']) : null,
+		);
+	}
+
+	Map<String, dynamic> toJson() {
+		final map = super.toJson();
+		if(bindAssistantUserName != null)
+			map['BindAssistantUserName'] = bindAssistantUserName;
+		if(bindAssistantDoctorUserName != null)
+			map['BindAssistantDoctorUserName'] = bindAssistantDoctorUserName;
+		return map;
+	}
+}
+
 class GetUserByCodeRequest extends TokenRequest{
 	String? userCode;