basic function completation

FFIB vor 6 Jahren
Ursprung
Commit
ad8c64a985
123 geänderte Dateien mit 332 neuen Zeilen und 842 gelöschten Zeilen
  1. 5 0
      PaiAi/Paiai.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  2. 18 0
      PaiAi/Paiai.xcodeproj/project.xcworkspace/xcuserdata/FFIB.xcuserdatad/WorkspaceSettings.xcsettings
  3. 21 0
      PaiAi/Paiai/Assets.xcassets/Common/BTN-send.imageset/Contents.json
  4. BIN
      PaiAi/Paiai/Assets.xcassets/Common/BTN-send.imageset/未命名设计.png
  5. 0 0
      PaiAi/Paiai/Assets.xcassets/Common/defaultAvatar.imageset/Contents.json
  6. 0 0
      PaiAi/Paiai/Assets.xcassets/Common/defaultAvatar.imageset/默认头像.png
  7. 1 1
      PaiAi/Paiai/Assets.xcassets/MainPage/navigation-QR.imageset/Contents.json
  8. BIN
      PaiAi/Paiai/Assets.xcassets/Common/list-QR.imageset/二维码 (1).png
  9. 0 0
      PaiAi/Paiai/Assets.xcassets/Common/list-arrow.imageset/Contents.json
  10. 0 0
      PaiAi/Paiai/Assets.xcassets/Common/list-arrow.imageset/列表箭头.png
  11. BIN
      PaiAi/Paiai/Assets.xcassets/Logo.imageset/Logo@3x.png
  12. BIN
      PaiAi/Paiai/Assets.xcassets/MainPage/navigation-QR.imageset/二维码 (1).png
  13. 0 0
      PaiAi/Paiai/Assets.xcassets/message/Contents.json
  14. 0 0
      PaiAi/Paiai/Assets.xcassets/message/message-comment.imageset/Contents.json
  15. 0 0
      PaiAi/Paiai/Assets.xcassets/message/message-comment.imageset/消息-评论.png
  16. 0 0
      PaiAi/Paiai/Assets.xcassets/message/message-system.imageset/Contents.json
  17. 0 0
      PaiAi/Paiai/Assets.xcassets/message/message-system.imageset/消息-官方提示.png
  18. 0 0
      PaiAi/Paiai/Assets.xcassets/message/message-thumpub.imageset/Contents.json
  19. 0 0
      PaiAi/Paiai/Assets.xcassets/message/message-thumpub.imageset/消息-赞.png
  20. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/Contents.json
  21. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/about-contactUs.imageset/Contents.json
  22. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/about-contactUs.imageset/我的-客服 @3x.png
  23. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/about-score.imageset/Contents.json
  24. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/about-score.imageset/关于-用户协议 @3x.png
  25. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/about-userAgreement.imageset/Contents.json
  26. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/about-userAgreement.imageset/关于-用户协议 @3x.png
  27. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-about.imageset/Contents.json
  28. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-about.imageset/关于@3x.png
  29. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-feedback.imageset/Contents.json
  30. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-feedback.imageset/我的-意见反馈 copy.png
  31. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-group.imageset/Contents.json
  32. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-group.imageset/群组@3x.png
  33. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-order.imageset/Contents.json
  34. 0 0
      PaiAi/Paiai/Assets.xcassets/mine/mine-order.imageset/订单@3x.png
  35. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/Contents.json
  36. 1 1
      PaiAi/Paiai/Assets.xcassets/Logo.imageset/Contents.json
  37. BIN
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-QR.imageset/二维码 (2).png
  38. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-back.imageset/Contents.json
  39. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-back.imageset/back.png
  40. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-background.imageset/Contents.json
  41. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-background.imageset/标题栏-2.png
  42. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-right.imageset/Contents.json
  43. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-right.imageset/更多-右上角.png
  44. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-vertical-points.imageset/Contents.json
  45. 0 0
      PaiAi/Paiai/Assets.xcassets/navigation/navigation-vertical-points.imageset/更多-右上角-2.png
  46. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-comment.imageset/BTN-评论.png
  47. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-comment.imageset/Contents.json
  48. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-download.imageset/Contents.json
  49. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-download.imageset/大图模式-下载.png
  50. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-rotate.imageset/Contents.json
  51. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-rotate.imageset/旋转.png
  52. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-share.imageset/BTN-分享.png
  53. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-share.imageset/Contents.json
  54. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-thumbup.imageset/Contents.json
  55. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-thumbup.imageset/Oval 491.png
  56. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/Contents.json
  57. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/icon-comment.imageset/Contents.json
  58. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/icon-comment.imageset/icon-评论-2.png
  59. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/icon-thumbup.imageset/Contents.json
  60. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/icon-thumbup.imageset/icon-赞-2.png
  61. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/icon-time.imageset/Contents.json
  62. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/icon-time.imageset/icon-记录.png
  63. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/purchase-background.imageset/Contents.json
  64. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/purchase-background.imageset/获取高清图.png
  65. 6 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/Contents.json
  66. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-QQ.imageset/Contents.json
  67. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-QQ.imageset/分享-QQ.png
  68. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-weibo.imageset/Contents.json
  69. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-weibo.imageset/分享-微博.png
  70. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wx.imageset/Contents.json
  71. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wx.imageset/分享-微信好友.png
  72. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wxCircle.imageset/Contents.json
  73. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wxCircle.imageset/分享-朋友圈.png
  74. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/去除水印.imageset/Contents.json
  75. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/去除水印.imageset/去除水印.png
  76. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/购买-HD.imageset/Contents.json
  77. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/购买-HD.imageset/购买-HD.png
  78. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/购买-去水印.imageset/Contents.json
  79. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/购买-去水印.imageset/购买-去水印.png
  80. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/进入群.imageset/Contents.json
  81. 0 0
      PaiAi/Paiai/Assets.xcassets/photoDetail/进入群.imageset/进入群.png
  82. BIN
      PaiAi/Paiai/Assets.xcassets/share/.DS_Store
  83. BIN
      PaiAi/Paiai/Assets.xcassets/share/1401793178925.imageset/1401793178925.png
  84. 0 21
      PaiAi/Paiai/Assets.xcassets/share/1401793178925.imageset/Contents.json
  85. 0 103
      PaiAi/PaiaiDataKit/DataLayer/Model/DetailModel.swift
  86. 0 106
      PaiAi/PaiaiDataKit/DataLayer/Model/GroupDetailModel.swift
  87. 3 3
      PaiAi/PaiaiDataKit/DataLayer/Model/CommentItem.swift
  88. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Model/PhotoThumbupUserItem.swift
  89. 1 1
      PaiAi/PaiaiDataKit/DataLayer/Model/NetWorkData.swift
  90. 9 0
      PaiAi/PaiaiDataKit/DataLayer/Model/Reusable/OriginData.swift
  91. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/GroupPhotoRepository.swift
  92. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/HomeRepository.swift
  93. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/MessageRepository.swift
  94. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/OrderRepository.swift
  95. 38 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/PhotoDetailRepository.swift
  96. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/PhotoGroupDetailRepository.swift
  97. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/PhotoGroupRepository.swift
  98. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/UserInfoRepository.swift
  99. 0 75
      PaiAi/PaiaiDataKit/DataLayer/Repositories/MessageListRepository.swift
  100. 0 91
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Persistence/PhotoLocalStorage.swift
  101. 0 17
      PaiAi/PaiaiDataKit/DataLayer/Repositories/PhotoDetailRepository.swift
  102. 0 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/HomeRemoteAPI.swift
  103. 0 49
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/MessageListRemoteAPI.swift
  104. 9 0
      PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/PhotoDetailRemoteAPI.swift
  105. 0 0
      PaiAi/PaiaiDataKit/PresentLayer/Home/CreateGroupViewModel.swift
  106. 9 0
      PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/PhotoDetailListViewModel.swift
  107. 3 3
      PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/DetailPageViewModel.swift
  108. 9 0
      PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/PhotoPurchaseViewModel.swift
  109. 21 0
      PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupDetailMemeberView.swift
  110. 0 0
      PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupMemberCell.swift
  111. 0 0
      PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupMemberViewController.swift
  112. 0 0
      PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupNameModificationViewController.swift
  113. 0 48
      PaiAi/Paiai_iOS/App/Group/GroupDetail/ShowGroupQRController.swift
  114. 0 40
      PaiAi/Paiai_iOS/App/PhotoDetail/DetailPageHeadCell.swift
  115. 0 35
      PaiAi/Paiai_iOS/App/PhotoDetail/DetailPageNameCell.swift
  116. 0 85
      PaiAi/Paiai_iOS/App/PhotoDetail/DetailPagePhotoCell.swift
  117. 0 33
      PaiAi/Paiai_iOS/App/PhotoDetail/DetailZanImagesCell.swift
  118. 7 11
      PaiAi/Paiai_iOS/App/PhotoDetail/Detail.storyboard
  119. 5 5
      PaiAi/Paiai_iOS/App/PhotoDetail/DetailCommentCell.swift
  120. 13 0
      PaiAi/Paiai_iOS/App/PhotoDetail/PhotoDetailImageCell.swift
  121. 128 110
      PaiAi/Paiai_iOS/App/PhotoDetail/DetailPageController.swift
  122. 4 4
      PaiAi/Paiai_iOS/App/PhotoDetail/ShowFullPicController.swift
  123. 21 0
      PaiAi/Paiai_iOS/App/PhotoDetail/ShareView.swift

+ 5 - 0
PaiAi/Paiai.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -0,0 +1,5 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict/>
5
+</plist>

+ 18 - 0
PaiAi/Paiai.xcodeproj/project.xcworkspace/xcuserdata/FFIB.xcuserdatad/WorkspaceSettings.xcsettings

@@ -0,0 +1,18 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>BuildLocationStyle</key>
6
+	<string>UseAppPreferences</string>
7
+	<key>CustomBuildLocationType</key>
8
+	<string>RelativeToDerivedData</string>
9
+	<key>DerivedDataLocationStyle</key>
10
+	<string>Default</string>
11
+	<key>EnabledFullIndexStoreVisibility</key>
12
+	<false/>
13
+	<key>IssueFilterStyle</key>
14
+	<string>ShowActiveSchemeOnly</string>
15
+	<key>LiveSourceIssuesEnabled</key>
16
+	<true/>
17
+</dict>
18
+</plist>

+ 21 - 0
PaiAi/Paiai/Assets.xcassets/Common/BTN-send.imageset/Contents.json

@@ -0,0 +1,21 @@
1
+{
2
+  "images" : [
3
+    {
4
+      "idiom" : "universal",
5
+      "filename" : "未命名设计.png",
6
+      "scale" : "1x"
7
+    },
8
+    {
9
+      "idiom" : "universal",
10
+      "scale" : "2x"
11
+    },
12
+    {
13
+      "idiom" : "universal",
14
+      "scale" : "3x"
15
+    }
16
+  ],
17
+  "info" : {
18
+    "version" : 1,
19
+    "author" : "xcode"
20
+  }
21
+}

BIN
PaiAi/Paiai/Assets.xcassets/Common/BTN-send.imageset/未命名设计.png


PaiAi/Paiai/Assets.xcassets/MainPage/defaultAvatar.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/Common/defaultAvatar.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/defaultAvatar.imageset/默认头像.png → PaiAi/Paiai/Assets.xcassets/Common/defaultAvatar.imageset/默认头像.png


+ 1 - 1
PaiAi/Paiai/Assets.xcassets/MainPage/navigation-QR.imageset/Contents.json

@@ -2,6 +2,7 @@
2 2
   "images" : [
3 3
     {
4 4
       "idiom" : "universal",
5
+      "filename" : "二维码 (1).png",
5 6
       "scale" : "1x"
6 7
     },
7 8
     {
@@ -10,7 +11,6 @@
10 11
     },
11 12
     {
12 13
       "idiom" : "universal",
13
-      "filename" : "二维码 (1).png",
14 14
       "scale" : "3x"
15 15
     }
16 16
   ],

BIN
PaiAi/Paiai/Assets.xcassets/Common/list-QR.imageset/二维码 (1).png


PaiAi/Paiai/Assets.xcassets/MainPage/列表箭头.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/Common/list-arrow.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/列表箭头.imageset/列表箭头.png → PaiAi/Paiai/Assets.xcassets/Common/list-arrow.imageset/列表箭头.png


BIN
PaiAi/Paiai/Assets.xcassets/Logo.imageset/Logo@3x.png


BIN
PaiAi/Paiai/Assets.xcassets/MainPage/navigation-QR.imageset/二维码 (1).png


PaiAi/Paiai/Assets.xcassets/Mine/Contents.json → PaiAi/Paiai/Assets.xcassets/message/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/message-comment.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/message/message-comment.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/message-comment.imageset/消息-评论.png → PaiAi/Paiai/Assets.xcassets/message/message-comment.imageset/消息-评论.png


PaiAi/Paiai/Assets.xcassets/MainPage/message-system.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/message/message-system.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/message-system.imageset/消息-官方提示.png → PaiAi/Paiai/Assets.xcassets/message/message-system.imageset/消息-官方提示.png


PaiAi/Paiai/Assets.xcassets/MainPage/message-thumpub.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/message/message-thumpub.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/message-thumpub.imageset/消息-赞.png → PaiAi/Paiai/Assets.xcassets/message/message-thumpub.imageset/消息-赞.png


PaiAi/Paiai/Assets.xcassets/New Folder-1/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/about-contactUs.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/about-contactUs.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/about-contactUs.imageset/我的-客服 @3x.png → PaiAi/Paiai/Assets.xcassets/mine/about-contactUs.imageset/我的-客服 @3x.png


PaiAi/Paiai/Assets.xcassets/Mine/about-score.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/about-score.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/about-score.imageset/关于-用户协议 @3x.png → PaiAi/Paiai/Assets.xcassets/mine/about-score.imageset/关于-用户协议 @3x.png


PaiAi/Paiai/Assets.xcassets/Mine/about-userAgreement.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/about-userAgreement.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/about-userAgreement.imageset/关于-用户协议 @3x.png → PaiAi/Paiai/Assets.xcassets/mine/about-userAgreement.imageset/关于-用户协议 @3x.png


PaiAi/Paiai/Assets.xcassets/Mine/mine-about.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/mine-about.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/mine-about.imageset/关于@3x.png → PaiAi/Paiai/Assets.xcassets/mine/mine-about.imageset/关于@3x.png


PaiAi/Paiai/Assets.xcassets/Mine/mine-feedback.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/mine-feedback.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/mine-feedback.imageset/我的-意见反馈 copy.png → PaiAi/Paiai/Assets.xcassets/mine/mine-feedback.imageset/我的-意见反馈 copy.png


PaiAi/Paiai/Assets.xcassets/Mine/mine-group.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/mine-group.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/mine-group.imageset/群组@3x.png → PaiAi/Paiai/Assets.xcassets/mine/mine-group.imageset/群组@3x.png


PaiAi/Paiai/Assets.xcassets/Mine/mine-order.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/mine/mine-order.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/Mine/mine-order.imageset/订单@3x.png → PaiAi/Paiai/Assets.xcassets/mine/mine-order.imageset/订单@3x.png


PaiAi/Paiai/Assets.xcassets/New Folder-2/Contents.json → PaiAi/Paiai/Assets.xcassets/navigation/Contents.json


+ 1 - 1
PaiAi/Paiai/Assets.xcassets/Logo.imageset/Contents.json

@@ -10,7 +10,7 @@
10 10
     },
11 11
     {
12 12
       "idiom" : "universal",
13
-      "filename" : "Logo@3x.png",
13
+      "filename" : "二维码 (2).png",
14 14
       "scale" : "3x"
15 15
     }
16 16
   ],

BIN
PaiAi/Paiai/Assets.xcassets/navigation/navigation-QR.imageset/二维码 (2).png


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-back.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/navigation/navigation-back.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-back.imageset/back.png → PaiAi/Paiai/Assets.xcassets/navigation/navigation-back.imageset/back.png


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-background.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/navigation/navigation-background.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-background.imageset/标题栏-2.png → PaiAi/Paiai/Assets.xcassets/navigation/navigation-background.imageset/标题栏-2.png


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-right.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/navigation/navigation-right.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-right.imageset/更多-右上角.png → PaiAi/Paiai/Assets.xcassets/navigation/navigation-right.imageset/更多-右上角.png


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-vertical-points.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/navigation/navigation-vertical-points.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/navigation-vertical-points.imageset/更多-右上角-2.png → PaiAi/Paiai/Assets.xcassets/navigation/navigation-vertical-points.imageset/更多-右上角-2.png


PaiAi/Paiai/Assets.xcassets/MainPage/BTN-评论.imageset/BTN-评论.png → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-comment.imageset/BTN-评论.png


PaiAi/Paiai/Assets.xcassets/MainPage/BTN-评论.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-comment.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/大图模式-下载.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-download.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/大图模式-下载.imageset/大图模式-下载.png → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-download.imageset/大图模式-下载.png


PaiAi/Paiai/Assets.xcassets/MainPage/旋转.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-rotate.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/旋转.imageset/旋转.png → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-rotate.imageset/旋转.png


PaiAi/Paiai/Assets.xcassets/MainPage/BTN-分享.imageset/BTN-分享.png → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-share.imageset/BTN-分享.png


PaiAi/Paiai/Assets.xcassets/MainPage/BTN-分享.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-share.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/Oval 491.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-thumbup.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/Oval 491.imageset/Oval 491.png → PaiAi/Paiai/Assets.xcassets/photoDetail/BTN-thumbup.imageset/Oval 491.png


PaiAi/Paiai/Assets.xcassets/share/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/icon-评论.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/icon-comment.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/icon-评论.imageset/icon-评论-2.png → PaiAi/Paiai/Assets.xcassets/photoDetail/icon-comment.imageset/icon-评论-2.png


PaiAi/Paiai/Assets.xcassets/MainPage/icon-赞.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/icon-thumbup.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/icon-赞.imageset/icon-赞-2.png → PaiAi/Paiai/Assets.xcassets/photoDetail/icon-thumbup.imageset/icon-赞-2.png


PaiAi/Paiai/Assets.xcassets/MainPage/icon-记录.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/icon-time.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/icon-记录.imageset/icon-记录.png → PaiAi/Paiai/Assets.xcassets/photoDetail/icon-time.imageset/icon-记录.png


PaiAi/Paiai/Assets.xcassets/MainPage/获取高清图.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/purchase-background.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/获取高清图.imageset/获取高清图.png → PaiAi/Paiai/Assets.xcassets/photoDetail/purchase-background.imageset/获取高清图.png


+ 6 - 0
PaiAi/Paiai/Assets.xcassets/photoDetail/share/Contents.json

@@ -0,0 +1,6 @@
1
+{
2
+  "info" : {
3
+    "version" : 1,
4
+    "author" : "xcode"
5
+  }
6
+}

PaiAi/Paiai/Assets.xcassets/share/分享-QQ.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-QQ.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/share/分享-QQ.imageset/分享-QQ.png → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-QQ.imageset/分享-QQ.png


PaiAi/Paiai/Assets.xcassets/share/分享-微博.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-weibo.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/share/分享-微博.imageset/分享-微博.png → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-weibo.imageset/分享-微博.png


PaiAi/Paiai/Assets.xcassets/share/分享-微信好友.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wx.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/share/分享-微信好友.imageset/分享-微信好友.png → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wx.imageset/分享-微信好友.png


PaiAi/Paiai/Assets.xcassets/share/分享-朋友圈.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wxCircle.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/share/分享-朋友圈.imageset/分享-朋友圈.png → PaiAi/Paiai/Assets.xcassets/photoDetail/share/share-wxCircle.imageset/分享-朋友圈.png


PaiAi/Paiai/Assets.xcassets/MainPage/去除水印.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/去除水印.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/去除水印.imageset/去除水印.png → PaiAi/Paiai/Assets.xcassets/photoDetail/去除水印.imageset/去除水印.png


PaiAi/Paiai/Assets.xcassets/MainPage/购买-HD.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/购买-HD.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/购买-HD.imageset/购买-HD.png → PaiAi/Paiai/Assets.xcassets/photoDetail/购买-HD.imageset/购买-HD.png


PaiAi/Paiai/Assets.xcassets/MainPage/购买-去水印.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/购买-去水印.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/购买-去水印.imageset/购买-去水印.png → PaiAi/Paiai/Assets.xcassets/photoDetail/购买-去水印.imageset/购买-去水印.png


PaiAi/Paiai/Assets.xcassets/MainPage/进入群.imageset/Contents.json → PaiAi/Paiai/Assets.xcassets/photoDetail/进入群.imageset/Contents.json


PaiAi/Paiai/Assets.xcassets/MainPage/进入群.imageset/进入群.png → PaiAi/Paiai/Assets.xcassets/photoDetail/进入群.imageset/进入群.png


BIN
PaiAi/Paiai/Assets.xcassets/share/.DS_Store


BIN
PaiAi/Paiai/Assets.xcassets/share/1401793178925.imageset/1401793178925.png


+ 0 - 21
PaiAi/Paiai/Assets.xcassets/share/1401793178925.imageset/Contents.json

@@ -1,21 +0,0 @@
1
-{
2
-  "images" : [
3
-    {
4
-      "idiom" : "universal",
5
-      "filename" : "1401793178925.png",
6
-      "scale" : "1x"
7
-    },
8
-    {
9
-      "idiom" : "universal",
10
-      "scale" : "2x"
11
-    },
12
-    {
13
-      "idiom" : "universal",
14
-      "scale" : "3x"
15
-    }
16
-  ],
17
-  "info" : {
18
-    "version" : 1,
19
-    "author" : "xcode"
20
-  }
21
-}

+ 0 - 103
PaiAi/PaiaiDataKit/DataLayer/Model/DetailModel.swift

@@ -1,103 +0,0 @@
1
-//
2
-//  DetailModel.swift
3
-//  PaiAi
4
-//
5
-//  Created by zhengjianfei on 16/4/8.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import Foundation
10
-import ObjectMapper
11
-public struct thumbupUserModel {
12
-
13
-    public var avatar = ""
14
-    public var user_id = ""
15
-    public var nickname = ""
16
-
17
-}
18
-
19
-//extension thumbupUserModel: Mappable {
20
-//    mutating public func mapping(map: Map) {
21
-//        
22
-//    }
23
-//    
24
-//    public init(map: Map) {
25
-//        avatar          <-  (map["avatar"])
26
-//        user_id         <-  map["user_id"]
27
-//        nickname        <-  map["nickname"]
28
-//    }
29
-//}
30
-//
31
-//extension thumbupUserModel: GroupParsable {
32
-//    public static func parse(datas: [String: AnyObject]) -> [thumbupUserModel] {
33
-//        guard let status = datas["status"] as? Int,
34
-//            let items = datas["data"] as? [String: AnyObject],
35
-//            let thumbupsInfo = items["thumbups"] as? [[String: AnyObject]],
36
-//            status == 200 else {
37
-//            return []
38
-//        }
39
-//        return thumbupsInfo.compactMap { thumbupUserModel(map: Map(mappingType: .fromJSON, JSON: $0)) }
40
-//    }
41
-//}
42
-//
43
-//struct thumbupUserNetworkRequest: NetworkRequest {
44
-//
45
-//    typealias NetworkResponse = thumbupUserModel
46
-//
47
-//    var path: Interfaces { get { return .thumbupList } set {} }
48
-//    var parameter: [String: AnyObject]?
49
-//
50
-//}
51
-
52
-//public struct CommentModel {
53
-//
54
-//    public var avatar = ""
55
-//    public var comment = ""
56
-//    public var user_id = ""
57
-//    public var nickname = ""
58
-//    public var create_at = Date()
59
-//    public var cellHeigth: CGFloat = 0.0
60
-//
61
-//}
62
-//
63
-//extension CommentModel: GroupParsable {
64
-//    public static func parse(datas: [String: AnyObject]) -> [CommentModel] {
65
-//        guard let status = datas["status"] as? Int,
66
-//            let items = datas["data"] as? [String: AnyObject],
67
-//            let commentsInfo = items["comments"] as? [[String: AnyObject]],
68
-//            status == 200 else {
69
-//            return []
70
-//        }
71
-//        return commentsInfo.compactMap { CommentModel(map: Map(mappingType: .fromJSON, JSON: $0)) }
72
-//    }
73
-//}
74
-//
75
-//extension CommentModel: Mappable {
76
-//    mutating public func mapping(map: Map) {
77
-//        
78
-//    }
79
-//    
80
-//
81
-//    public init(map: Map) {
82
-//        let dateFormatter = DateFormatter()
83
-//        dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
84
-//        create_at      <-  (map["created_at"], DateFormatterTransform(dateFormatter:dateFormatter))
85
-//        avatar          <-  (map["avatar"])
86
-//        comment         <-  map["comment"]
87
-//        user_id         <-  map["user_id"]
88
-//        nickname        <-  (map["nickname"])
89
-//        comment         <-  map["comment"]
90
-//
91
-//        let text = NSString(string: comment)
92
-////        cellHeigth = text.boundingRect(with:CGSize(width: kScreenWidth - 82, height: CGFloat.greatestFiniteMagnitude), options: [.usesLineFragmentOrigin, .usesFontLeading], attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 12)], context: nil).height
93
-//    }
94
-//}
95
-//
96
-//struct CommentNetworkRequest: NetworkRequest {
97
-//
98
-//    typealias NetworkResponse = CommentModel
99
-//
100
-//    var path: Interfaces { get { return .commentList } set {} }
101
-//    var parameter: [String: AnyObject]?
102
-//
103
-//}

+ 0 - 106
PaiAi/PaiaiDataKit/DataLayer/Model/GroupDetailModel.swift

@@ -1,106 +0,0 @@
1
-//
2
-//  GroupDetailModel.swift
3
-//  PaiAi
4
-//
5
-//  Created by zhengjianfei on 16/4/5.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import Foundation
10
-import ObjectMapper
11
-//public struct GroupDetailModel {
12
-//
13
-//    public var users: GroupUserInfoModel?
14
-//    public var group_id: String = ""
15
-//    var group: GroupItem?
16
-//
17
-//    init() {}
18
-//}
19
-//
20
-//extension GroupDetailModel: Mappable {
21
-//    mutating public func mapping(map: Map) {
22
-//
23
-//    }
24
-//
25
-//
26
-//    public init(map: Map) {
27
-//        group_id  <-  map["group_id"]
28
-//        guard let group = map.JSON["group"] as? [String: AnyObject], let users = map.JSON["users"]  as? [String: AnyObject] else {
29
-//            return
30
-//        }
31
-////        self.group = GroupModel(map: Map(mappingType: .fromJSON, JSON: group))
32
-//        self.users = GroupUserInfoModel(map: Map(mappingType: .fromJSON, JSON: users))
33
-//    }
34
-//}
35
-//
36
-//extension GroupDetailModel: SingleParsable {
37
-//
38
-//    public static func parse(data: [String: AnyObject]) -> GroupDetailModel {
39
-//        guard let status = data["status"] as? Int,
40
-//            let res = data["data"] as? [String: AnyObject],
41
-//            status == 200 else {
42
-//                return GroupDetailModel()
43
-//        }
44
-//        return GroupDetailModel(map: Map(mappingType: .fromJSON, JSON: res))
45
-//    }
46
-//}
47
-//
48
-//public struct GroupUserInfoModel {
49
-//    public var passed_count: Int = 0
50
-//    public var passed  = [UserModel]()
51
-//    public var applying_count: Int = 0
52
-//    public var applying = [UserModel]()
53
-//
54
-//    init() {}
55
-//}
56
-//
57
-//extension GroupUserInfoModel: SingleParsable {
58
-//
59
-//    public static func parse(data: [String: AnyObject]) -> GroupUserInfoModel {
60
-//        return GroupUserInfoModel(map:Map(mappingType: MappingType.fromJSON, JSON: data))
61
-//    }
62
-//}
63
-//
64
-//extension GroupUserInfoModel: Mappable {
65
-//    mutating public func mapping(map: Map) {
66
-//
67
-//    }
68
-//
69
-//
70
-//    public init(map: Map) {
71
-//        passed_count     <-  map["passed_count"]
72
-//        applying_count   <-  map["applying_count"]
73
-//        guard let passes = map.JSON["passed"] as? [[String: AnyObject]] else {
74
-//            return
75
-//        }
76
-//        passed = passes.compactMap { UserModel.init(map: Map.init(mappingType: .fromJSON, JSON: $0))}
77
-//    }
78
-//
79
-//}
80
-//
81
-////public struct UserModel {
82
-////
83
-////    public var user_id: String = ""
84
-////    public var avatar: String = ""
85
-////    public var nickname: String = ""
86
-////    public var admin: Bool = false
87
-////
88
-////}
89
-////
90
-////extension UserModel: Mappable {
91
-////
92
-////}
93
-////
94
-////struct GroupDetailNetworkQequest: NetworkRequest {
95
-////
96
-////    typealias NetworkResponse = GroupDetailModel
97
-////
98
-////    var path: Interfaces { get { return .groupDetail } set { } }
99
-////    var parameter: [String: AnyObject]?
100
-////
101
-////    init(param: [String: AnyObject]?, path: Interfaces = .groupDetail) {
102
-////        self.parameter = param
103
-////        self.path = path
104
-////    }
105
-////
106
-////}

+ 3 - 3
PaiAi/PaiaiDataKit/DataLayer/Model/CommentItem.swift

@@ -1,5 +1,5 @@
1 1
 //
2
-//  CommentItem.swift
2
+//  PhotoCommentItem.swift
3 3
 //  PaiaiDataKit
4 4
 //
5 5
 //  Created by ffib on 2018/12/25.
@@ -9,7 +9,7 @@
9 9
 import Foundation
10 10
 import ObjectMapper
11 11
 
12
-public struct CommentItem {
12
+public struct PhotoCommentItem {
13 13
     
14 14
     public var avatar: String = ""
15 15
     public var comment: String = ""
@@ -21,7 +21,7 @@ public struct CommentItem {
21 21
         self.init(map: Map(mappingType: .fromJSON, JSON: json))
22 22
     }
23 23
 }
24
-extension CommentItem: Mappable {
24
+extension PhotoCommentItem: Mappable {
25 25
     mutating public func mapping(map: Map) {
26 26
         let dateFormatter = DateFormatter()
27 27
         dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"

PaiAi/PaiaiDataKit/DataLayer/Model/ThumbupUserItem.swift → PaiAi/PaiaiDataKit/DataLayer/Model/PhotoThumbupUserItem.swift


+ 1 - 1
PaiAi/PaiaiDataKit/DataLayer/Model/NetWorkData.swift

@@ -1,5 +1,5 @@
1 1
 //
2
-//  NetWorkData.swift
2
+//  NetworkArrayData.swift
3 3
 //  PaiaiDataKit
4 4
 //
5 5
 //  Created by ffib on 2019/1/3.

+ 9 - 0
PaiAi/PaiaiDataKit/DataLayer/Model/Reusable/OriginData.swift

@@ -0,0 +1,9 @@
1
+//
2
+//  OriginData.swift
3
+//  PaiaiDataKit
4
+//
5
+//  Created by ffib on 2019/3/20.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import Foundation

PaiAi/PaiaiDataKit/DataLayer/Repositories/GroupPhotoRepository.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/GroupPhotoRepository.swift


PaiAi/PaiaiDataKit/DataLayer/Repositories/HomePhotoRepository.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/HomeRepository.swift


PaiAi/PaiaiDataKit/DataLayer/Repositories/MessageRepository.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/MessageRepository.swift


PaiAi/PaiaiDataKit/DataLayer/Repositories/OrderRepository.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/OrderRepository.swift


+ 38 - 0
PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/PhotoDetailRepository.swift

@@ -0,0 +1,38 @@
1
+//
2
+//  PhotoDetailRepository.swift
3
+//  PaiaiDataKit
4
+//
5
+//  Created by ffib on 2018/12/25.
6
+//  Copyright © 2018 yb. All rights reserved.
7
+//
8
+
9
+import Foundation
10
+import RxSwift
11
+
12
+ struct PhotoDetailRepository {
13
+    var photoDetailRemoteAPI: PhotoDetailRemoteAPI
14
+    
15
+    init(photoId: String, groupId: String) {
16
+        photoDetailRemoteAPI = PhotoDetailRemoteAPI(photoId: photoId, groupId: groupId)
17
+    }
18
+    
19
+    func loadComments() -> Single<[PhotoCommentItem]> {
20
+        return photoDetailRemoteAPI.loadComments()
21
+    }
22
+    
23
+    func loadThumbups() -> Single<[PhotoThumbupUserItem]> {
24
+        return photoDetailRemoteAPI.loadThumbups()
25
+    }
26
+    
27
+    func submitComment(text: String) -> Single<[PhotoCommentItem]>  {
28
+        return photoDetailRemoteAPI.submitComment(text: text)
29
+    }
30
+    
31
+    func submitThumbup() -> Single<[PhotoThumbupUserItem]>  {
32
+        return photoDetailRemoteAPI.submitThumbup()
33
+    }
34
+    
35
+    func cancelThumbup() {
36
+        photoDetailRemoteAPI.cancelThumbup()
37
+    }
38
+}

PaiAi/PaiaiDataKit/DataLayer/Repositories/PhotoGroupDetailRepository.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/PhotoGroupDetailRepository.swift


PaiAi/PaiaiDataKit/DataLayer/Repositories/PhotoGroupRepository.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/PhotoGroupRepository.swift


PaiAi/PaiaiDataKit/DataLayer/Repositories/UserInfoRepository.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Implementation/UserInfoRepository.swift


+ 0 - 75
PaiAi/PaiaiDataKit/DataLayer/Repositories/MessageListRepository.swift

@@ -1,75 +0,0 @@
1
-//
2
-//  MessageListRepository.swift
3
-//  PaiAi
4
-//
5
-//  Created by zhengjianfei on 16/4/7.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import Foundation
10
-import RxSwift
11
-
12
-public protocol MessageInteractionModel {
13
-    var path: Interfaces { get }
14
-    var removePath: Interfaces { get }
15
-    var readPath: Interfaces { get }
16
-    var title: String { get }
17
-}
18
-
19
-extension MessageType {
20
-    
21
-    public var model: MessageInteractionModel {
22
-        switch self {
23
-        case .thumbup: return MessagethumbupInteractionModel()
24
-        case .comment: return MessageCommentInteractionModel()
25
-        case .system: return MessageSystemInteractionModel()
26
-        }
27
-    }
28
-    
29
-    fileprivate struct MessagethumbupInteractionModel: MessageInteractionModel {
30
-        var path: Interfaces { return .mesThumbupList}
31
-        var removePath: Interfaces { return .mesThumbupClear }
32
-        var readPath: Interfaces { return .mesThumbupRead }
33
-        var title: String { return "赞" }
34
-    }
35
-    
36
-    fileprivate struct MessageCommentInteractionModel: MessageInteractionModel {
37
-        var path: Interfaces { return .mesCommentList}
38
-        var removePath: Interfaces { return .mesCommentClear }
39
-        var readPath: Interfaces { return .mesCommentRead }
40
-        var title: String { return "评论" }
41
-    }
42
-    
43
-    fileprivate struct MessageSystemInteractionModel: MessageInteractionModel {
44
-        var path: Interfaces { return .mesSystemList}
45
-        var removePath: Interfaces { return .mesSystemClear }
46
-        var readPath: Interfaces { return .mesSystemRead }
47
-        var title: String { return "系统消息" }
48
-    }
49
-}
50
-
51
-
52
-
53
-struct MessageListRepository {
54
-    var messageListRemotAPI: MessageListRemoteAPI
55
-    
56
-    init(type: MessageType) {
57
-        messageListRemotAPI = MessageListRemoteAPI(type: type)
58
-    }
59
-    
60
-    func load(page: Int) -> Single<NetworkArrayData<MessageListItem>> {
61
-        return messageListRemotAPI.loadContent(page: page)
62
-    }
63
-    
64
-    func remove(pk: Int) -> Completable {
65
-        return messageListRemotAPI.remove(pk: pk)
66
-    }
67
-    
68
-    func removeAll() -> Completable {
69
-        return messageListRemotAPI.removeAll()
70
-    }
71
-    
72
-    func readed() -> Completable {
73
-        return messageListRemotAPI.readed()
74
-    }
75
-}

+ 0 - 91
PaiAi/PaiaiDataKit/DataLayer/Repositories/Persistence/PhotoLocalStorage.swift

@@ -1,91 +0,0 @@
1
-//
2
-//  PhotoLocalStorage.swift
3
-//  PaiAi
4
-//
5
-//  Created by LISA on 2017/4/19.
6
-//  Copyright © 2017年 yb. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-//import ObjectMapper
11
-//import SQLite
12
-//
13
-//public struct PhotoLocalStorage {
14
-//
15
-//    let photoId = Expression<String>("photoId")
16
-//    let photoInfo = Expression<Data>("photoInfo")
17
-//    let creatAt = Expression<TimeInterval>("creatAt")
18
-//
19
-//    static let instance = PhotoLocalStorage()
20
-//    var db: Connection?
21
-//
22
-//    init() {
23
-//        db = try? Connection(path)
24
-//    }
25
-//
26
-//    private let path: String = {
27
-//        let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first ?? ""
28
-//        let finalPath = path.appending("/group_photo.db")
29
-////        printLog(finalPath)
30
-//        return finalPath
31
-//    }()
32
-//
33
-//    func query(group_id: String) -> [PhotoItem]? {
34
-////        let table = Table(group_id.digestString(algorithm: .md5))
35
-////        do {
36
-////            guard let photos = try db?.prepare(table) else {
37
-////                return nil
38
-////            }
39
-////            return photos.compactMap({ (photo) -> PhotoItem? in
40
-////               let data = photo[photoInfo]
41
-////                guard let dict = NSKeyedUnarchiver.unarchiveObject(with: data) as? [String: AnyObject] else {
42
-////                    return nil
43
-////                }
44
-////                return PhotoItem(data: dict)
45
-////            })
46
-////        } catch {
47
-////            return nil
48
-////        }
49
-//        return nil
50
-//    }
51
-//
52
-//    func saveDataToLocal(models: [PhotoItem], group_id: String) {
53
-////        let table = Table(group_id.digestString(algorithm: .md5))
54
-////        do {
55
-////            try db?.transaction {
56
-////                try db?.run(table.create(ifNotExists: true, block: { (table) in
57
-////                    table.column(photoId, unique: true)
58
-////                    table.column(photoInfo)
59
-////                    table.column(creatAt)
60
-////                }))
61
-////
62
-////                for model in models {
63
-////                    let data = NSKeyedArchiver.archivedData(withRootObject: model.toJSON())
64
-////                    let insert = table.insert(or: .replace,
65
-////                                              photoInfo <- data,
66
-////                                              creatAt <- (model.create_at.timeIntervalSince1970) ,
67
-////                                              photoId <- model.photo_id)
68
-////                   _ = try db?.run(insert)
69
-////                }
70
-////
71
-////            }
72
-////        } catch {
73
-////        }
74
-//    }
75
-//
76
-//    func updateLocalData(PhotoItem: PhotoItem) {
77
-////        let table = Table(PhotoItem.group_id.digestString(algorithm: .md5)).filter(photoId == PhotoItem.photo_id)
78
-////        let photoData = NSKeyedArchiver.archivedData(withRootObject: PhotoItem.toJSON())
79
-////        do {
80
-////            try db?.run(table.update(photoInfo <- photoData))
81
-////        } catch {
82
-////
83
-////        }
84
-//    }
85
-//
86
-//    func removeLocalData(group_id: String) {
87
-////        removeGroupInfoRecent(groupId: group_id)
88
-////        let table = Table(group_id.digestString(algorithm: .md5))
89
-////        _ = table.drop(ifExists: true)
90
-//    }
91
-//}

+ 0 - 17
PaiAi/PaiaiDataKit/DataLayer/Repositories/PhotoDetailRepository.swift

@@ -1,17 +0,0 @@
1
-//
2
-//  PhotoDetailRepository.swift
3
-//  PaiaiDataKit
4
-//
5
-//  Created by ffib on 2018/12/25.
6
-//  Copyright © 2018 yb. All rights reserved.
7
-//
8
-
9
-import Foundation
10
-
11
-struct PhotoDetailRepository {
12
-//    func loadComment() -> Single<Result<CommentItem>>
13
-//    func loadThumbup() -> Single<Result<ThumbupUserItem>>
14
-//    func submitComment() -> Single<Result<StatusModel>>
15
-//    func submitThumbup() -> Single<Result<StatusModel>>
16
-//    func cancelThumbup() -> Single<Result<StatusModel>>
17
-}

PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/HomePhotoRemoteAPI.swift → PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/HomeRemoteAPI.swift


+ 0 - 49
PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/MessageListRemoteAPI.swift

@@ -1,49 +0,0 @@
1
-//
2
-//  MessageListRemoteAPI.swift
3
-//  PaiaiDataKit
4
-//
5
-//  Created by ffib on 2018/12/29.
6
-//  Copyright © 2018 yb. All rights reserved.
7
-//
8
-
9
-import Foundation
10
-import RxSwift
11
-
12
-struct MessageListRemoteAPI {
13
-    
14
-    var type: MessageType
15
-    
16
-    init(type: MessageType) {
17
-        self.type = type
18
-    }
19
-
20
-    private func parse(_ json: JSON) -> NetworkArrayData<MessageListItem>? {
21
-        guard let data  = json["data"] as? [String: AnyObject] else { return nil }
22
-        return NetworkArrayData<MessageListItem>(json: data, dataField: "messages")
23
-    }
24
-    
25
-    func loadContent(page: Int) -> Single<NetworkArrayData<MessageListItem>> {
26
-        let resource = ContentResource<NetworkArrayData<MessageListItem>>(path: type.model.path,
27
-                                                                          parameter: ["user_id": ShareUserId, "page": page],
28
-                                                                          parseJSON: parse)
29
-        return resource.loadContent()
30
-    }
31
-    
32
-    func remove(pk: Int) -> Completable {
33
-        let removeResource = StatusResource(path: type.model.removePath,
34
-                                            parameter: ["user_id": ShareUserId, "pk": pk])
35
-        return removeResource.getStatus()
36
-    }
37
-    
38
-    func removeAll() -> Completable {
39
-         let removeResource = StatusResource(path: type.model.removePath,
40
-                                             parameter: ["user_id": ShareUserId, "all": true])
41
-        return removeResource.getStatus()
42
-    }
43
-    
44
-    func readed() -> Completable {
45
-         let readedResource = StatusResource(path: type.model.readPath,
46
-                                             parameter: ["user_id": ShareUserId])
47
-        return readedResource.getStatus()
48
-    }
49
-}

+ 9 - 0
PaiAi/PaiaiDataKit/DataLayer/Repositories/Remote/PhotoDetailRemoteAPI.swift

@@ -0,0 +1,9 @@
1
+//
2
+//  PhotoDetailRemoteAPI.swift
3
+//  PaiaiDataKit
4
+//
5
+//  Created by ffib on 2019/3/18.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import Foundation

PaiAi/PaiaiDataKit/PresentLayer/Home/CreateGroupConfirmViewModel.swift → PaiAi/PaiaiDataKit/PresentLayer/Home/CreateGroupViewModel.swift


+ 9 - 0
PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/PhotoDetailListViewModel.swift

@@ -0,0 +1,9 @@
1
+//
2
+//  PhotoDetailListViewModel.swift
3
+//  PaiaiDataKit
4
+//
5
+//  Created by ffib on 2019/3/19.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import Foundation

+ 3 - 3
PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/DetailPageViewModel.swift

@@ -1,5 +1,5 @@
1 1
 //
2
-//  DetailPageViewModel.swift
2
+//  PhotoDetailViewModel.swift
3 3
 //  PaiAi
4 4
 //
5 5
 //  Created by zhengjianfei on 2017/1/4.
@@ -11,7 +11,7 @@ import ObjectMapper
11 11
 
12 12
 
13 13
 
14
-public final class DetailPageViewModel {
14
+public final class PhotoDetailViewModel {
15 15
     public lazy var currentPhoto = PhotoItem(json: [:])
16 16
     public lazy var thumbups = [thumbupUserModel]()
17 17
     public lazy var comments = [CommentItem]()
@@ -95,7 +95,7 @@ public final class DetailPageViewModel {
95 95
 }
96 96
 
97 97
 //wechat pay
98
-extension DetailPageViewModel {
98
+extension PhotoDetailViewModel {
99 99
     public final func handleResult(errorCode: Int, success: @escaping ((_ item: PhotoItem) -> Void)) {
100 100
 //        func fetchOrderDetail() {
101 101
 //            detailPageApi.post(param: ["order_id": orderId, "user_id": SharedUserInfo.userId] as [String: AnyObject], url: .orderDetail) { (result) in

+ 9 - 0
PaiAi/PaiaiDataKit/PresentLayer/PhotoDetail/PhotoPurchaseViewModel.swift

@@ -0,0 +1,9 @@
1
+//
2
+//  PhotoPurchaseViewModel.swift
3
+//  PaiaiDataKit
4
+//
5
+//  Created by ffib on 2019/3/19.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import Foundation

+ 21 - 0
PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupDetailMemeberView.swift

@@ -0,0 +1,21 @@
1
+//
2
+//  GroupDetailMemeberView.swift
3
+//  Paiai_iOS
4
+//
5
+//  Created by ffib on 2019/2/18.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import UIKit
10
+
11
+class GroupDetailMemeberView: UIView {
12
+
13
+    /*
14
+    // Only override draw() if you perform custom drawing.
15
+    // An empty implementation adversely affects performance during animation.
16
+    override func draw(_ rect: CGRect) {
17
+        // Drawing code
18
+    }
19
+    */
20
+
21
+}

PaiAi/Paiai_iOS/App/Group/GroupDetail/MemberCell.swift → PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupMemberCell.swift


PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupMemberController.swift → PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupMemberViewController.swift


PaiAi/Paiai_iOS/App/Group/GroupDetail/ChangeGroupNameController.swift → PaiAi/Paiai_iOS/App/Group/GroupDetail/GroupNameModificationViewController.swift


+ 0 - 48
PaiAi/Paiai_iOS/App/Group/GroupDetail/ShowGroupQRController.swift

@@ -1,48 +0,0 @@
1
-//
2
-//  ShowGroupQRController.swift
3
-//  PaiAi
4
-//
5
-//  Created by zhengjianfei on 16/4/6.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-import PaiaiUIKit
11
-import PaiaiDataKit
12
-
13
-final class ShowGroupQRController: UIViewController {
14
-
15
-    // MARK: Storyboard property
16
-    @IBOutlet var groupImage: UIImageView!
17
-    @IBOutlet var groupName: UILabel!
18
-    @IBOutlet var EWM: UIImageView!
19
-    @IBOutlet weak var contentView: UIView!
20
-
21
-    // MARK: data property
22
-//    var data: GroupModel?
23
-
24
-
25
-    required init?(coder aDecoder: NSCoder) {
26
-        super.init(coder: aDecoder)
27
-//        transitioningDelegate = transitioning
28
-    }
29
-
30
-    // MARK: view function
31
-    override func viewDidLoad() {
32
-        super.viewDidLoad()
33
-        configureInterface()
34
-    }
35
-
36
-    func configureInterface() {
37
-//        guard let info = data else {
38
-//            return
39
-//        }
40
-//        groupImage.setImageWithNullableURL(info.group_avatar, placeholderImage: UIImage(named: "Group\(info.group_default_avatar)"))
41
-//        groupName.text = info.group_name
42
-//        let image = UIImage.init(qr: "http://xfoto.com.cn/g/" + info.group_id, size: nil)
43
-//        EWM.image = image
44
-    }
45
-//    override func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
46
-//        return true
47
-//    }
48
-}

+ 0 - 40
PaiAi/Paiai_iOS/App/PhotoDetail/DetailPageHeadCell.swift

@@ -1,40 +0,0 @@
1
-//
2
-//  DetailPageHeadCell.swift
3
-//  PaiAi
4
-//
5
-//  Created by zhengjianfei on 16/4/6.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-import PaiaiDataKit
11
-import PaiaiUIKit
12
-
13
-class DetailPageHeadCell: UITableViewCell {
14
-
15
-    @IBOutlet weak var enterView: UIView!
16
-    // MARK: Storyboard property
17
-    @IBOutlet var groupImage: UIImageView!
18
-    @IBOutlet var groupName: UILabel!
19
-    weak var delegate: CellDelegate?
20
-    // MARK: view function
21
-    override func awakeFromNib() {
22
-        super.awakeFromNib()
23
-    }
24
-
25
-    override func setSelected(_ selected: Bool, animated: Bool) {
26
-        super.setSelected(selected, animated: animated)
27
-    }
28
-
29
-    // MARK: init interface
30
-    func setInfo(_ info: PhotoItem) {
31
-//        groupImage.setImageWithNullableURL(info.group_avatar, placeholderImage:  UIImage(named: "Group\(info.group_default_avatar)"))
32
-        groupName.text = info.group_name
33
-    }
34
-
35
-    // MARK: Storyboard  button function
36
-    @IBAction func enterGroup() {
37
-        delegate?.pushNext()
38
-    }
39
-
40
-}

+ 0 - 35
PaiAi/Paiai_iOS/App/PhotoDetail/DetailPageNameCell.swift

@@ -1,35 +0,0 @@
1
-//
2
-//  DetailPageNameCell.swift
3
-//  PaiAi
4
-//
5
-//  Created by zhengjianfei on 16/4/6.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-import PaiaiDataKit
11
-import PaiaiUIKit
12
-
13
-class DetailPageNameCell: UITableViewCell {
14
-
15
-    // MARK: Storyboard property
16
-    @IBOutlet var personName: UILabel!
17
-    @IBOutlet var personImage: UIImageView!
18
-    @IBOutlet var time: UILabel!
19
-
20
-    // MARK: view function
21
-    override func awakeFromNib() {
22
-        super.awakeFromNib()
23
-    }
24
-
25
-    override func setSelected(_ selected: Bool, animated: Bool) {
26
-        super.setSelected(selected, animated: animated)
27
-    }
28
-
29
-    // MARK: init interface
30
-    func setInfo(_ info: PhotoItem) {
31
-        personName.text = info.nickname
32
-//        personImage.setImageWithNullableURL(info.avatar, placeholderImage: defaultAvatar)
33
-//        time.text = info.create_at.getTimeInfoFromDate()
34
-    }
35
-}

+ 0 - 85
PaiAi/Paiai_iOS/App/PhotoDetail/DetailPagePhotoCell.swift

@@ -1,85 +0,0 @@
1
-//
2
-//  DetailPagePhotoCell.swift
3
-//  PaiAi
4
-//
5
-//  Created by mac on 2016/11/2.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-import PaiaiDataKit
11
-import PaiaiUIKit
12
-
13
-protocol CellDelegate: class {
14
-    func returnCurrentIndex(index: Int)
15
-    func selectIndex(indexpath: IndexPath)
16
-    func pushNext()
17
-}
18
-extension CellDelegate {
19
-    func returnCurrentIndex(index: Int) {}
20
-    func selectIndex(indexpath: IndexPath) {}
21
-    func pushNext() {}
22
-}
23
-
24
-class DetailPagePhotoCell: UITableViewCell {
25
-
26
-    // MARK: Storyboard property
27
-    @IBOutlet weak var collectionView: UICollectionView!
28
-
29
-    // MARK: delete property
30
-    weak var delegate: CellDelegate?
31
-
32
-  // MARK: parameter property
33
-    lazy  var first = true
34
-    lazy var datas = [PhotoItem]()
35
-    lazy var currentPhotoIndex = 0
36
-}
37
-
38
-extension DetailPagePhotoCell: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
39
-
40
-    func numberOfSections(in collectionView: UICollectionView) -> Int {
41
-        return 1
42
-    }
43
-
44
-    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
45
-        return datas.count
46
-    }
47
-
48
-    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
49
-        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photoDetailCell", for: indexPath)
50
-        guard let imageView = cell.viewWithTag(1010) as? UIImageView else {
51
-            return cell
52
-        }
53
-        var imageStr = ""
54
-        if !datas[indexPath.row].murl.isEmpty {
55
-            imageStr = datas[indexPath.row].murl
56
-        } else if !datas[indexPath.row].rurl.isEmpty {
57
-            imageStr = datas[indexPath.row].rurl
58
-        } else {
59
-            imageStr = datas[indexPath.row].photo_thumbnail2_url
60
-        }
61
-//        imageView.setImageWithNullableURL(imageStr, placeholderImage: UIImage(named: "详情页占位图"))
62
-        return cell
63
-    }
64
-
65
-    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
66
-        delegate?.selectIndex(indexpath: indexPath)
67
-    }
68
-
69
-    func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
70
-        delegate?.returnCurrentIndex(index: indexPath.row)
71
-        guard first else {
72
-            return
73
-        }
74
-        collectionView.scrollToItem(at: IndexPath(row: currentPhotoIndex, section: 0), at: .left, animated: false)
75
-        first = false
76
-    }
77
-
78
-    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
79
-        return CGSize(width: kScreenWidth, height: 359)
80
-    }
81
-
82
-    
83
-
84
-
85
-}

+ 0 - 33
PaiAi/Paiai_iOS/App/PhotoDetail/DetailZanImagesCell.swift

@@ -1,33 +0,0 @@
1
-//
2
-//  DetailthumbupImagesCell.swift
3
-//  PaiAi
4
-//
5
-//  Created by zhengjianfei on 16/4/7.
6
-//  Copyright © 2016年 FFIB. All rights reserved.
7
-//
8
-
9
-import UIKit
10
-import PaiaiDataKit
11
-import PaiaiUIKit
12
-
13
-class DetailthumbupImagesCell: UITableViewCell {
14
-
15
-    // MARK: Storyboard property
16
-    @IBOutlet var imagesScrollView: UIScrollView!
17
-
18
-    // MARK: view function
19
-    override func awakeFromNib() {
20
-        super.awakeFromNib()
21
-    }
22
-
23
-    override func setSelected(_ selected: Bool, animated: Bool) {
24
-        super.setSelected(selected, animated: animated)
25
-    }
26
-
27
-    // MARK: init interface
28
-    func setInfo(content: [String]) {
29
-//        imagesScrollView.buildImageViews(content, width: 28, height: 28, spacing: 10, topSpcing: 0, block: {_ in
30
-//
31
-//        })
32
-    }
33
-}

+ 7 - 11
PaiAi/Paiai_iOS/App/PhotoDetail/Detail.storyboard

@@ -1,10 +1,6 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="qsT-Pc-Bhh">
3
-    <device id="retina4_7" orientation="portrait">
4
-        <adaptation id="fullscreen"/>
5
-    </device>
6 3
     <dependencies>
7
-        <deployment identifier="iOS"/>
8 4
         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
9 5
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
10 6
     </dependencies>
@@ -85,10 +81,10 @@
85 81
             </objects>
86 82
             <point key="canvasLocation" x="-953.60000000000002" y="1390.704647676162"/>
87 83
         </scene>
88
-        <!--DetailPageController-->
84
+        <!--PhotoDetailViewController-->
89 85
         <scene sceneID="OIh-Ut-mfb">
90 86
             <objects>
91
-                <viewController storyboardIdentifier="DetailPageController" automaticallyAdjustsScrollViewInsets="NO" id="qsT-Pc-Bhh" userLabel="DetailPageController" customClass="DetailPageController" customModule="PaiAi" sceneMemberID="viewController">
87
+                <viewController storyboardIdentifier="PhotoDetailViewController" automaticallyAdjustsScrollViewInsets="NO" id="qsT-Pc-Bhh" userLabel="PhotoDetailViewController" customClass="PhotoDetailViewController" customModule="PaiAi" sceneMemberID="viewController">
92 88
                     <layoutGuides>
93 89
                         <viewControllerLayoutGuide type="top" id="aUY-hC-XIK"/>
94 90
                         <viewControllerLayoutGuide type="bottom" id="9RM-c8-CL6"/>
@@ -329,8 +325,8 @@
329 325
                                                     <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
330 326
                                                     <nil key="highlightedColor"/>
331 327
                                                 </label>
332
-                                                <imageView userInteractionEnabled="NO" tag="1008" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="列表箭头" translatesAutoresizingMaskIntoConstraints="NO" id="pC6-7A-WSm">
333
-                                                    <rect key="frame" x="341" y="4.5" width="24" height="36"/>
328
+                                                <imageView userInteractionEnabled="NO" tag="1008" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="list-arrow" translatesAutoresizingMaskIntoConstraints="NO" id="pC6-7A-WSm">
329
+                                                    <rect key="frame" x="349" y="14.5" width="16" height="16"/>
334 330
                                                 </imageView>
335 331
                                                 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon-赞" translatesAutoresizingMaskIntoConstraints="NO" id="jXa-8T-THD">
336 332
                                                     <rect key="frame" x="15" y="4.5" width="36" height="36"/>
@@ -399,8 +395,8 @@
399 395
                                                     <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
400 396
                                                     <nil key="highlightedColor"/>
401 397
                                                 </label>
402
-                                                <imageView userInteractionEnabled="NO" tag="1009" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="列表箭头" translatesAutoresizingMaskIntoConstraints="NO" id="GOS-Xt-kBa">
403
-                                                    <rect key="frame" x="341" y="4.5" width="24" height="36"/>
398
+                                                <imageView userInteractionEnabled="NO" tag="1009" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="list-arrow" translatesAutoresizingMaskIntoConstraints="NO" id="GOS-Xt-kBa">
399
+                                                    <rect key="frame" x="349" y="14.5" width="16" height="16"/>
404 400
                                                 </imageView>
405 401
                                                 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="icon-评论" translatesAutoresizingMaskIntoConstraints="NO" id="7bL-8L-k4P">
406 402
                                                     <rect key="frame" x="15" y="4.5" width="36" height="36"/>
@@ -932,11 +928,11 @@
932 928
         <image name="icon-记录" width="36" height="36"/>
933 929
         <image name="icon-评论" width="36" height="36"/>
934 930
         <image name="icon-赞" width="36" height="36"/>
931
+        <image name="list-arrow" width="16" height="16"/>
935 932
         <image name="分享-QQ" width="162" height="162"/>
936 933
         <image name="分享-微信好友" width="162" height="162"/>
937 934
         <image name="分享-微博" width="162" height="162"/>
938 935
         <image name="分享-朋友圈" width="162" height="162"/>
939
-        <image name="列表箭头" width="24" height="36"/>
940 936
         <image name="去除水印" width="8" height="144"/>
941 937
         <image name="大图模式-下载" width="96" height="96"/>
942 938
         <image name="旋转" width="96" height="96"/>

+ 5 - 5
PaiAi/Paiai_iOS/App/PhotoDetail/DetailCommentCell.swift

@@ -13,10 +13,10 @@ import PaiaiUIKit
13 13
 class DetailCommentCell: UITableViewCell {
14 14
 
15 15
     // MARK: Storyboard property
16
-    @IBOutlet var headImage: UIImageView!
17
-    @IBOutlet var name: UILabel!
18
-    @IBOutlet var content: UILabel!
19
-    @IBOutlet var time: UILabel!
16
+    @IBOutlet weak var headImage: UIImageView!
17
+    @IBOutlet weak var name: UILabel!
18
+    @IBOutlet weak var content: UILabel!
19
+    @IBOutlet weak var time: UILabel!
20 20
 
21 21
     // MARK: view function
22 22
     override func awakeFromNib() {
@@ -28,7 +28,7 @@ class DetailCommentCell: UITableViewCell {
28 28
     }
29 29
 
30 30
     // MARK: init interface
31
-    func setInfo(_ data: CommentItem) {
31
+    func setInfo(_ data: PhotoCommentItem) {
32 32
 //        headImage.setImageWithNullableURL(data.avatar, placeholderImage: defaultAvatar)
33 33
         name.text = data.nickname
34 34
         content.text = data.comment

+ 13 - 0
PaiAi/Paiai_iOS/App/PhotoDetail/PhotoDetailImageCell.swift

@@ -0,0 +1,13 @@
1
+//
2
+//  PhotoDetailImageCell.swift
3
+//  Paiai_iOS
4
+//
5
+//  Created by ffib on 2019/3/19.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import UIKit
10
+
11
+class PhotoDetailImageCell: UICollectionViewCell {
12
+    
13
+}

+ 128 - 110
PaiAi/Paiai_iOS/App/PhotoDetail/DetailPageController.swift

@@ -1,5 +1,5 @@
1 1
 //
2
-//  DetailPageController.swift
2
+//  PhotoDetailViewController.swift
3 3
 //  PaiAi
4 4
 //
5 5
 //  Created by zhengjianfei on 16/4/6.
@@ -15,42 +15,56 @@ import PaiaiUIKit
15 15
 let kPhotographerMark = 1
16 16
 
17 17
 
18
-final class DetailPageController: UIViewController {
18
+final class PhotoDetailViewController: UIViewController {
19
+
20
+    @IBOutlet weak var groupAvatar: UIImageView!
21
+    @IBOutlet weak var groupName: UILabel!
22
+    
23
+    @IBOutlet weak var photoCollectionView: UICollectionView!
24
+    
25
+    @IBOutlet weak var userAvatar: UIImageView!
26
+    @IBOutlet weak var userName: UILabel!
27
+    @IBOutlet weak var photoTime: UILabel!
28
+    
29
+    @IBOutlet weak var thumbupCount: UILabel!
30
+    @IBOutlet weak var thumbupView: UIView!
31
+    
32
+    @IBOutlet weak var commentCount: UILabel!
33
+    @IBOutlet weak var tableView: UITableView!
34
+    
35
+    @IBOutlet weak var commentView: UIView!
36
+    @IBOutlet weak var commentHeight: NSLayoutConstraint!
37
+    @IBOutlet weak var commentTextField: UITextField!
38
+    @IBOutlet weak var sendBtn: UIButton!
39
+    
40
+    @IBOutlet weak var buyView: UIView!
41
+    @IBOutlet weak var waterMarkImage: UIImageView!
42
+    @IBOutlet weak var waterMarkLabel: UILabel!
19 43
 
20
-    // MARK: Storyboard property
21
-    @IBOutlet var tableView: UITableView!
22
-    @IBOutlet var commentView: UIView!
23
-    @IBOutlet var commentHeight: NSLayoutConstraint!
24
-    @IBOutlet var commentTextField: UITextField!
25
-    @IBOutlet var sendBtn: UIButton!
26
-    @IBOutlet var thumbupView: UIView!
27
-    @IBOutlet var buyView: UIView!
28
-    @IBOutlet var shuiyinImage: UIImageView!
29
-    @IBOutlet var shuiyinLabel: UILabel!
30
-    @IBOutlet weak var waterMarkView: UIView!
31
-
32
-    @IBOutlet weak var shuiyinImageLeadingConstarint: NSLayoutConstraint!
33 44
     // MARK: data property
34
-    var detailPageViewModel = DetailPageViewModel()
45
+    var viewModel: PhotoDetailViewModel!
35 46
     lazy var datas = [PhotoItem]()
36 47
     lazy var currentPhotoIndex = 0
37 48
     var isHiddenEnterView = false
38 49
     let disposeBag = DisposeBag()
39
-    static let storyboardCtl = UIStoryboard.photoDetail.instantiateInitialViewController() as! DetailPageController
50
+    static let storyboardCtl = UIStoryboard.photoDetail.instantiateInitialViewController() as! PhotoDetailViewController
40 51
 
41 52
     // MARK: view function
42 53
     override func viewDidLoad() {
43 54
         super.viewDidLoad()
44 55
 //        detailPageViewModel.tipDelegate = self
45 56
 //        tableView.tableFooterView = UIView()
46
-        tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 100, right: 0)
47 57
         configureNotification()
48
-        commentTextField.addLeftPadding(7)
58
+        
49 59
         commentTextField.rx.text
50 60
                         .map {!($0?.isEmpty)!}
51 61
                         .bind(to: sendBtn.rx.isEnabled)
52 62
                         .disposed(by: disposeBag)
53 63
     }
64
+    
65
+    func setupCommentTextField() {
66
+        commentTextField.addLeftPadding(7)
67
+    }
54 68
 
55 69
     override func viewWillAppear(_ animated: Bool) {
56 70
         super.viewWillAppear(true)
@@ -118,28 +132,28 @@ final class DetailPageController: UIViewController {
118 132
         currentPhotoIndex = index
119 133
 //        detailPageViewModel.currentPhoto = datas[index]
120 134
 
121
-        detailPageViewModel.fetchThumbup(success: {[weak self] in
122
-            if let weakself = self {
123
-                var model = weakself.datas[index]
124
-                model.thumbup_num =  weakself.detailPageViewModel.thumbups.count
125
-                weakself.datas[index] = model
126
-//                PhotoLocalStorage.instance.updateLocalData(PhotoItem: model)
127
-                weakself.reloadSection(inter: 3)
128
-            }
129
-        })
130
-        detailPageViewModel.fetchComment(success: {[weak self] in
131
-            if let weakself = self {
132
-
133
-                var model = weakself.datas[index]
134
-                model.comment_num =  weakself.detailPageViewModel.comments.count
135
-                weakself.datas[index] = model
136
-//                PhotoLocalStorage.instance.updateLocalData(PhotoItem: model)
137
-                weakself.reloadSection(inter: 4)
138
-            }
139
-        })
140
-
141
-        reloadSection(inter: 0)
142
-        reloadSection(inter: 2)
135
+//        detailPageViewModel.fetchThumbup(success: {[weak self] in
136
+//            if let weakself = self {
137
+//                var model = weakself.datas[index]
138
+//                model.thumbup_num =  weakself.detailPageViewModel.thumbups.count
139
+//                weakself.datas[index] = model
140
+////                PhotoLocalStorage.instance.updateLocalData(PhotoItem: model)
141
+//                weakself.reloadSection(inter: 3)
142
+//            }
143
+//        })
144
+//        detailPageViewModel.fetchComment(success: {[weak self] in
145
+//            if let weakself = self {
146
+//
147
+//                var model = weakself.datas[index]
148
+//                model.comment_num =  weakself.detailPageViewModel.comments.count
149
+//                weakself.datas[index] = model
150
+////                PhotoLocalStorage.instance.updateLocalData(PhotoItem: model)
151
+//                weakself.reloadSection(inter: 4)
152
+//            }
153
+//        })
154
+
155
+//        reloadSection(inter: 0)
156
+//        reloadSection(inter: 2)
143 157
         showBuyView()
144 158
     }
145 159
 
@@ -157,36 +171,36 @@ final class DetailPageController: UIViewController {
157 171
 
158 172
     // MARK: Storyboard  button function
159 173
     @IBAction func HDPay(_ sender: UIButton) {
160
-        detailPageViewModel.getHD (getPriceSuccess: { [weak self] (isExist) in
161
-            if let weakself = self {
162
-                if isExist {
163
-                    let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self)
164
-                    fullPicCtl.datas = [weakself.datas[weakself.currentPhotoIndex]]
165
-                    fullPicCtl.showNomark = true
166
-                    fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex
167
-                    weakself.navigationController?.pushViewController(fullPicCtl, animated: true)
168
-                } else {
169
-                }
170
-            }
171
-        })
174
+//        detailPageViewModel.getHD (getPriceSuccess: { [weak self] (isExist) in
175
+//            if let weakself = self {
176
+//                if isExist {
177
+//                    let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self)
178
+//                    fullPicCtl.datas = [weakself.datas[weakself.currentPhotoIndex]]
179
+//                    fullPicCtl.showNomark = true
180
+//                    fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex
181
+//                    weakself.navigationController?.pushViewController(fullPicCtl, animated: true)
182
+//                } else {
183
+//                }
184
+//            }
185
+//        })
172 186
     }
173 187
 
174 188
     @IBAction func waterMarkPay(_ sender: UIButton) {
175 189
 
176
-        detailPageViewModel.getWatermark (getPriceSuccess: { [weak self] (isExist) in
177
-            if let weakself = self {
178
-                if isExist {
179
-                    let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self)
180
-                    fullPicCtl.datas = weakself.datas
181
-                    fullPicCtl.showNomark = true
182
-                    fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex
183
-                    weakself.navigationController?.pushViewController(fullPicCtl, animated: true)
184
-                } else {
185
-                    weakself.shuiyinImage.isHidden = true
186
-                    weakself.shuiyinLabel.text = "¥\((weakself.detailPageViewModel.watermarkPrice/100))"
187
-                }
188
-            }
189
-        })
190
+//        detailPageViewModel.getWatermark (getPriceSuccess: { [weak self] (isExist) in
191
+//            if let weakself = self {
192
+//                if isExist {
193
+//                    let fullPicCtl = UIStoryboard(name: "Detail", bundle: nil).instantiateController(ShowFullPicController.self)
194
+//                    fullPicCtl.datas = weakself.datas
195
+//                    fullPicCtl.showNomark = true
196
+//                    fullPicCtl.currentPhotoIndex = weakself.currentPhotoIndex
197
+//                    weakself.navigationController?.pushViewController(fullPicCtl, animated: true)
198
+//                } else {
199
+//                    weakself.shuiyinImage.isHidden = true
200
+//                    weakself.shuiyinLabel.text = "¥\((weakself.detailPageViewModel.watermarkPrice/100))"
201
+//                }
202
+//            }
203
+//        })
190 204
     }
191 205
 
192 206
     @IBAction func share() {
@@ -206,23 +220,23 @@ final class DetailPageController: UIViewController {
206 220
         guard let text = commentTextField.text else {
207 221
             return
208 222
         }
209
-        detailPageViewModel.sendComment(content: text, success: { [weak self] in
210
-            if let weakself = self {
211
-                weakself.commentTextField.text = ""
212
-                weakself.commentTextField.resignFirstResponder()
213
-                weakself.commentView.isHidden = true
214
-                weakself.refreshUI(index: weakself.currentPhotoIndex)
215
-            }
216
-        })
223
+//        detailPageViewModel.sendComment(content: text, success: { [weak self] in
224
+//            if let weakself = self {
225
+//                weakself.commentTextField.text = ""
226
+//                weakself.commentTextField.resignFirstResponder()
227
+//                weakself.commentView.isHidden = true
228
+//                weakself.refreshUI(index: weakself.currentPhotoIndex)
229
+//            }
230
+//        })
217 231
     }
218 232
 
219 233
     @IBAction func thumbup() {
220
-        detailPageViewModel.sendThumbup(success: {[weak self]  in
221
-            if let weakself = self {
222
-                weakself.refreshUI(index: weakself.currentPhotoIndex)
223
-            }
224
-
225
-        })
234
+//        detailPageViewModel.sendThumbup(success: {[weak self]  in
235
+//            if let weakself = self {
236
+//                weakself.refreshUI(index: weakself.currentPhotoIndex)
237
+//            }
238
+//
239
+//        })
226 240
     }
227 241
 
228 242
     // MARK: custom function
@@ -234,19 +248,19 @@ final class DetailPageController: UIViewController {
234 248
     }
235 249
 
236 250
     @objc func showThumps() {
237
-        if detailPageViewModel.thumbupsCount > 0 {
238
-            detailPageViewModel.thumbupsCount = 0
239
-        } else {
240
-            detailPageViewModel.thumbupsCount = detailPageViewModel.thumbups.count
241
-        }
251
+//        if detailPageViewModel.thumbupsCount > 0 {
252
+//            detailPageViewModel.thumbupsCount = 0
253
+//        } else {
254
+//            detailPageViewModel.thumbupsCount = detailPageViewModel.thumbups.count
255
+//        }
242 256
         reloadSection(inter: 3)
243 257
     }
244 258
     @objc func showComments() {
245
-        if detailPageViewModel.commentsCount > 0 {
246
-            detailPageViewModel.commentsCount = 0
247
-        } else {
248
-            detailPageViewModel.commentsCount = detailPageViewModel.comments.count
249
-        }
259
+//        if detailPageViewModel.commentsCount > 0 {
260
+//            detailPageViewModel.commentsCount = 0
261
+//        } else {
262
+//            detailPageViewModel.commentsCount = detailPageViewModel.comments.count
263
+//        }
250 264
         reloadSection(inter: 4)
251 265
     }
252 266
 
@@ -274,7 +288,7 @@ final class DetailPageController: UIViewController {
274 288
 }
275 289
 
276 290
 // MARK: custom delegate function
277
-extension DetailPageController: CellDelegate {
291
+extension PhotoDetailViewController: CellDelegate {
278 292
     func selectIndex(indexpath: IndexPath) {
279 293
         let ctl = UIStoryboard.photoDetail.instantiateController(ShowFullPicController.self)
280 294
         ctl.datas = datas
@@ -295,7 +309,7 @@ extension DetailPageController: CellDelegate {
295 309
 }
296 310
 
297 311
 //MARK textField delegate
298
-extension DetailPageController: UIGestureRecognizerDelegate {
312
+extension PhotoDetailViewController: UIGestureRecognizerDelegate {
299 313
     // MARK: textField
300 314
 
301 315
     func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
@@ -312,33 +326,33 @@ extension DetailPageController: UIGestureRecognizerDelegate {
312 326
 }
313 327
 
314 328
 // MARK: UITableView delegate
315
-extension DetailPageController: UITableViewDataSource, UITableViewDelegate {
329
+extension PhotoDetailViewController: UITableViewDataSource, UITableViewDelegate {
316 330
 
317 331
     func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
318 332
         if section == 3 {
319 333
             let cell = tableView.dequeueReusableCell(withIdentifier: "thumbupHeadCell")
320 334
             if let label = cell?.viewWithTag(1001) as? UILabel {
321
-                label.text = "(\(detailPageViewModel.thumbups.count))"
335
+//                label.text = "(\(detailPageViewModel.thumbups.count))"
322 336
             }
323 337
             if let button = cell?.viewWithTag(1011) as? UIButton {
324 338
                 button.addTarget(self, action: #selector(showThumps), for: .touchUpInside)
325 339
             }
326 340
             if let imageView = cell?.viewWithTag(1008) as? UIImageView {
327
-                let imageName = detailPageViewModel.thumbupsCount <= 0 ? "收起" : "列表箭头"
328
-                imageView.image = UIImage(named : imageName)
341
+//                let imageName = detailPageViewModel.thumbupsCount <= 0 ? "收起" : "list-arrow"
342
+//                imageView.image = UIImage(named : imageName)
329 343
             }
330 344
             return cell?.contentView
331 345
         } else if section == 4 {
332 346
             let cell = tableView.dequeueReusableCell(withIdentifier: "comentHeadCell")
333 347
             if let label = cell?.viewWithTag(1002) as? UILabel {
334
-                label.text = "(\(detailPageViewModel.comments.count))"
348
+//                label.text = "(\(detailPageViewModel.comments.count))"
335 349
             }
336 350
             if let button = cell?.viewWithTag(1012) as? UIButton {
337 351
                 button.addTarget(self, action: #selector(showComments), for: .touchUpInside)
338 352
             }
339 353
             if let imageView = cell?.viewWithTag(1009) as? UIImageView {
340
-                let imageName = detailPageViewModel.commentsCount <= 0 ? "收起" : "列表箭头"
341
-                imageView.image = UIImage(named : imageName)
354
+//                let imageName = detailPageViewModel.commentsCount <= 0 ? "收起" : "list-arrow"
355
+//                imageView.image = UIImage(named : imageName)
342 356
             }
343 357
             return cell?.contentView
344 358
         }
@@ -357,11 +371,11 @@ extension DetailPageController: UITableViewDataSource, UITableViewDelegate {
357 371
     }
358 372
 
359 373
     func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
360
-        if section == 3 {
361
-            return detailPageViewModel.thumbupsCount > 0 ? 1 : 0
362
-        } else if section == 4 {
363
-            return detailPageViewModel.commentsCount
364
-        }
374
+//        if section == 3 {
375
+//            return detailPageViewModel.thumbupsCount > 0 ? 1 : 0
376
+//        } else if section == 4 {
377
+//            return detailPageViewModel.commentsCount
378
+//        }
365 379
         return 0
366 380
     }
367 381
 
@@ -391,14 +405,14 @@ extension DetailPageController: UITableViewDataSource, UITableViewDelegate {
391 405
             return cell
392 406
         } else if indexPath.section == 3 {
393 407
             let cell = tableView.dequeueReusableCell(withIdentifier: "thumbupCell", for: indexPath) as! DetailthumbupImagesCell
394
-            if detailPageViewModel.thumbups.count > 0 {
395
-                let headers = detailPageViewModel.thumbups.map {$0.avatar}
396
-                cell.setInfo(content: headers)
397
-            }
408
+//            if detailPageViewModel.thumbups.count > 0 {
409
+//                let headers = detailPageViewModel.thumbups.map {$0.avatar}
410
+//                cell.setInfo(content: headers)
411
+//            }
398 412
             return cell
399 413
         } else {
400 414
             let cell = tableView.dequeueReusableCell(withIdentifier: "comentCell", for: indexPath) as! DetailCommentCell
401
-            cell.setInfo(detailPageViewModel.comments[indexPath.row])
415
+//            cell.setInfo(detailPageViewModel.comments[indexPath.row])
402 416
             return cell
403 417
         }
404 418
     }
@@ -418,3 +432,7 @@ extension DetailPageController: UITableViewDataSource, UITableViewDelegate {
418 432
         }
419 433
     }
420 434
 }
435
+
436
+extension PhotoDetailViewController {
437
+    
438
+}

+ 4 - 4
PaiAi/Paiai_iOS/App/PhotoDetail/ShowFullPicController.swift

@@ -13,7 +13,7 @@ import PaiaiUIKit
13 13
 final class ShowFullPicController: UIViewController {
14 14
 
15 15
     // MARK: Storyboard property
16
-    @IBOutlet var collectionView: UICollectionView!
16
+    @IBOutlet weak var collectionView: UICollectionView!
17 17
 //    @IBOutlet weak var progressView: FFProgress!
18 18
    // MARK: parameter property
19 19
     lazy var datas = [PhotoItem]()
@@ -44,11 +44,11 @@ final class ShowFullPicController: UIViewController {
44 44
     // MARK: Storyboard  button function
45 45
     @IBAction  func back() {
46 46
          _ = navigationController?.popViewController(animated: true)
47
-        guard let ctl = navigationController?.viewControllers.last as? DetailPageController else {
47
+        guard let ctl = navigationController?.viewControllers.last as? PhotoDetailViewController else {
48 48
             return
49 49
         }
50
-        ctl.currentPhotoIndex = currentPageIndex
51
-        ctl.tableView.reloadData()
50
+//        ctl.currentPhotoIndex = currentPageIndex
51
+//        ctl.tableView.reloadData()
52 52
     }
53 53
     @IBAction func rotateTheImage(_ sender: UIButton) {
54 54
         guard let cell = collectionView.cellForItem(at: IndexPath(item: currentPageIndex, section: 0)) as? ImageCell else {

+ 21 - 0
PaiAi/Paiai_iOS/App/PhotoDetail/ShareView.swift

@@ -0,0 +1,21 @@
1
+//
2
+//  ShareView.swift
3
+//  Paiai_iOS
4
+//
5
+//  Created by ffib on 2019/3/21.
6
+//  Copyright © 2019 yb. All rights reserved.
7
+//
8
+
9
+import UIKit
10
+
11
+class ShareView: UIView {
12
+
13
+    /*
14
+    // Only override draw() if you perform custom drawing.
15
+    // An empty implementation adversely affects performance during animation.
16
+    override func draw(_ rect: CGRect) {
17
+        // Drawing code
18
+    }
19
+    */
20
+
21
+}