Commit 27372f7b authored by David黄金龙's avatar David黄金龙

Merge branch 'youhua-dev' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS into youhua-dev

* 'youhua-dev' of http://gitlab.galaxy-immi.com/mobile-group/galaxy-iOS:
  // 人脉匹配黑名单
  //  二维码联调接口
  背景替换
  //  文件清单
parents 0b152c38 8f5c0ba0
...@@ -70,8 +70,8 @@ class YHHomeLottieAnimateContentView: YHBasicContentView { ...@@ -70,8 +70,8 @@ class YHHomeLottieAnimateContentView: YHBasicContentView {
override func deselectAnimation(animated: Bool, completion: (() -> ())?) { override func deselectAnimation(animated: Bool, completion: (() -> ())?) {
super.deselectAnimation(animated: animated, completion: nil) super.deselectAnimation(animated: animated, completion: nil)
lottieView.isHidden = true lottieView.isHidden = true
imageView.isHidden = false
} }
} }
class YHServiceLottieAnimateContentView: YHBasicContentView { class YHServiceLottieAnimateContentView: YHBasicContentView {
...@@ -113,6 +113,7 @@ class YHServiceLottieAnimateContentView: YHBasicContentView { ...@@ -113,6 +113,7 @@ class YHServiceLottieAnimateContentView: YHBasicContentView {
override func deselectAnimation(animated: Bool, completion: (() -> ())?) { override func deselectAnimation(animated: Bool, completion: (() -> ())?) {
super.deselectAnimation(animated: animated, completion: nil) super.deselectAnimation(animated: animated, completion: nil)
lottieView.isHidden = true lottieView.isHidden = true
imageView.isHidden = false
} }
} }
...@@ -155,6 +156,7 @@ class YHCommunityLottieAnimateContentView: YHBasicContentView { ...@@ -155,6 +156,7 @@ class YHCommunityLottieAnimateContentView: YHBasicContentView {
override func deselectAnimation(animated: Bool, completion: (() -> ())?) { override func deselectAnimation(animated: Bool, completion: (() -> ())?) {
super.deselectAnimation(animated: animated, completion: nil) super.deselectAnimation(animated: animated, completion: nil)
lottieView.isHidden = true lottieView.isHidden = true
imageView.isHidden = false
} }
} }
...@@ -198,5 +200,6 @@ class YHMyLottieAnimateContentView: YHBasicContentView { ...@@ -198,5 +200,6 @@ class YHMyLottieAnimateContentView: YHBasicContentView {
override func deselectAnimation(animated: Bool, completion: (() -> ())?) { override func deselectAnimation(animated: Bool, completion: (() -> ())?) {
super.deselectAnimation(animated: animated, completion: nil) super.deselectAnimation(animated: animated, completion: nil)
lottieView.isHidden = true lottieView.isHidden = true
imageView.isHidden = false
} }
} }
...@@ -208,6 +208,31 @@ class YHMatchResultListViewController: YHBaseViewController { ...@@ -208,6 +208,31 @@ class YHMatchResultListViewController: YHBaseViewController {
self.view.addSubview(bgImgV) self.view.addSubview(bgImgV)
self.view.addSubview(navBar) self.view.addSubview(navBar)
self.view.addSubview(self.noDataView)
self.bgImgV.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
self.navBar.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(k_Height_statusBar())
make.height.equalTo(k_Height_NavContentBar)
}
self.noDataView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(self.navBar.snp.bottom).offset(192)
make.height.equalTo(YHPeopleMatchNoDataView.height)
}
if self.matchUsersArr.count <= 0 {
self.noDataView.isHidden = false
self.noDataView.titleLabel.text = "目前尚未找到与您匹配的人脉资源"
self.noDataView.relookBtn.isHidden = true
return
}
self.view.addSubview(topLabel) self.view.addSubview(topLabel)
self.view.addSubview(changeBtn) self.view.addSubview(changeBtn)
self.view.addSubview(myCardBtn) self.view.addSubview(myCardBtn)
...@@ -218,19 +243,9 @@ class YHMatchResultListViewController: YHBaseViewController { ...@@ -218,19 +243,9 @@ class YHMatchResultListViewController: YHBaseViewController {
self.view.addSubview(self.cardActionView) self.view.addSubview(self.cardActionView)
self.cardActionView.addSubview(cardContainer) self.cardActionView.addSubview(cardContainer)
self.view.addSubview(self.noDataView)
self.view.addSubview(self.rematchBtn) self.view.addSubview(self.rematchBtn)
self.view.addSubview(self.guideView) self.view.addSubview(self.guideView)
self.bgImgV.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
self.navBar.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalToSuperview().offset(k_Height_statusBar())
make.height.equalTo(k_Height_NavContentBar)
}
self.topLabel.snp.makeConstraints { make in self.topLabel.snp.makeConstraints { make in
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
make.top.equalTo(50+k_Height_NavigationtBarAndStatuBar) make.top.equalTo(50+k_Height_NavigationtBarAndStatuBar)
...@@ -280,12 +295,6 @@ class YHMatchResultListViewController: YHBaseViewController { ...@@ -280,12 +295,6 @@ class YHMatchResultListViewController: YHBaseViewController {
make.height.equalTo(466.0) make.height.equalTo(466.0)
} }
self.noDataView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(self.topLabel.snp.bottom).offset(120)
make.height.equalTo(YHPeopleMatchNoDataView.height)
}
self.rematchBtn.snp.makeConstraints { make in self.rematchBtn.snp.makeConstraints { make in
make.left.equalTo(24) make.left.equalTo(24)
make.right.equalTo(-24) make.right.equalTo(-24)
...@@ -449,6 +458,7 @@ extension YHMatchResultListViewController: DragCardDelegate { ...@@ -449,6 +458,7 @@ extension YHMatchResultListViewController: DragCardDelegate {
print("didRemovedLast") print("didRemovedLast")
DispatchQueue.main.asyncAfter(deadline: .now()+0.5, execute: { DispatchQueue.main.asyncAfter(deadline: .now()+0.5, execute: {
self.noDataView.isHidden = false self.noDataView.isHidden = false
self.noDataView.titleLabel.text = "本轮智能匹配人脉已到底~"
self.rematchBtn.isHidden = false self.rematchBtn.isHidden = false
self.changeBtn.isHidden = true self.changeBtn.isHidden = true
self.myCardBtn.isHidden = true self.myCardBtn.isHidden = true
......
...@@ -319,7 +319,7 @@ extension YHMatchUserViewController { ...@@ -319,7 +319,7 @@ extension YHMatchUserViewController {
func requestMatchUserList() { func requestMatchUserList() {
self.viewModel.getMatchUserlist { self.viewModel.getMatchUserlist {
success, error in success, error in
if success, self.viewModel.matchUserArr.count > 0 { if success {
let vc = YHMatchResultListViewController() let vc = YHMatchResultListViewController()
vc.delegate = self vc.delegate = self
vc.matchUsersArr = self.viewModel.matchUserArr vc.matchUsersArr = self.viewModel.matchUserArr
...@@ -332,6 +332,21 @@ extension YHMatchUserViewController { ...@@ -332,6 +332,21 @@ extension YHMatchUserViewController {
} }
} else { } else {
if let err = error, err.errorCode == YHErrorCode.peopleMatchBlackList.rawValue {
// 人脉匹配黑名单
let vc = YHMatchResultListViewController()
vc.delegate = self
vc.matchUsersArr = self.viewModel.matchUserArr
self.resetAnimation()
if let curVc = UIViewController.current as? YHCommunityViewController,curVc.segmentedView.selectedIndex == 0 {
curVc.navigationController?.pushViewController(vc, completion: {
})
} else {
printLog("hhhhhhhhhhhhhhhhhhhhhhhh")
}
return
}
var msg = "匹配失败" var msg = "匹配失败"
if let errorMsg = error?.errorMsg, !errorMsg.isEmpty { if let errorMsg = error?.errorMsg, !errorMsg.isEmpty {
msg = errorMsg msg = errorMsg
......
...@@ -32,15 +32,15 @@ class YHConfigManager: NSObject { ...@@ -32,15 +32,15 @@ class YHConfigManager: NSObject {
var h5Url : String { var h5Url : String {
var tH5url = reqVM.configModel?.article_h5_url ?? "" var tH5url = reqVM.configModel?.article_h5_url ?? ""
if tH5url.isEmpty { if tH5url.isEmpty {
#if DEBUG //#if DEBUG
tH5url = YHConfigManager.baseH5UrlTest // tH5url = YHConfigManager.baseH5UrlTest
#elseif TESTENV //#elseif TESTENV
tH5url = YHConfigManager.baseH5UrlTest // tH5url = YHConfigManager.baseH5UrlTest
#elseif UATENV //#elseif UATENV
tH5url = YHConfigManager.baseH5UrlRelease tH5url = YHConfigManager.baseH5UrlRelease
#else //#else
tH5url = YHConfigManager.baseH5UrlRelease // tH5url = YHConfigManager.baseH5UrlRelease
#endif //#endif
} }
if !loadNewDataFlag { if !loadNewDataFlag {
...@@ -58,15 +58,15 @@ class YHConfigManager: NSObject { ...@@ -58,15 +58,15 @@ class YHConfigManager: NSObject {
var ossUrl : String { var ossUrl : String {
var tOssUrl = reqVM.configModel?.oss_server ?? "" var tOssUrl = reqVM.configModel?.oss_server ?? ""
if tOssUrl.isEmpty { if tOssUrl.isEmpty {
#if DEBUG //#if DEBUG
tOssUrl = YHConfigManager.baseOSSUrlTest // tOssUrl = YHConfigManager.baseOSSUrlTest
#elseif TESTENV //#elseif TESTENV
tOssUrl = YHConfigManager.baseOSSUrlTest // tOssUrl = YHConfigManager.baseOSSUrlTest
#elseif UATENV //#elseif UATENV
tOssUrl = YHConfigManager.baseOSSUrlRelease
#else
tOssUrl = YHConfigManager.baseOSSUrlRelease tOssUrl = YHConfigManager.baseOSSUrlRelease
#endif //#else
// tOssUrl = YHConfigManager.baseOSSUrlRelease
//#endif
} }
if !loadNewDataFlag { if !loadNewDataFlag {
......
...@@ -75,6 +75,8 @@ class YHHKEventCenterViewController: YHBaseViewController { ...@@ -75,6 +75,8 @@ class YHHKEventCenterViewController: YHBaseViewController {
func getData() { func getData() {
gk_navTitle = "香港办事" gk_navTitle = "香港办事"
gk_navBackgroundColor = .white
gk_navBarAlpha = 1.0
homeViewModel.getHKEvent {[weak self] success, error in homeViewModel.getHKEvent {[weak self] success, error in
guard let self = self else { return } guard let self = self else { return }
self.hkList = self.homeViewModel.hkList ?? [] self.hkList = self.homeViewModel.hkList ?? []
......
...@@ -452,7 +452,8 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD ...@@ -452,7 +452,8 @@ class YHHomeWebViewController: YHBaseViewController, WKUIDelegate, WKNavigationD
} }
@objc func didConsultViewTapped() { @objc func didConsultViewTapped() {
YHConsultantQRCodeView.codeView().show() let codeUrl = self.viewModel.mainModel?.clue_classify_img_url ?? ""
YHConsultantQRCodeView.codeView(codeUrl).show()
} }
@objc func loginSuccess() { @objc func loginSuccess() {
......
...@@ -88,6 +88,8 @@ class YHOtherServiceViewController: YHBaseViewController { ...@@ -88,6 +88,8 @@ class YHOtherServiceViewController: YHBaseViewController {
} else if classID == 5 { } else if classID == 5 {
gk_navTitle = "客户心声" gk_navTitle = "客户心声"
} }
gk_navBackgroundColor = .white
gk_navBarAlpha = 1.0
homeViewModel.getHomeClassify{[weak self] success, error in homeViewModel.getHomeClassify{[weak self] success, error in
guard let self = self, let classify = self.homeViewModel.classify else { return } guard let self = self, let classify = self.homeViewModel.classify else { return }
for item in classify { for item in classify {
......
...@@ -18,4 +18,5 @@ class YHWebModel: YHBaseModel { ...@@ -18,4 +18,5 @@ class YHWebModel: YHBaseModel {
var media_url: String = "" var media_url: String = ""
var title: String = "" var title: String = ""
var img_url: String = "" var img_url: String = ""
var clue_classify_img_url = ""
} }
...@@ -7,9 +7,30 @@ ...@@ -7,9 +7,30 @@
// //
import UIKit import UIKit
import Photos
class YHConsultantQRCodeView: UIView { class YHConsultantQRCodeView: UIView {
var codeUrl:String = "" {
didSet {
if !codeUrl.isEmpty {
self.qrCodeImgView.kf.setImage(with: URL(string: codeUrl), placeholder: UIImage(named: "global_default_image")) { result in
switch result {
case .success(let value):
self.codeImage = value.image
self.saveBtn.alpha = 1.0
self.saveBtn.isUserInteractionEnabled = true
case .failure(let value):
self.saveBtn.alpha = 0.3
self.saveBtn.isUserInteractionEnabled = false
}
}
}
}
}
var codeImage:UIImage? = nil
// 底层蒙版 // 底层蒙版
lazy var blackMaskView: UIView = { lazy var blackMaskView: UIView = {
let view = UIView() let view = UIView()
...@@ -42,7 +63,7 @@ class YHConsultantQRCodeView: UIView { ...@@ -42,7 +63,7 @@ class YHConsultantQRCodeView: UIView {
}() }()
lazy var qrCodeImgView:UIImageView = { lazy var qrCodeImgView:UIImageView = {
let view = UIImageView(image: UIImage(named: "")) let view = UIImageView(image: UIImage(named: "global_default_image"))
view.backgroundColor = .red view.backgroundColor = .red
return view return view
}() }()
...@@ -55,6 +76,8 @@ class YHConsultantQRCodeView: UIView { ...@@ -55,6 +76,8 @@ class YHConsultantQRCodeView: UIView {
button.backgroundColor = UIColor.brandMainColor button.backgroundColor = UIColor.brandMainColor
button.addTarget(self, action: #selector(didSaveQRCodeBtnClicked), for: .touchUpInside) button.addTarget(self, action: #selector(didSaveQRCodeBtnClicked), for: .touchUpInside)
button.layer.cornerRadius = 3 button.layer.cornerRadius = 3
button.alpha = 0.3
button.isUserInteractionEnabled = false
return button return button
}() }()
...@@ -74,8 +97,9 @@ class YHConsultantQRCodeView: UIView { ...@@ -74,8 +97,9 @@ class YHConsultantQRCodeView: UIView {
createUI() createUI()
} }
static func codeView() -> YHConsultantQRCodeView { static func codeView(_ url:String) -> YHConsultantQRCodeView {
let alertView = YHConsultantQRCodeView(frame:UIScreen.main.bounds) let alertView = YHConsultantQRCodeView(frame:UIScreen.main.bounds)
alertView.codeUrl = url
return alertView return alertView
} }
...@@ -140,10 +164,34 @@ class YHConsultantQRCodeView: UIView { ...@@ -140,10 +164,34 @@ class YHConsultantQRCodeView: UIView {
} }
@objc func didSaveQRCodeBtnClicked() { @objc func didSaveQRCodeBtnClicked() {
if let img = self.codeImage {
self.saveImage(img)
}
} }
@objc func didCloseBtnClicked() { @objc func didCloseBtnClicked() {
self.dismiss() self.dismiss()
} }
func saveImage(_ image: UIImage) {
// 确保应用有权访问相册
PHPhotoLibrary.requestAuthorization { status in
if status == .authorized {
// 保存图片到相册
DispatchQueue.main.sync {
UIImageWriteToSavedPhotosAlbum(image, self, #selector(self.image(image:didFinishSavingWithError:contextInfo:)), nil)
}
} else {
YHHUD.flash(message: "没有访问图库权限")
}
}
}
@objc func image(image: UIImage,didFinishSavingWithError: NSError?,contextInfo: AnyObject) {
if didFinishSavingWithError != nil {
YHHUD.flash(message: "保存失败")
return
}
YHHUD.flash(message: "保存成功")
}
} }
...@@ -54,7 +54,6 @@ class YHMyFileListViewController: YHBaseViewController { ...@@ -54,7 +54,6 @@ class YHMyFileListViewController: YHBaseViewController {
tableView.showsVerticalScrollIndicator = false tableView.showsVerticalScrollIndicator = false
tableView.backgroundColor = UIColor.init(hex: 0xDCE4F1) tableView.backgroundColor = UIColor.init(hex: 0xDCE4F1)
tableView.separatorStyle = .none tableView.separatorStyle = .none
tableView.bounces = false
tableView.register(YHMyFileListCell.self, forCellReuseIdentifier: YHMyFileListCell.cellReuseIdentifier) tableView.register(YHMyFileListCell.self, forCellReuseIdentifier: YHMyFileListCell.cellReuseIdentifier)
tableView.register(YHMyFileListNoneCell.self, forCellReuseIdentifier: YHMyFileListNoneCell.cellReuseIdentifier) tableView.register(YHMyFileListNoneCell.self, forCellReuseIdentifier: YHMyFileListNoneCell.cellReuseIdentifier)
tableView.delegate = self tableView.delegate = self
...@@ -241,12 +240,12 @@ class YHMyFileListViewController: YHBaseViewController { ...@@ -241,12 +240,12 @@ class YHMyFileListViewController: YHBaseViewController {
} }
let offsetY = self.tableView.contentOffset.y-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight+gap let offsetY = self.tableView.contentOffset.y-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight+gap
let maxOffSetY = self.tableView.contentSize.height-self.tableView.frame.size.height let maxOffSetY = self.tableView.contentSize.height-self.tableView.frame.size.height
if abs(offsetY) <= maxOffSetY { // if abs(offsetY) <= maxOffSetY {
// 此处+2是弥补section结合处偏差与tab显示 // 此处+2是弥补section结合处偏差与tab显示
self.tableView.setContentOffset(CGPointMake(0, offsetY+4), animated: false) self.tableView.setContentOffset(CGPointMake(0, offsetY+4), animated: false)
} else { // } else {
self.tableView.setContentOffset(CGPointMake(0, maxOffSetY-1), animated: false) // self.tableView.setContentOffset(CGPointMake(0, maxOffSetY-1), animated: false)
} // }
}) })
} }
} }
...@@ -385,27 +384,49 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc ...@@ -385,27 +384,49 @@ extension YHMyFileListViewController : UITableViewDelegate, UITableViewDataSourc
self.topSegmentView.isHidden = scrollView.contentOffset.y < gap self.topSegmentView.isHidden = scrollView.contentOffset.y < gap
// 滚动到哪个section 对应的segment要显示相应的index // 滚动到哪个section 对应的segment要显示相应的index
// if items.count > 0 {
// var arr:[Double] = []
// for index in 0..<items.count {
// let rect = self.tableView.rectForHeader(inSection: index)
// let y = rect.origin.y-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight
// arr.append(y)
// }
//
// for (index, offY) in arr.reversed().enumerated() {
// if index == arr.count-1 {
// self.topSegmentView.updateSelectIndex(arr.count-index-1)
// self.segmentView.updateSelectIndex(arr.count-index-1)
// break
//
// } else {
// if scrollView.contentOffset.y >= offY+2 {
// self.topSegmentView.updateSelectIndex(arr.count-index-1)
// self.segmentView.updateSelectIndex(arr.count-index-1)
// break
// }
// }
// }
// }
var find:Bool = false
if items.count > 0 { if items.count > 0 {
var arr:[Double] = []
for index in 0..<items.count { for index in 0..<items.count {
let rect = self.tableView.rectForHeader(inSection: index) let rect = self.tableView.rectForHeader(inSection: index)
let y = rect.origin.y-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight // section 到顶部选择tab的距离
arr.append(y) let y = rect.origin.y-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight+24.0-self.tableView.contentOffset.y
if 0.0 <= y, y < self.tableView.height-k_Height_NavigationtBarAndStatuBar-self.topSegmentHeight {
for (index, offY) in arr.reversed().enumerated() { find = true
if index == arr.count-1 { self.topSegmentView.updateSelectIndex(index)
self.topSegmentView.updateSelectIndex(arr.count-index-1) self.segmentView.updateSelectIndex(index)
self.segmentView.updateSelectIndex(arr.count-index-1)
break
} else {
if scrollView.contentOffset.y >= offY+2 {
self.topSegmentView.updateSelectIndex(arr.count-index-1)
self.segmentView.updateSelectIndex(arr.count-index-1)
break break
} }
} }
} }
// section 没有在可见区域出现
if !find {
if let arr = self.tableView.indexPathsForVisibleRows, let lastIndexPath = arr.last {
self.topSegmentView.updateSelectIndex(lastIndexPath.section)
self.segmentView.updateSelectIndex(lastIndexPath.section)
} }
} }
} }
......
...@@ -101,7 +101,6 @@ class YHSegmentView: UIView { ...@@ -101,7 +101,6 @@ class YHSegmentView: UIView {
let selectIndex = view.tag-self.itemBaseTag let selectIndex = view.tag-self.itemBaseTag
self.selectIndex = selectIndex self.selectIndex = selectIndex
self.selectBlock?(selectIndex) self.selectBlock?(selectIndex)
updateSelectIndex(selectIndex)
} }
} }
......
...@@ -85,6 +85,8 @@ class YHMyLikeActivityViewController: YHBaseViewController { ...@@ -85,6 +85,8 @@ class YHMyLikeActivityViewController: YHBaseViewController {
func getData() { func getData() {
gk_navTitle = "我的足迹" gk_navTitle = "我的足迹"
gk_navBackgroundColor = .white
gk_navBarAlpha = 1.0
} }
func updateViews() { func updateViews() {
......
...@@ -20,15 +20,15 @@ class YHBaseUrlManager { ...@@ -20,15 +20,15 @@ class YHBaseUrlManager {
func curURL() -> String { func curURL() -> String {
#if DEBUG //#if DEBUG
return YHBaseUrlManager.baseUrlForTest + "/" // return YHBaseUrlManager.baseUrlForTest + "/"
#elseif TESTENV //#elseif TESTENV
return YHBaseUrlManager.baseUrlForTest + "/" // return YHBaseUrlManager.baseUrlForTest + "/"
#elseif UATENV //#elseif UATENV
return YHBaseUrlManager.baseUrlForUat + "/" return YHBaseUrlManager.baseUrlForUat + "/"
#else //#else
return YHBaseUrlManager.baseUrlForRelease + "/" // return YHBaseUrlManager.baseUrlForRelease + "/"
#endif //#endif
} }
//ossUrl //ossUrl
......
...@@ -27,6 +27,7 @@ public enum YHErrorCode : Int32 { ...@@ -27,6 +27,7 @@ public enum YHErrorCode : Int32 {
case dictParseError = -10001 case dictParseError = -10001
case tokenInvalidError = 20001 // 登录token失效 case tokenInvalidError = 20001 // 登录token失效
case forceUpdate = 10025 // 强制更新版本 case forceUpdate = 10025 // 强制更新版本
case peopleMatchBlackList = 20005 // 人脉匹配黑名单
case unregisterError = 20007 //手机号已注销 case unregisterError = 20007 //手机号已注销
public func description() -> String { public func description() -> String {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment