This commit is contained in:
启星
2025-11-21 16:17:05 +08:00
parent 7ac937ddbf
commit 8913ea6f48
283 changed files with 8474 additions and 800 deletions

View File

@@ -15,6 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
@class QXCOSUploadCredentialsModel;
@interface QXCOSUploadManager : NSObject
+(instancetype)shareManager;
-(void)audioUploadFile:(id)file withObjectKey:(NSString *)key complete:(void (^)(NSString * fileUrl, QXCOSUploadImageState))complete;
- (void)uploadFile:(NSArray *_Nonnull)files withObjectKey:(NSArray *)objectKeys isAsync:(BOOL)isAsync complete:(void(^)(NSArray<NSString *> * names, QXCOSUploadImageState state))complete;
- (void)activityUploadFile:(NSArray *)files withObjectKey:(NSArray *)objectKeys isAsync:(BOOL)isAsync complete:(void(^)(NSArray<NSString *> *names, QXCOSUploadImageState state))complete;
- (NSString *)currentDate;

View File

@@ -27,6 +27,77 @@
}
return self;
}
-(void)audioUploadFile:(id)file withObjectKey:(NSString *)key complete:(void (^)(NSString * fileUrl, QXCOSUploadImageState state))complete{
[[QXRequset shareInstance] getWithUrl:[NSString stringWithFormat:@"%@%@",ServerUrl,QXGetCosTempKeys] parameters:@{} needCache:NO success:^(id responseObject) {
QXCOSUploadModel *model = [QXCOSUploadModel yy_modelWithJSON:responseObject[@"data"]];
if (![model.region isExist] || ![model.bucket isExist] || ![model.credentials.sessionToken isExist] || ![model.credentials.tmpSecretId isExist] || ![model.credentials.tmpSecretKey isExist]) {
QXLOG(@"服务端配置错误");
complete(@"",QXCOSUploadImageFailed);
return;
}
NSString *region = model.region;
QCloudServiceConfiguration* configuration = [QCloudServiceConfiguration new];
QCloudCOSXMLEndPoint* endpoint = [[QCloudCOSXMLEndPoint alloc] init];
endpoint.regionName = region;
// 使 HTTPS
endpoint.useHTTPS = true;
configuration.endpoint = endpoint;
// COS
[QCloudCOSXMLService registerDefaultCOSXMLWithConfiguration:configuration];
[QCloudCOSTransferMangerService registerDefaultCOSTransferMangerWithConfiguration:configuration];
NSString *bucket = model.bucket;
QCloudCOSXMLUploadObjectRequest* put = [QCloudCOSXMLUploadObjectRequest new];
QCloudCredential * credential = [QCloudCredential new];
credential.secretID = model.credentials.tmpSecretId;
credential.secretKey = model.credentials.tmpSecretKey;
credential.token = model.credentials.sessionToken;
//
put.credential = credential;
put.bucket = bucket;
put.object = [NSString stringWithFormat:@"%@%@",AUDIO_FILE_BASE_PATH,key];
if ([file isKindOfClass:[UIImage class]]) {
NSData *data = UIImageJPEGRepresentation(file, 0.3);
put.body = data;
}else if ([file isKindOfClass:[NSData class]]){
put.body = file;
}else if ([file isKindOfClass:[NSURL class]]){
put.body = (NSURL *)file;
}
//
[put setSendProcessBlock:^(int64_t bytesSent,
int64_t totalBytesSent,
int64_t totalBytesExpectedToSend) {
// bytesSent
// totalBytesSent
// totalBytesExpectedToSend
}];
//
[put setFinishBlock:^(QCloudUploadObjectResult *result, NSError *error) {
if (!error) {
NSLog(@"upload object success!");
if (complete) {
complete(result.location ,QXCOSUploadImageSuccess);
}
} else {
NSLog(@"upload object failed, error: %@" , error);
if (complete) {
complete(@"",QXCOSUploadImageFailed);
}
}
}];
[[QCloudCOSTransferMangerService defaultCOSTransferManager] UploadObject:put];
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
}];
}
-(void)uploadFile:(NSArray *)files withObjectKey:(NSArray *)objectKeys isAsync:(BOOL)isAsync complete:(void (^)(NSArray<NSString *> * _Nullable, QXCOSUploadImageState))complete{
[[QXRequset shareInstance] getWithUrl:[NSString stringWithFormat:@"%@%@",ServerUrl,QXGetCosTempKeys] parameters:@{} needCache:NO success:^(id responseObject) {
QXCOSUploadModel *model = [QXCOSUploadModel yy_modelWithJSON:responseObject[@"data"]];

View File

@@ -178,6 +178,9 @@ NS_ASSUME_NONNULL_BEGIN
- (NSInteger)ageWithDateOfBirth;
/// 传入秒 得到 几天 几小时
+ (NSString*)getTimeWithSecond:(long long)second;
// 方法2更严谨的实现包含边界条件处理
+ (NSInteger)convertTimestampToHoursWithPrecision:(long long)endTime;
@end
NS_ASSUME_NONNULL_END

View File

@@ -399,7 +399,33 @@
}
+(NSString *)getTimeWithSecond:(long long)second{
NSInteger day = second/(60*60*24);
NSInteger hour = second%(60*60*24)/(60*60);
double hourT = second%(60*60*24)/3600.0;
NSInteger hour = (NSInteger)ceil(hourT);
return [NSString stringWithFormat:@"%ld天%ld小时",day,hour];
}
// 2
+ (NSInteger)convertTimestampToHoursWithPrecision:(long long)endTime {
NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
//
long long milliseconds = (long long)(currentTime);
NSInteger timestamp = endTime - currentTime;
if (timestamp <= 0) {
return 0;
}
// 1
if (timestamp < 1) {
return 1; // 使11
}
//
double hours = timestamp / 3600.0;
// 使ceil
NSInteger roundedHours = (NSInteger)ceil(hours);
// 1
return MAX(1, roundedHours);
}
@end