Explorar o código

课堂 签到 - 流程 - 人脸 拍照 上传 up

openlockPPP hai 1 ano
pai
achega
b9611d08b1

+ 12 - 0
jiaPei.xcodeproj/project.pbxproj

@@ -95,6 +95,7 @@
 		9040D28C2B6F8ACB002F4686 /* NYClassRoomPeiCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D28A2B6F8ACB002F4686 /* NYClassRoomPeiCell.m */; };
 		9040D28D2B6F8ACB002F4686 /* NYClassRoomPeiCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9040D28B2B6F8ACB002F4686 /* NYClassRoomPeiCell.xib */; };
 		9040D2902B6F94DA002F4686 /* NYClassRoomPeiViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D28F2B6F94DA002F4686 /* NYClassRoomPeiViewModel.m */; };
+		9040D2932B70E504002F4686 /* CultivateInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9040D2922B70E504002F4686 /* CultivateInfoModel.m */; };
 		9043ADB42A56C739005F6F81 /* NYChooseTypeAlertViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9043ADB32A56C739005F6F81 /* NYChooseTypeAlertViewController.m */; };
 		90626F3D2A204BC400C8FA05 /* kt_jq.db in Resources */ = {isa = PBXBuildFile; fileRef = 90626F3C2A204BC300C8FA05 /* kt_jq.db */; };
 		90626F402A20540600C8FA05 /* YNYDTJQQuestionModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 90626F3F2A20540600C8FA05 /* YNYDTJQQuestionModule.m */; };
@@ -128,6 +129,7 @@
 		90BA2EA72A3316510029A54A /* NYGetjobStartRuleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EA52A3316510029A54A /* NYGetjobStartRuleCell.m */; };
 		90BA2EA82A3316510029A54A /* NYGetjobStartRuleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */; };
 		90BA2EAB2A3317510029A54A /* NYGetjobStartRuleViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */; };
+		90EF40692B71DBA9007EA477 /* CultivatePhotoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 90EF40682B71DBA9007EA477 /* CultivatePhotoModel.m */; };
 		D00177E22886A6F70078949E /* RQExerciseExplainHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = D00177E12886A6F70078949E /* RQExerciseExplainHeaderView.m */; };
 		D00177E42886A70C0078949E /* RQExerciseExplainHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D00177E32886A70C0078949E /* RQExerciseExplainHeaderView.xib */; };
 		D00177E72886AA650078949E /* RQExciseExplainHeaderGroupViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D00177E62886AA650078949E /* RQExciseExplainHeaderGroupViewModel.m */; };
@@ -1828,6 +1830,8 @@
 		9040D28B2B6F8ACB002F4686 /* NYClassRoomPeiCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYClassRoomPeiCell.xib; sourceTree = "<group>"; };
 		9040D28E2B6F94DA002F4686 /* NYClassRoomPeiViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYClassRoomPeiViewModel.h; sourceTree = "<group>"; };
 		9040D28F2B6F94DA002F4686 /* NYClassRoomPeiViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYClassRoomPeiViewModel.m; sourceTree = "<group>"; };
+		9040D2912B70E504002F4686 /* CultivateInfoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CultivateInfoModel.h; sourceTree = "<group>"; };
+		9040D2922B70E504002F4686 /* CultivateInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CultivateInfoModel.m; sourceTree = "<group>"; };
 		9043ADB22A56C739005F6F81 /* NYChooseTypeAlertViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYChooseTypeAlertViewController.h; sourceTree = "<group>"; };
 		9043ADB32A56C739005F6F81 /* NYChooseTypeAlertViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYChooseTypeAlertViewController.m; sourceTree = "<group>"; };
 		90626F3C2A204BC300C8FA05 /* kt_jq.db */ = {isa = PBXFileReference; lastKnownFileType = file; path = kt_jq.db; sourceTree = "<group>"; };
@@ -1884,6 +1888,8 @@
 		90BA2EA62A3316510029A54A /* NYGetjobStartRuleCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = NYGetjobStartRuleCell.xib; sourceTree = "<group>"; };
 		90BA2EA92A3317510029A54A /* NYGetjobStartRuleViewModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NYGetjobStartRuleViewModel.h; sourceTree = "<group>"; };
 		90BA2EAA2A3317510029A54A /* NYGetjobStartRuleViewModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NYGetjobStartRuleViewModel.m; sourceTree = "<group>"; };
+		90EF40672B71DBA9007EA477 /* CultivatePhotoModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CultivatePhotoModel.h; sourceTree = "<group>"; };
+		90EF40682B71DBA9007EA477 /* CultivatePhotoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CultivatePhotoModel.m; sourceTree = "<group>"; };
 		D00177E02886A6F70078949E /* RQExerciseExplainHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RQExerciseExplainHeaderView.h; sourceTree = "<group>"; };
 		D00177E12886A6F70078949E /* RQExerciseExplainHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RQExerciseExplainHeaderView.m; sourceTree = "<group>"; };
 		D00177E32886A70C0078949E /* RQExerciseExplainHeaderView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = RQExerciseExplainHeaderView.xib; sourceTree = "<group>"; };
@@ -4482,6 +4488,10 @@
 				18C457D21C45F6640017FCFA /* markGroup.m */,
 				18C457D41C45F6780017FCFA /* markInfo.h */,
 				18C457D51C45F6780017FCFA /* markInfo.m */,
+				9040D2912B70E504002F4686 /* CultivateInfoModel.h */,
+				9040D2922B70E504002F4686 /* CultivateInfoModel.m */,
+				90EF40672B71DBA9007EA477 /* CultivatePhotoModel.h */,
+				90EF40682B71DBA9007EA477 /* CultivatePhotoModel.m */,
 			);
 			name = Model;
 			path = ..;
@@ -10852,6 +10862,7 @@
 				D0D5BF1B2976A1F2004DC669 /* RQVipTrainPriceItemViewModel.m in Sources */,
 				185042631BF3238C003B72F1 /* LoadingView.m in Sources */,
 				D0180C46280CFD7B00ED8E4E /* RQPinAnnotationView.m in Sources */,
+				9040D2932B70E504002F4686 /* CultivateInfoModel.m in Sources */,
 				D055CC9328C07B4700EA31E9 /* RQMyQuestionFavsModel.m in Sources */,
 				D0354B05230E34C200E1C54D /* MapManager.m in Sources */,
 				D057C1C429F50FC5002F4AB2 /* RQPlaceDetailNoteIntroduceCell.m in Sources */,
@@ -11398,6 +11409,7 @@
 				D00A150F2754A41C00793046 /* CGXRefreshFooter.m in Sources */,
 				D0B699E9292E102D00DE2C69 /* RQExerciseVideoExplainItemViewModel.m in Sources */,
 				D0C44C402901391A0061B812 /* RQVipContentNew23ItemViewModel.m in Sources */,
+				90EF40692B71DBA9007EA477 /* CultivatePhotoModel.m in Sources */,
 				D0D0459F27477C3000257D01 /* RQDiscoverViewController.m in Sources */,
 				D0870D752701A6B9004EC94E /* MFMailComposeViewController+BlocksKit.m in Sources */,
 				D0E9AC142524840500DD6EEC /* XYKeyChain.m in Sources */,

BIN=BIN
jiaPei.xcworkspace/xcuserdata/mimasigeling.xcuserdatad/UserInterfaceState.xcuserstate


+ 67 - 0
jiaPei/CultivateInfoModel.h

@@ -0,0 +1,67 @@
+//
+//  CultivateInfoModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/2/5.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CultivateInfoModel : RQBaseModel
+
+/**驾校名称
+ */
+@property (nonatomic, copy) NSString* schName;
+/**学员编号
+ */
+@property (nonatomic, assign) NSInteger stunum;
+/**签到时间
+ */
+@property (nonatomic, copy) NSString* signTime;
+/**车类型
+ */
+@property (nonatomic, copy) NSString* stuCx;
+/**教室坐标
+ */
+@property (nonatomic, copy) NSString* roomLat;
+/**最大签到范围
+ */
+@property (nonatomic, copy) NSString* maxDistance;
+/**
+ */
+@property (nonatomic, assign) BOOL isDistance;
+/**教室名称
+ */
+@property (nonatomic, copy) NSString* roomName;
+/**类型
+ */
+@property (nonatomic, assign) NSInteger type;
+@property (nonatomic, copy) NSString* typeName;
+/**教练名称
+ */
+@property (nonatomic, copy) NSString* coachName;
+/**max
+ */
+@property (nonatomic, assign) NSInteger timeMax;
+/**车牌号
+ */
+@property (nonatomic, copy) NSString* licnum;
+/**教室id
+ */
+@property (nonatomic, copy) NSString* classid;
+/**教练id
+ */
+@property (nonatomic, copy) NSString* coachnum;
+/**学员名称
+ */
+@property (nonatomic, copy) NSString* stuName;
+/**roomLng
+ */
+@property (nonatomic, copy) NSString* roomLng;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 23 - 0
jiaPei/CultivateInfoModel.m

@@ -0,0 +1,23 @@
+//
+//  CultivateInfoModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/2/5.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "CultivateInfoModel.h"
+
+@implementation CultivateInfoModel
+
+- (NSString *)typeName {
+    
+    if(_type==1){
+        return @"课堂";
+    }else if(_type==2) {
+        return @"模拟";
+    }
+    return @"课堂";
+}
+
+@end

+ 30 - 0
jiaPei/CultivatePhotoModel.h

@@ -0,0 +1,30 @@
+//
+//  CultivatePhotoModel.h
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/2/6.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface CultivatePhotoModel : RQBaseModel
+
+/**filepath
+ */
+@property (nonatomic, copy) NSString* filepath;
+/**event
+ */
+@property (nonatomic, assign) NSInteger event;
+/**time
+ */
+@property (nonatomic, assign) NSInteger time;
+/**ptime
+ */
+@property (nonatomic, copy) NSString* ptime;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 13 - 0
jiaPei/CultivatePhotoModel.m

@@ -0,0 +1,13 @@
+//
+//  CultivatePhotoModel.m
+//  jiaPei
+//
+//  Created by Ning.ge on 2024/2/6.
+//  Copyright © 2024 JCZ. All rights reserved.
+//
+
+#import "CultivatePhotoModel.h"
+
+@implementation CultivatePhotoModel
+
+@end

+ 3 - 3
jiaPei/ENUM.h

@@ -13,12 +13,12 @@
 
 //defaultWebServiceUrl2是测试服务器 defaultWebServiceUrl是服务器
 //学员端请求
-#define defaultHttp isOfficial?  @"http://fj.jppt.com.cn/" : @"http://192.168.8.87:8080/xm"
-#define anotherDefaultHttp isOfficial?  @"https://zzjs.zzxcx.net" : @"http://192.168.8.87:8080"
+#define defaultHttp isOfficial?  @"http://fj.jppt.com.cn/" : @"http://121.46.4.11:18081/api/"
+#define anotherDefaultHttp isOfficial?  @"https://zzjs.zzxcx.net" : @"http://121.46.4.11:18081"
 #define coachDefaultHttp isOfficial?  @"https://jsjp-admin.zzxcx.net" : @"https://jsjp-admin1.zzxcx.net"
 
 //基础请求
-#define defaultHttpUrl isOfficial? @"appservice/student/" : @"appservice2/student/"
+#define defaultHttpUrl isOfficial? @"appservice/student/" : @"" //@"appservice2/student/"
 #define anotherDefaultHttpUrl isOfficial? @"/zzjs-admin" : @"/zzjs-admin"
 
 //上传资源

+ 7 - 4
jiaPei/Modules/OtherModules/SimulateModular/ScanPage/Other/MapManager.h

@@ -51,7 +51,7 @@ typedef void(^ReverseCompletedBlock)(BOOL success ,BMKReverseGeoCodeSearchResult
 
 /**
  根据大小创建地图
-
+ 
  @param size 大小
  @return 返回地图
  */
@@ -66,7 +66,7 @@ typedef void(^ReverseCompletedBlock)(BOOL success ,BMKReverseGeoCodeSearchResult
 
 /**
  连续定位
-
+ 
  @param distanceFilter 设定定位的最小更新距离。默认为 kCLDistanceFilterNone
  @param completeBlock 定位回调
  */
@@ -74,7 +74,7 @@ typedef void(^ReverseCompletedBlock)(BOOL success ,BMKReverseGeoCodeSearchResult
 
 /**
  返回地址信息搜索结果
-
+ 
  @param address 地址(必填)
  @param city 城市(选填)
  @param completeBlock 搜索回调
@@ -83,12 +83,15 @@ typedef void(^ReverseCompletedBlock)(BOOL success ,BMKReverseGeoCodeSearchResult
 
 /**
  返回反地理编码搜索结果
-
+ 
  @param location 定位
  @param completeBlock 搜索回调
  */
 - (void)onGetReverseGeoCodeWithLocation:(CLLocation *)location completeBlock:(ReverseCompletedBlock)completeBlock;
 
+//计算 - 两个坐标之间的距离
++ (float)getDistance:(float)lat1 lng1:(float)lng1 lat2:(float)lat2 lng2:(float)lng2;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 34 - 0
jiaPei/Modules/OtherModules/SimulateModular/ScanPage/Other/MapManager.m

@@ -40,6 +40,40 @@ static NSString *annotationViewIdentifier = @"com.Baidu.BMKPointAnnotation";
     return manger;
 }
 
++ (float)radians:(float)degrees{
+
+    return (degrees*3.14159265)/180.0;
+
+}
+
++ (float)getDistance:(float)lat1 lng1:(float)lng1 lat2:(float)lat2 lng2:(float)lng2{
+
+    //地球半径
+
+    int R = 6378137;
+
+    //将角度转为弧度
+
+    float radLat1 = [self radians:lat1];
+
+    float radLat2 = [self radians:lat2];
+
+    float radLng1 = [self radians:lng1];
+
+    float radLng2 = [self radians:lng2];
+
+    //结果
+
+    float s = acos(cos(radLat1)*cos(radLat2)*cos(radLng1-radLng2)+sin(radLat1)*sin(radLat2))*R;
+
+    //精度
+
+    s = round(s* 10000)/10000;
+
+    return  round(s);
+
+}
+
 - (instancetype)init {
     self = [super init];
     if (self) {

+ 3 - 0
jiaPei/NewTheory/NYClassRoomVC.m

@@ -9,6 +9,8 @@
 #import "NYClassRoomVC.h"
 #import "NYClassRoomViewModel.h"
 #import "NYGetjobStartRuleCell.h"
+#import "CultivateInfoModel.h"
+#import "CultivatePhotoModel.h"
 
 @interface NYClassRoomVC ()
 /// viewModel
@@ -35,6 +37,7 @@
         make.left.top.right.mas_equalTo(self.view);
         make.height.mas_equalTo(184.f);
     }];
+    
 }
 
 - (UIColor *)qmui_titleViewTintColor

+ 18 - 0
jiaPei/NewTheory/View/NYClassRoomPeiCell.h

@@ -16,6 +16,24 @@ NS_ASSUME_NONNULL_BEGIN
 
 @property (weak, nonatomic) IBOutlet UIView *px01_view;
 
+@property (weak, nonatomic) IBOutlet UILabel *coach_name_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *stu_name_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *cat_type_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *cat_num_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *room_name_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *school_name_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *sign_time_label;
+
+@property (weak, nonatomic) IBOutlet UILabel *pei_type_label;
+
+@property (weak, nonatomic) IBOutlet UIButton *submit_btn;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 144 - 0
jiaPei/NewTheory/View/NYClassRoomPeiCell.m

@@ -8,11 +8,14 @@
 
 #import "NYClassRoomPeiCell.h"
 #import "NYClassRoomPeiViewModel.h"
+#import "MapManager.h"
 
 @interface NYClassRoomPeiCell ()
 
 @property (nonatomic, readwrite, strong) NYClassRoomPeiViewModel *viewModel;
 
+@property (nonatomic, readwrite, assign) CLLocationCoordinate2D  myLocation;
+
 @end
 
 @implementation NYClassRoomPeiCell
@@ -26,10 +29,151 @@
     return cell;
 }
 
+//详细
+- (void)setCultivateInfoModel:(CultivateInfoModel *)cultInfoModel{
+    self.viewModel.cultivateInfoModel = cultInfoModel;
+    RAC(self.coach_name_label, text) = [[RACObserve(cultInfoModel, coachName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.stu_name_label, text) = [[RACObserve(cultInfoModel, stuName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.cat_type_label, text) = [[RACObserve(cultInfoModel, stuCx) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.cat_num_label, text) = [[RACObserve(cultInfoModel, licnum) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.room_name_label, text) = [[RACObserve(cultInfoModel, roomName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.school_name_label, text) = [[RACObserve(cultInfoModel, schName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.sign_time_label, text) = [[RACObserve(cultInfoModel, signTime) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    RAC(self.pei_type_label, text) = [[RACObserve(cultInfoModel, typeName) takeUntil:self.rac_prepareForReuseSignal] deliverOnMainThread];
+    
+}
+
 - (void)bindViewModel:(NYClassRoomPeiViewModel *)viewModel {
     self.viewModel = viewModel;
+    [self getClassRoomInfo];
+    //定位功能
+    [MBProgressHUD rq_showProgressHUD:@"正在获取当前位置..."];
+    [[MapManager sharedManager] updateLocationWithCompleteBlock:^(BOOL success, CLLocation * _Nonnull location, BMKLocation * _Nullable bmkLocation) {
+        [MBProgressHUD rq_hideHUD];
+        if (success) {
+            _myLocation = location.coordinate;
+        }
+    }];
+}
+
+//获取 课堂 信息
+- (void)getClassRoomInfo{
+    NSMutableArray *arr = [NSMutableArray array];
+    [arr property:RQ_USER_MANAGER.currentUser.outId forKey:@"outid"];
+    [arr property:@"1"  forKey:@"type"];//1课堂 2模拟
+    [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
+    NSString* method = @"getStunocarSignInfo";
+    [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
+        if (!dict) {
+            return;
+        }
+        CultivateInfoModel *cultInfoModel = [CultivateInfoModel modelWithDictionary:[NSMutableDictionary dictionaryWithDictionary:dict[@"body"]]];
+        [self setCultivateInfoModel:cultInfoModel];
+    }];
+}
+
+//获取课堂 照片
+- (void)getPhotoArray{
+    NSMutableArray *arr = [NSMutableArray array];
+    [arr property:RQ_USER_MANAGER.currentUser.outId forKey:@"outid"];
+    [arr property:@"1"  forKey:@"type"];//1课堂 2模拟
+    [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
+    [arr property:@"183093223"   forKey:@"classid"];
+    
+    NSString* method = @"getStunocarPhoto";
+    NSLog(@"dqbh====%@",RQ_USER_MANAGER.currentUser.city)
+    [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
+        //NSLog(@"getStunocarSignInfodict=====%@",dict);
+        NSArray<CultivatePhotoModel*> *photo_array = [CultivatePhotoModel modelArrayWithJSON:dict[@"body"][@"photos"]];
+        NSLog(@"photo_array=%@",photo_array);
+//        CultivateInfoModel *cultInfoModel = [CultivateInfoModel modelWithDictionary:[NSMutableDictionary dictionaryWithDictionary:dict[@"body"][@"photos"]]];
+//        NSLog(@"%@",cultInfoModel)
+//        if (!dict) {
+//            ShowMsg(@"获取当前学员签到状态接口异常!");
+//            !resultBlock? : resultBlock(NO, nil);
+//            return;
+//        }
+//        if ([dict[@"code"] isEqualToString:@"0"]) {
+//            !resultBlock? : resultBlock(YES, dict);
+//        } else {
+//            ShowMsg((dict[@"body"] && ![dict[@"body"] isEqualToString:@""])? dict[@"body"] : @"获取当前学员签到状态失败");
+//            !resultBlock? : resultBlock(NO, nil);
+//        }
+    }];
+}
+
+
+- (IBAction)submit_clickdo:(UIButton *)sender {
+    
+    CultivateInfoModel  *cultInfoModel = self.viewModel.cultivateInfoModel;
+    //        roomLat roomLng maxDistance
+    NSString *title = [NSString stringWithFormat:@"您距离课堂超过了%@m",cultInfoModel.maxDistance];
+    //计算距离
+    double this_distance = 0.0;
+    double lat1 = cultInfoModel.roomLat.doubleValue;
+    double lng1 = cultInfoModel.roomLng.doubleValue;
+    if(_myLocation.latitude >0){
+        double lat2 = _myLocation.latitude;
+        double lng2 = _myLocation.longitude;
+        this_distance =  [self distanceBetweenOrderBy:lat1 :lat2 :lng1 :lng2];
+    }
+    if(this_distance>cultInfoModel.maxDistance.doubleValue){//超出范围
+//        if(cultInfoModel.isDistance){//是否强制 判断-范围
+//            [RQ_SHARE_FUNCTION showAlertWithTitle:@"提示" message:title alertControllerStyle:UIAlertControllerStyleAlert cancelButtonTitle:@"取消" otherButtonTitles:@[@"确定"] otherButtonStyles:nil showInWindow:NO completion:^(NSUInteger selectedOtherButtonIndex) {
+//                if (selectedOtherButtonIndex == 0) {
+//                 
+//                }
+//            }];
+//        }else{
+//            [RQ_SHARE_FUNCTION showAlertWithTitle:@"提示" message:title alertControllerStyle:UIAlertControllerStyleAlert cancelButtonTitle:nil otherButtonTitles:@[@"确定"] otherButtonStyles:@"取消" showInWindow:NO completion:^(NSUInteger selectedOtherButtonIndex) {
+//                if (selectedOtherButtonIndex == 0) {
+//                 
+//                }
+//            }];
+//        }
+    }else{//未超出范围
+        //直接-进入人脸-签到流程
+        
+    }
+    
+    //-人脸比对
+    ///  1.本地活体检测
+    [RQ_CHECKBODY_MANAGER beginCheckBodyWithCheckNum:RQ_USER_MANAGER.ycbdFaceCount completeBlock:^(BOOL success, NSDictionary * _Nullable dic) {
+        //@strongify(self)
+        if (success) {
+            /// 2.线上活体检测
+            NSMutableArray *arr = [NSMutableArray array];
+            [arr property:RQ_USER_MANAGER.currentUser.outId forKey:@"stuId"];
+            [arr property:@"1"  forKey:@"type"];//1课堂 2模拟
+            [arr property:RQ_USER_MANAGER.currentUser.city   forKey:@"dqbh"];
+            [arr property:@"183093223"   forKey:@"photo"];
+            NSString* method = @"stunocarfaceToface";
+            [jiaPeiManager requestAnythingWithURL:method array:arr data:nil completion:^(NSDictionary * dict) {
+                //NSLog(@"getStunocarSignInfodict=====%@",dict);
+       
+            }];
+        }
+    }];
+    //上传-课堂照片
+    
+}
+
+
+-(double)distanceBetweenOrderBy:(double) latitude1 :(double) latitude2 :(double) longitude1 :(double) longitude2{
+    
+    CLLocation *curLocation = [[CLLocation alloc] initWithLatitude:latitude1 longitude:longitude1];
+    
+    CLLocation *otherLocation = [[CLLocation alloc] initWithLatitude:latitude2 longitude:longitude2];
+    
+    // 计算两个坐标之间的距离
+    CLLocationDistance distance = [curLocation distanceFromLocation:otherLocation];
+    //double  distance  = [curLocation distanceFromLocation:otherLocation];
+    
+    return  distance;
+    
 }
 
+
 #pragma mark - SystemMethods
 - (void)awakeFromNib {
     [super awakeFromNib];

+ 178 - 25
jiaPei/NewTheory/View/NYClassRoomPeiCell.xib

@@ -21,73 +21,214 @@
                     <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lNa-sV-KWt">
                         <rect key="frame" x="16" y="32" width="288" height="300"/>
                         <subviews>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="培训信息" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ct5-rH-4pJ">
-                                <rect key="frame" x="8" y="15" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训信息" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ct5-rH-4pJ">
+                                <rect key="frame" x="8" y="15" width="100" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="100" id="Gjg-fw-VOK"/>
+                                    <constraint firstAttribute="height" constant="21" id="Rom-XO-4us"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="18"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="教练姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H5t-2o-drT">
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="教练姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H5t-2o-drT">
                                 <rect key="frame" x="8" y="51" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="76" id="Hs4-3k-u7F"/>
+                                    <constraint firstAttribute="height" constant="21" id="kyr-5f-Chz"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="学员姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="611-v6-Zac">
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="学员姓名" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="611-v6-Zac">
                                 <rect key="frame" x="8" y="80" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="Djh-MS-s1u"/>
+                                    <constraint firstAttribute="width" constant="76" id="jjq-ru-Oij"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="培训车型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZVI-2s-Wo3">
-                                <rect key="frame" x="8" y="115" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训车型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZVI-2s-Wo3">
+                                <rect key="frame" x="8" y="109" width="76" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="76" id="O96-Js-1M8"/>
+                                    <constraint firstAttribute="height" constant="21" id="nMx-bV-LqT"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="车牌号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f1O-Me-US2">
-                                <rect key="frame" x="8" y="144" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="车牌号" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f1O-Me-US2">
+                                <rect key="frame" x="8" y="138" width="76" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="OPj-80-Dgh"/>
+                                    <constraint firstAttribute="width" constant="76" id="n7a-cA-aDY"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="教室名称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mpa-rs-d11">
-                                <rect key="frame" x="8" y="179" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="教室名称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mpa-rs-d11">
+                                <rect key="frame" x="8" y="167" width="76" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="sEk-Co-dtC"/>
+                                    <constraint firstAttribute="width" constant="76" id="ymd-Uz-n5Q"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="驾校简称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Inj-0d-SuS">
-                                <rect key="frame" x="8" y="208" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="驾校简称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Inj-0d-SuS">
+                                <rect key="frame" x="8" y="196" width="76" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="fte-Le-SbY"/>
+                                    <constraint firstAttribute="width" constant="76" id="gpR-qj-eb0"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="签到时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="I87-Rq-n6E">
-                                <rect key="frame" x="8" y="237" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="签到时间" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="I87-Rq-n6E">
+                                <rect key="frame" x="8" y="225" width="76" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="21" id="eBp-gf-3y4"/>
+                                    <constraint firstAttribute="width" constant="76" id="vOl-cX-efg"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="培训类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6fO-G5-aFg">
-                                <rect key="frame" x="8" y="268" width="76" height="21"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="培训类型" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6fO-G5-aFg">
+                                <rect key="frame" x="8" y="254" width="76" height="21"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="76" id="HcV-Cs-O1O"/>
+                                    <constraint firstAttribute="height" constant="21" id="j6v-XL-UVX"/>
+                                </constraints>
                                 <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5bo-dI-wJO">
+                                <rect key="frame" x="92" y="52" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="n5I-ux-d3A"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fmu-yY-xfB">
+                                <rect key="frame" x="92" y="81" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="5iw-FM-yAR"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8rg-v2-hPZ">
+                                <rect key="frame" x="92" y="110" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="j8y-aR-erM"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ygt-6n-Mtq">
+                                <rect key="frame" x="92" y="139" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="75l-fE-MUZ"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="002-QM-OCW">
+                                <rect key="frame" x="92" y="168" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="GFF-aR-DkR"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uDx-Iw-Z5O">
+                                <rect key="frame" x="92" y="197" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="XtZ-UT-fVI"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AwZ-h4-8IC">
+                                <rect key="frame" x="92" y="226" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="qmN-jM-1yy"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P4l-Io-AnM">
+                                <rect key="frame" x="92" y="255" width="188" height="18"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="18" id="Hb6-lZ-Dyd"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                <color key="textColor" red="0.53725490200000003" green="0.56862745100000001" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
                         </subviews>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
+                            <constraint firstItem="I87-Rq-n6E" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="3WJ-Dh-pPq"/>
+                            <constraint firstItem="611-v6-Zac" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="9yT-Vi-XUc"/>
+                            <constraint firstItem="5bo-dI-wJO" firstAttribute="top" secondItem="ct5-rH-4pJ" secondAttribute="bottom" constant="16" id="AQp-vN-iao"/>
+                            <constraint firstItem="H5t-2o-drT" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="AYl-L1-OVu"/>
+                            <constraint firstItem="uDx-Iw-Z5O" firstAttribute="top" secondItem="002-QM-OCW" secondAttribute="bottom" constant="11" id="BUe-Qr-Twd"/>
+                            <constraint firstItem="8rg-v2-hPZ" firstAttribute="top" secondItem="fmu-yY-xfB" secondAttribute="bottom" constant="11" id="Cbf-Za-f77"/>
+                            <constraint firstItem="f1O-Me-US2" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="EC9-PU-hOv"/>
+                            <constraint firstItem="fmu-yY-xfB" firstAttribute="top" secondItem="5bo-dI-wJO" secondAttribute="bottom" constant="11" id="EG8-5a-uxp"/>
+                            <constraint firstItem="AwZ-h4-8IC" firstAttribute="top" secondItem="uDx-Iw-Z5O" secondAttribute="bottom" constant="11" id="Ebq-U9-ywT"/>
+                            <constraint firstAttribute="trailing" secondItem="P4l-Io-AnM" secondAttribute="trailing" constant="8" id="FDN-Vs-xjO"/>
+                            <constraint firstItem="I87-Rq-n6E" firstAttribute="top" secondItem="Inj-0d-SuS" secondAttribute="bottom" constant="8" symbolic="YES" id="GHi-QI-9u9"/>
+                            <constraint firstItem="ygt-6n-Mtq" firstAttribute="leading" secondItem="f1O-Me-US2" secondAttribute="trailing" constant="8" id="H9Z-EK-WU6"/>
+                            <constraint firstItem="uDx-Iw-Z5O" firstAttribute="leading" secondItem="Inj-0d-SuS" secondAttribute="trailing" constant="8" id="HIW-hv-GpT"/>
+                            <constraint firstItem="002-QM-OCW" firstAttribute="leading" secondItem="mpa-rs-d11" secondAttribute="trailing" constant="8" id="K2D-39-MPH"/>
+                            <constraint firstItem="6fO-G5-aFg" firstAttribute="top" secondItem="I87-Rq-n6E" secondAttribute="bottom" constant="8" symbolic="YES" id="Ny4-4p-d0O"/>
+                            <constraint firstItem="8rg-v2-hPZ" firstAttribute="leading" secondItem="ZVI-2s-Wo3" secondAttribute="trailing" constant="8" id="PE7-Uy-15v"/>
+                            <constraint firstItem="P4l-Io-AnM" firstAttribute="top" secondItem="AwZ-h4-8IC" secondAttribute="bottom" constant="11" id="RWZ-1S-dZJ"/>
+                            <constraint firstAttribute="trailing" secondItem="ygt-6n-Mtq" secondAttribute="trailing" constant="8" id="SHK-y9-gZb"/>
+                            <constraint firstItem="Inj-0d-SuS" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="Shb-nv-Nmt"/>
+                            <constraint firstItem="ct5-rH-4pJ" firstAttribute="top" secondItem="lNa-sV-KWt" secondAttribute="top" constant="15" id="YAu-Vk-EPF"/>
+                            <constraint firstItem="611-v6-Zac" firstAttribute="top" secondItem="H5t-2o-drT" secondAttribute="bottom" constant="8" symbolic="YES" id="a0N-xM-wZE"/>
+                            <constraint firstItem="mpa-rs-d11" firstAttribute="top" secondItem="f1O-Me-US2" secondAttribute="bottom" constant="8" symbolic="YES" id="bC1-Eo-JCM"/>
+                            <constraint firstAttribute="trailing" secondItem="uDx-Iw-Z5O" secondAttribute="trailing" constant="8" id="cKm-xb-RGv"/>
+                            <constraint firstItem="ZVI-2s-Wo3" firstAttribute="top" secondItem="611-v6-Zac" secondAttribute="bottom" constant="8" symbolic="YES" id="cMS-Wc-sOk"/>
+                            <constraint firstAttribute="trailing" secondItem="fmu-yY-xfB" secondAttribute="trailing" constant="8" id="d3C-HW-8MA"/>
+                            <constraint firstItem="H5t-2o-drT" firstAttribute="top" secondItem="ct5-rH-4pJ" secondAttribute="bottom" constant="15" id="ela-OM-G6k"/>
+                            <constraint firstItem="ct5-rH-4pJ" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="f2N-HW-Q07"/>
+                            <constraint firstItem="5bo-dI-wJO" firstAttribute="leading" secondItem="H5t-2o-drT" secondAttribute="trailing" constant="8" id="hF6-UA-Psg"/>
                             <constraint firstAttribute="height" constant="300" id="hV5-tY-1K7"/>
+                            <constraint firstItem="6fO-G5-aFg" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="nIM-Pc-P1n"/>
+                            <constraint firstAttribute="trailing" secondItem="002-QM-OCW" secondAttribute="trailing" constant="8" id="nqO-YT-bYL"/>
+                            <constraint firstAttribute="trailing" secondItem="AwZ-h4-8IC" secondAttribute="trailing" constant="8" id="obd-aU-M6R"/>
+                            <constraint firstItem="fmu-yY-xfB" firstAttribute="leading" secondItem="611-v6-Zac" secondAttribute="trailing" constant="8" id="piv-Ci-irf"/>
+                            <constraint firstAttribute="trailing" secondItem="8rg-v2-hPZ" secondAttribute="trailing" constant="8" id="pqh-c5-5aP"/>
+                            <constraint firstItem="AwZ-h4-8IC" firstAttribute="leading" secondItem="I87-Rq-n6E" secondAttribute="trailing" constant="8" id="py7-9Q-6cw"/>
+                            <constraint firstAttribute="trailing" secondItem="5bo-dI-wJO" secondAttribute="trailing" constant="8" id="qEs-xa-dPF"/>
+                            <constraint firstItem="Inj-0d-SuS" firstAttribute="top" secondItem="mpa-rs-d11" secondAttribute="bottom" constant="8" symbolic="YES" id="sdn-pw-pur"/>
+                            <constraint firstItem="ZVI-2s-Wo3" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="shJ-yW-cHC"/>
+                            <constraint firstItem="002-QM-OCW" firstAttribute="top" secondItem="ygt-6n-Mtq" secondAttribute="bottom" constant="11" id="vNY-Gd-Vgt"/>
+                            <constraint firstItem="ygt-6n-Mtq" firstAttribute="top" secondItem="8rg-v2-hPZ" secondAttribute="bottom" constant="11" id="voS-ls-GYH"/>
+                            <constraint firstItem="f1O-Me-US2" firstAttribute="top" secondItem="ZVI-2s-Wo3" secondAttribute="bottom" constant="8" symbolic="YES" id="xEP-Q6-TdS"/>
+                            <constraint firstItem="mpa-rs-d11" firstAttribute="leading" secondItem="lNa-sV-KWt" secondAttribute="leading" constant="8" id="yrj-L5-zfj"/>
+                            <constraint firstItem="P4l-Io-AnM" firstAttribute="leading" secondItem="6fO-G5-aFg" secondAttribute="trailing" constant="8" id="zZa-Qm-CHb"/>
                         </constraints>
                         <userDefinedRuntimeAttributes>
                             <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="NO"/>
@@ -154,6 +295,9 @@
                         <state key="normal" title="签到">
                             <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                         </state>
+                        <connections>
+                            <action selector="submit_clickdo:" destination="gTV-IL-0wX" eventType="touchUpInside" id="mjd-pt-xsw"/>
+                        </connections>
                     </button>
                 </subviews>
             </view>
@@ -172,8 +316,17 @@
             </constraints>
             <size key="customSize" width="308" height="505"/>
             <connections>
+                <outlet property="cat_num_label" destination="ygt-6n-Mtq" id="v6B-nU-woo"/>
+                <outlet property="cat_type_label" destination="8rg-v2-hPZ" id="hVh-Jx-Kns"/>
+                <outlet property="coach_name_label" destination="5bo-dI-wJO" id="OQp-2E-KvC"/>
+                <outlet property="pei_type_label" destination="P4l-Io-AnM" id="5jT-6A-GZ9"/>
                 <outlet property="px00_view" destination="lNa-sV-KWt" id="HoW-Zg-zOK"/>
                 <outlet property="px01_view" destination="5AK-y0-nrp" id="ftz-2W-xLd"/>
+                <outlet property="room_name_label" destination="002-QM-OCW" id="00u-hD-8wK"/>
+                <outlet property="school_name_label" destination="uDx-Iw-Z5O" id="fHK-rt-Emf"/>
+                <outlet property="sign_time_label" destination="AwZ-h4-8IC" id="7gY-8c-nye"/>
+                <outlet property="stu_name_label" destination="fmu-yY-xfB" id="V70-8M-m4r"/>
+                <outlet property="submit_btn" destination="l5L-dJ-GEH" id="00R-di-yWF"/>
             </connections>
             <point key="canvasLocation" x="235.11450381679387" y="148.94366197183101"/>
         </collectionViewCell>

+ 5 - 1
jiaPei/NewTheory/ViewModel/NYClassRoomPeiViewModel.h

@@ -7,11 +7,15 @@
 //
 
 #import <Foundation/Foundation.h>
-
+#import "CultivateInfoModel.h"
+#import "CultivatePhotoModel.h"
 NS_ASSUME_NONNULL_BEGIN
 
 @interface NYClassRoomPeiViewModel : RQCommonCollectionItemViewModel
 
+@property (strong, nonatomic) CultivateInfoModel *cultivateInfoModel;
+@property (strong, nonatomic) CultivatePhotoModel *cultivatePhotoModel;
+
 @end
 
 NS_ASSUME_NONNULL_END

+ 8 - 8
jiaPei/NewTheory/ViewModel/NYClassRoomViewModel.m

@@ -12,6 +12,8 @@
 
 @interface NYClassRoomViewModel ()
 
+@property (nonatomic,strong) NYClassRoomPeiViewModel *classRoomPeiViewModel;
+
 @end
 
 @implementation NYClassRoomViewModel
@@ -33,23 +35,21 @@
 
 #pragma mark - ConfigureData
 - (void)rq_configureData {
-//    @weakify(self)
+    @weakify(self)
     /// 数据源
     RAC(self, dataSource) = [RACSignal
                             combineLatest:@[RACObserve(RQ_USER_MANAGER, isCykh)]
                             reduce:^(NSNumber *isCykh) {
-//        @strongify(self)
-//        RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel];
-//        RQTimeADItemViewModel *timeADItemViewModel = [[RQTimeADItemViewModel alloc] init];
-//        group0.itemViewModels = @[timeADItemViewModel];
-//
+        @strongify(self)
         RQCommonGroupViewModel *group1 = [RQCommonGroupViewModel groupViewModel];
         NYClassRoomPeiViewModel *classRoomPeiViewModel = [[NYClassRoomPeiViewModel alloc] init];
         group1.itemViewModels = @[classRoomPeiViewModel];
-        
-        
+        self.classRoomPeiViewModel = classRoomPeiViewModel;
         return @[group1];
 
     }];
+    
 }
+
+
 @end

+ 1 - 1
jiaPei/UserInfo.h

@@ -14,7 +14,7 @@
 /**通过设置这个量。1表示连正式库。0表示连测试库。
  */
 ///@RQ-MARK
-#define isOfficial 1
+#define isOfficial 0
 ///是否QM控制是否打印-默认0
 #define isOffQMConsole 0