Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
陈高翔
/
DreamSleep-iOS
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit cb6adc91
由
cgx
编写于
2022-04-28 14:51:27 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
完成用户反馈图片上传及提交反馈接口
1 个父辈
7d5be68f
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
74 行增加
和
17 行删除
DreamSleep/DreamSleep/Category/UIImage+Extras.h
DreamSleep/DreamSleep/Category/UIImage+Extras.m
DreamSleep/DreamSleep/DSConfig/Info.plist
DreamSleep/DreamSleep/Profile/Feedback/FeedbackController.m
DreamSleep/DreamSleep/Profile/Feedback/FeedbackRequestModel.h
DreamSleep/DreamSleep/Profile/Feedback/FeedbackRequestModel.m
DreamSleep/DreamSleep/Profile/UserLogin/UserRequestModel.m
DreamSleep/DreamSleep/Vendors/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings
DreamSleep/DreamSleep/Category/UIImage+Extras.h
查看文件 @
cb6adc9
...
...
@@ -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
DreamSleep/DreamSleep/Category/UIImage+Extras.m
查看文件 @
cb6adc9
...
...
@@ -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
(
@"
\n
start:%zd
\n
end:%zd
\n
index:%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
;
...
...
DreamSleep/DreamSleep/DSConfig/Info.plist
查看文件 @
cb6adc9
...
...
@@ -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>
...
...
DreamSleep/DreamSleep/Profile/Feedback/FeedbackController.m
查看文件 @
cb6adc9
...
...
@@ -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
)
deleteBtnCli
c
k
:
(
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
(
deleteBtnCli
c
k
:
)
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
:
2
2
];
[
_commitBtn
cornerRadius
:
2
0
];
}
return
_commitBtn
;
}
...
...
DreamSleep/DreamSleep/Profile/Feedback/FeedbackRequestModel.h
查看文件 @
cb6adc9
...
...
@@ -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
*
)
adviceFeedbackRequestWithCo
ntent
:(
NSString
*
)
content
contentImg
:(
NSString
*
)
contentImg
co
mpletion
:(
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
DreamSleep/DreamSleep/Profile/Feedback/FeedbackRequestModel.m
查看文件 @
cb6adc9
...
...
@@ -9,10 +9,10 @@
@implementation
FeedbackRequestModel
+
(
NSURLSessionDataTask
*
)
adviceFeedbackRequestWithCompletion
:(
void
(
^
)(
FeedbackRequestModel
*
requestModel
))
completion
{
+
(
NSURLSessionDataTask
*
)
adviceFeedbackRequestWithCo
ntent
:(
NSString
*
)
content
contentImg
:(
NSString
*
)
contentImg
co
mpletion
:(
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
DreamSleep/DreamSleep/Profile/UserLogin/UserRequestModel.m
查看文件 @
cb6adc9
...
...
@@ -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
);
...
...
DreamSleep/DreamSleep/Vendors/TZImagePickerController/TZImagePickerController.bundle/zh-Hans.lproj/Localizable.strings
查看文件 @
cb6adc9
此文件类型无法预览
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论