Commit cb6adc91 cgx

完成用户反馈图片上传及提交反馈接口

1 个父辈 7d5be68f
......@@ -14,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
/// UIImage转base64字符串
/// @param image image
- (NSString *)imageToBase64Str:(UIImage *)image;
+ (NSString *)imageToBase64Str:(UIImage *)image;
@end
NS_ASSUME_NONNULL_END
......@@ -51,8 +51,9 @@
return newImage ;
}
- (NSString *)imageToBase64Str:(UIImage *)image {
+ (NSString *)imageToBase64Str:(UIImage *)image {
NSData *imageData = [self resetSizeOfImage:image maxSize:150];
DSLog(@"压缩后的图片大小:%.2fKb", imageData.length/1024.0);
NSString *base64Str = [imageData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
NSString *trimStr = [NSString trimString:base64Str];
return trimStr;
......@@ -61,7 +62,7 @@
/**
图片宽高尺寸限制在200-1024之间,maxSize kb以内
*/
- (NSData *)resetSizeOfImage:(UIImage *)sourceImage maxSize:(NSInteger)maxSize {
+ (NSData *)resetSizeOfImage:(UIImage *)sourceImage maxSize:(NSInteger)maxSize {
// 最终图片data
__block NSData *finallImageData = UIImageJPEGRepresentation(sourceImage, 1.0);
......@@ -94,7 +95,7 @@
finallImageData = UIImageJPEGRepresentation(newImage, 1.0);
// 判断当前质量是否满足要求,不满足再进行压缩
NSUInteger sizeOrigin = finallImageData.length;//data.length即可得到图片的字节大小
NSUInteger sizeOrigin = finallImageData.length; // data.length即可得到图片的字节大小
NSUInteger sizeOriginKB = sizeOrigin / 1000;
......@@ -134,7 +135,7 @@
}
#pragma mark - 调整图片分辨率/尺寸(等比例缩放)
- (UIImage *)newSizeImage:(CGSize)size image:(UIImage *)sourceImage {
+ (UIImage *)newSizeImage:(CGSize)size image:(UIImage *)sourceImage {
CGSize newSize = CGSizeMake(sourceImage.size.width, sourceImage.size.height);
CGFloat tempHeight = newSize.height / size.height;
......@@ -156,7 +157,7 @@
}
#pragma mark - 二分法
- (NSData *)halfFuntion:(NSArray *)arr image:(UIImage *)image sourceData:(NSData *)finallImageData maxSize:(NSInteger)maxSize {
+ (NSData *)halfFuntion:(NSArray *)arr image:(UIImage *)image sourceData:(NSData *)finallImageData maxSize:(NSInteger)maxSize {
NSData *tempData = [NSData data];
NSUInteger start = 0;
NSUInteger end = arr.count - 1;
......@@ -170,8 +171,8 @@
NSUInteger sizeOrigin = finallImageData.length;
NSUInteger sizeOriginKB = sizeOrigin / 1024;
DSLog(@"当前降到的质量:%ld", (unsigned long)sizeOriginKB);
DSLog(@"\nstart:%zd\nend:%zd\nindex:%zd\n压缩系数:%lf", start, end, (unsigned long)index, [arr[index] floatValue]);
// DSLog(@"当前降到的质量:%ld", (unsigned long)sizeOriginKB);
// DSLog(@"\nstart:%zd\nend:%zd\nindex:%zd\n压缩系数:%lf", start, end, (unsigned long)index, [arr[index] floatValue]);
if (sizeOriginKB > maxSize) {
start = index + 1;
......
......@@ -2,6 +2,8 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string>拍照</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
......
......@@ -28,6 +28,7 @@ static int AlbumColumnCount = 4;
NSMutableArray *_selectedPhotos;
NSMutableArray *_selectedAssets;
BOOL _isSelectOriginalPhoto;
NSString *_result_imgurls;
}
- (void)viewDidLoad {
......@@ -84,7 +85,8 @@ static int AlbumColumnCount = 4;
}
// 发送提交请求
[DSProgressHUD showProgressHUDWithInfo:@"提交中..."];
[FeedbackRequestModel adviceFeedbackRequestWithCompletion:^(FeedbackRequestModel * _Nonnull requestModel) {
_result_imgurls = _result_imgurls ? _result_imgurls : @"";
[FeedbackRequestModel adviceFeedbackRequestWithContent:self.feedTV.text contentImg:_result_imgurls completion:^(FeedbackRequestModel * _Nonnull requestModel) {
[DSProgressHUD dissmissProgressHUD];
if (requestModel.resCode == DSResCodeSuccess) {
[DSProgressHUD showDetailInfo:@"已收到您的宝贵建议,谢谢!"];
......@@ -107,7 +109,7 @@ static int AlbumColumnCount = 4;
}];
}
- (void)deleteBtnClik:(UIButton *)sender {
- (void)deleteBtnClick:(UIButton *)sender {
[_selectedPhotos removeObjectAtIndex:sender.tag];
[_selectedAssets removeObjectAtIndex:sender.tag];
......@@ -136,7 +138,7 @@ static int AlbumColumnCount = 4;
cell.addIcon.hidden = YES;
cell.deleteBtn.hidden = NO;
cell.deleteBtn.tag = indexPath.row - 1;
[cell.deleteBtn addTarget:self action:@selector(deleteBtnClik:) forControlEvents:UIControlEventTouchUpInside];
[cell.deleteBtn addTarget:self action:@selector(deleteBtnClick:) forControlEvents:UIControlEventTouchUpInside];
}
return cell;
}
......@@ -202,9 +204,11 @@ static int AlbumColumnCount = 4;
imagePickerVc.cropRect = CGRectMake(left, top, widthHeight, widthHeight);
// 设置是否显示图片序号
imagePickerVc.showSelectedIndex = YES;
imagePickerVc.autoDismiss = NO;
// 你可以通过block或者代理,来得到用户选择的照片.
__weak TZImagePickerController *weakPicker = imagePickerVc;
[imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
if (photos.count) { [self uploadImgsWithPhotos:photos picker:weakPicker]; }
}];
[self presentViewController:imagePickerVc animated:YES completion:nil];
}
......@@ -253,6 +257,30 @@ static int AlbumColumnCount = 4;
}
}
#pragma mark - 图片上传
- (void)uploadImgsWithPhotos:(NSArray<UIImage *> *)photos picker:(TZImagePickerController *)picker {
// 1、处理图片
NSMutableString *mstr = [NSMutableString string];
[mstr appendString:@"["];
for (int index = 0; index < photos.count; index++) {
UIImage *img = photos[index];
NSString *base64Str = [UIImage imageToBase64Str:img];
NSString *sepStr = (index == (photos.count - 1)) ? @"" : @",";
[mstr appendString:[NSString stringWithFormat:@"\"%@\"%@", base64Str, sepStr]];
}
[mstr appendString:@"]"];
// 2、上传图片
[DSProgressHUD showProgressHUDWithInfo:@""];
[FeedbackRequestModel uploadBulkImagesWithImgStr:[mstr copy] completion:^(FeedbackRequestModel * _Nonnull requestModel) {
[DSProgressHUD dissmissProgressHUD];
if (requestModel.resCode == DSResCodeSuccess) {
// 存储图片上传成功后返回的urls
self->_result_imgurls = requestModel.result_imgurls;
[picker dismissViewControllerAnimated:YES completion:nil];
}
}];
}
#pragma mark - lazy
- (UITextView *)feedTV {
if (!_feedTV) {
......@@ -290,7 +318,7 @@ static int AlbumColumnCount = 4;
if (!_commitBtn) {
_commitBtn = [UIButton btnWithTitle:@"提交" titleColor:DSWhite font:BoldFont(16) bgColor:BrandColor];
[_commitBtn addTarget:self action:@selector(commitAction) forControlEvents:UIControlEventTouchUpInside];
[_commitBtn cornerRadius:22];
[_commitBtn cornerRadius:20];
}
return _commitBtn;
}
......
......@@ -16,10 +16,14 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, strong) NSArray *adviceListArr;
/// 未读的回复数
@property (nonatomic, assign) int unreadCount;
/// 图片上传返回的图片urls
@property (nonatomic, copy) NSString *result_imgurls;
/// 用户提交反馈接口请求
/// @param content 反馈内容
/// @param contentImg 反馈图片url(客户端上传图片返回的url)
/// @param completion completion
+ (NSURLSessionDataTask *)adviceFeedbackRequestWithCompletion:(void (^)(FeedbackRequestModel *requestModel))completion;
+ (NSURLSessionDataTask *)adviceFeedbackRequestWithContent:(NSString *)content contentImg:(NSString *)contentImg completion:(void (^)(FeedbackRequestModel *requestModel))completion;
/// 用户反馈建议列表请求
/// @param completion completion
......@@ -37,6 +41,12 @@ NS_ASSUME_NONNULL_BEGIN
// 我的反馈红点提醒接口
+ (NSURLSessionDataTask *)queryUserTotalReplysRequest:(void (^)(FeedbackRequestModel *requestModel))completion;
/// 意见反馈批量上传图片(多张图片)
/// @param imgStr 图片base64字符串数组(base64:["1","2","3"])
/// @param completion completion
+ (NSURLSessionDataTask *)uploadBulkImagesWithImgStr:(NSString *)imgStr completion:(void (^)(FeedbackRequestModel *requestModel))completion;
@end
NS_ASSUME_NONNULL_END
......@@ -9,10 +9,10 @@
@implementation FeedbackRequestModel
+ (NSURLSessionDataTask *)adviceFeedbackRequestWithCompletion:(void (^)(FeedbackRequestModel *requestModel))completion {
+ (NSURLSessionDataTask *)adviceFeedbackRequestWithContent:(NSString *)content contentImg:(NSString *)contentImg completion:(void (^)(FeedbackRequestModel *requestModel))completion {
FeedbackRequestModel * requestModel = [[FeedbackRequestModel alloc] init];
NSString *api = @"advice_feedback";
NSString *argStr = [NSString stringWithFormat:@"mutation{%@(title:\"%@\",content:\"%@\",content_img:\"%@\")}", api, @"title", @"content", @"content_img"];
NSString *argStr = [NSString stringWithFormat:@"mutation{%@(content:\"%@\",content_img:\"%@\")}", api, content, contentImg];
return [self httpPostBodyRequestWithAPI:api params:@{@"query" : argStr} view:nil hasNetActivity:YES loadingInfo:nil hasFailInfo:YES success:^(NSDictionary * _Nonnull apiDic) {
DSLog(@"用户反馈接口apiDic:%@", apiDic);
requestModel.resCode = DSResCodeSuccess;
......@@ -94,4 +94,20 @@
}];
}
+ (NSURLSessionDataTask *)uploadBulkImagesWithImgStr:(NSString *)imgStr completion:(void (^)(FeedbackRequestModel *requestModel))completion {
FeedbackRequestModel * requestModel = [[FeedbackRequestModel alloc] init];
NSString *api = @"upload_bulk_images";
NSString *argStr = [NSString stringWithFormat:@"mutation{%@(base64:%@)}", api, imgStr];
return [self httpPostBodyRequestWithAPI:api params:@{@"query" : argStr} view:nil hasNetActivity:YES loadingInfo:nil hasFailInfo:YES success:^(NSDictionary * _Nonnull apiDic) {
DSLog(@"批量上传图片接口apiDic:%@", apiDic);
requestModel.resCode = DSResCodeSuccess;
requestModel.result_imgurls = apiDic[@"result"];
completion(requestModel);
} failure:^(id _Nonnull failureInfo) {
requestModel.resCode = DSResCodeNetFail;
requestModel.errorInfo = failureInfo;
completion(requestModel);
}];
}
@end
......@@ -109,7 +109,7 @@
UserRequestModel * requestModel = [[UserRequestModel alloc] init];
NSString *api = @"update_face_img";
int user_id = [LoginUtils getUserID];
NSString *base64 = [faceImg imageToBase64Str:faceImg];
NSString *base64 = [UIImage imageToBase64Str:faceImg];
NSString *argStr = [NSString stringWithFormat:@"mutation{%@(user_id:%d,base64:\"%@\")}", api, user_id, base64];
return [self httpPostBodyRequestWithAPI:api params:@{@"query" : argStr} view:nil hasNetActivity:YES loadingInfo:nil hasFailInfo:YES success:^(NSDictionary * _Nonnull apiDic) {
DSLog(@"用户头像修改接口apiDic:%@", apiDic);
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!