From 3951d245fbfb75a063a1e6010046d5c1fd519fba Mon Sep 17 00:00:00 2001 From: "lims1@hunktimes.com" Date: Mon, 7 Aug 2023 16:58:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=8F=97=E4=BC=97-=E4=BE=8B?= =?UTF-8?q?=E5=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xboe/api/ThirdApi.java | 39 +++++++++ .../java/com/xboe/api/vo/DynamicBean.java | 34 ++++++++ .../java/com/xboe/api/vo/UserDynamic.java | 87 +++++++++++++++++++ .../com/xboe/api/vo/UserDynamicResult.java | 22 +++++ .../com/xboe/api/vo/UserdynamicParam.java | 16 ++++ .../module/course/api/CoursePortalApi.java | 17 ++-- .../xboe/school/study/api/StudyCourseApi.java | 30 +++---- .../src/main/resources/application.properties | 2 + 8 files changed, 225 insertions(+), 22 deletions(-) create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/DynamicBean.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamic.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamicResult.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/UserdynamicParam.java diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java index 5140444e..14088e67 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java @@ -31,6 +31,9 @@ public class ThirdApi { @Value("${userBasic.searchUserList}") private String searchUserListUrl; + @Value("${statApi.userdynamicList}") + private String userdynamicListUrl; + public List getAllUserList(UserListParam userListParam, String token) { log.info("获取用户"); @@ -89,4 +92,40 @@ public class ThirdApi { Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, AuditRootBean.class).success()).map(AuditRootBean::getResult).map(Result::getList).stream().flatMap(Collection::stream).forEach(list::add); } + public List getAllUserdynamicList(UserdynamicParam userdynamicParam, String token) { + String resp = Optional.ofNullable(HttpRequest.post(userdynamicListUrl).body(JSONUtil.toJsonStr(userdynamicParam)).header("XBOE-Access-Token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + log.error("=1----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + resp ); + return Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(resp, DynamicBean.class).success()) + .map(DynamicBean::getResult) + .map(result -> Opt.ofEmptyAble(result.getList()).peek(t -> nextPage(userdynamicParam, t, result, token)).orElse(ListUtil.toList())) + .orElse(ListUtil.toList()); + } + private void nextPage(UserdynamicParam userdynamicParam, List t, UserDynamicResult result, String token) { + log.error("=2----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + userdynamicParam ); + if (result.getTotalPages() > userdynamicParam.getPageIndex()) { + REQUEST_TASK.submit(() -> IntStream.range(userdynamicParam.getPageIndex(), result.getTotalPages()).parallel().forEach(i -> getAllUserdynamicList(userdynamicParam.withPageIndex(i + 1), t, token))).join(); + } + } + + private void getAllUserdynamicList(UserdynamicParam userdynamicParam, List list, String token) { + log.error("=3----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + userdynamicParam ); + String resp = Optional.ofNullable(HttpRequest.post(usersByAudienceList).body(JSONUtil.toJsonStr(userdynamicParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, DynamicBean.class).success()).map(DynamicBean::getResult).map(UserDynamicResult::getList).stream().flatMap(Collection::stream).forEach(list::add); + } + + public static void main(String[] args) { + String token = "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJjb21wYW55Q29kZSI6IkMwMDEiLCJ1SWQiOiI5NjUzNDIwMjc0OTc2MDcxNjgiLCJjb21wYW55SWQiOiIxMDQxNjczOTc3Mzc5OTQ2NDk2IiwibG9naW5JZCI6IjE2ODg0NDg5MjIwNzY0OTE3NzgiLCJpc3MiOiJodHRwOi8vdS5ib2UuY29tIiwiR2l2ZW5OYW1lIjoiYm9ldSIsImV4cCI6MTY5MTM5OTc2NzU1OCwidXNlck5hbWUiOiLmnY7njonlhrAiLCJ1c2VySWQiOiI2QjA0OUZBRi1DMzE0LTdDQ0YtMEQyOC0wRDIzRjRDNDI1MzEifQ==.8b52dcf4d48a790ed258b9ca2b279bb269f5301722095382fbd352705b51c893"; + String resp = Optional.ofNullable(HttpRequest.post("https://u-pre.boe.com/statApi/xboe/m/stat/userdynamic/list").body(JSONUtil.toJsonStr(UserdynamicParam.builder(). + aid(Long.parseLong("965342027497607168")).pageSize(1000).pageIndex(1).build())).header("XBOE-Access-Token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + System.out.println(" resp = " +resp); + DynamicBean a = JSONUtil.toBean(resp, DynamicBean.class); + System.out.println(" a = " +a); + System.out.println(" a = " + a.getResult().getCount()); + List list = a.getResult().getList(); + System.out.println(" list = " +list.size()); + System.out.println(" list = " +list); + + + + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/DynamicBean.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/DynamicBean.java new file mode 100644 index 00000000..e543275c --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/DynamicBean.java @@ -0,0 +1,34 @@ +package com.xboe.api.vo; + + +import cn.hutool.json.JSONUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; + +@Data +@Slf4j +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class DynamicBean { + + private String error; + private String message; + private String permissions; + private UserDynamicResult result; + private int status; + private Date timestamp; + + public DynamicBean success() { + if (this.status != 200) { + log.error("获取受众列表失败----{}", JSONUtil.toJsonPrettyStr(this)); + return null; + } + return this; + } +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamic.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamic.java new file mode 100644 index 00000000..6815e41f --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamic.java @@ -0,0 +1,87 @@ +package com.xboe.api.vo; + +import com.xboe.core.orm.IdEntity; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class UserDynamic extends IdEntity { + + + private static final long serialVersionUID = -2536708166103273425L; + + /** + * 事件动态 + */ + public final static int TYPE_EVENT=1; + + /** + * 其它动态 + */ + public final static int TYPE_OTHER=9; + + /** + * 类型 + * 1表事件动态 2表非事件动态 + * */ + private Integer type; + + /** + * 动态的标题 + */ + private String title; + + /** + * 事件的key + * */ + private String eventKey; + + /** + * 事件id + * */ + private String eventId; + + /** + * 动态月份 + * yyyyMM + * */ + private Integer month; + + /** + * 内容类型 + * */ + private String contentType; + + /** + * 内容id + * */ + private String contentId; + + /** + * 动态内容 + * */ + private String contentInfo; + + /** + * 用户自定义信息 + */ + private String cusInfo; + + /** + * 动态人id + * */ + private String aid; + + /** + * 用户的名称 + */ + private String aname; + /** + * 是否隐藏 + * */ + private Boolean hidden; + private LocalDateTime eventTime; + + +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamicResult.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamicResult.java new file mode 100644 index 00000000..c0e2e617 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserDynamicResult.java @@ -0,0 +1,22 @@ +package com.xboe.api.vo; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class UserDynamicResult { + + private int count; + private int pageSize; + private int totalPages; + private List list; + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserdynamicParam.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserdynamicParam.java new file mode 100644 index 00000000..fa607e37 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserdynamicParam.java @@ -0,0 +1,16 @@ +package com.xboe.api.vo; + +import lombok.*; + +@Data +@Builder +@With +@NoArgsConstructor +@AllArgsConstructor +public class UserdynamicParam { + private Integer pageIndex; + private Integer pageSize = 1000; + private Integer contentType; + private Long aid; + private String hidden; +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java index 9c1e9cf1..7f3cc567 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java @@ -12,6 +12,8 @@ import javax.servlet.http.HttpServletRequest; import com.xboe.api.ThirdApi; import com.xboe.api.vo.AuditList; import com.xboe.api.vo.AuditListParam; +import com.xboe.api.vo.UserDynamic; +import com.xboe.api.vo.UserdynamicParam; import com.xboe.core.JsonResponseStatus; import com.xboe.module.usergroup.entity.UserGroupItem; import org.apache.commons.lang3.StringUtils; @@ -263,22 +265,22 @@ public class CoursePortalApi extends ApiBaseController{ boolean pass = false; if(!preview) { - log.debug("=--------- 开始查询受众信息 ---------------------------------"); - log.error("=--------- 开始查询受众信息 ---------------------------------"); + log.error("=--------- 开始查询受众信息 ---------------------------------aid = " + aid); String token = request.getHeader("XBOE-Access-Token"); - log.debug("=--------- 获取token token = " + token); log.error("=--------- 获取token token = " + token); if (!courseCrowdList.isEmpty()) { for (CourseCrowd c : courseCrowdList) { //同一个受众,同一个只会有一条记录,所以这里就直接查询了 // List hasItem = userGroupService.findByGroupIdAndAid(c.getGroupId(),aid); - log.debug("=--------- 开始调研用户中心受众接口 groupId = " + c.getGroupId()); log.error("=--------- 开始调研用户中心受众接口 groupId = " + c.getGroupId()); List allAudienceList = thirdApi.getAllAudienceList(AuditListParam.builder().audienceId(c.getGroupId()).pageSize(1000).pageNo(1).build(), token); - log.debug("=--------- allAudienceList: " +allAudienceList); - log.error("=--------- allAudienceList: " +allAudienceList); List userIdList = allAudienceList.stream().map(AuditList::getUserId).collect(Collectors.toList()); - if (userIdList.contains(aid)) { + log.error("=--------- allAudienceList: " +allAudienceList); + List userDynamicList = thirdApi.getAllUserdynamicList(UserdynamicParam.builder().aid(Long.parseLong(aid)).pageSize(1000).pageIndex(1).build(), token); + log.error("=--------- 开始查询课程信息信息 ---------------------------------userDynamicList = " + userDynamicList); + List dynamicList = userDynamicList.stream().map(UserDynamic::getContentId).map(Long::parseLong).collect(Collectors.toList()); + log.error(id + "=--------- 开始查询课程信息信息 ---------------------------------dynamicList = " + dynamicList); + if (userIdList.contains(Long.parseLong(aid)) || dynamicList.contains(id)) { pass = true; break; } @@ -318,6 +320,7 @@ public class CoursePortalApi extends ApiBaseController{ } + @GetMapping("/detail-study") public JsonResponse> detailStudy(String courseId, String aid){ if(StringUtil.isBlank(courseId)){ diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java index e05243a0..ef4ad170 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java @@ -10,6 +10,8 @@ import java.util.stream.Collectors; import com.xboe.api.ThirdApi; import com.xboe.api.vo.AuditList; import com.xboe.api.vo.AuditListParam; +import com.xboe.api.vo.UserDynamic; +import com.xboe.api.vo.UserdynamicParam; import com.xboe.module.usergroup.entity.UserGroupItem; import com.xboe.module.usergroup.service.IUserGroupService; import org.apache.commons.lang3.StringUtils; @@ -125,8 +127,6 @@ public class StudyCourseApi extends ApiBaseController{ /** * 导出课程学习记录 - * @param courseId - * @param type * @return */ @RequestMapping(value="/export",method = {RequestMethod.GET,RequestMethod.POST}) @@ -146,7 +146,6 @@ public class StudyCourseApi extends ApiBaseController{ /** * 学习页面,加载课程的信息,用于替换portal中的detail方法 - * @param id * @return */ @RequestMapping(value="/studyIndex",method = {RequestMethod.GET,RequestMethod.POST}) @@ -177,9 +176,15 @@ public class StudyCourseApi extends ApiBaseController{ for (CourseCrowd c : courseCrowdList) { //同一个受众,同一个只会有一条记录,所以这里就直接查询了 // List hasItem = userGroupService.findByGroupIdAndAid(c.getGroupId(),aid); + log.error("=--------- 开始调研用户中心受众接口 groupId = " + c.getGroupId()); List allAudienceList = thirdApi.getAllAudienceList(AuditListParam.builder().audienceId(c.getGroupId()).pageSize(1000).pageNo(1).build(), token); List userIdList = allAudienceList.stream().map(AuditList::getUserId).collect(Collectors.toList()); - if (userIdList.contains(aid)) { + log.error("=--------- allAudienceList: " +allAudienceList); + List userDynamicList = thirdApi.getAllUserdynamicList(UserdynamicParam.builder().aid(Long.parseLong(aid)).pageSize(1000).pageIndex(1).build(), token); + log.error("=--------- 开始查询课程信息信息 ---------------------------------userDynamicList = " + userDynamicList); + List dynamicList = userDynamicList.stream().map(UserDynamic::getContentId).map(Long::parseLong).collect(Collectors.toList()); + log.error(cid + "=--------- 开始查询课程信息信息 ---------------------------------dynamicList = " + dynamicList); + if (userIdList.contains(Long.parseLong(aid)) || dynamicList.contains(cid)) { pass = true; break; } @@ -268,7 +273,7 @@ public class StudyCourseApi extends ApiBaseController{ /** * 记录学习信息,在学习每个资源时都要记录.前端用户打开课程资源按规则调用带着课程及学习信息调用此接口。 - * @param studyId + * @param * @return 返回学习条目的id */ @PostMapping("/study") @@ -399,8 +404,8 @@ public class StudyCourseApi extends ApiBaseController{ * 音视频学习保存,初始化保存学习记录. * 如果已经保存,就不要再保存第二次了,前端注意控制 * {studyId,contentId,courseId,progress,contentType,studyDuration} - * @param itemId - * @param videoTime + * @param + * @param * @return */ @PostMapping("/study-video-save") @@ -455,8 +460,8 @@ public class StudyCourseApi extends ApiBaseController{ } /** * 视频学习完 - * @param itemId - * @param studyId + * @param + * @param * @return */ @PostMapping("/study-video-finish") @@ -482,7 +487,7 @@ public class StudyCourseApi extends ApiBaseController{ /** * 记录视频的学习时间点,前端可以每10秒记录一次,时长是秒 * @param itemId 学习内容条目id - * @param videoTime + * @param * @return */ @PostMapping("/study-video-time") @@ -508,11 +513,6 @@ public class StudyCourseApi extends ApiBaseController{ /** * 追加学习时长,如果有id了,后台就会增加学习时长,如果不是就会减少. * 已经不再使用,二期移到独立的数据统计中了 - * @param stid 记录时间id,非必填项 - * @param scid 学习id, - * @param cid 课程id - * @param ccid 内容id - * @param info 学习信息 * @return */ @Deprecated diff --git a/servers/boe-server-all/src/main/resources/application.properties b/servers/boe-server-all/src/main/resources/application.properties index 4c07e184..6bc8059d 100644 --- a/servers/boe-server-all/src/main/resources/application.properties +++ b/servers/boe-server-all/src/main/resources/application.properties @@ -62,3 +62,5 @@ orgTree.orgTreeList=${boe.domain}/userbasic/org/list orgTree.orgChildTreeList=${boe.domain}/userbasic/org/childOrgs userBasic.searchUserList=${boe.domain}/userbasic/user/list audience.usersByAudienceList=${boe.domain}/userbasic/audience/memberList +#获取用户学习课程数据 +statApi.userdynamicList=${boe.domain}/statApi/xboe/m/stat/userdynamic/list \ No newline at end of file