课程受众权限

This commit is contained in:
lims1@hunktimes.com
2023-08-09 18:56:21 +08:00
parent 91784a0a95
commit c24991eaa4
2 changed files with 29 additions and 26 deletions

View File

@@ -234,7 +234,7 @@ public class CoursePortalApi extends ApiBaseController{
* @return
*/
@RequestMapping(value="/detail",method = {RequestMethod.GET,RequestMethod.POST})
public JsonResponse<Map<String,Object>> detail(String id,Boolean addView,Boolean crowd,Boolean preview, HttpServletRequest request){
public JsonResponse<Map<String,Object>> detail(String id,Boolean addView,Boolean crowd,Boolean preview, HttpServletRequest request,String audiences){
if(StringUtils.isBlank(id)) {
return badRequest("参数错误,未指定课程");
}
@@ -262,20 +262,25 @@ public class CoursePortalApi extends ApiBaseController{
}
StudyCourse studyCourse = studyCourseService.findByCourseIdAndAid(course.getId(), aid);
// 无受众 所有人可看
// 此课程是否包含此aid用户
// 例外情况判断
boolean pass = false;
if(!preview) {
if (!courseCrowdList.isEmpty()) {
for (CourseCrowd c : courseCrowdList) {
//同一个受众,同一个只会有一条记录,所以这里就直接查询了
List<UserGroupItem> hasItem = userGroupService.findByGroupIdAndAid(c.getGroupId(),aid);
if (hasItem != null && !hasItem.isEmpty() || !Objects.isNull(studyCourse)) {
if (!courseCrowdList.isEmpty()) {
List<String> audienceList = Arrays.asList(audiences.split(",")); // 此用户所在受众组
for (CourseCrowd c : courseCrowdList) {
for (String audience :audienceList){
if (Objects.isNull(studyCourse) || c.getGroupId().equals(audience)) {
pass = true;
break;
}
}
}else {
pass = true;
if (pass){
break;
}
}
}else {
pass = true;
}
log.debug("=--------- 是否有权限查看此课程: " +pass);

View File

@@ -4,6 +4,7 @@ import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import cn.hutool.core.util.ArrayUtil;
import com.xboe.api.ThirdApi;
import com.xboe.api.vo.AuditList;
import com.xboe.api.vo.AuditListParam;
@@ -11,6 +12,7 @@ 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.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -146,7 +148,7 @@ public class StudyCourseApi extends ApiBaseController{
* @return
*/
@RequestMapping(value="/studyIndex",method = {RequestMethod.GET,RequestMethod.POST})
public JsonResponse<Map<String,Object>> loadDetail(String cid,Boolean addView,Boolean crowd, HttpServletRequest request){
public JsonResponse<Map<String,Object>> loadDetail(String cid,Boolean addView,Boolean crowd, HttpServletRequest request,String audiences){
if(StringUtils.isBlank(cid)){
return error("无课程信息");
}
@@ -166,25 +168,21 @@ public class StudyCourseApi extends ApiBaseController{
}
StudyCourse studyCourse = service.findByCourseIdAndAid(course.getId(), aid);
log.error("=--------- 开始查询是否学习过此课程 ---------------------------------course.getId()= "+ course.getId() + ",aid = " + aid +",studyCourse = " + studyCourse);
// 无受众 所有人可看
// 此课程是否包含此aid用户
// 例外情况判断
boolean pass = false;
if (!courseCrowdList.isEmpty()) {
log.debug("=---studyIndex------ 开始查询受众信息 ---------------------------------");
String token = request.getHeader("XBOE-Access-Token");
List<String> audienceList = Arrays.asList(audiences.split(",")); // 此用户所在受众组
for (CourseCrowd c : courseCrowdList) {
//同一个受众,同一个只会有一条记录,所以这里就直接查询了
// List<UserGroupItem> hasItem = userGroupService.findByGroupIdAndAid(c.getGroupId(),aid);
log.debug("=--------- 开始调研用户中心受众接口 groupId = " + c.getGroupId());
List<AuditList> allAudienceList = thirdApi.getAllAudienceList(AuditListParam.builder().audienceId(c.getGroupId()).pageSize(1000).pageNo(1).build(), token);
List<Long> userIdList = allAudienceList.stream().map(AuditList::getUserId).collect(Collectors.toList());
log.debug("=--------- allAudienceList: " +allAudienceList);
/*List<UserDynamic> userDynamicList = thirdApi.getAllUserdynamicList(UserdynamicParam.builder().aid(Long.parseLong(aid)).pageSize(1000).pageIndex(1).build(), token);
log.error("=--------- 开始查询课程信息信息 ---------------------------------userDynamicList = " + userDynamicList);
List<Long> dynamicList = userDynamicList.stream().map(UserDynamic::getContentId).map(Long::parseLong).collect(Collectors.toList());
log.error(cid + "=--------- 开始查询课程信息信息 ---------------------------------dynamicList = " + dynamicList);*/
if (userIdList.contains(Long.parseLong(aid)) || !Objects.isNull(studyCourse)) {
pass = true;
for (String audience :audienceList){
if (Objects.isNull(studyCourse) || c.getGroupId().equals(audience)) {
pass = true;
break;
}
}
if (pass){
break;
}
}