wangyujian_wd

Merge remote-tracking branch 'origin/main'

Showing 66 changed files with 964 additions and 2187 deletions

Too many changes to show.

To preserve performance only 66 of 66+ files are displayed.

... ... @@ -34,6 +34,7 @@ export class SpConstants{
//定位相关
static LOCATION_CITY_NAME = "location_city_name" //定位
static LOCATION_CITY_CODE = "location_city_code" //定位
static LOCATION_PERMISSION_REFUSE = "location_permission_refuse" //定位
//启动页数据存储key
static APP_LAUNCH_PAGE_DATA_MODEL = 'app_launch_page_data_model'
... ...
import { Action } from './Action';
interface dataObject {
// dataSource:
// 1、图文详情数据
... ... @@ -17,7 +18,11 @@ interface dataObject {
webViewHeight?: string
dataJson?: string
appInnerLink?: string
method?: string
url?: string
parameters?: object
}
/**
* 消息Message
*/
... ...
... ... @@ -10,5 +10,7 @@ export enum EmitterEventId {
NETWORK_DISCONNECTED = 3,
// 跳转首页指定频道,事件id
JUMP_HOME_CHANNEL = 4,
LOCATION = 5
}
... ...
... ... @@ -742,7 +742,7 @@ export class HttpUrlUtils {
}
static getSearchHotsDataUrl() {
let url = HttpUrlUtils.HOST_SIT + HttpUrlUtils.SEARCH_HOTS_DATA_PATH
let url = HttpUrlUtils._hostUrl + HttpUrlUtils.SEARCH_HOTS_DATA_PATH
return url
}
... ... @@ -843,6 +843,13 @@ export class HttpUrlUtils {
let url = HttpUrlUtils._hostUrl + "/api/rmrb-interact/interact/zh/c/like/executeLike";
return url;
}
//获取点赞状态
static getLikeStatus() {
let url = HttpUrlUtils._hostUrl + "/api/rmrb-interact/interact/zh/c/batchLikeAndCollect/status";
return url;
}
//搜索推荐
static getSearchSuggestDataUrl() {
let url = HttpUrlUtils._hostUrl + HttpUrlUtils.SEARCH_SUGGEST_DATA_PATH
... ...
... ... @@ -171,6 +171,17 @@ export class ProcessUtils {
Logger.debug(TAG, `gotoMultiPictureListPage`);
}
public static _gotoSpecialTopic(linkUrl: string) {
let taskAction: Action = {
type: 'JUMP_INNER_NEW_PAGE',
params: {
url: linkUrl,
pageID: 'SPACIAL_TOPIC_PAGE',
} as Params,
};
WDRouterRule.jumpWithAction(taskAction)
}
public static gotoSpecialTopic(content: ContentDTO) {
let taskAction: Action = {
type: 'JUMP_INNER_NEW_PAGE',
... ... @@ -182,6 +193,16 @@ export class ProcessUtils {
WDRouterRule.jumpWithAction(taskAction)
}
public static _gotoDefaultWeb(linkUrl: string) {
let taskAction: Action = {
type: 'JUMP_H5_BY_WEB_VIEW',
params: {
url: linkUrl,
} as Params,
};
WDRouterRule.jumpWithAction(taskAction)
}
public static gotoDefaultWeb(content: ContentDTO) {
let taskAction: Action = {
type: 'JUMP_H5_BY_WEB_VIEW',
... ...
... ... @@ -11,6 +11,7 @@
"wdKit": "file:../wdKit",
"wdJsBridge": "file:../wdJsBridge",
"wdBean": "file:../../features/wdBean",
"wdRouter": "file:../wdRouter"
"wdRouter": "file:../wdRouter",
"wdNetwork": "file:../wdNetwork"
}
}
... ...
... ... @@ -10,6 +10,7 @@ export class H5CallNativeType {
static jsCall_callAppService = 'jsCall_callAppService'
static jsCall_appInnerLinkMethod = 'jsCall_appInnerLinkMethod'
static jsCall_receiveH5Data = 'jsCall_receiveH5Data'
static jsCall_getAppLoginAuthInfo = 'jsCall_getAppLoginAuthInfo'
// TODO 业务自行新增类型、自行在JsBridgeBiz#performJSCallNative里添加接收分支处理。
static {
... ... @@ -19,6 +20,8 @@ export class H5CallNativeType {
H5CallNativeType.JsCallTypeList.push(H5CallNativeType.jsCall_callAppService)
H5CallNativeType.JsCallTypeList.push(H5CallNativeType.jsCall_appInnerLinkMethod)
H5CallNativeType.JsCallTypeList.push(H5CallNativeType.jsCall_receiveH5Data)
H5CallNativeType.JsCallTypeList.push(H5CallNativeType.jsCall_getAppLoginAuthInfo)
}
}
... ...
import HashMap from '@ohos.util.HashMap';
import { Callback } from 'wdJsBridge';
import { Message } from 'wdJsBridge/src/main/ets/bean/Message';
import { Logger } from 'wdKit';
... ... @@ -8,6 +9,7 @@ import { ProcessUtils } from 'wdRouter';
import router from '@ohos.router';
import Url from '@ohos.url'
import { ContentDTO } from 'wdBean/Index';
import { ResponseDTO, WDHttp, HttpUrlUtils } from 'wdNetwork';
const TAG = 'JsBridgeBiz'
... ... @@ -37,7 +39,9 @@ export function performJSCallNative(data: Message, call: Callback) {
case H5CallNativeType.jsCall_getArticleDetailBussinessData:
break;
case H5CallNativeType.jsCall_callAppService:
handleJsCallCallAppService(data)
handleJsCallCallAppService(data, (res: string) => {
call(res)
})
break;
case H5CallNativeType.jsCall_receiveH5Data:
handleJsCallReceiveH5Data(data)
... ... @@ -60,6 +64,21 @@ function handleJsCallCurrentPageOperate(data: Message) {
}
}
function handleJsCallCallAppService(data: Message, callback: (res: string) => void) {
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
let url: string = HttpUrlUtils.getHost() + data?.data?.url
if (data?.data?.method === 'get') {
WDHttp.get<ResponseDTO<string>>(url, headers).then((res: ResponseDTO<string>) => {
callback(JSON.stringify(res))
})
}
if (data?.data?.method === 'post') {
WDHttp.post<ResponseDTO<string>>(url, data?.data?.parameters, headers).then(res => {
callback(JSON.stringify(res))
})
}
}
/**
* 获取App公共信息
*/
... ... @@ -87,19 +106,14 @@ function handleJsCallReceiveH5Data(data: Message) {
}
}
function handleJsCallCallAppService(data: Message) {
}
function handleJsCallAppInnerLinkMethod(data: Message) {
let urlObject = Url.URL.parseURL(data?.data?.appInnerLink);
let urlParams = new Url.URLParams(urlObject.search);
console.log('urlObject:', `${JSON.stringify(urlParams)}`)
let content: ContentDTO = {
objectId: urlParams.get('contentId') || '',
relId: urlParams.get('relId') || '',
relType: urlParams.get('relType') || '',
pageId:urlParams.get('pageId') || '',
pageId: urlParams.get('pageId') || '',
objectType: ''
} as ContentDTO
if (urlParams.get('skipType') === '1') {
... ... @@ -130,14 +144,14 @@ function handleJsCallAppInnerLinkMethod(data: Message) {
ProcessUtils.processPage(content)
break;
case 'topic':
if(urlParams.get('subType') === 'h5'){
if (urlParams.get('subType') === 'h5') {
content.objectType = ContentConstants.TYPE_SPECIAL_TOPIC
ProcessUtils.processPage(content)
}
if(urlParams.get('subType') === 'moring_evening_news'){
if (urlParams.get('subType') === 'moring_evening_news') {
ProcessUtils.gotoMorningEveningPaper()
}
if(urlParams.get('subType') === 'electronic_newspapers'){
if (urlParams.get('subType') === 'electronic_newspapers') {
ProcessUtils.gotoENewsPaper()
}
break;
... ... @@ -148,7 +162,7 @@ function handleJsCallAppInnerLinkMethod(data: Message) {
case 'owner_page':
let creatorId = urlParams.get('creatorId') || ''
ProcessUtils.gotoPeopleShipHomePage(creatorId)
break;
break;
default:
break;
}
... ...
... ... @@ -7,6 +7,7 @@ export interface CompDTO {
cityCode: string;
compStyle: string;
compType: string;
// dataSourceRequest: any[];
districtCode: string;
extraData?: string;
... ... @@ -15,6 +16,7 @@ export interface CompDTO {
imgSize: string;
innerUrl: string;
linkUrl: string;
// meddleDataList: any[];
name: string;
objectId: string; // 跳转页面id?
... ... @@ -29,9 +31,13 @@ export interface CompDTO {
subType: string;
imageScale: number; // 封面图比例 1-4:3, 2-16:9, 3-3:2
audioDataList: AudioDTO[];
titleShowPolicy: string | number;
/**
* 组件内容源类型 (LIVE_HORIZONTAL_CARD\LIVE_RESERVATION\LIVE_LARGE_CARD\LIVE_END\LIVE_MONTHLY_RANKING )
*/
dataSourceType: string;
pageId?: string;
objectType?: string;
}
\ No newline at end of file
... ...
... ... @@ -9,6 +9,7 @@ export interface PageInfoDTO {
name: string; // 名称
hasPopUp: number;
baselineShow: number;
baselineCopywriting: string;
groups: GroupInfoDTO[];
channelInfo: ChannelInfoDTO;
... ... @@ -20,11 +21,11 @@ export interface PageInfoDTO {
/**
* 挂角广告数据
*/
cornersAdv:AdvRuleBean
cornersAdv: AdvRuleBean
/**
* 广告中心-挂角广告信息
*/
cornersAdv2:CompAdvBean[]
cornersAdv2: CompAdvBean[]
}
... ...
... ... @@ -14,6 +14,8 @@ export { PageComponent } from "./src/main/ets/components/page/PageComponent"
export { BottomNavigationComponent } from "./src/main/ets/components/page/BottomNavigationComponent"
export { LikeComponent } from "./src/main/ets/components/view/LikeComponent"
export { TopNavigationComponent } from "./src/main/ets/components/page/TopNavigationComponent"
export { LabelComponent } from "./src/main/ets/components/view/LabelComponent"
... ... @@ -77,6 +79,8 @@ export { LiveCommentComponent } from "./src/main/ets/components/comment/view/Liv
export { WDViewDefaultType } from "./src/main/ets/components/view/EmptyComponent"
export { PermissionDesComponent } from "./src/main/ets/components/view/PermissionDesComponent"
export { AudioRowComponent } from "./src/main/ets/components/live/AudioRowComponent"
export { WDLiveViewDefaultType } from "./src/main/ets/components/view/LiveEmptyComponent"
... ...
... ... @@ -20,8 +20,8 @@ import { ZhCarouselLayout01 } from './compview/ZhCarouselLayout01';
import { CardParser } from './CardParser';
import { LiveHorizontalReservationComponent } from './view/LiveHorizontalReservationComponent';
import { ZhGridLayout02 } from './compview/ZhGridLayout02';
import { Card5Component } from './cardview/Card5Component';
import { Card2Component } from './cardview/Card2Component';
import { Card5Component } from './cardview/Card5Component';
import { WDRouterPage, WDRouterRule } from 'wdRouter/Index';
/**
... ... @@ -71,7 +71,7 @@ export struct CompParser {
ZhSingleRow06({ compDTO })
} else if (compDTO.compStyle === CompStyle.Zh_Single_Column_02) {
//头图卡 和comStyle 2相同,
Card5Component({ contentDTO: compDTO.operDataList[0] })
Card5Component({ contentDTO: compDTO.operDataList[0], titleShowPolicy: compDTO.titleShowPolicy })
} else if (compDTO.compStyle === CompStyle.Zh_Single_Column_03) {
// 大图卡
Card2Component({ contentDTO: compDTO.operDataList[0] })
... ...
... ... @@ -6,7 +6,7 @@ import {
H5ReceiveDetailBean,
ResponseBean
} from 'wdBean';
import { Logger, SPHelper } from 'wdKit';
import { Logger, SPHelper, NetworkUtil } from 'wdKit';
import { SpConstants } from 'wdConstant';
import { WdWebLocalComponent } from 'wdWebComponent';
import { NativeCallH5Type } from 'wdWebComponent/src/main/ets/pages/NativeCallH5Type';
... ... @@ -61,7 +61,7 @@ export struct ImageAndTextWebComponent {
let h5ReceiveDataExtraBean: H5ReceiveDataExtraBean = {
creatorId: creatorId,
isLogin: isLogin,
networkStatus: 1,
networkStatus: Number(NetworkUtil.isNetConnected()),
loadImageOnlyWifiSwitch: '2',
} as H5ReceiveDataExtraBean
... ...
... ... @@ -20,6 +20,7 @@ export struct Card5Component {
// newsTitle: '今天是周日,天气阴天,明天是周一。',
// objectType: '6'
} as ContentDTO;
@State titleShowPolicy: number | string = 1
build() {
Stack() {
... ... @@ -27,7 +28,7 @@ export struct Card5Component {
.width(CommonConstants.FULL_WIDTH)
.autoResize(true)
.borderRadius($r('app.float.image_border_radius'))
if (this.contentDTO.titleShow === 1 && this.contentDTO.newsTitle) {
if (this.titleShowPolicy === 1 && this.contentDTO.newsTitle) {
Row()
.width(CommonConstants.FULL_WIDTH)
.height(59)
... ...
... ... @@ -87,6 +87,10 @@ export class commentItemModel {
maxLine: number = 3
/*是否有展示更多*/
hasMore: boolean = false
/*展开子评论的状态下是否有展开更多*/
childsHasMore: boolean = false
/*子评论pageNum*/
pageNum:number = 1
/*当有展示更多的时候,当前的状态是展开还是收起*/
expanded: boolean = false
/*是否正在加载子评论*/
... ...
@Observed
export class publishCommentModel {
/*被评论的内容id*/
//页面必传
/*被评论的内容id 页面必传*/
targetId: string = ""
/*被评论的内容关系id*/
/*被评论的内容关系id 页面必传*/
targetRelId: string = ""
/*1.文字 2.文字+表情 3.定制表情(客户端写死) 4.图片*/
commentType: string = '1'
/*根评论id,如果是一级评论,传-1;否则,传当前评论所属的根评论id*/
rootCommentId: string = "-1"
/*【迭代二新增】内容的标题,取bff内容详情接口中newsTitle字段*/
/*【迭代二新增】内容的标题,取bff内容详情接口中newsTitle字段 页面必传*/
targetTitle: string = ""
/*被评论的内容关系类型,1.频道关系;2.专题关系;【人民号内容为空】默认0*/
/*被评论的内容关系类型,1.频道关系;2.专题关系;【人民号内容为空】默认0 页面必传*/
targetRelType: string = ''
/*【迭代二新增】关联的频道id/专题id;*/
/*【迭代二新增】关联的频道id/专题id; 页面必传*/
targetRelObjectId: string = ""
/*【迭代二新增】是否是重点稿件 1是 0否 页面必传*/
keyArticle: string = ''
/*内容类别, 1:点播,2:直播,3:活动,4:广告,5:专题,6:链接,7:榜单,8:图文,9:组图,10:H5新闻,11:频道,12:组件,13:音频,14:动态(13和14为中文版新增) 页面必传*/
targetType: string = ''
/*评论总数*/
totalCommentNumer: string = ''
//评论传参
/*评论图片url,多个逗号隔开*/
commentPics: string = ""
/*评论内容*/
commentContent: string = ""
/*【迭代二新增】是否是重点稿件 1是 0否*/
keyArticle: string = ''
/*内容类别, 1:点播,2:直播,3:活动,4:广告,5:专题,6:链接,7:榜单,8:图文,9:组图,10:H5新闻,11:频道,12:组件,13:音频,14:动态(13和14为中文版新增)*/
targetType: string = ''
/*1.文字 2.文字+表情 3.定制表情(客户端写死) 4.图片*/
commentType: string = '1'
/*根评论id,如果是一级评论,传-1;否则,传当前评论所属的根评论id*/
rootCommentId: string = "-1"
/*父评论id,如果是其它评论的回复,该字段必填*/
parentId: string = "-1"
//可选
placeHolderText: string = "优质评论会获得最佳评论人的称号"
}
... ...
... ... @@ -12,45 +12,23 @@ import { ifaa } from '@kit.OnlineAuthenticationKit';
const TAG = 'CommentComponent';
const testString = '因为读书的人\n是低着头向上看的人\n身处一隅,却能放眼世界\n2,因为读书的人\n总是比不读书的人\n活得有趣一点\n3,因为读书的人\n即使平凡,绝不平庸'
// @Entry
@Preview
@Component
export struct CommentComponent {
@State contentId: string = '30004266013'
/*内容类别, 1:点播,2:直播,3:活动,4:广告,5:专题,6:链接,7:榜单,8:图文,9:组图,10:H5新闻,11:频道,12:组件,13:音频,14:动态(13和14为中文版新增)*/
@State contentType: string = '8'
/*内容的标题,取bff内容详情接口中newsTitle字段*/
@State targetTitle: string = '北约同意向乌克兰提供防空系统在内的更多军事支持'
/*被评论的内容关系id*/
@State targetRelId: string = "500002849023"
/*关联的频道id/专题id*/
@State targetRelObjectId: string = "2002"
/*是否是重点稿件 1是 0否*/
@State keyArticle: string = "0"
/*被评论的内容关系类型,1.频道关系;2.专题关系;【人民号内容为空】默认0*/
@State targetRelType: string = "1"
// @State private browSingModel: commentListModel = new commentListModel()
/*必传*/
@ObjectLink publishCommentModel: publishCommentModel
isloading: boolean = false
@State allDatas: LazyDataSource<commentItemModel> = new LazyDataSource();
@State publishCommentModel: publishCommentModel = new publishCommentModel()
@State dialogController: CustomDialogController | null = new CustomDialogController({
builder: CommentCustomDialog({
confirm: (value: Record<string, string>) => {
this.publishComment(value)
},
commentText: this.publishCommentModel.commentContent,
placeHolderText: this.publishCommentModel.placeHolderText,
}),
autoCancel: true,
alignment: DialogAlignment.Bottom,
customStyle: true,
offset: {
dx: 0,
dy: -20
},
})
@State dialogController: CustomDialogController | null = null;
// 在自定义组件即将析构销毁时将dialogControlle置空
aboutToDisappear() {
... ... @@ -58,13 +36,22 @@ export struct CommentComponent {
}
aboutToAppear() {
this.publishCommentModel.targetTitle = this.targetTitle
this.publishCommentModel.targetId = this.contentId
this.publishCommentModel.targetType = this.contentType
this.publishCommentModel.targetRelId = this.targetRelId
this.publishCommentModel.targetRelType = this.targetRelType
this.publishCommentModel.targetRelObjectId = this.targetRelObjectId
this.publishCommentModel.keyArticle = this.keyArticle
this.dialogController = new CustomDialogController({
builder: CommentCustomDialog({
confirm: (value: Record<string, string>) => {
},
publishCommentModel:this.publishCommentModel
}),
autoCancel: true,
alignment: DialogAlignment.Bottom,
customStyle: true,
offset: {
dx: 0,
dy: -20
},
})
this.getData();
... ... @@ -105,7 +92,7 @@ export struct CommentComponent {
/*查看更多和收起*/
@Builder
GroupFooterView(item: commentItemModel, index: number) {
footerExpandedView({ item: item, contentId: this.contentId, contentType: this.contentType })
footerExpandedView({ item: item, contentId: this.publishCommentModel.targetId, contentType: this.publishCommentModel.targetType })
}
build() {
... ... @@ -152,13 +139,13 @@ export struct CommentComponent {
//获取数据
async getData() {
commentViewModel.fetchContentCommentList('1', this.contentId, this.contentType).then(commentListModel => {
commentViewModel.fetchContentCommentList('1', this.publishCommentModel.targetId, this.publishCommentModel.targetType).then(commentListModel => {
if (commentListModel && commentListModel.list && commentListModel.list.length > 0) {
commentListModel.list.forEach(element => {
element.hasMore = Number.parseInt(element.childCommentNum) ? true : false
let newModel = commentViewModel.deepCopyCommentItemModel(element)
newModel.targetId = this.contentId
newModel.targetType = this.contentType
// newModel.targetId = this.publishCommentModel.targetId
// newModel.targetType = this.publishCommentModel.targetType
this.allDatas.push(newModel)
});
... ... @@ -167,20 +154,6 @@ export struct CommentComponent {
})
}
/*回复评论*/
publishComment(value: Record<string, string>) {
this.publishCommentModel.commentContent = value['commentContent']
this.publishCommentModel.commentType = value['commentType']
commentViewModel.publishComment(this.publishCommentModel).then(() => {
this.publishCommentModel.commentContent = ''
}).catch(() => {
})
}
}
... ... @@ -230,7 +203,7 @@ struct ChildCommentItem {
.fontSize(14)
.fontColor($r('app.color.color_222222'))
.fontWeight(FontWeight.Medium)
.margin({ left: 0 , right:0})
.margin({ left: 0, right: 0 })
/// 暂时不显示 “我” 的标签了
... ... @@ -257,10 +230,12 @@ struct ChildCommentItem {
.margin({ left: 5 });
}
}.margin({ left: 0, right: 16 })
// .backgroundColor(Color.Red)
CommentText({
longMessage: this.item.commentContent,
// longMessage:testString,
maxline: 3,
fontSize: 14,
fontWeight: FontWeight.Regular,
... ... @@ -297,12 +272,27 @@ struct footerExpandedView {
build() {
Row() {
if (this.item.expanded) {
if (this.item.childsHasMore) {
Row() {
Text().backgroundColor($r('app.color.color_EDEDED')).width(24).height(1)
Text('查看更多回复').fontColor($r('app.color.color_222222')).fontSize(14).margin({ left: 6 })
Image($r('app.media.comment_unfold')).width(12).height(12)
}.margin({ left: 53 })
.onClick(() => {
if (this.item.isLoading) {
return
}
this.item.isLoading = true
fetchChildContentCommentList(this.contentId, this.contentType, this.item)
})
}
Row() {
Text('收起').fontColor($r('app.color.color_222222')).fontSize(14)
Image($r('app.media.comment_pickUp')).width(12).height(12)
}.margin({ left: 213 })
}.margin({ left: this.item.childsHasMore ? 32 : 213 })
.onClick(() => {
this.item.expanded = !this.item.expanded
this.item.pageNum = 1
this.item.expanded = false
this.item.childComments = []
this.item.childCommentsLazyDataSource.clear()
})
... ... @@ -317,28 +307,35 @@ struct footerExpandedView {
return
}
this.item.isLoading = true
//load child
commentViewModel.fetchChildContentCommentList('1', this.contentId, this.contentType, this.item.id)
.then((commentListModel) => {
this.item.isLoading = false
this.item.expanded = !this.item.expanded
commentListModel.list.forEach(element => {
this.item.childComments.push(element)
let newModel = commentViewModel.deepCopyCommentItemModel(element)
newModel.targetId = this.contentId
newModel.targetType = this.contentType
this.item.childCommentsLazyDataSource.push(newModel)
})
}).catch(() => {
this.item.isLoading = false
})
fetchChildContentCommentList(this.contentId, this.contentType, this.item)
})
}
}.height(30)
}
}
function fetchChildContentCommentList(contentId: string, contentType: string, item: commentItemModel) {
commentViewModel.fetchChildContentCommentList(item.pageNum + '', contentId, contentType, item.id)
.then((commentListModel) => {
item.pageNum = item.pageNum + 1
item.childsHasMore = commentListModel.hasNext > 0 ? true : false
item.isLoading = false
item.expanded = true
commentListModel.list.forEach(element => {
item.childComments.push(element)
let newModel = commentViewModel.deepCopyCommentItemModel(element)
newModel.targetId = contentId
newModel.targetType = contentType
item.childCommentsLazyDataSource.push(newModel)
})
}).catch(() => {
item.isLoading = false
})
}
@Component
struct commentHeaderView {
@Link publishCommentModel: publishCommentModel
... ... @@ -411,7 +408,14 @@ struct commentHeaderView {
marginWidth: (59 + 16)
})
.margin({ left: 59, right: 16, top: -5 })
.onClick(() => {
this.publishCommentModel.rootCommentId = this.item.rootCommentId
this.publishCommentModel.parentId = this.item.id
this.publishCommentModel.placeHolderText = '回复' + this.item.fromUserName + ':'
if (this.dialogController != null) {
this.dialogController.open()
}
})
commentFooterView({
item: this.item,
... ... @@ -456,7 +460,12 @@ struct commentFooterView {
.fontColor($r('app.color.color_222222'))
.fontSize(12)
.onClick(() => {
//TODO: 回复
this.publishCommentModel.rootCommentId = this.item.rootCommentId
this.publishCommentModel.parentId = this.item.id
this.publishCommentModel.placeHolderText = '回复' + this.item.fromUserName + ':'
if (this.dialogController != null) {
this.dialogController.open()
}
})
}
... ...
... ... @@ -5,27 +5,51 @@ import commentViewModel from '../viewmodel/CommentViewModel'
@Preview
@CustomDialog
export struct CommentCustomDialog {
commentText: string = ''
placeHolderText: string = '优质评论会获得最佳评论人的称号'
@ObjectLink publishCommentModel: publishCommentModel
controller?: CustomDialogController
confirm: (value: Record<string, string>) => void = () => {
}
@State private emojiSwitch: boolean = false
textInputController: TextAreaController = new TextAreaController()
aboutToAppear(): void {
}
publishCommentRequest() {
let bean: Record<string, string> = {};
// this.publishCommentModel.commentContent = this.commentText
//TODO 判断类型
this.publishCommentModel.commentType = '1'
commentViewModel.publishComment(this.publishCommentModel).then(() => {
this.publishCommentModel.commentContent = ''
// this.commentText = ''
if (this.controller != null) {
this.controller.close()
}
this.confirm(bean)
}).catch(() => {
if (this.controller != null) {
this.controller.close()
}
})
}
build() {
Column() {
Row() {
TextArea({
placeholder: this.placeHolderText,
placeholder: this.publishCommentModel.placeHolderText,
controller: this.textInputController,
text: this.commentText
text: this.publishCommentModel.commentContent
})
.height('100%')
.width('100%')
.backgroundColor($r('app.color.color_transparent'))
.onChange(value => {
this.commentText = value;
this.publishCommentModel.commentContent = value;
})
}
.backgroundColor('#F9F9F9')
... ... @@ -68,18 +92,11 @@ export struct CommentCustomDialog {
.textAlign(TextAlign.Center)
.borderRadius(4)
.onClick(() => {
if (this.commentText.length > 0) {
if (this.publishCommentModel.commentContent.length > 0) {
//请求评论接口
//commentType
//commentContent
let bean: Record<string, string> = {};
bean['commentContent'] = this.commentText
//TODO 判断类型
bean['commentType'] = '1'
this.confirm(bean)
if (this.controller != null) {
this.controller.close()
}
this.publishCommentRequest()
}
})
}
... ...
import { publishCommentModel } from '../model/PublishCommentModel'
@Preview
@Component
export struct CommentTabComponent {
@ObjectLink publishCommentModel: publishCommentModel
build() {
}
}
\ No newline at end of file
... ...
... ... @@ -8,6 +8,10 @@ import { MyCommentDataSource } from '../model/MyCommentDataSource'
import { HttpUtils } from 'wdNetwork/src/main/ets/utils/HttpUtils'
import { HttpUrlUtils } from 'wdNetwork/Index'
import PageModel from '../../../viewmodel/PageModel'
import { ErrorComponent } from '../../view/ErrorComponent'
import { EmptyComponent , WDViewDefaultType} from '../../view/EmptyComponent'
import { CustomPullToRefresh } from '../../reusable/CustomPullToRefresh'
import NoMoreLayout from '../../page/NoMoreLayout'
const TAG = 'QualityCommentsComponent';
... ... @@ -16,8 +20,13 @@ const TAG = 'QualityCommentsComponent';
@Component
export struct QualityCommentsComponent {
@State private browSingModel: PageModel = new PageModel()
isloading : boolean = false
//刷新
@State viewType:number = ViewType.LOADING;
@State hasMore: boolean = true;
@State currentPage: number = 1;
private scroller: Scroller = new Scroller();
@State tileOpacity: number = 0;
firstPositionY: number = 0;
... ... @@ -25,7 +34,7 @@ export struct QualityCommentsComponent {
topSafeHeight: number = AppStorage.get<number>('topSafeHeight') as number;
lastWindowColor: string = '#ffffff'
currentWindowColor: string = '#FF4202'
@State allDatas: MyCommentDataSource = new MyCommentDataSource();
@State allDatas: LazyDataSource<commentItemModel> = new LazyDataSource();
aboutToDisappear(): void {
... ... @@ -40,14 +49,31 @@ export struct QualityCommentsComponent {
aboutToAppear(): void {
this.fullScreen();
this.getData();
}
getData(resolve?: (value: string | PromiseLike<string>) => void){
commentViewModel.fetchQualityCommentList(this.currentPage + '').then((commentListModel) => {
if(resolve) resolve('刷新成功')
commentViewModel.fetchQualityCommentList('1').then((commentListModel) => {
if (commentListModel && commentListModel.list && commentListModel.list.length > 0) {
if (this.currentPage === 1) {
this.allDatas.clear()
}
commentListModel.list.forEach(element => {
this.allDatas.pushData(commentViewModel.deepCopyCommentItemModel(element))
this.allDatas.push(commentViewModel.deepCopyCommentItemModel(element))
});
} else {
if (commentListModel.hasNext === 0) {
this.hasMore = false;
} else {
this.hasMore = true;
}
} else {
if (this.currentPage === 1) {
this.viewType = ViewType.EMPTY;
}
}
})
}
... ... @@ -151,36 +177,46 @@ export struct QualityCommentsComponent {
build() {
Column() {
Stack({ alignContent: Alignment.Top }) {
Scroll() {
Column() {
Stack() {
this.titleHeader()
this.listLayout()
// if(this.viewType == ViewType.ERROR){
// ErrorComponent()
// }else if(this.viewType == ViewType.EMPTY){
// EmptyComponent({emptyType:WDViewDefaultType.WDViewDefaultType_NoComment})
// }else {
// CustomPullToRefresh({
// alldata:[],
// scroller:this.scroller,
// customList:()=>{
// // this.listLayout()
// this.testLayout()
// },
// onRefresh:(resolve)=>{
// this.currentPage = 1
// this.getData(resolve)
// },
// onLoadMore:(resolve)=> {
// if (this.hasMore === false) {
// if(resolve) resolve('')
// return
// }
// this.currentPage++
// this.getData(resolve)
// }
// })
// }
List({ space: 12 }) {
// ListItemGroup({ header: this.titleHeader() })
LazyForEach(this.allDatas, (item: commentItemModel, index: number) => {
ListItem() {
QualityCommentItem({ item: item, index: index }).margin({ left: 12, right: 12 })
}
})
ListItem() {
}.height(this.bottomSafeHeight)
}
.margin({ top: 196 })
.height("100%")
.width("100%")
.edgeEffect(EdgeEffect.Spring)
.nestedScroll({
scrollForward: NestedScrollMode.PARENT_FIRST,
scrollBackward: NestedScrollMode.SELF_FIRST
})
// .margin({ bottom: this.bottomSafeHeight })
// .expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM])
}.alignContent(Alignment.Top)
}.backgroundColor(this.currentWindowColor).width('100%')
}
... ... @@ -193,15 +229,57 @@ export struct QualityCommentsComponent {
this.TabbarTransparent()
this.TabbarNormal()
}
}
}
@Builder
listLayout(){
List({ space: 12, scroller:this.scroller }) {
// ListItemGroup({ header: this.titleHeader() })
LazyForEach(this.allDatas, (item: commentItemModel, index: number) => {
ListItem() {
QualityCommentItem({ item: item, index: index }).margin({ left: 12, right: 12 })
}
})
// 加载更多
ListItem() {
if (this.hasMore === false) NoMoreLayout()
}
ListItem() {
}.height(this.bottomSafeHeight)
}
.margin({ top: 196 })
.height("100%")
.width("100%")
.edgeEffect(EdgeEffect.None) // 必须设置列表为滑动到边缘无效果
// .edgeEffect(EdgeEffect.Spring)
.nestedScroll({
scrollForward: NestedScrollMode.PARENT_FIRST,
scrollBackward: NestedScrollMode.SELF_FIRST
})
}
@Builder
testLayout(){
List({ space: 12, scroller:this.scroller }){
LazyForEach(this.allDatas, (item: commentItemModel, index: number) => {
ListItem() {
// QualityCommentItem({ item: item, index: index }).margin({ left: 12, right: 12 })
}
})
}
}
}
@Component
struct QualityCommentItem {
@ObjectLink item: commentItemModel
... ... @@ -316,10 +394,10 @@ struct QualityCommentItem {
.margin({ left: 3 })
}
}.onClick(() => {
commentViewModel.commnetLikeChange(this.item)
commentLikeChange(this.item)
commentViewModel.commentLike(this.item).then(() => {
}).catch(() => {
commentViewModel.commnetLikeChange(this.item)
commentLikeChange(this.item)
})
})
}
... ... @@ -331,5 +409,24 @@ struct QualityCommentItem {
}
}
function commentLikeChange(item: commentItemModel) {
item.api_status = !item.api_status
//点赞
if (item.api_status) {
if (item.likeNum.length > 0) {
item.likeNum = (Number.parseInt(item.likeNum) + 1) + ''
} else {
item.likeNum = '1'
}
}
//取消点赞
if (!item.api_status) {
item.likeNum = (Number.parseInt(item.likeNum) - 1) + ''
if (Number.parseInt(item.likeNum) <= 0) {
item.likeNum = ''
}
}
}
... ...
... ... @@ -239,52 +239,53 @@ class CommentViewModel {
let promiseArray: Promise<commentStatusListModel | void>[] = [];
//TODO 未登录不用批查
if (commentIDs.length > 0) {
let promise1 = new Promise<void>((success) => {
// HttpRequest HttpBizUtil
let url = HttpUrlUtils.getBatchCommentStatusUrl();
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
let bean: Record<string, string[]> = {};
bean['commentIdList'] = commentIDs;
HttpRequest.post<ResponseDTO<commentStatusModel[]>>(url, bean, headers).then((data: ResponseDTO<commentStatusModel[]>) => {
if (!data || !data.data) {
success()
return
}
if (data.code != 0) {
success()
return
}
if (data.data.length == 0) {
success()
return
}
let listData = data.data as commentStatusModel[]
//点赞
for (const element of listData) {
for (const commentModel of model.list) {
if (element.commentId == commentModel.id) {
commentModel.api_status = element.status
}
if (commentModel.childComments) {
for (const childCommentModel of commentModel.childComments) {
if (element.commentId == childCommentModel.id) {
childCommentModel.api_status = element.status
//未登录不用批查
if (HttpUrlUtils.getUserId()){
if (commentIDs.length > 0) {
let promise1 = new Promise<void>((success) => {
// HttpRequest HttpBizUtil
let url = HttpUrlUtils.getBatchCommentStatusUrl();
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
let bean: Record<string, string[]> = {};
bean['commentIdList'] = commentIDs;
HttpRequest.post<ResponseDTO<commentStatusModel[]>>(url, bean, headers).then((data: ResponseDTO<commentStatusModel[]>) => {
if (!data || !data.data) {
success()
return
}
if (data.code != 0) {
success()
return
}
if (data.data.length == 0) {
success()
return
}
let listData = data.data as commentStatusModel[]
//点赞
for (const element of listData) {
for (const commentModel of model.list) {
if (element.commentId == commentModel.id) {
commentModel.api_status = element.status
}
if (commentModel.childComments) {
for (const childCommentModel of commentModel.childComments) {
if (element.commentId == childCommentModel.id) {
childCommentModel.api_status = element.status
}
}
}
}
}
}
success()
}, (error: Error) => {
success()
Logger.debug(TAG, error.toString())
success()
}, (error: Error) => {
success()
Logger.debug(TAG, error.toString())
})
})
})
promiseArray.push(promise1);
}
promiseArray.push(promise1);
}
}
if (fromUserIDs.length > 0) {
let promise2 = new Promise<void>((success) => {
let url = HttpUrlUtils.getBatchUserUrl();
... ... @@ -385,21 +386,7 @@ class CommentViewModel {
}
commnetLikeChange(model: commentItemModel) {
model.api_status = !model.api_status
//点赞
if (model.api_status) {
model.likeNum = (Number.parseInt(model.likeNum) + 1) + ''
}
//取消点赞
if (!model.api_status) {
model.likeNum = (Number.parseInt(model.likeNum) - 1) + ''
if (Number.parseInt(model.likeNum) < 0) {
model.likeNum = '0'
}
}
// return model
}
deepCopyCommentItemModel(model: commentItemModel) {
let newModel = new commentItemModel()
... ...
... ... @@ -65,7 +65,11 @@ export struct ZhGridLayout03 {
}
.width('100%')
.onClick((event: ClickEvent) => {
ProcessUtils.processPage(item)
if (item.objectType === '11') {
ProcessUtils.jumpChannelTab(item.objectId, item.pageId)
} else {
ProcessUtils.processPage(item)
}
})
}
}
... ...
... ... @@ -15,8 +15,14 @@ const TAG = 'Zh_Single_Column-09'
@Component
export struct ZhSingleColumn09 {
@State compDTO: CompDTO = {} as CompDTO
@State list: Array<string> = ['社会', '三个字', '是四个字', '时事', '社会', '三个字', '是四个字', '时事']
@State activeIndexs: Array<number> = []
@State operDataList: ContentDTO[] = this.compDTO?.operDataList || []
@State selfClosed: Boolean = false;
aboutToAppear(): void {
this.operDataList = this.shuffleArray(this.compDTO?.operDataList)
}
getItemWidth(index: number) {
if (index % 4 === 0 || index % 4 === 3) {
... ... @@ -26,12 +32,56 @@ export struct ZhSingleColumn09 {
}
}
shuffleArray(array: ContentDTO[]) {
for(let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
const tempArray = array[i];
array[i] = array[j];
array[j] = tempArray
}
return array
}
build() {
Column() {
//顶部
this.CompHeader(this.compDTO)
Row() {
Column() {
Text('以下是否有您感兴趣?')
.fontSize(18)
.fontColor(0x000000)
.fontWeight(600)
.width('70%')
.margin({bottom: 4})
Text('选中标签,为您推荐更多您感兴趣的内容')
.fontSize(12)
.fontColor(0xB0B0B0)
.margin({bottom: 10})
.width('70%')
}
Button('选好了', { type: ButtonType.Normal, stateEffect: false })
.fontColor(this.activeIndexs.length > 0 ? 0xed2800 : 0xB0B0B0)
.fontSize(14)
.width(62)
.height(26)
.backgroundColor(this.activeIndexs.length > 0 ? 0xfdf0ed : 0xf5f5f5)
// .lineHeight(26)
.borderRadius(4)
.margin({top: -10})
.padding({top: 0, bottom: 0, left: 0, right: 0})
.onClick(() => {
if (this.activeIndexs.length > 0) {
this.selfClosed = true;
}
})
}
.justifyContent(FlexAlign.SpaceBetween)
.width('100%')
Grid() {
ForEach(this.compDTO.operDataList, (item: ContentDTO, index: number) => {
ForEach(this.operDataList, (item: ContentDTO, index: number) => {
GridItem() {
Stack({alignContent: Alignment.TopEnd}) {
Image(item.coverUrl)
... ... @@ -73,17 +123,24 @@ export struct ZhSingleColumn09 {
Row() {
Text('换一换')
.fontSize(14)
.fontColor(0xed2800)
.fontColor(this.compDTO?.operDataList.length > 8 ? 0xed2800 : 0xB0B0B0)
.margin({right: 4})
Image($r('app.media.icon_refresh'))
Image(this.compDTO?.operDataList.length > 8 ? $r('app.media.icon_refresh') : $r('app.media.ic_refresh'))
.width(14)
.height(14)
}
.onClick(() => {
if (this.compDTO?.operDataList.length > 8) {
this.operDataList = this.shuffleArray(this.operDataList)
this.activeIndexs = [];
}
})
Image($r("app.media.close_button"))
.width(14)
.height(14)
.onClick(() => {
this.selfClosed = true;
})
}
.height(40)
... ... @@ -98,42 +155,7 @@ export struct ZhSingleColumn09 {
bottom: $r('app.float.card_comp_pagePadding_tb')
})
.backgroundColor($r('app.color.white'))
.margin({ bottom: 8 })
}
@Builder
CompHeader(item: CompDTO) {
Row() {
Column() {
Text('以下是否有您感兴趣?')
.fontSize(18)
.fontColor(0x000000)
.fontWeight(600)
.width('70%')
.margin({bottom: 4})
Text('选中标签,为您推荐更多您感兴趣的内容')
.fontSize(12)
.fontColor(0xB0B0B0)
.margin({bottom: 10})
.width('70%')
}
Text('选好了')
.fontColor(0xed2800)
.fontSize(14)
.width(62)
.height(26)
.backgroundColor(0xfdf0ed)
.textAlign(TextAlign.Center)
// .lineHeight(26)
.borderRadius(4)
.margin({top: -10})
}
.justifyContent(FlexAlign.SpaceBetween)
.width('100%')
.visibility(this.selfClosed ? Visibility.None : Visibility.Visible)
}
}
... ...
... ... @@ -70,9 +70,7 @@ export struct ZhSingleRow02 {
.height(14)
.onClick(() => {
// TODO 跳转的页面,定义的入参可能不合理。推荐id: 41
let params: Params = {
pageID: "1"
}
let params = {'index': "1"} as Record<string, string>
WDRouterRule.jumpWithPage(WDRouterPage.followListPage, params)
})
}
... ... @@ -80,9 +78,7 @@ export struct ZhSingleRow02 {
right: $r('app.float.card_comp_pagePadding_lf'),
})
.onClick(() => {
let params: Params = {
pageID: "1"
}
let params = {'index': "1"} as Record<string, string>;
WDRouterRule.jumpWithPage(WDRouterPage.followListPage, params)
})
}
... ...
... ... @@ -36,6 +36,15 @@ export struct ZhSingleRow04 {
.width(14)
.height(14)
}
.onClick(() => {
if (this.compDTO?.objectType === '11') {
ProcessUtils.jumpChannelTab(this.compDTO.objectId, this.compDTO.pageId as string)
} else if (this.compDTO?.objectType === '5') {
ProcessUtils._gotoSpecialTopic(this.compDTO.linkUrl)
} else if (this.compDTO?.objectType === '6') {
ProcessUtils._gotoDefaultWeb(this.compDTO.linkUrl)
}
})
}
.justifyContent(FlexAlign.SpaceBetween)
.margin({ top: 8, bottom: 8 })
... ...
... ... @@ -83,9 +83,7 @@ export struct ZhSingleRow05 {
.height(14)
.onClick(() => {
// TODO 跳转的页面,定义的入参可能不合理。推荐id: 41
let params: Params = {
pageID: "1"
}
let params = {'index': "1"} as Record<string, string>;
WDRouterRule.jumpWithPage(WDRouterPage.followListPage, params)
})
}
... ...
import { Logger, StringUtils, UserDataLocal } from 'wdKit'
import { StringUtils, UserDataLocal } from 'wdKit'
import { WDRouterPage, WDRouterRule } from 'wdRouter'
import MinePageDatasModel from '../../model/MinePageDatasModel'
const TAG = "MinePageUserSimpleInfoUI"
... ...
... ... @@ -4,6 +4,8 @@ import { ListHasNoMoreDataUI } from '../../reusable/ListHasNoMoreDataUI';
import { MineAppointmentItem } from '../../../viewmodel/MineAppointmentItem';
import { LazyDataSource, StringUtils } from 'wdKit';
import MinePageDatasModel from '../../../model/MinePageDatasModel';
import { EmptyComponent } from '../../view/EmptyComponent';
const TAG = "AppointmentListUI"
@Component
... ... @@ -23,7 +25,9 @@ export struct AppointmentListUI{
//标题栏目
CustomTitleUI({titleName:"预约列表"})
if(this.count == 0){
ListHasNoMoreDataUI({style:2})
EmptyComponent({emptyType:10})
.height('100%')
.width('100%')
}else{
//刷新控件 TODO
//List
... ... @@ -84,6 +88,8 @@ export struct AppointmentListUI{
this.hasMore = false
}
}
}).catch((err:Error)=>{
console.log(TAG,JSON.stringify(err))
})
}
this.isLoading = false
... ...
... ... @@ -89,9 +89,7 @@ export struct HomePageBottomComponent{
.backgroundColor($r('app.color.color_F5F5F5'))
.margin({top:'31lpx',bottom:'4lpx'})
.onClick(()=>{
let params: Params = {
pageID: "1"
}
let params = {'index': "1"} as Record<string, string>
WDRouterRule.jumpWithPage(WDRouterPage.followListPage,params)
})
... ... @@ -128,9 +126,7 @@ export struct HomePageBottomComponent{
.backgroundColor($r('app.color.color_F5F5F5'))
.margin({top:'31lpx',bottom:'4lpx'})
}.onClick(()=>{
let params: Params = {
pageID: "1"
}
let params = {'index': "1"} as Record<string, string>
WDRouterRule.jumpWithPage(WDRouterPage.followListPage,params)
})
... ...
... ... @@ -51,9 +51,7 @@ export struct OtherHomePageBottomFollowComponent{
.backgroundColor($r('app.color.color_F5F5F5'))
.margin({top:'31lpx',bottom:'4lpx'})
.onClick(()=>{
let params: Params = {
pageID: "1"
}
let params = {'index': "1"} as Record<string, string>
WDRouterRule.jumpWithPage(WDRouterPage.followListPage,params)
})
... ... @@ -85,9 +83,7 @@ export struct OtherHomePageBottomFollowComponent{
.backgroundColor($r('app.color.color_F5F5F5'))
.margin({top:'31lpx',bottom:'4lpx'})
}.onClick(()=>{
let params: Params = {
pageID: "1"
}
let params = {'index': "1"} as Record<string, string>;
WDRouterRule.jumpWithPage(WDRouterPage.followListPage,params)
})
... ...
... ... @@ -5,11 +5,11 @@ import router from '@ohos.router';
@Entry
@Component
struct FollowListPage {
@State params:Params = router.getParams() as Params;
@State params:Record<string, string> = router.getParams() as Record<string, string>;
@State curIndex: string = '0';
onPageShow() {
this.curIndex = this.params?.pageID;
this.curIndex = this.params?.['index'];
}
build() {
... ...
... ... @@ -50,7 +50,7 @@ export struct MinePageComponent {
//个人功能数据
this.personalData = MinePageDatasModel.getPersonalFunctionsData()
//创作者功能数据
this.creatorData = MinePageDatasModel.getCreatorFunctionsData()
// this.creatorData = MinePageDatasModel.getCreatorFunctionsData()
//更多功能数据
this.moreData = MinePageDatasModel.getMoreFunctionsData()
}
... ...
/**
* 已到底UI,数据bean封装【page接口返回配置信息:文字、文字颜色】
*/
@Observed
export class NoMoreBean {
text: string = '';
textColor: string = '';
constructor(text: string) {
this.text = text;
}
}
\ No newline at end of file
... ...
... ... @@ -16,6 +16,8 @@ import PageHelper from '../../viewmodel/PageHelper';
import { channelSkeleton } from '../skeleton/channelSkeleton'
import { ProcessUtils } from 'wdRouter/Index';
import PageAdModel from '../../viewmodel/PageAdvModel';
import PageNoMoreLayout from './PageNoMoreLayout';
import { NoMoreBean } from './NoMoreBean';
const TAG = 'PageComponent';
... ... @@ -87,7 +89,7 @@ export struct PageComponent {
this.pageModel.pullUpLoadText, this.pageModel.pullUpLoadHeight)
})
} else if (!this.pageModel.contentNeedScroll) {
NoMoreLayout()
PageNoMoreLayout({ noMoreBean: new NoMoreBean(this.pageModel.pageInfo.baselineCopywriting) })
}
}
}
... ...
import { RefreshConstants } from '../../utils/RefreshConstants'
import { NoMoreBean } from './NoMoreBean';
/**
* The No more data layout component.
*/
@Component
export default struct PageNoMoreLayout {
@ObjectLink noMoreBean: NoMoreBean;
text: string | Resource = $r('app.string.footer_text')
aboutToAppear(): void {
if (this.noMoreBean && this.noMoreBean.text.length > 0) {
this.text = this.noMoreBean.text
}
}
build() {
Row() {
Text(this.text)
.margin({ left: RefreshConstants.NoMoreLayoutConstant_NORMAL_PADDING })
.fontSize(RefreshConstants.NoMoreLayoutConstant_TITLE_FONT)
.textAlign(TextAlign.Center)
}
.width(RefreshConstants.FULL_WIDTH)
.justifyContent(FlexAlign.Center)
.height(RefreshConstants.CUSTOM_LAYOUT_HEIGHT)
}
}
\ No newline at end of file
... ...
... ... @@ -23,6 +23,9 @@ export struct SearchHotsComponent{
}
}).catch((err:Error)=>{
console.log(TAG,JSON.stringify(err))
if(this.searchHotsData.length === 0){
this.searchHotsData.push(new SearchHotContentItem("二十大",0,1))
}
})
}
... ...
... ... @@ -29,6 +29,17 @@ export struct HorizontalStrokeCardThreeTwoRadioForMoreComponent {
.width(14)
.height(14)
}
.visibility(this.compDTO?.objectType === '0' ? Visibility.None : Visibility.Visible)
.onClick(() => {
if (this.compDTO?.objectType === '11') {
ProcessUtils.jumpChannelTab(this.compDTO.objectId, this.compDTO.pageId as string)
} else if (this.compDTO?.objectType === '5') {
ProcessUtils._gotoSpecialTopic(this.compDTO.linkUrl)
} else if (this.compDTO?.objectType === '6') {
ProcessUtils._gotoDefaultWeb(this.compDTO.linkUrl)
}
})
}.justifyContent(FlexAlign.SpaceBetween)
.padding({ left: 16, right: 16 })
.margin({ top: 8, bottom: 8 })
... ...
import { Logger } from 'wdKit/Index'
import { LikeViewModel } from '../../viewmodel/LikeViewModel'
const TAG = 'LikeComponent';
@Component
export struct LikeComponent {
@State likeStatus: boolean = false
... ... @@ -15,17 +17,12 @@ export struct LikeComponent {
// this.data['title'] = '开创两校交流先河!克罗地亚教育代表团访问同济大学'
// this.data['userHeaderUrl'] = ""
// this.data['channelId'] = "2059" //必须
// this.data['status'] = "1" //必须
// this.data['status'] = "1"
aboutToAppear(): void {
if (this.data) {
Logger.debug("ddd: " + this.data['status'])
if (this.data['status'] == '1') {
this.likeStatus = true
} else {
this.likeStatus = false
}
//获取点赞状态
this.getLikeStatus()
}
}
... ... @@ -41,10 +38,10 @@ export struct LikeComponent {
}
if (this.likeStatus) {
//1
this.executeLike('1')
this.executeLike('0')
} else {
//0
this.executeLike('0')
this.executeLike('1')
}
})
}.width(24).height(24)
... ... @@ -59,4 +56,18 @@ export struct LikeComponent {
this.enableBtn = true
})
}
getLikeStatus() {
this.viewModel.getLikeStatus(this.data).then((data) => {
if (data && data['data'].length && data['data'][0]['likeStatus']) {
this.likeStatus = data['data'][0]['likeStatus']
}else {
this.likeStatus = false
}
}).catch(() => {
this.likeStatus = false
})
}
}
\ No newline at end of file
... ...
@Component
export struct PermissionDesComponent {
@State translateY: number = 0
aboutToAppear(): void {
this.startDismiss()
}
build() {
Column() {
Row() {
Image($r('app.media.tips')).width(20).height(20)
Text("权限使用说明").fontColor('#FF222222').fontSize(14)
.fontWeight(FontWeight.Bold)
.margin({left:4})
}.height(26)
Text("用于为你推荐你可能感兴趣的资讯内容及附近的相关信息,以提升浏览体验。不授权该权限不影响App正常使用。")
.fontSize(14)
.fontColor('#666666')
}
.translate({ y: this.translateY })
.animation({
duration: 400,
curve: Curve.Linear,
})
.alignItems(HorizontalAlign.Start)
.width('90%')
// .height(60)
.backgroundColor('#FFFFFF')
.border({ radius: 5 })
.margin({ top: 12 })
.padding(12)
}
startDismiss() {
setTimeout(() => {
this.translateY = -250
}, 4000)
}
}
\ No newline at end of file
... ...
import { HashMap } from '@kit.ArkTS';
import { Logger } from 'wdKit/Index';
import { HttpUrlUtils, ResponseDTO } from 'wdNetwork/Index';
import { HttpBizUtil, HttpUrlUtils, ResponseDTO } from 'wdNetwork/Index';
import { HttpRequest } from 'wdNetwork/src/main/ets/http/HttpRequest';
export class LikeModel {
... ... @@ -8,7 +8,7 @@ export class LikeModel {
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
return new Promise<object>((success, fail) => {
HttpRequest.post<ResponseDTO<object>>(HttpUrlUtils.executeLike(), data, headers).then((data: ResponseDTO<object>) => {
HttpBizUtil.post<ResponseDTO<object>>(HttpUrlUtils.executeLike(), data, headers).then((data: ResponseDTO<object>) => {
if (data.code != 0) {
fail(data.message)
return
... ... @@ -20,4 +20,28 @@ export class LikeModel {
})
})
}
getLikeStatus(data: Record<string, string>) {
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
let model : Record<string,Record<string,string>[]> = {}
model['contentList'] = [data]
return new Promise<object>((success, fail) => {
HttpBizUtil.post<ResponseDTO<object>>(HttpUrlUtils.getLikeStatus(), model, headers).then((data: ResponseDTO<object>) => {
if (data.code != 0) {
fail(data.message)
return
}
success(data)
}, (error: Error) => {
fail(error.message)
Logger.debug("LoginViewModel:error ", error.toString())
})
})
}
}
\ No newline at end of file
... ...
... ... @@ -118,7 +118,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchAppointmentListData(pageSize,pageNum).then((navResDTO: ResponseDTO<MineAppointmentListItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getAppointmentListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -126,22 +126,11 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getAppointmentListDataLocal(context))
error(null)
})
})
}
async getAppointmentListDataLocal(context: Context): Promise<MineAppointmentListItem> {
Logger.info(TAG, `getBottomNavDataMock start`);
let compRes: ResponseDTO<MineAppointmentListItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineAppointmentListItem>>(context,'appointment_list_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getAppointmentListDataLocal compRes is empty`);
return new MineAppointmentListItem()
}
Logger.info(TAG, `getAppointmentListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 关注频道详情
* @param pageSize
... ... @@ -154,7 +143,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchFollowListDetailData(params).then((navResDTO: ResponseDTO<MineFollowListDetailItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getFollowListDetailDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -162,22 +151,11 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getFollowListDetailDataLocal(context))
error(null)
})
})
}
async getFollowListDetailDataLocal(context: Context): Promise<MineFollowListDetailItem> {
Logger.info(TAG, `getBottomNavDataMock start`);
let compRes: ResponseDTO<MineFollowListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListDetailItem>>(context,'follow_list_detail_data_id120.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getAppointmentListDataLocal compRes is empty`);
return new MineFollowListDetailItem()
}
Logger.info(TAG, `getAppointmentListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
fetchFollowListDetailData(object:FollowListDetailRequestItem) {
let url = HttpUrlUtils.getFollowListDetailDataUrl()
let headers: HashMap<string, string> = HttpUrlUtils.getCommonHeaders();
... ... @@ -199,7 +177,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchFollowListData().then((navResDTO: ResponseDTO<FollowListItem[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getFollowListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -207,21 +185,11 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getFollowListDataLocal(context))
error(null)
})
})
}
async getFollowListDataLocal(context: Context): Promise<FollowListItem[]> {
Logger.info(TAG, `getFollowListDataLocal start`);
let compRes: ResponseDTO<FollowListItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<FollowListItem[]>>(context,'follow_list_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getFollowListDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 我的关注列表
... ... @@ -234,7 +202,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchMineDetailFollowListData(params).then((navResDTO: ResponseDTO<MineFollowListItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getMineFollowListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -242,7 +210,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getMineFollowListDataLocal(context))
error(null)
})
})
}
... ... @@ -253,17 +221,6 @@ class MinePageDatasModel{
return WDHttp.get<ResponseDTO<MineFollowListItem>>(url, headers)
};
async getMineFollowListDataLocal(context: Context): Promise<MineFollowListItem> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO<MineFollowListItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListItem>>(context,'mine_follow_list_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return new MineFollowListItem()
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 查询是否被关注 列表
* @param params
... ... @@ -275,7 +232,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchFollowListStatusData(params).then((navResDTO: ResponseDTO<QueryListIsFollowedItem[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getFollowListStatusDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -283,7 +240,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getFollowListStatusDataLocal(context))
error(null)
})
})
}
... ... @@ -294,18 +251,6 @@ class MinePageDatasModel{
return WDHttp.post<ResponseDTO<QueryListIsFollowedItem[]>>(url,object, headers)
};
async getFollowListStatusDataLocal(context: Context): Promise<QueryListIsFollowedItem[]> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO<QueryListIsFollowedItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<QueryListIsFollowedItem[]>>(context,'follow_list_id120_isfocus_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 我的评论列表
* @param params
... ... @@ -317,16 +262,15 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchMineCommentListData(time,params).then((navResDTO: ResponseDTO<MineCommentListDetailItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getMineCommentListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
let navigationBean = navResDTO.data as MineCommentListDetailItem
success(navigationBean);
// success(this.getMineCommentListDataLocal(context))
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getMineCommentListDataLocal(context))
error(null)
})
})
}
... ... @@ -337,16 +281,6 @@ class MinePageDatasModel{
return WDHttp.get<ResponseDTO<MineCommentListDetailItem>>(url, headers)
};
async getMineCommentListDataLocal(context: Context): Promise<MineCommentListDetailItem> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO<MineCommentListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineCommentListDetailItem>>(context,'mine_comment_list_data2.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return new MineCommentListDetailItem()
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 个人中心 获取用户等级
... ... @@ -356,7 +290,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchMineUserLevelData().then((navResDTO: ResponseDTO<MineUserLevelItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getMineUserLevelDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -364,7 +298,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchMineUserLevelData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getMineUserLevelDataLocal(context))
error(null)
})
})
}
... ... @@ -376,17 +310,6 @@ class MinePageDatasModel{
return HttpBizUtil.get<ResponseDTO<MineUserLevelItem>>(url, headers)
};
async getMineUserLevelDataLocal(context: Context): Promise<MineUserLevelItem> {
Logger.info(TAG, `getMineUserLevelDataLocal start`);
let compRes: ResponseDTO<MineUserLevelItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserLevelItem>>(context,'mine_user_level.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineUserLevelDataLocal compRes is empty`);
return new MineUserLevelItem()
}
Logger.info(TAG, `getMineUserLevelDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 个人中心 获取用户详细信息
*/
... ... @@ -395,7 +318,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchMineUserDetailData().then((navResDTO: ResponseDTO<MineUserDetailItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getMineUserDetailDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getUserDetailData then,timeStamp:" + navResDTO.timestamp);
... ... @@ -403,7 +326,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchMineUserDetailData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getMineUserDetailDataLocal(context))
error(null)
})
})
}
... ... @@ -415,16 +338,7 @@ class MinePageDatasModel{
return HttpBizUtil.get<ResponseDTO<MineUserDetailItem>>(url, headers)
};
async getMineUserDetailDataLocal(context: Context): Promise<MineUserDetailItem> {
Logger.info(TAG, `getMineUserLevelDataLocal start`);
let compRes: ResponseDTO<MineUserDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserDetailItem>>(context,'mine_user_detail.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineUserDetailDataLocal compRes is empty`);
return new MineUserDetailItem()
}
Logger.info(TAG, `getMineUserDetailDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 个人中心 获取其他用户详细信息
*/
... ... @@ -433,7 +347,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchOtherUserDetailData(item).then((navResDTO: ResponseDTO<MineUserDetailItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getOtherUserDetailDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getUserDetailData then,timeStamp:" + navResDTO.timestamp);
... ... @@ -441,7 +355,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchMineUserDetailData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getOtherUserDetailDataLocal(context))
error(null)
})
})
}
... ... @@ -452,17 +366,6 @@ class MinePageDatasModel{
return WDHttp.post<ResponseDTO<MineUserDetailItem>>(url, item,headers)
};
async getOtherUserDetailDataLocal(context: Context): Promise<MineUserDetailItem> {
Logger.info(TAG, `getMineUserLevelDataLocal start`);
let compRes: ResponseDTO<MineUserDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserDetailItem>>(context,'other_user512157124138245_detail.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineUserDetailDataLocal compRes is empty`);
return new MineUserDetailItem()
}
Logger.info(TAG, `getMineUserDetailDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 个人中心 获取其他用户等级
*/
... ... @@ -471,7 +374,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchOtherUserLevelData(item).then((navResDTO: ResponseDTO<MineUserLevelItem[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getOtherUserLevelDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -479,11 +382,11 @@ class MinePageDatasModel{
if(navigationBean.length>0 && StringUtils.isNotEmpty(navigationBean[0].levelHead)){
success(navigationBean);
}else{
success(this.getOtherUserLevelDataLocal(context))
error(null)
}
}).catch((err: Error) => {
Logger.error(TAG, `fetchMineUserLevelData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getOtherUserLevelDataLocal(context))
error(null)
})
})
}
... ... @@ -494,17 +397,6 @@ class MinePageDatasModel{
return WDHttp.post<ResponseDTO<MineUserLevelItem[]>>(url,item, headers)
};
async getOtherUserLevelDataLocal(context: Context): Promise<MineUserLevelItem[]> {
Logger.info(TAG, `getMineUserLevelDataLocal start`);
let compRes: ResponseDTO<MineUserLevelItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineUserLevelItem[]>>(context,'other_user512157124138245_level.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineUserLevelDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getMineUserLevelDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 其他用户的评论列表
* @param params
... ... @@ -516,7 +408,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchOtherCommentListData(params).then((navResDTO: ResponseDTO<MineCommentListDetailItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getOtherCommentListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -524,7 +416,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getOtherCommentListDataLocal(context))
error(null)
})
})
}
... ... @@ -535,16 +427,6 @@ class MinePageDatasModel{
return WDHttp.get<ResponseDTO<MineCommentListDetailItem>>(url, headers)
};
async getOtherCommentListDataLocal(context: Context): Promise<MineCommentListDetailItem> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO<MineCommentListDetailItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineCommentListDetailItem>>(context,'other_user512157124138245_comment_list_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return new MineCommentListDetailItem()
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 查询是否点赞了这条评论
... ... @@ -557,7 +439,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchOtherUserCommentLikeStatusData(params).then((navResDTO: ResponseDTO<QueryCommentListIsLikedItem[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getOtherUserCommentLikeStatusDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -565,7 +447,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getOtherUserCommentLikeStatusDataLocal(context))
error(null)
})
})
}
... ... @@ -576,17 +458,6 @@ class MinePageDatasModel{
return WDHttp.post<ResponseDTO<QueryCommentListIsLikedItem[]>>(url,object, headers)
};
async getOtherUserCommentLikeStatusDataLocal(context: Context): Promise<QueryCommentListIsLikedItem[]> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO<QueryCommentListIsLikedItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<QueryCommentListIsLikedItem[]>>(context,'other_user512157124138245_comment_list_liked_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 其他用户的关注列表
* @param params
... ... @@ -598,7 +469,7 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchOtherUserFollowListData(params).then((navResDTO: ResponseDTO<MineFollowListItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getOtherUserFollowListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -606,7 +477,7 @@ class MinePageDatasModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getOtherUserFollowListDataLocal(context))
error(null)
})
})
}
... ... @@ -617,17 +488,6 @@ class MinePageDatasModel{
return WDHttp.get<ResponseDTO<MineFollowListItem>>(url, headers)
};
async getOtherUserFollowListDataLocal(context: Context): Promise<MineFollowListItem> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO<MineFollowListItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<MineFollowListItem>>(context,'other_user_follow_list_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return new MineFollowListItem()
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 预约 和取消预约操作
* @param params
... ... @@ -639,14 +499,14 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchAppointmentOperation(params).then((navResDTO: ResponseDTO) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getAppointmentOperationLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
success(navResDTO);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getAppointmentOperationLocal(context))
error(null)
})
})
}
... ... @@ -657,18 +517,6 @@ class MinePageDatasModel{
return WDHttp.post<ResponseDTO>(url,object, headers)
};
async getAppointmentOperationLocal(context: Context): Promise<ResponseDTO> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO | null = await ResourcesUtils.getResourcesJson<ResponseDTO>(context,'appointment_operation_data.json');
if (!compRes ) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return compRes
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes
}
/**
* 评论点赞操作
* @param params
... ... @@ -680,14 +528,14 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchCommentLikeOperation(params).then((navResDTO: ResponseDTO) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getCommentLikeOperationLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
success(navResDTO);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getCommentLikeOperationLocal(context))
error(null)
})
})
}
... ... @@ -698,17 +546,6 @@ class MinePageDatasModel{
return WDHttp.post<ResponseDTO>(url,object, headers)
};
async getCommentLikeOperationLocal(context: Context): Promise<ResponseDTO> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO | null = await ResourcesUtils.getResourcesJson<ResponseDTO>(context,'comment_like_operation_data.json');
if (!compRes ) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return compRes
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes
}
/**
* 关注 取消关注 操作
* @param params
... ... @@ -720,14 +557,14 @@ class MinePageDatasModel{
Logger.info(TAG, `getAppointmentList start`);
this.fetchFollowOperation(params).then((navResDTO: ResponseDTO) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getFollowOperationLocal(context))
error(null)
return
}
Logger.info(TAG, "getAppointmentList then,AppointmentResDTO.timeStamp:" + navResDTO.timestamp);
success(navResDTO);
}).catch((err: Error) => {
Logger.error(TAG, `fetchAppointmentListDataApi catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getFollowOperationLocal(context))
error(null)
})
})
}
... ... @@ -738,17 +575,6 @@ class MinePageDatasModel{
return WDHttp.post<ResponseDTO>(url,object, headers)
};
async getFollowOperationLocal(context: Context): Promise<ResponseDTO> {
Logger.info(TAG, `getMineFollowListDataLocal start`);
let compRes: ResponseDTO | null = await ResourcesUtils.getResourcesJson<ResponseDTO>(context,'follow_operation_data.json');
if (!compRes ) {
Logger.info(TAG, `getMineFollowListDataLocal compRes is empty`);
return compRes
}
Logger.info(TAG, `getMineFollowListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes
}
}
... ...
... ... @@ -100,7 +100,7 @@ class SearcherAboutDataModel{
Logger.info(TAG, `getSearchHintData start`);
this.fetchSearchHintData().then((navResDTO: ResponseDTO<string[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getSearchHintDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getSearchHintData then,SearchHintDataResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -108,7 +108,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchSearchHintData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getSearchHintDataLocal(context))
error(null)
})
})
}
... ... @@ -119,17 +119,6 @@ class SearcherAboutDataModel{
return WDHttp.get<ResponseDTO<string[]>>(url, headers)
};
async getSearchHintDataLocal(context: Context): Promise<string[]> {
Logger.info(TAG, `getSearchHintDataLocal start`);
let compRes: ResponseDTO<string[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<string[]>>(context,'search_hint_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getSearchHintDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getSearchHintDataLocal compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 搜索主页 热词
... ... @@ -139,7 +128,7 @@ class SearcherAboutDataModel{
Logger.info(TAG, `getSearchHintData start`);
this.fetchSearchHotsData().then((navResDTO: ResponseDTO<SearchHotContentItem[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getSearchHotsDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getSearchHotsData then,getSearchHotsData.timeStamp:" + navResDTO.timestamp);
... ... @@ -147,7 +136,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `getSearchHotsData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getSearchHotsDataLocal(context))
error(null)
})
})
}
... ... @@ -158,18 +147,6 @@ class SearcherAboutDataModel{
return WDHttp.get<ResponseDTO<SearchHotContentItem[]>>(url, headers)
};
async getSearchHotsDataLocal(context: Context): Promise<SearchHotContentItem[]> {
Logger.info(TAG, `getSearchHotsDataLocal start`);
let compRes: ResponseDTO<SearchHotContentItem[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<SearchHotContentItem[]>>(context,'search_hots_data.json' ,);
if (!compRes || !compRes.data) {
Logger.info(TAG, `getSearchHotsDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getSearchHotsDataLocal compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 搜索 联想词
*/
... ... @@ -178,7 +155,7 @@ class SearcherAboutDataModel{
Logger.info(TAG, `getSearchHintData start`);
this.fetchRelatedSearchContentData(keyword).then((navResDTO: ResponseDTO<string[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getRelatedSearchContentDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getSearchHintData then,SearchHintDataResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -186,7 +163,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `fetchSearchHintData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getRelatedSearchContentDataLocal(context))
error(null)
})
})
}
... ... @@ -197,17 +174,6 @@ class SearcherAboutDataModel{
return WDHttp.get<ResponseDTO<string[]>>(url, headers)
};
async getRelatedSearchContentDataLocal(context: Context): Promise<string[]> {
Logger.info(TAG, `getSearchHintDataLocal start`);
let compRes: ResponseDTO<string[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<string[]>>(context,'search_related_data_nimen.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getSearchHintDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getSearchHintDataLocal compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 搜索结果 展示tab数量
*/
... ... @@ -216,7 +182,7 @@ class SearcherAboutDataModel{
Logger.info(TAG, `getSearchResultCountData start`);
this.fetchSearchResultCountData(keyword).then((navResDTO: ResponseDTO<SearchResultCountItem>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getSearchResultCountDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getSearchResultCountData then,SearchHintDataResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -224,7 +190,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `getSearchResultCountData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getSearchResultCountDataLocal(context))
error(null)
})
})
}
... ... @@ -235,17 +201,6 @@ class SearcherAboutDataModel{
return WDHttp.get<ResponseDTO<SearchResultCountItem>>(url, headers)
};
async getSearchResultCountDataLocal(context: Context): Promise<SearchResultCountItem> {
Logger.info(TAG, `getSearchResultCountDataLocal start`);
let compRes: ResponseDTO<SearchResultCountItem> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<SearchResultCountItem>>(context,'search_result_count_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getSearchResultCountDataLocal compRes is empty`);
return new SearchResultCountItem()
}
Logger.info(TAG, `getSearchResultCountDataLocal compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 搜索结果 展示列表
*/
... ... @@ -254,7 +209,7 @@ class SearcherAboutDataModel{
Logger.info(TAG, `getSearchResultListData start`);
this.fetchSearchResultListData(pageSize,pageNum,searchType,keyword).then((navResDTO: ResponseDTO<SearchResultContentData>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getSearchResultListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getSearchResultListData then,SearchResultListResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -262,7 +217,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `getSearchResultListData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getSearchResultListDataLocal(context))
error(null)
})
})
}
... ... @@ -273,17 +228,6 @@ class SearcherAboutDataModel{
return WDHttp.get<ResponseDTO<SearchResultContentData>>(url, headers)
};
async getSearchResultListDataLocal(context: Context): Promise<SearchResultContentData> {
Logger.info(TAG, `getSearchResultListDataLocal start`);
let compRes: ResponseDTO<SearchResultContentData> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<SearchResultContentData>>(context,'search_result_list_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getSearchResultListDataLocal compRes is empty`);
return new SearchResultContentData()
}
Logger.info(TAG, `getSearchResultListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 搜索结果 展示列表(交互详情 评论收藏点赞分享数量)
*/
... ... @@ -292,7 +236,7 @@ class SearcherAboutDataModel{
Logger.info(TAG, `getInteractListData start`);
this.fetchInteractListData(data).then((navResDTO: ResponseDTO<InteractDataDTO[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success(this.getInteractListDataLocal(context))
error(null)
return
}
Logger.info(TAG, "getInteractListData then,SearchResultListResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -300,7 +244,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `getInteractListData catch, error.name : ${err.name}, error.message:${err.message}`);
success(this.getInteractListDataLocal(context))
error(null)
})
})
}
... ... @@ -311,18 +255,6 @@ class SearcherAboutDataModel{
return WDHttp.post<ResponseDTO<InteractDataDTO[]>>(url,data, headers)
};
async getInteractListDataLocal(context: Context): Promise<InteractDataDTO[]> {
Logger.info(TAG, `getInteractListDataLocal start`);
let compRes: ResponseDTO<InteractDataDTO[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<InteractDataDTO[]>>(context,'search_result_interact_list_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getInteractListDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getInteractListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
/**
* 获取关注详情 列表
*/
... ... @@ -331,7 +263,7 @@ class SearcherAboutDataModel{
Logger.info(TAG, `getCreatorDetailListData start`);
this.fetchCreatorDetailListData(object).then((navResDTO: ResponseDTO<CreatorDetailResponseItem[]>) => {
if (!navResDTO || navResDTO.code != 0) {
success([])
error(null)
return
}
Logger.info(TAG, "getCreatorDetailListData then,SearchResultListResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -339,7 +271,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `getCreatorDetailListData catch, error.name : ${err.name}, error.message:${err.message}`);
success([])
error(null)
})
})
}
... ... @@ -357,9 +289,8 @@ class SearcherAboutDataModel{
return new Promise<ContentDTO[]>((success, error) => {
Logger.info(TAG, `getSearchSuggestData start`);
this.fetchSearchSuggestData(object).then((navResDTO: ResponseDTO<ContentDTO[]>) => {
if (!navResDTO || navResDTO.code != 0 /*|| navResDTO.data == null*/) {
// success(this.getSearchSuggestDataLocal(context))
success([])
if (!navResDTO || navResDTO.code != 0 ) {
error(null)
return
}
Logger.info(TAG, "getSearchSuggestData then,SearchResultListResDTO.timeStamp:" + navResDTO.timestamp);
... ... @@ -367,8 +298,7 @@ class SearcherAboutDataModel{
success(navigationBean);
}).catch((err: Error) => {
Logger.error(TAG, `getSearchSuggestData catch, error.name : ${err.name}, error.message:${err.message}`);
// success(this.getSearchSuggestDataLocal(context))
success([])
error(null)
})
})
}
... ... @@ -379,20 +309,6 @@ class SearcherAboutDataModel{
return WDHttp.post<ResponseDTO<ContentDTO[]>>(url,object, headers)
};
async getSearchSuggestDataLocal(context: Context): Promise<ContentDTO[]> {
Logger.info(TAG, `getInteractListDataLocal start`);
let compRes: ResponseDTO<ContentDTO[]> | null = await ResourcesUtils.getResourcesJson<ResponseDTO<ContentDTO[]>>(context,'search_suggest_data.json' );
if (!compRes || !compRes.data) {
Logger.info(TAG, `getInteractListDataLocal compRes is empty`);
return []
}
Logger.info(TAG, `getInteractListDataLocal getResourcesJsonSync compRes : ${JSON.stringify(compRes)}`);
return compRes.data
}
}
const searcherAboutDataModel = SearcherAboutDataModel.getInstance()
... ...
... ... @@ -65,9 +65,8 @@ struct MineHomePage {
.height('130lpx')
.objectFit(ImageFit.Cover)
}.onClick(()=>{
let params: Params = {
pageID: "531267787833221"//sit 测试用 512157124138245
}
//TODO 显示头像
let params = {'userId': "531267787833221"} as Record<string, string>;
WDRouterRule.jumpWithPage(WDRouterPage.otherNormalUserHomePagePage,params)
}).width('135lpx')
.height('135lpx')
... ...
... ... @@ -11,11 +11,11 @@ const TAG = "OtherNormalUserHomePage"
@Entry
@Component
struct OtherNormalUserHomePage {
@State params:Params = router.getParams() as Params;
@State params:Record<string, string> = router.getParams() as Record<string, string>;
@Watch('change') @State curUserId: string = '-1';
onPageShow() {
this.curUserId = this.params?.pageID;
this.curUserId = this.params?.['userId'];
}
change(){
... ...
... ... @@ -21,6 +21,7 @@ export class LikeViewModel {
this.likeModel.executeLike(bean)
}
//点赞
executeLike2(bean: Record<string, string>) {
return new Promise<object>((success, fail) => {
... ... @@ -32,4 +33,20 @@ export class LikeViewModel {
})
}
//点赞状态
getLikeStatus(bean: Record<string, string>) {
return new Promise<object>((success, fail) => {
this.likeModel.getLikeStatus(bean).then((data) => {
success(data)
}).catch((error: string) => {
fail(error)
})
})
}
}
\ No newline at end of file
... ...
... ... @@ -6,7 +6,7 @@
},
{
"name": "footer_text",
"value": "已经到底了"
"value": "已显示全部内容"
},
{
"name": "pull_up_load_text",
... ...
... ... @@ -23,12 +23,12 @@ export struct DetailPlayShortVideoPage {
@Prop index: number = 0
@Prop @Watch('currentIndexChange') currentIndex: number = 0
@State playerController: WDPlayerController = new WDPlayerController();
@Provide contentDetailData: ContentDetailDTO | undefined = undefined
@Provide interactData: InteractDataDTO | undefined = undefined
@Provide contentDetailData: ContentDetailDTO = {} as ContentDetailDTO
@Provide interactData: InteractDataDTO = {} as InteractDataDTO
@Provide isFullScreen: boolean = false;
@Provide progressVal: number = 0;
@Provide videoLandScape?: number = 1; // 视频朝向, 横屏视频:1;竖屏视频:2
@Provide newsStatusOfUser: batchLikeAndCollectResult | undefined = undefined // 点赞、收藏状态
@Provide newsStatusOfUser: batchLikeAndCollectResult = {} as batchLikeAndCollectResult // 点赞、收藏状态
@Provide followStatus: string = '0' // 关注状态
@Provide isOpenDetail: boolean = false // 查看详情按钮点击
@Provide isDragging: boolean = false // 拖动时间进度条
... ...
... ... @@ -24,10 +24,8 @@ export struct DetailVideoListPage {
@Provide pageHide: number = -1
@Provide switchVideoStatus: boolean = false
@State data: ContentDetailDTO[] = []
@State testData: string[] = ['111', '222', '333']
@State currentIndex: number = 0
@State interactDataList: InteractDataDTO[] = []
@State isFullScreen: boolean = false
async aboutToAppear(): Promise<void> {
this.openFullScreen()
... ... @@ -41,10 +39,7 @@ export struct DetailVideoListPage {
}
await this.getContentDetail(this.contentId, this.relId, this.relType)
}
await this.queryVideoList()
this.getContentInteract()
console.log(TAG, 'aboutToAppear', JSON.stringify(action.params))
}
... ... @@ -93,9 +88,22 @@ export struct DetailVideoListPage {
contentId: contentId,
relId: relId,
relType: relType
}).then((resDTO: ResponseDTO<ContentDetailDTO[]>) => {
console.error('getContentDetail==', JSON.stringify(resDTO.data))
}).then(async (resDTO: ResponseDTO<ContentDetailDTO[]>) => {
console.log(TAG, 'getContentDetail:', JSON.stringify(resDTO.data))
if (resDTO.data) {
const params: contentListParams = {
contentList: [{
contentId: resDTO.data[0].newsId + '',
contentType: resDTO.data[0].newsType
}]
}
// 批量查询内容当前用户点赞、收藏状态
await ContentDetailRequest.getContentInteract(params).then(res => {
if (res.data) {
this.interactDataList = this.interactDataList.concat(res.data)
}
console.log('获取互动点赞等数据===', JSON.stringify(res))
})
this.data.push(resDTO.data[0])
}
})
... ... @@ -108,8 +116,9 @@ export struct DetailVideoListPage {
await ContentDetailRequest.postRecommendVideoList({
pageSize: 5,
refreshCnt: 1
}).then(res => {
}).then(async res => {
if (res.data) {
await this.getContentInteract(res.data)
this.data = this.data.concat(res.data)
console.log('视频列表===', JSON.stringify(res.data))
}
... ... @@ -119,21 +128,21 @@ export struct DetailVideoListPage {
/**
* 批量查询内容当前用户点赞、收藏状态
*/
getContentInteract() {
if (this.data.length > 0) {
async getContentInteract(data: ContentDetailDTO[]) {
if (data.length > 0) {
const params: contentListParams = {
contentList: []
}
this.data.map(item => {
data.map(item => {
params.contentList.push({
contentId: item.newsId + '',
contentType: item.newsType
})
})
// 批量查询内容当前用户点赞、收藏状态
ContentDetailRequest.getContentInteract(params).then(res => {
await ContentDetailRequest.getContentInteract(params).then(res => {
if (res.data) {
this.interactDataList = res.data || []
this.interactDataList = this.interactDataList.concat(res.data)
}
console.log('获取互动点赞等数据===', JSON.stringify(res))
})
... ...
... ... @@ -145,7 +145,7 @@ export struct VideoChannelDetail {
refreshTime: this.refreshTime,
}
await ContentDetailRequest.getRecCompInfo(params).then(res => {
await ContentDetailRequest.getRecCompInfo(params).then(async res => {
this.isRequestError = false
console.log('根据视频频道传参查询视频楼层信息totalCount', res.data?.totalCount + '')
... ... @@ -174,8 +174,8 @@ export struct VideoChannelDetail {
})
}
this.batchContentDetail(list1)
this.getContentInteract(list2)
await this.batchContentDetail(list1, list2)
setTimeout(() => {
this.isMouted = true
}, 500)
... ... @@ -189,11 +189,14 @@ export struct VideoChannelDetail {
/**
* 根据视频楼层信息批量查询视频列表
*/
async batchContentDetail(list: batchContentDetailParams) {
async batchContentDetail(list: batchContentDetailParams, list2: contentListParams) {
if (list.contents.length > 0) {
await ContentDetailRequest.batchContentDetail(list).then(res => {
await ContentDetailRequest.batchContentDetail(list).then(async res => {
if (res.data) {
await this.getContentInteract(list2)
this.data = this.data.concat(res.data)
}
console.log('根据视频楼层信息批量查询视频列表', res.data)
this.data = this.data.concat(res.data as [])
})
}
}
... ... @@ -204,7 +207,9 @@ export struct VideoChannelDetail {
async getContentInteract(list: contentListParams) {
if (list.contentList.length > 0) {
await ContentDetailRequest.getContentInteract(list).then(res => {
this.interactDataList = res.data || []
if (res.data) {
this.interactDataList = this.interactDataList.concat(res.data)
}
console.log('根据视频信息批量查询点赞、收藏状态', res.data)
})
}
... ...
import { ContentDetailDTO, InteractDataDTO, Params, RmhInfoDTO, UserInfoDTO } from 'wdBean/Index';
import { ContentDetailDTO, InteractDataDTO, Params, } from 'wdBean/Index';
import {
batchLikeAndCollectParams,
batchLikeAndCollectResult,
ContentDetailRequest,
contentListParams,
... ... @@ -8,23 +7,15 @@ import {
postExecuteLikeParams,
postInteractAccentionOperateParams
} from 'wdDetailPlayApi/src/main/ets/request/ContentDetailRequest';
import { SPHelper, ToastUtils } from 'wdKit';
import { HttpUrlUtils } from 'wdNetwork/Index';
import { SPHelper, ToastUtils, NumberFormatterUtils } from 'wdKit';
import { WDPlayerController } from 'wdPlayer/Index';
import { WDRouterPage, WDRouterRule } from 'wdRouter/Index';
import { SpConstants } from 'wdConstant/Index'
//视频点播页右侧操作栏:点赞/收藏/评论/分享 竖着排列
export interface OperationItem {
icon: Resource;
icon_check?: Resource;
// icon_selected: Resource;
text: string | Resource;
num?: number; // 个数
}
const TAG = 'PlayerRightView';
//视频点播页右侧操作栏:点赞/收藏/评论/分享 竖着排列
@Component
export struct PlayerRightView {
private playerController?: WDPlayerController;
... ... @@ -34,31 +25,10 @@ export struct PlayerRightView {
@Consume followStatus: string
@Consume isOpenDetail: boolean
@Consume isDragging: boolean
@State operationList: OperationItem[] = [
{
icon: $r('app.media.ic_like_uncheck'),
icon_check: $r('app.media.ic_like_check'),
text: "赞",
// num: 6622
},
{
icon: $r('app.media.ic_collect_uncheck'),
icon_check: $r('app.media.ic_collect_check'),
text: "收藏",
// num: 662,
},
{
icon: $r('app.media.ic_comment'),
text: "抢首评",
// num: 500,
},
{
icon: $r('app.media.ic_share'),
text: "分享"
}
]
@State likesStyle: number = this.contentDetailData.likesStyle // 赞样式 1红心(点赞) 2大拇指(祈福) 3蜡烛(默哀) 4置空
aboutToAppear() {
}
/**
... ... @@ -82,11 +52,11 @@ export struct PlayerRightView {
if (this.newsStatusOfUser) {
this.newsStatusOfUser.likeStatus = this.newsStatusOfUser?.likeStatus === '1' ? '0' : '1'
if (this.newsStatusOfUser.likeStatus === '1') {
this.interactData.likeNum = Number(this.interactData.likeNum) + 1
this.interactData.likeNum = Number(this.interactData.likeNum || 0) + 1
} else {
this.interactData.likeNum = Number(this.interactData.likeNum) - 1
this.interactData.likeNum = Number(this.interactData.likeNum || 0) - 1
}
console.log('点赞、取消点赞==', this.newsStatusOfUser?.likeStatus, this.interactData?.likeNum)
console.log(TAG, '点赞、取消点赞==', this.newsStatusOfUser?.likeStatus, this.interactData?.likeNum)
// this.queryContentInteractCount()
}
... ... @@ -116,11 +86,11 @@ export struct PlayerRightView {
this.newsStatusOfUser.collectStatus = this.newsStatusOfUser?.collectStatus === 1 ? 0 : 1
// this.queryContentInteractCount()
if (this.newsStatusOfUser.collectStatus === 1) {
this.interactData.collectNum = Number(this.interactData.collectNum) + 1
this.interactData.collectNum = Number(this.interactData.collectNum || 0) + 1
} else {
this.interactData.collectNum = Number(this.interactData.collectNum) - 1
this.interactData.collectNum = Number(this.interactData.collectNum || 0) - 1
}
console.log('收藏、取消收藏==', this.newsStatusOfUser?.collectStatus, this.interactData?.collectNum)
console.log(TAG, '收藏、取消收藏==', this.newsStatusOfUser?.collectStatus, this.interactData?.collectNum)
}
})
... ... @@ -138,15 +108,15 @@ export struct PlayerRightView {
}
ContentDetailRequest.getContentInteract(params).then(res => {
if (res.data && this.interactData) {
this.interactData.likeNum = res.data[0]?.likeNum
this.interactData.collectNum = res.data[0]?.collectNum
this.interactData.commentNum = res.data[0]?.commentNum
this.interactData.likeNum = res.data[0]?.likeNum || 0
this.interactData.collectNum = res.data[0]?.collectNum || 0
this.interactData.commentNum = res.data[0]?.commentNum || 0
}
console.log('获取互动点赞等数据===', JSON.stringify(res))
})
}
getImgUrl() {
getHeadUrl() {
return this.contentDetailData?.rmhInfo?.rmhHeadUrl || this.contentDetailData?.userInfo?.userHeadUrl
}
... ... @@ -170,7 +140,7 @@ export struct PlayerRightView {
status: 1,
}
ContentDetailRequest.postInteractAccentionOperate(params2).then(res => {
console.log('关注号主==', JSON.stringify(res.data))
console.log(TAG, '关注号主==', JSON.stringify(res.data))
if (this.followStatus == '1') {
this.followStatus = '0'
} else {
... ... @@ -179,137 +149,184 @@ export struct PlayerRightView {
})
}
@Builder
buildUserComp() {
build() {
Column() {
if (this.getImgUrl()) {
RelativeContainer() {
Image(this.getImgUrl())
.width('100%')
.borderRadius(24)
.aspectRatio(1)
.border({ width: 1, color: Color.White, style: BorderStyle.Solid })
.alignRules({
top: { anchor: "__container__", align: VerticalAlign.Top },
left: { anchor: "__container__", align: HorizontalAlign.Start }
})
.id("row1")
.onClick(() => {
if (this.contentDetailData.rmhInfo?.cnMainControl === 1) {
// 号主页
const params: Params = {
creatorId: this.contentDetailData.rmhInfo.rmhId,
pageID: ''
}
WDRouterRule.jumpWithPage(WDRouterPage.peopleShipHomePage, params)
}
})
if (this.followStatus == '0') {
Image($r('app.media.ic_add'))
.width(24)
.borderRadius(12)
.alignRules({
left: { anchor: "__container__", align: HorizontalAlign.Center },
bottom: { anchor: "__container__", align: VerticalAlign.Bottom },
})
.margin({ left: -12 })
.id("row2")
.onClick(() => {
// 关注
this.handleAccention()
})
this.userBuilderView()
this.likeBuilderView()
this.collectBuilderView()
this.commentBuilderView()
this.shareBuilderView()
}
// .backgroundColor(Color.Blue)
// .height('100%')
.width(58)
.position({ x: '100%', y: '100%' })
.markAnchor({ x: '100%', y: '100%' })
.padding({ bottom: 72, right: 10 })
.visibility(this.isOpenDetail || this.isDragging ? Visibility.None : Visibility.Visible)
}
/**
* 用户关注、号主页
*/
@Builder
userBuilderView() {
Stack() {
Image(this.getHeadUrl())
.width('100%')
.borderRadius(24)
.aspectRatio(1)
.border({ width: 1, color: Color.White, style: BorderStyle.Solid })
.onClick(() => {
// 跳转到号主页
if (this.contentDetailData.rmhInfo?.cnMainControl === 1) {
const params: Params = {
creatorId: this.contentDetailData.rmhInfo.rmhId,
pageID: ''
}
WDRouterRule.jumpWithPage(WDRouterPage.peopleShipHomePage, params)
}
})
}.height(60)
}
}.margin({ bottom: 18 })
Image($r('app.media.ic_add'))
.width(24)
.borderRadius(12)
.position({ x: '50%', y: '100%' })
.markAnchor({ x: '50%', y: '50%' })
.onClick(() => {
// TODO:关注动画
this.handleAccention()
})
}
.height(48)
.width('100%')
.margin({ bottom: 30 })
.visibility(this.getHeadUrl() ? Visibility.Visible : Visibility.None)
}
/**
* 将点赞样式转换为icon
*/
transLikeStyle2Icon(): Resource {
if (this.likesStyle === 1) {
return this.newsStatusOfUser.likeStatus === '1' ? $r(`app.media.ic_like_check`) : $r(`app.media.ic_like_uncheck`)
} else if (this.likesStyle === 2) {
return this.newsStatusOfUser.likeStatus === '1' ? $r(`app.media.ic_thub_check`) : $r(`app.media.ic_thub_uncheck`)
} else if (this.likesStyle === 3) {
return this.newsStatusOfUser.likeStatus === '1' ? $r(`app.media.ic_candle_check`) : $r(`app.media.ic_candle_uncheck`)
}
return $r(`app.media.icon_like_ckeck`)
}
transNum2String(name: 'likeNum' | 'collectNum' | 'commentNum') {
console.log(TAG, 'transNum2String', this.interactData.likeNum, this.interactData.collectNum, this.interactData.commentNum)
if (name === 'likeNum') {
return this.interactData.likeNum != 0 ? NumberFormatterUtils.formatNumberWithWan(this.interactData.likeNum || '') : ''
} else if (name === 'collectNum') {
return this.interactData.collectNum != 0 ? NumberFormatterUtils.formatNumberWithWan(this.interactData.collectNum || '') : ''
} else {
return this.interactData.commentNum != 0 ? NumberFormatterUtils.formatNumberWithWan(this.interactData.commentNum || '') : ''
}
}
/**
* 点赞、默哀、祈福
*/
@Builder
buildOperationItem(item: OperationItem, index: number) {
likeBuilderView() {
Column() {
if (item.text === '赞') {
Image(this.newsStatusOfUser?.likeStatus == '1' ? item.icon_check : item.icon)
.width(32)
.aspectRatio(1)
.onClick(() => {
this.toggleLikeStatus()
})
Text(this.interactData?.likeNum ? (this.interactData.likeNum + '') : item.text)
.width('100%')// .margin({ top: 4, left: 6, right: 6 })// .backgroundColor(Color.Brown)
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
} else if (item.text === '收藏') {
Image(this.newsStatusOfUser?.collectStatus == 1 ? item.icon_check : item.icon)
.width(32)
.aspectRatio(1)
.onClick(() => {
this.toggleCollectStatus()
})
Text(this.interactData?.collectNum ? (this.interactData.collectNum + '') : item.text)
.width('100%')// .margin({ top: 4, left: 6, right: 6 })// .backgroundColor(Color.Brown)
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
} else if (item.text === '抢首评') {
Image(item.icon)
.width(32)
.aspectRatio(1)
.onClick((event: ClickEvent) => {
ToastUtils.showToast('评论为公共方法,待开发', 1000);
})
Text(this.interactData?.commentNum ? (this.interactData.commentNum + '') : item.text)
.width('100%')// .margin({ top: 4, left: 6, right: 6 })// .backgroundColor(Color.Brown)
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
} else {
Image(item.icon)
.width(32)
.aspectRatio(1)
.onClick((event: ClickEvent) => {
ToastUtils.showToast('分享为公共方法,待开发', 1000);
})
Text(item.text)
.width('100%')// .margin({ top: 4, left: 6, right: 6 })// .backgroundColor(Color.Brown)
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
}
Image(this.transLikeStyle2Icon())
.width(32)
.aspectRatio(1)
.onClick(() => {
// TODO:点赞动画
this.toggleLikeStatus()
})
Text(this.transNum2String('likeNum') || '赞')
.width('100%')
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
}
.margin({ bottom: 20 })
.visibility(this.likesStyle !== 4 ? Visibility.Visible : Visibility.None)
}
/**
* 收藏、取消收藏、收藏文件夹
*/
@Builder
collectBuilderView() {
Column() {
Image(this.newsStatusOfUser.collectStatus == 1 ? $r(`app.media.ic_collect_check`) : $r(`app.media.ic_collect_uncheck`))
.width(32)
.aspectRatio(1)
.onClick(() => {
this.toggleCollectStatus()
})
Text(this.transNum2String('collectNum') || '收藏')
.width('100%')
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
}
// .width(48)
.margin({ bottom: 20 })
.alignItems(HorizontalAlign.Center)
.hoverEffect(HoverEffect.Scale)
}
/**
* 评论
*/
@Builder
commentBuilderView() {
Column() {
Image($r(`app.media.ic_comment`))
.width(32)
.aspectRatio(1)
.onClick((event: ClickEvent) => {
ToastUtils.showToast('评论为公共方法,待开发', 1000);
})
Text(this.transNum2String('commentNum') || '抢首评')
.width('100%')
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
}
.margin({ bottom: 20 })
}
build() {
/**
* 分享
*/
@Builder
shareBuilderView() {
Column() {
this.buildUserComp()
ForEach(this.operationList, (item: OperationItem, index: number) => {
this.buildOperationItem(item, index)
}, (item: OperationItem, index: number) => JSON.stringify(item))
Image($r(`app.media.ic_share`))
.width(32)
.aspectRatio(1)
.onClick((event: ClickEvent) => {
ToastUtils.showToast('分享为公共方法,待开发', 1000);
})
Text('分享')
.width('100%')
.fontWeight(500)
.textAlign(TextAlign.Center)
.fontSize(13)
.fontColor('#FFFFFF')
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
}
.width(48)
.position({ x: '100%', y: '100%' })
.markAnchor({ x: '100%', y: '100%' })
.padding({ bottom: 72 })
.visibility(this.isOpenDetail || this.isDragging ? Visibility.None : Visibility.Visible)
.margin({ bottom: 20 })
}
}
\ No newline at end of file
... ...
... ... @@ -2,7 +2,7 @@ import { abilityAccessCtrl, bundleManager, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { geoLocationManager } from '@kit.LocationKit';
import { SpConstants } from 'wdConstant/Index';
import { Logger, PermissionUtils, ResourcesUtils, SPHelper } from 'wdKit/Index';
import { EmitterEventId, EmitterUtils, Logger, PermissionUtils, ResourcesUtils, SPHelper } from 'wdKit/Index';
import { ResponseDTO } from 'wdNetwork/Index';
/**
... ... @@ -54,6 +54,11 @@ export class HWLocationUtils {
return
}
let context = getContext();
let per=SPHelper.default.getSync(SpConstants.LOCATION_PERMISSION_REFUSE,false)
if(!per){
EmitterUtils.sendEmptyEvent(EmitterEventId.LOCATION)
SPHelper.default.save(SpConstants.LOCATION_PERMISSION_REFUSE,true)
}
let requestGrant = await PermissionUtils.reqPermissionsFromUser([HWLocationUtils.APPROXIMATELY_LOCATION], context);
Logger.debug('location2 :' + requestGrant)
if (requestGrant) {
... ...
import { BottomNavigationComponent, LogoutViewModel } from 'wdComponent';
import { BottomNavigationComponent, LogoutViewModel, PermissionDesComponent } from 'wdComponent';
import { BreakpointConstants } from 'wdConstant';
import { BreakpointSystem, EmitterEventId, EmitterUtils, Logger } from 'wdKit';
... ... @@ -16,7 +16,7 @@ struct MainPage {
@Provide pageHide: number = -1
private breakpointSystem: BreakpointSystem = new BreakpointSystem()
@StorageLink('currentBreakpoint') @Watch('watchCurrentBreakpoint') currentBreakpoint: string = BreakpointConstants.BREAKPOINT_XS;
@State isPermission: boolean = false
watchCurrentBreakpoint() {
Logger.info(TAG, `watchCurrentBreakpoint, this.currentBreakpoint: ${this.currentBreakpoint}`);
}
... ... @@ -28,6 +28,9 @@ struct MainPage {
EmitterUtils.receiveEvent(EmitterEventId.FORCE_USER_LOGIN_OUT, () => {
LogoutViewModel.clearLoginInfo()
})
EmitterUtils.receiveEvent(EmitterEventId.LOCATION, () => {
this.isPermission=true
})
}
aboutToDisappear() {
... ... @@ -50,8 +53,11 @@ struct MainPage {
}
build() {
Column() {
Stack({alignContent:Alignment.Top}) {
BottomNavigationComponent()
if(this.isPermission){
PermissionDesComponent()
}
}
}
}
\ No newline at end of file
... ...
... ... @@ -60,7 +60,7 @@ struct LaunchAdvertisingPage {
Stack({alignContent:Alignment.Bottom}){
Column(){
if(!(this.model.launchAdInfo[0].matInfo.matType == '1')){
if(this.model.launchAdInfo.length && !(this.model.launchAdInfo[0].matInfo.matType == '1')){
//显示图片
Image(this.model.launchAdInfo[0].matInfo.matImageUrl[0])
.width('100%')
... ... @@ -100,7 +100,7 @@ struct LaunchAdvertisingPage {
}
.width('100%')
.height('100%')
if(!(this.model.launchAdInfo[0].matInfo.startStyle == 1)){
if(this.model.launchAdInfo.length && !(this.model.launchAdInfo[0].matInfo.startStyle == 1)){
//底部logo样式 按钮加载在背景展示图上
Button(){
Row(){
... ... @@ -133,7 +133,7 @@ struct LaunchAdvertisingPage {
.height('84%')
.margin({top:'0'})
if(this.model.launchAdInfo[0].matInfo.startStyle == 1){
if(this.model.launchAdInfo.length && this.model.launchAdInfo[0].matInfo.startStyle == 1){
//全屏样式,底部无logo 按钮放在原底部logo位置
Button(){
Row(){
... ... @@ -176,17 +176,19 @@ struct LaunchAdvertisingPage {
action(){
//跳转 url linkUrl https://news.bjd.com.cn/2024/03/19/10724331.shtml
// openType 端外 端内 打开
if (this.model.launchAdInfo[0].matInfo.openType == '2') {
//端外打开
if(this.model.launchAdInfo.length){
if (this.model.launchAdInfo[0].matInfo.openType == '2') {
//端外打开
ProcessUtils.jumpExternalWebPage(this.model.launchAdInfo[0].matInfo.linkUrl)
clearInterval(this.timer)
ProcessUtils.jumpExternalWebPage(this.model.launchAdInfo[0].matInfo.linkUrl)
clearInterval(this.timer)
}else {
//端内打开
ProcessUtils.gotoDefaultWebPage(this.model.launchAdInfo[0].matInfo.linkUrl)
clearInterval(this.timer)
}else {
//端内打开
ProcessUtils.gotoDefaultWebPage(this.model.launchAdInfo[0].matInfo.linkUrl)
clearInterval(this.timer)
}
}
}
... ...
... ... @@ -118,6 +118,7 @@ struct LaunchInterestsHobbiesPage {
// .rowsTemplate('1fr 1fr 1fr 1fr')
.columnsGap('23lpx')
.rowsGap('23lpx')
.scrollBar(BarState.Off)
Stack({alignContent:Alignment.Center}){
Button(this.selectCount == 0?'选好了':'选好了(' + this.selectCount + ')')
... ...
{
"code": "0",
"data": {
"list": [{
"appStyle": "15",
"imageUrl": ["https://sitcontentjdcdn.aikan.pdnews.cn/sjbj-20231204/image/live/563cc8ce1ecc43b288f6cf60da66579c.jpeg?x-oss-process=image/resize,l_550,m_fill,h_450,w_800/quality,q_90/format,jpg"],
"liveId": 20000007348,
"planStartTime": "2023-12-05 15:26:10",
"relId": "500000017021",
"relType": 1,
"startTime": "",
"status": "wait",
"title": "视界运营位加权-加权中删除"
}, {
"appStyle": "null",
"imageUrl": ["https://sitcontentjdcdn.aikan.pdnews.cn/sjbj-20230914/image/display/9af825a00abf490d8a8698f4fc079447.jpg?x-oss-process=image/resize,l_550,m_fill,h_450,w_800/quality,q_90/format,jpg"],
"liveId": 20000007492,
"planStartTime": "2024-01-12 20:00:00",
"relId": "500000020284",
"relType": 1,
"startTime": "",
"status": "wait",
"title": "QA|汉阴县凤堰古梯田"
}, {
"appStyle": "null",
"imageUrl": ["https://sitcontentjdcdn.aikan.pdnews.cn/sjbj-20230915/image/display/e908748c62a44109bbb7214f3fed458c.jpg?x-oss-process=image/resize,l_550,m_fill,h_450,w_800/quality,q_90/format,jpg"],
"liveId": 20000007493,
"planStartTime": "2024-01-12 20:00:00",
"relId": "500000020286",
"relType": 1,
"startTime": "",
"status": "wait",
"title": "二十四节气-夏至"
}, {
"appStyle": "null",
"imageUrl": ["https://sitcontentjdcdn.aikan.pdnews.cn/sjbj-20240118/image/display/732d6166103d4d2f9fbf512b128a3486.jpeg?x-oss-process=image/resize,l_550,m_fill,h_450,w_800/quality,q_90/format,jpg"],
"liveId": 20000007495,
"planStartTime": "2024-01-18 10:51:33",
"relId": "500000030122",
"relType": 1,
"startTime": "",
"status": "wait",
"title": "01181050文字直播没有预告片"
}, {
"appStyle": "null",
"imageUrl": ["https://sitcontentjdcdn.aikan.pdnews.cn/sjbj-20240127/image/live/6359d000bba24812b7ca1765bb106a49.png?x-oss-process=image/resize,l_550,m_fill,h_450,w_800/quality,q_90/format,jpg"],
"liveId": 20000007519,
"planStartTime": "2024-02-27 18:18:16",
"relId": "500000034054",
"relType": 1,
"startTime": "",
"status": "wait",
"title": "错搞民宿33"
}, {
"appStyle": "15",
"imageUrl": ["https://sitcontentjdcdn.aikan.pdnews.cn/sjbj-20240228/image/live/e6998ab547af472dbc19ba2fd68959b9.jpeg?x-oss-process=image/resize,l_550,m_fill,h_450,w_800/quality,q_90/format,jpg"],
"liveId": 20000007521,
"planStartTime": "2024-02-28 19:01:50",
"relId": "500000034162",
"relType": 1,
"startTime": "",
"status": "wait",
"title": "保存编辑弹幕开关"
}],
"pageNum": 1,
"pageSize": 20,
"totalCount": 6
},
"message": "Success",
"requestId": "65289f1217934cffb7587ff4d6ce4689",
"success": true,
"timestamp": 1710555152344
}
\ No newline at end of file
{
"code": "0",
"message": "Success",
"requestId": "9a63f8f9e61d442880a7537763fd1769",
"success": true,
"timestamp": 1711589284588
}
\ No newline at end of file
{
"code": "0",
"data": null,
"message": "Success",
"meta": null,
"requestId": "",
"success": true,
"timestamp": 1711609914928
}
\ No newline at end of file
{
"code": "0",
"data": [
{
"children": [],
"directoryName": "阅读",
"directoryWeight": 99,
"id": 165,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [
{
"directoryName": "三二",
"directoryWeight": 2,
"id": 120,
"isShow": 1,
"level": 3,
"parentId": 118,
"rootId": 117
},
{
"directoryName": "三级",
"directoryWeight": 1,
"id": 119,
"isShow": 1,
"level": 3,
"parentId": 118,
"rootId": 117
}
],
"directoryName": "二级",
"directoryWeight": 1,
"id": 118,
"isShow": 1,
"level": 2,
"parentId": 117,
"rootId": 117
}
],
"directoryName": "幽游白书",
"directoryWeight": 33,
"id": 117,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "推荐",
"directoryWeight": 9,
"id": 386,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "政务",
"directoryWeight": 9,
"id": 379,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [],
"directoryName": "推荐",
"directoryWeight": 0,
"id": 335,
"isShow": 1,
"level": 2,
"parentId": 320,
"rootId": 320
}
],
"directoryName": "推荐",
"directoryWeight": 9,
"id": 320,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "媒体",
"directoryWeight": 8,
"id": 390,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "媒体",
"directoryWeight": 8,
"id": 323,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "自媒体",
"directoryWeight": 7,
"id": 329,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "名人",
"directoryWeight": 6,
"id": 389,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [],
"directoryName": "测试",
"directoryWeight": 0,
"id": 338,
"isShow": 1,
"level": 2,
"parentId": 324,
"rootId": 324
}
],
"directoryName": "名人",
"directoryWeight": 6,
"id": 324,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [],
"directoryName": "2级目录",
"directoryWeight": 0,
"id": 340,
"isShow": 1,
"level": 2,
"parentId": 312,
"rootId": 312
},
{
"children": [
{
"directoryName": "3级测试",
"directoryWeight": 0,
"id": 368,
"isShow": 1,
"level": 3,
"parentId": 339,
"rootId": 312
}
],
"directoryName": "二级目录",
"directoryWeight": 0,
"id": 339,
"isShow": 1,
"level": 2,
"parentId": 312,
"rootId": 312
},
{
"children": [
{
"directoryName": "企业",
"directoryWeight": 1,
"id": 348,
"isShow": 1,
"level": 3,
"parentId": 336,
"rootId": 312
},
{
"directoryName": "部委",
"directoryWeight": 0,
"id": 344,
"isShow": 1,
"level": 3,
"parentId": 336,
"rootId": 312
},
{
"directoryName": "地方",
"directoryWeight": 0,
"id": 341,
"isShow": 1,
"level": 3,
"parentId": 336,
"rootId": 312
}
],
"directoryName": "类型",
"directoryWeight": 0,
"id": 336,
"isShow": 1,
"level": 2,
"parentId": 312,
"rootId": 312
},
{
"children": [
{
"directoryName": "贵州省",
"directoryWeight": 0,
"id": 378,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "西藏自治区",
"directoryWeight": 0,
"id": 377,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "四川省",
"directoryWeight": 0,
"id": 376,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "重庆市",
"directoryWeight": 0,
"id": 375,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "湖南省",
"directoryWeight": 0,
"id": 374,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "云南省",
"directoryWeight": 0,
"id": 373,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "广西壮族自治区",
"directoryWeight": 0,
"id": 372,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "宁夏回族自治区",
"directoryWeight": 0,
"id": 371,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "湖北省",
"directoryWeight": 0,
"id": 370,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "青海省",
"directoryWeight": 0,
"id": 369,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "陕西省",
"directoryWeight": 0,
"id": 367,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "甘肃省",
"directoryWeight": 0,
"id": 366,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "吉林省",
"directoryWeight": 0,
"id": 365,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "广东省",
"directoryWeight": 0,
"id": 364,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "海南省",
"directoryWeight": 0,
"id": 363,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "辽宁省",
"directoryWeight": 0,
"id": 362,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "江苏省",
"directoryWeight": 0,
"id": 361,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "新疆维吾尔族自治区",
"directoryWeight": 0,
"id": 360,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "福建省",
"directoryWeight": 0,
"id": 359,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "山东省",
"directoryWeight": 0,
"id": 358,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "河南省",
"directoryWeight": 0,
"id": 357,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "浙江省",
"directoryWeight": 0,
"id": 356,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "安徽省",
"directoryWeight": 0,
"id": 355,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "上海市",
"directoryWeight": 0,
"id": 354,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "河北省",
"directoryWeight": 0,
"id": 353,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "黑龙江省",
"directoryWeight": 0,
"id": 352,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "江西省",
"directoryWeight": 0,
"id": 351,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "内蒙古自治区",
"directoryWeight": 0,
"id": 350,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "北京市",
"directoryWeight": 0,
"id": 349,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
},
{
"directoryName": "山西省",
"directoryWeight": 0,
"id": 346,
"isShow": 1,
"level": 3,
"parentId": 332,
"rootId": 312
}
],
"directoryName": "地域",
"directoryWeight": 0,
"id": 332,
"isShow": 1,
"level": 2,
"parentId": 312,
"rootId": 312
}
],
"directoryName": "政务",
"directoryWeight": 5,
"id": 312,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "学校",
"directoryWeight": 4,
"id": 331,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "机构",
"directoryWeight": 3,
"id": 330,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [
{
"directoryName": "新闻联播",
"directoryWeight": 3,
"id": 79,
"isShow": 1,
"level": 3,
"parentId": 75,
"rootId": 74
},
{
"directoryName": "第三季",
"directoryWeight": 2,
"id": 78,
"isShow": 1,
"level": 3,
"parentId": 75,
"rootId": 74
},
{
"directoryName": "三级",
"directoryWeight": 1,
"id": 76,
"isShow": 1,
"level": 3,
"parentId": 75,
"rootId": 74
}
],
"directoryName": "短视频",
"directoryWeight": 1,
"id": 75,
"isShow": 1,
"level": 2,
"parentId": 74,
"rootId": 74
}
],
"directoryName": "创作",
"directoryWeight": 3,
"id": 74,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [],
"directoryName": "教学",
"directoryWeight": 2,
"id": 72,
"isShow": 1,
"level": 2,
"parentId": 64,
"rootId": 64
},
{
"children": [],
"directoryName": "热门",
"directoryWeight": 1,
"id": 73,
"isShow": 1,
"level": 2,
"parentId": 64,
"rootId": 64
},
{
"children": [],
"directoryName": "赛事",
"directoryWeight": 1,
"id": 71,
"isShow": 1,
"level": 2,
"parentId": 64,
"rootId": 64
}
],
"directoryName": "游戏",
"directoryWeight": 2,
"id": 64,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "新闻",
"directoryWeight": 1,
"id": 315,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [],
"directoryName": "趣闻",
"directoryWeight": 6,
"id": 70,
"isShow": 1,
"level": 2,
"parentId": 63,
"rootId": 63
},
{
"children": [],
"directoryName": "时政",
"directoryWeight": 5,
"id": 69,
"isShow": 1,
"level": 2,
"parentId": 63,
"rootId": 63
},
{
"children": [],
"directoryName": "农业",
"directoryWeight": 3,
"id": 68,
"isShow": 1,
"level": 2,
"parentId": 63,
"rootId": 63
},
{
"children": [],
"directoryName": "娱乐",
"directoryWeight": 3,
"id": 67,
"isShow": 1,
"level": 2,
"parentId": 63,
"rootId": 63
},
{
"children": [],
"directoryName": "科技",
"directoryWeight": 2,
"id": 66,
"isShow": 1,
"level": 2,
"parentId": 63,
"rootId": 63
},
{
"children": [],
"directoryName": "国际",
"directoryWeight": 1,
"id": 65,
"isShow": 1,
"level": 2,
"parentId": 63,
"rootId": 63
}
],
"directoryName": "新闻",
"directoryWeight": 1,
"id": 63,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "公安",
"directoryWeight": 0,
"id": 388,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "dddd",
"directoryWeight": 0,
"id": 387,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "健康",
"directoryWeight": 0,
"id": 384,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "综合",
"directoryWeight": 0,
"id": 328,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "房产",
"directoryWeight": 0,
"id": 327,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "健康",
"directoryWeight": 0,
"id": 318,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "历史",
"directoryWeight": 0,
"id": 310,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [],
"directoryName": "dddd",
"directoryWeight": 0,
"id": 309,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
},
{
"children": [
{
"children": [],
"directoryName": "aaaa",
"directoryWeight": 1,
"id": 333,
"isShow": 1,
"level": 2,
"parentId": 308,
"rootId": 308
},
{
"children": [],
"directoryName": "qqq",
"directoryWeight": 0,
"id": 334,
"isShow": 1,
"level": 2,
"parentId": 308,
"rootId": 308
}
],
"directoryName": "dddd",
"directoryWeight": 0,
"id": 308,
"isShow": 1,
"level": 1,
"parentId": 0,
"rootId": 0
}
],
"message": "Success",
"success": true,
"timestamp": 1710741803593
}
\ No newline at end of file
{
"code": "0",
"data": {
"list": [
{
"attentionNum": 0,
"authIcon": "",
"authId": 0,
"authPersonal": "",
"authTitle": "",
"categoryAuth": "",
"city": "110100",
"cnAttentionNum": 0,
"cnCollectNum": 0,
"cnCommentNum": 0,
"cnFansNum": 4,
"cnIsAttention": 1,
"cnIsComment": 1,
"cnIsLike": 1,
"cnLikeNum": 0,
"cnLiveCommentControl": 1,
"cnLiveGiftControl": 1,
"cnLiveLikeControl": 1,
"cnLiveShareControl": 1,
"cnMainControl": 1,
"cnRegistTime": 1695280071000,
"cnShareControl": 1,
"cnShareNum": 0,
"cnUserId": "444937588589253",
"cnUserName": "QACrawler2115",
"cnUserType": "2",
"collectNum": 0,
"creatorId": "3004862",
"district": "110101",
"fansNum": 0,
"headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Th211436299/GLN.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
"honoraryIcon": "",
"honoraryTitle": "",
"introduction": "知识博主",
"isAttention": 1,
"isComment": 1,
"isLike": 1,
"isVisiable": 1,
"likeNum": 0,
"liveCommentControl": 1,
"liveGiftControl": 1,
"liveLikeControl": 1,
"liveShareControl": 1,
"posterShareControl": 1,
"province": "110000",
"publishNum": 0,
"region": "",
"shareControl": 1,
"shareNum": 0,
"shopOpen": 0,
"storeUrl": "",
"subjectType": 0,
"userId": "",
"userName": "QACrawler2115",
"userType": "2",
"waresSwitch": 1
},
{
"attentionNum": 0,
"authIcon": "",
"authId": 0,
"authPersonal": "",
"authTitle": "",
"categoryAuth": "",
"city": "230100",
"cnAttentionNum": 0,
"cnCollectNum": 0,
"cnCommentNum": 0,
"cnFansNum": 4,
"cnIsAttention": 1,
"cnIsComment": 1,
"cnIsLike": 1,
"cnLikeNum": 0,
"cnLiveCommentControl": 1,
"cnLiveGiftControl": 1,
"cnLiveLikeControl": 1,
"cnLiveShareControl": 1,
"cnMainControl": 1,
"cnRegistTime": 1695276994000,
"cnShareControl": 1,
"cnShareNum": 0,
"cnUserId": "444911718724933",
"cnUserName": "一休哥",
"cnUserType": "2",
"collectNum": 0,
"creatorId": "3004861",
"district": "230102",
"fansNum": 0,
"headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Th141630857/Ptx.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
"honoraryIcon": "",
"honoraryTitle": "",
"introduction": "中文端号主",
"isAttention": 1,
"isComment": 1,
"isLike": 1,
"isVisiable": 1,
"likeNum": 0,
"liveCommentControl": 1,
"liveGiftControl": 1,
"liveLikeControl": 1,
"liveShareControl": 1,
"posterShareControl": 1,
"province": "230000",
"publishNum": 0,
"region": "安徽",
"shareControl": 1,
"shareNum": 0,
"shopOpen": 0,
"storeUrl": "",
"subjectType": 2,
"userId": "",
"userName": "一休哥",
"userType": "2",
"waresSwitch": 1
},
{
"attentionNum": 0,
"authIcon": "",
"authId": 0,
"authPersonal": "",
"authTitle": "",
"categoryAuth": "",
"city": "110100",
"cnAttentionNum": 0,
"cnCollectNum": 0,
"cnCommentNum": 12,
"cnFansNum": 8,
"cnIsAttention": 1,
"cnIsComment": 1,
"cnIsLike": 1,
"cnLikeNum": 2,
"cnLiveCommentControl": 1,
"cnLiveGiftControl": 1,
"cnLiveLikeControl": 1,
"cnLiveShareControl": 1,
"cnMainControl": 1,
"cnRegistTime": 1695275999000,
"cnShareControl": 1,
"cnShareNum": 1,
"cnUserId": "444903323309381",
"cnUserName": "0921媒体",
"cnUserType": "3",
"collectNum": 0,
"creatorId": "3004860",
"district": "110101",
"fansNum": 0,
"headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Th135954709/qdL.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
"honoraryIcon": "",
"honoraryTitle": "",
"introduction": "0921媒体",
"isAttention": 1,
"isComment": 1,
"isLike": 1,
"isVisiable": 1,
"likeNum": 0,
"liveCommentControl": 1,
"liveGiftControl": 1,
"liveLikeControl": 1,
"liveShareControl": 1,
"posterShareControl": 0,
"province": "110000",
"publishNum": 0,
"region": "上海",
"shareControl": 1,
"shareNum": 0,
"shopOpen": 0,
"storeUrl": "",
"subjectType": 1,
"userId": "",
"userName": "0921媒体",
"userType": "3",
"waresSwitch": 1
},
{
"attentionNum": 0,
"authIcon": "",
"authId": 0,
"authPersonal": "",
"authTitle": "",
"categoryAuth": "",
"city": "110100",
"cnAttentionNum": 0,
"cnCollectNum": 0,
"cnCommentNum": 0,
"cnFansNum": 9,
"cnIsAttention": 1,
"cnIsComment": 1,
"cnIsLike": 1,
"cnLikeNum": 6,
"cnLiveCommentControl": 1,
"cnLiveGiftControl": 1,
"cnLiveLikeControl": 1,
"cnLiveShareControl": 1,
"cnMainControl": 1,
"cnRegistTime": 1695201858000,
"cnShareControl": 1,
"cnShareNum": 0,
"cnUserId": "444296355502149",
"cnUserName": "0920个人",
"cnUserType": "2",
"collectNum": 0,
"creatorId": "3004851",
"district": "110101",
"fansNum": 0,
"headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We172415100/h2j.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
"honoraryIcon": "https://cdn.aikan.pdnews.cn/image/picture/202312/20231223173451966FdV.png",
"honoraryTitle": "快乐星球",
"introduction": "账号简介",
"isAttention": 1,
"isComment": 1,
"isLike": 1,
"isVisiable": 1,
"likeNum": 0,
"liveCommentControl": 1,
"liveGiftControl": 1,
"liveLikeControl": 1,
"liveShareControl": 1,
"posterShareControl": 1,
"province": "110000",
"publishNum": 0,
"region": "上海",
"shareControl": 1,
"shareNum": 0,
"shopOpen": 0,
"storeUrl": "",
"subjectType": 0,
"userId": "",
"userName": "0920个人",
"userType": "2",
"waresSwitch": 1
},
{
"attentionNum": 0,
"authIcon": "",
"authId": 0,
"authPersonal": "",
"authTitle": "",
"categoryAuth": "",
"city": "120100",
"cnAttentionNum": 0,
"cnCollectNum": 0,
"cnCommentNum": 0,
"cnFansNum": 10,
"cnIsAttention": 1,
"cnIsComment": 1,
"cnIsLike": 1,
"cnLikeNum": 0,
"cnLiveCommentControl": 1,
"cnLiveGiftControl": 1,
"cnLiveLikeControl": 1,
"cnLiveShareControl": 1,
"cnMainControl": 1,
"cnRegistTime": 1695190066000,
"cnShareControl": 1,
"cnShareNum": 0,
"cnUserId": "444200272593477",
"cnUserName": "zhuaqu005",
"cnUserType": "2",
"collectNum": 0,
"creatorId": "3004849",
"district": "120101",
"fansNum": 0,
"headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309We140931534/CIX.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
"honoraryIcon": "",
"honoraryTitle": "",
"introduction": "aaa",
"isAttention": 1,
"isComment": 1,
"isLike": 1,
"isVisiable": 1,
"likeNum": 0,
"liveCommentControl": 1,
"liveGiftControl": 1,
"liveLikeControl": 1,
"liveShareControl": 1,
"posterShareControl": 1,
"province": "120000",
"publishNum": 0,
"region": "上海",
"shareControl": 1,
"shareNum": 0,
"shopOpen": 0,
"storeUrl": "",
"subjectType": 0,
"userId": "",
"userName": "zhuaqu005",
"userType": "2",
"waresSwitch": 1
},
{
"attentionNum": 0,
"authIcon": "https://sitcontentjdcdn.aikan.pdnews.cn/creator-category/icon/auth/yellow.png",
"authId": 2,
"authPersonal": "",
"authTitle": "黄VV",
"categoryAuth": "黄VV",
"city": "120100",
"cnAttentionNum": 1,
"cnCollectNum": 1,
"cnCommentNum": 7,
"cnFansNum": 13,
"cnIsAttention": 1,
"cnIsComment": 1,
"cnIsLike": 1,
"cnLikeNum": 0,
"cnLiveCommentControl": 1,
"cnLiveGiftControl": 1,
"cnLiveLikeControl": 1,
"cnLiveShareControl": 1,
"cnMainControl": 1,
"cnRegistTime": 1695202406000,
"cnShareControl": 1,
"cnShareNum": 0,
"cnUserId": "444300764043333",
"cnUserName": "创作者账号7777",
"cnUserType": "2",
"collectNum": 0,
"creatorId": "3004853",
"district": "120101",
"fansNum": 0,
"headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/image/creator/2023092715/4727ab5db7604dbbac9ffb94ed03614e.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
"honoraryIcon": "",
"honoraryTitle": "",
"introduction": "协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作平台是进行团队开发、协作的系统,一般是基于互联网,也有用专业网的情况。协作平台的主要功能是:分工合作、进度控制、版本控制等功能。协作",
"isAttention": 1,
"isComment": 1,
"isLike": 1,
"isVisiable": 1,
"likeNum": 0,
"liveCommentControl": 1,
"liveGiftControl": 1,
"liveLikeControl": 1,
"liveShareControl": 1,
"posterShareControl": 0,
"province": "120000",
"publishNum": 0,
"region": "安徽",
"shareControl": 1,
"shareNum": 0,
"shopOpen": 1,
"storeUrl": "",
"subjectType": 0,
"userId": "",
"userName": "创作者账号7777",
"userType": "2",
"waresSwitch": 0
},
{
"attentionNum": 0,
"authIcon": "https://sitcontentjdcdn.aikan.pdnews.cn/creator-category/icon/auth/blue.png",
"authId": 1,
"authPersonal": "",
"authTitle": "黄袍加身V",
"categoryAuth": "黄袍加身V",
"city": "340100",
"cnAttentionNum": 9,
"cnCollectNum": 0,
"cnCommentNum": 3,
"cnFansNum": 9,
"cnIsAttention": 1,
"cnIsComment": 1,
"cnIsLike": 1,
"cnLikeNum": 7,
"cnLiveCommentControl": 1,
"cnLiveGiftControl": 1,
"cnLiveLikeControl": 1,
"cnLiveShareControl": 1,
"cnMainControl": 1,
"cnRegistTime": 1695260417000,
"cnShareControl": 1,
"cnShareNum": 0,
"cnUserId": "444776025830725",
"cnUserName": "李智恩3",
"cnUserType": "2",
"collectNum": 0,
"creatorId": "3004855",
"district": "340102",
"fansNum": 0,
"headPhotoUrl": "https://sitcontentjdcdn.aikan.pdnews.cn/vod/content/202309/202309Th094010643/N5o.png?x-oss-process=image/resize,l_400/auto-orient,1/quality,q_90/format,jpg",
"honoraryIcon": "",
"honoraryTitle": "",
"introduction": "IU",
"isAttention": 1,
"isComment": 1,
"isLike": 1,
"isVisiable": 1,
"likeNum": 0,
"liveCommentControl": 1,
"liveGiftControl": 1,
"liveLikeControl": 1,
"liveShareControl": 1,
"posterShareControl": 0,
"province": "340000",
"publishNum": 0,
"region": "安徽",
"shareControl": 1,
"shareNum": 0,
"shopOpen": 1,
"storeUrl": "",
"subjectType": 1,
"userId": "",
"userName": "李智恩3",
"userType": "2",
"waresSwitch": 0
}
],
"pageNum": 1,
"pageSize": 20,
"totalCount": 7
},
"message": "Success",
"success": true,
"timestamp": 1710989443354
}
\ No newline at end of file
{
"code": "0",
"data": [
{
"creatorId": "3004862",
"status": "0",
"userId": "567387477063621"
},
{
"creatorId": "3004861",
"status": "0",
"userId": "567387477063621"
},
{
"creatorId": "3004860",
"status": "0",
"userId": "567387477063621"
},
{
"creatorId": "3004851",
"status": "1",
"userId": "567387477063621"
},
{
"creatorId": "3004849",
"status": "1",
"userId": "567387477063621"
},
{
"creatorId": "3004853",
"status": "1",
"userId": "567387477063621"
},
{
"creatorId": "3004855",
"status": "0",
"userId": "567387477063621"
}
],
"message": "Success",
"meta": null,
"requestId": "",
"success": true,
"timestamp": 1710989443648
}
\ No newline at end of file
{
"code": "0",
"data": null,
"message": "Success",
"meta": null,
"requestId": "",
"success": true,
"timestamp": 1711609966231
}
\ No newline at end of file