1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
title 智能培训类图
center header
梳理图文组件类关系图,实现在图文列表中实现智能培训样式
endheader

'******* 类声明模块 *******'
'类型:class,abstract,interface,annotation,enum'
'访问域:(-)私有,(#)保护,(~)包私有,(+)公有'
class LayoutEngineViewController{
-- 方法组 --
-(void)widgetImageViewClickWithData: 
}

package 图文框架 <<Folder>>{

class CenterViewController{
+Part *parentPart
--二级目录数据源--
-NSMutableArray*arrParts
--初始化二级目录方法--
-(void)queryTwoPartsWithParentForEnterpriseStyle:(Part *)parent

--方法组 --
-(void)queryTwoPartsWithParent:(Part *)parent
--初始化二级目录新闻视图页面body--
-(void)createNewsRootScrollView
--通过二级目录信息,获取主体body数据方法--
-(void)addEveryNewsParts:(NSArray *)arrNewParts
-(void)addParts:(NSArray *)arrNewParts
}
note right of CenterViewController
初始化多媒体
初始化图文列表
end note
class Part {
/** 父节点Id */
@property(nonatomic, copy) NSString        *parentId
/** 栏目Id */
@property(nonatomic, copy) NSString        *partId;
///智能培训:storeId
@property(nonatomic, assign) NSString   *storeId;
}

}
package 数据库 <<Folder>>{

class DatabaseOperation{
--持久化二级目录--
+ (BOOL)insertParts:withParentId:
--查询二级目录数据--
+ (NSMutableArray *)allpartsWithParentId:
--持久化列表数据--
+ (BOOL)insertNews:withPartID:
--读取数据库数据--
+ (NSMutableArray *)allNewsWithPartId:
}
CenterViewController *-- DatabaseOperation:持久化 <
}

LayoutEngineViewController *-- CenterViewController:Part >
package 智能培训 <<Folder>>{
LayoutEngineViewController *-- JHBaseViewController:布局映射入口 >
JHBaseViewController <|-- SmartLearnViewController:反射类 >
SmartLearnViewController *-- LearnStoreListViewController: 门店列表 >
LearnStoreListViewController *-- CenterViewController:Part >
class LearnStoreListViewController{
--方法组---
-(void)loadUserStores 门店列表
-(void)loadTLNewsCenterView 获取一级目录id
-(void)pushTLNewCenterView:(Part *)part初始化图文
}
LearnStoreListViewController *-left- ReqLearnStoreServer
class ReqLearnStoreServer{
+(id)shared;
@property (nonatomic, strong) JHURLRequest * request;
-(void)reqGetUserStore:(void(^)(NSArray *))handler
-(void)reqGetParentPart:(void(^)(KnowledgePaper *))handler
}
}
CenterViewController *-- CenterNewsViewController: storeId (part.orderStatus == 0)左对齐图文样式> 
note right on link 
通过<b>storeid</b>来指定新接口,
加载智能培训数据源
end note
CenterViewController *-- JHAudioVideoList:VAStoryCategory (part.orderStatus == 6)多媒体板式
note right on link 
通过<b>storeid</b>来指定新接口,
加载智能培训数据源
end note
package JHAudioVideoList <<Folder>>{
class APListViewController{
--接口属性--
+VAStoryCategory *parentStoryCategory
--TODO: tableView数据源模型--
VAStoryVersion:添加智能培训学习进度相关属性
--TODO: 网络接口方法--
-(void)getStoryVersionsWithCatId:LastId:count:sortBy:
--block回调方法--
-getStoryVersionsCallback:(VABSAPIResponse *)res
-- 暂存方法 --
-updateCacheData()
-loadCacheData()
--交互方法--
- (void)tableView:didSelectRowAtIndexPath:
}    

APListViewController2 *-up- VAStoryCategory:构造参数 <
note top on link
构造剧集列表的参数
end note

APListViewController *-up- VAStoryCategory:构造参数 <
note top on link
构造列表的参数
end note
APListViewController *-- VAStoryVersion:单元格数据 <
note top on link
单元格学习进度等
样式/数据的源
end note
APListViewController *-- VADatabaseOperation:暂存 >
note top on link 
根据catid
更新持久化
table数据源数组
end note
APListViewController *-left- VAMediaBaseCell:单元格 <
class VAMediaBaseCell{
--// 发布时间|阅读时间--
@property (nonatomic, strong) UILabel *timeLabel;             
--// 播放次数|阅读进度--
@property (nonatomic, strong) UILabel *numLabel;              
}
class VAStoryCategory{
+NSString *catId
@property(nonatomic, copy) NSString  * parentId
@property (strong, nonatomic) NSString *storeId
}

class VAStoryVersion{
--TODO: 新增参数--
@property (assign, nonatomic) NSString *storeId;
--///学习时长--
@property (strong, nonatomic) NSString *StudySec;
--///预估总时长--
@property (strong, nonatomic) NSString *EstimateSec;
--///学习进度--
@property (strong, nonatomic) NSString *StudySchedule;
}
note bottom of VAStoryVersion
解析列表数据的模型,
在此类中添加智力培训相关属性
end note
VADatabaseOperation *-up- VAStoryVersion:持久化对象 <
class VADatabaseOperation{
--TODO:当初始化时,持久化table数据源--
-(BOOL)writeStoryVersionCacheToDB:withCatId
--当查看视频详情时,更新数据库--
+ (BOOL) updateStoryVersion:(VAStoryVersion *)newStory
+(BOOL)updatePlayListWithStoysVersion:(NSArray *)StoryVersions
}
note bottom of VADatabaseOperation
暂存列表中的数据模型,
映射到数据库中
end note
class APListViewController2{
}
note top of APListViewController2
(VideoDisplayType && part.showType == 1)
当满足这个条件时初始化该实例
end note
}

package JHVideoRecording剧集版 <<Folder>>{
APListViewController *-- VACMoviePlayerViewController:VAStoryVersion *sv >
note top on link
当点击cell初始化剧集版播放器详情页
VideoDisplayType:// 判断用新的还是旧的播放界面
end note
class VACMoviePlayerViewController{
多媒体剧集版详情
--视频播放器启动方法--
- (void)playContentURL:(NSURL *)url
}
class VACGlodalManager{
+(VACGlodalManager*)SharedObj
-VAALMoviePlayerController *pALMoviePlayerController;
}
VACMoviePlayerViewController *-- VACGlodalManager 
VACGlodalManager *-- VAALMoviePlayerController
class VAALMoviePlayerController{
VAALMoviePlayerControls *controls;
--播放控制方法组--
---//切换屏幕---
- (void)fullscreenOrEmbedded:(NSString *)strMode;
--//播放还是暂停--
- (void)playOrPause;
}
VAALMoviePlayerController *- VAALMoviePlayerControls:播放控制UI <
class VAALMoviePlayerControls{
VAALButton *fullscreenButton;
VAStoryVersion *story;
VAALMoviePlayerController *moviePlayer;
--TODO: 五定图按钮--
UIButton *showSevenImgButton;
-(void)showSevenImgListAction;
}
VACMoviePlayerViewController .|> ALMoviePlayerControllerDelegate:代理 >  
interface ALMoviePlayerControllerDelegate{
--//上一曲--
- (void)beforePlayingVideo;
--//下一曲--
- (void)afterPlayingVideo;
--//切换屏幕--
- (void)fullscreenOrEmbedded:(NSString *)strMode;
--//播放还是暂停--
- (void)playOrPause;
}
}

package JHVideoRecording列表版 <<Folder>>{
APListViewController *-- VACVideoPlayerDetailViewController:多媒体详情列表版 < 
note top on link
当选择cell初始化操作
VAStoryVersion * sv多媒体详情列表
end note
VACVideoPlayerDetailViewController *-- JHTWVideoPlayer:播放器 <
VACVideoPlayerDetailViewController *-- VAStoryVersion
VACVideoPlayerDetailViewController .|> VideoPlayDetailProtocol:代理 <  
VACVideoPlayerDetailViewController *-- VideoPlayDetailBIZ:播放器辅助类 <
JHTWVideoPlayer *-- VAStoryVersion:构造参数 <
APListViewController2 *-- VACMoviePlayerViewController:多媒体详情剧集版 > 
class VACVideoPlayerDetailViewController{
--基础属性--
+VAStoryVersion *storyVersion
-VideoPlayDetailBIZ *vpdBIZ
--播放器浮动框显示五定图相关控件--
-UIView *sevenView
--构造方法--
-initWithModel:(VAStoryVersion *)sv
--点击按钮显示五定图预览列表--
-(void)showSevenImgList 
}

class JHTWVideoPlayer{
--私有属性--
-VAStoryVersion *sv
--构造器--
+ (id)initWithFrame:model:(VAStoryVersion *)sv
--加载新视频--
+ (void)loadVideo:(VAStoryVersion *)sv
}

class VideoPlayDetailBIZ{
--接口参数--
+VAStoryVersion *currentStoryVersion
}

interface VideoPlayDetailProtocol{
--加载视频--
- (void)loadVideo:(VAStoryVersion *)sv;
}
}


package 公共组件 <<Folder>>{
APListViewController *-- VANetEngine:网络工具 <
class VANetEngine{
--TODO: 图文网络接口方法--
-(void)v5newsQueryPartsWithPartId:parentId:count:dateTime:lastMeters:lon:lat:newOrOld:modifyTime:partModifiedtimeForPart:orderType:type:del:sel
--TODO: 视频列表接口方法--
-(void)getStoryVersionsWithCatId:LastId:count:sortBy:asc:del:
--block回调方法--
-getStoryVersionsCallback:(VABSAPIResponse *)res
}
VideoPlayDetailProtocol <-- SevenImgCapture:启用五定图 <
class SevenImgCapture {
--类方法--
+(SevenImgCapture *)shared
--五定信息搜集方法--
-(void)threeInfo
--文字图片合成方法--
- (UIImage *)complexText
}
note right of VANetEngine
网络工具
end note
}

package 图文列表模块 <<Folder>>{
class BaseTableViewController{
--数据源--
+dataArray
--加载网络数据--
- (void)loadMoreData
}
BaseTableViewController <|-- PartBaseViewController:继承 >
PartBaseViewController <|-- CenterNewsViewController:继承data数据 >

class PartBaseViewController{
--重载网络数据接口--
- (void)loadMoreData
}


PartBaseViewController *- DatabaseOperation:持久化 <
class CenterNewsViewController{
--继承父类数据源--
+dataArray
-- 智能培训标示--
open storeId:String
__ 初始化cell代理方法 __
- (UITableViewCell *)tableView:cellForRowAtIndexPath:
- (id)getCellDataWith: 获取cell数据
// 根据新闻取得对应的图集cell类
- (Class)getCellInfoByNews:CellId:
--图文支持视频列表显示的方法--
#pragma mark - 进入阅读跳转
- (void)tableView:didSelectRowAtIndexPath:
//不收费,且无权限要求时,进入阅读跳转
-(void)expush_mothed:(NSIndexPath *)indexPath
} 
}
package JHAcrossNetEngin图文访问网络模块 <<Folder>>{
class NetEngine{
--新增图文列表接口--
-(void)v5newsQueryPartsWithPartId:parentId:storeId:count:dateTime:lastMeters:lon:lat:newOrOld:modifyTime:partModifiedtimeForPart:orderType:type:del:sel
}
PartBaseViewController <-down- NetEngine: 获取列表信息 <
}

package 图文详情模块 <<Rectangle>>{
class JHTWAtlasBaseCell{
+News *currentNews
+fillDataWithModel:(New *):celldata  填充数据
}
class JHTWMixedLARListCell{
-- 方法 --
[super fillDataWithModel:]
TODO:适配智能培训UI布局
}
class New{
__ 智能培训相关属性 __
@property (strong, nonatomic) NSString *StudySec;
@property (strong, nonatomic) NSString *EstimateSec;
@property (strong, nonatomic) NSString *StudySchedule;
}
note right of New
在替换新接口中,复用这个数据模型,添加智能培训相关属性
1. 添加属性:
2. 复用解析
3. 复用暂存
end note
class ListAndCardNewDetailViewController{
}
}

CenterNewsViewController o-- JHTWAtlasBaseCell:初始化图文cell数据 < 
JHTWAtlasBaseCell <|-- JHTWMixedLARListCell
JHTWMixedLARListCell o--New: picCount=1 < 
note right on link
picCount=1时,图文列表会使用单个图片样式
end note

package 多媒体 <<Rectangle>>{
class JHTWMixedMediaCell{

}
class TLNewsHomepage{
--播放器初始化方法--
-(void)playMediaNews:clickedNews playList: 
}
class JHTWMediaVideoPlayerDetailViewController{

}

}

JHTWMediaVideoPlayerDetailViewController *-- VANetEngine:五定图相关数据接口 < 
JHTWMediaVideoPlayerDetailViewController <-- SevenImgCapture: < 
CenterNewsViewController *-- TLNewsHomepage:多媒体详情 >
note right on link
当点击cell调用 `expush_mothed`方法
[clickedNews isMediaNews]当点击多媒体cell时
初始化视频播放器
end note
CenterNewsViewController *-- JHTWMixedMediaCell:多媒体cell <
note right on link
初始化图文列表时,显示多媒体cell样式
end note

TLNewsHomepage *-- JHTWMediaVideoPlayerDetailViewController:播放器详情 >
note right on link
初始化播放器页面
end note
JHTWMediaVideoPlayerDetailViewController *-- New:构造参数 <
JHTWMixedMediaCell o-- New:构造参数 <
ListAndCardNewDetailViewController *-- New:构造参数 <
CenterNewsViewController *-- ListAndCardNewDetailViewController:图文详情 > 
note right on link
当点击cell调用 `expush_mothed`方法
[clickedNews isMediaNews]当点击多媒体cell时
初始化视频播放器
end note

'JHTWAtlasBaseCell <|- JHTWMixedLARListCell 'picCount == 1
'显示/隐藏类,类方法属性等 关键字支持class,interface,enum'

'---- 声明类关系线备注,可以当做用例来参与到关系连接中 ---'
'note "图文左列表样式,复用样式,实现智能培训相关内容的显示:学习进度时长等信息" as new 

'###### 类备注模块 类声明末尾使用:note 位置: 备注#########'
note right of CenterNewsViewController
复用图文左列表样式
<b>实现智能培训相关属性显示:学习进度等。
end note


center footer
梳理图文组件类关系图
endfooter