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 c765166e..28eface3 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 @@ -4,7 +4,8 @@ import cn.hutool.core.collection.ListUtil; import cn.hutool.core.lang.Opt; import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONUtil; -import com.alibaba.nacos.shaded.com.google.gson.*; +import com.alibaba.nacos.shaded.com.google.gson.Gson; +import com.alibaba.nacos.shaded.com.google.gson.GsonBuilder; import com.xboe.api.vo.*; import com.xboe.module.course.vo.StudyCourseVo; import com.xboe.module.course.vo.TeacherInfoVo; @@ -14,19 +15,24 @@ import com.xboe.module.exam.entity.AloneExam; import com.xboe.module.exam.entity.ExamTest; import com.xboe.school.study.entity.StudyCourse; import com.xboe.system.user.dao.UserDao; -import com.xboe.system.user.entity.User; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; import java.time.LocalDateTime; -import java.util.*; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Optional; import java.util.concurrent.ForkJoinPool; import java.util.stream.Collectors; import java.util.stream.IntStream; + @Service @Slf4j public class ThirdApi { @@ -274,4 +280,35 @@ public class ThirdApi { } JSONUtil.toBean(resp, SyncExamScoreBean.class).success(); } + + public UserDynamicResult getAllUserdynamicList2(UserdynamicParam userdynamicParam, String token) { + String s = buildFormData(userdynamicParam); + String resp = Optional.ofNullable(HttpRequest + .post(userdynamicListUrl) + .header("Content-Type", "application/x-www-form-urlencoded") + .body(s) + .header("XBOE-Access-Token", token) + .execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + + DynamicBean dynamicBean = JSONUtil.toBean(resp, DynamicBean.class); + UserDynamicResult userdynamicResult = dynamicBean.getResult(); + return userdynamicResult; + } + + private String buildFormData(UserdynamicParam param) { + StringBuilder builder = new StringBuilder(); + try { + builder.append("pageIndex=").append(URLEncoder.encode(param.getPageIndex().toString(), "UTF-8")); + + builder.append("&pageSize=").append(URLEncoder.encode(param.getPageSize().toString(), "UTF-8")); + builder.append("&contentType=").append(URLEncoder.encode(param.getContentType().toString(), "UTF-8")); + builder.append("&aid=").append(URLEncoder.encode(param.getAid().toString(), "UTF-8")); + if (param.getHidden() != null) { + builder.append("&hidden=").append(URLEncoder.encode(param.getHidden(), "UTF-8")); + } + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + return builder.toString(); + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index 9573bcc0..cbe8d841 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -11,14 +11,10 @@ import com.xboe.module.boecase.dao.CasesMajorTypeDao; import com.xboe.module.boecase.dto.*; import com.xboe.module.boecase.entity.CasesMajorType; import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; -import com.xboe.module.boecase.vo.CaseExportVo; -import com.xboe.module.boecase.vo.CaseRankingVo; -import com.xboe.module.boecase.vo.CasesQueryRecommendRankVo; -import com.xboe.module.boecase.vo.FavoriteCaseOfIndexVo; +import com.xboe.module.boecase.vo.*; import com.xboe.module.dict.entity.DictItem; import com.xboe.module.excel.ExportsExcelSenderUtil; -import com.xboe.module.interaction.dto.FavoriteCaseDto; import com.xboe.system.user.dao.UserDao; import com.xboe.system.user.entity.User; import org.springframework.beans.factory.annotation.Autowired; @@ -39,6 +35,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.validation.annotation.Validated; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; @@ -752,5 +749,14 @@ public class CasesApi extends ApiBaseController { return success(casesList); } + @GetMapping("/browsingHistory") + public JsonResponse> browsingHistory(@RequestParam(required = false,defaultValue = "1") Integer pageIndex, + @RequestParam(required = false,defaultValue = "5") Integer pageSize, + HttpServletRequest request) { + String accountId = this.getCurrent().getAccountId(); + PageList casesList = casesService.browsingHistory(pageIndex,pageSize,accountId,request); + return success(casesList); + } + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java index c43bed64..26b64c55 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java @@ -4,12 +4,14 @@ import com.xboe.common.PageList; import com.xboe.core.CurrentUser; import com.xboe.module.boecase.dto.*; import com.xboe.module.boecase.entity.Cases; +import com.xboe.module.boecase.vo.CasesBrowsingHistoryVo; import com.xboe.module.boecase.vo.CaseRankingVo; import com.xboe.module.boecase.vo.CasesQueryRecommendRankVo; import com.xboe.module.boecase.vo.FavoriteCaseOfIndexVo; import com.xboe.module.dict.entity.DictItem; import com.xboe.school.vo.CasesVo; +import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; import java.time.LocalDateTime; import java.util.List; @@ -133,5 +135,7 @@ public interface ICasesService{ List queryPopularityOfMajor(Integer pageSize, Long majorId, LocalDateTime month, String accountId); PageList queryFavoriteCaseOfIndex(Integer pageIndex, Integer pageSize, String accountId); + + PageList browsingHistory(Integer pageIndex, Integer pageSize, String accountId, HttpServletRequest request); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index f9520d5e..59f306ed 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -6,6 +6,10 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.xboe.api.ThirdApi; +import com.xboe.api.vo.UserDynamic; +import com.xboe.api.vo.UserDynamicResult; +import com.xboe.api.vo.UserdynamicParam; import com.xboe.common.OrderCondition; import com.xboe.common.OrderDirection; import com.xboe.common.PageList; @@ -18,10 +22,7 @@ import com.xboe.module.boecase.dao.*; import com.xboe.module.boecase.dto.*; import com.xboe.module.boecase.entity.*; import com.xboe.module.boecase.service.ICasesService; -import com.xboe.module.boecase.vo.CaseRankingVo; -import com.xboe.module.boecase.vo.CaseViewRankingItemVo; -import com.xboe.module.boecase.vo.CasesQueryRecommendRankVo; -import com.xboe.module.boecase.vo.FavoriteCaseOfIndexVo; +import com.xboe.module.boecase.vo.*; import com.xboe.module.dict.dao.SysDictionaryDao; import com.xboe.module.dict.entity.DictItem; import com.xboe.module.interaction.entity.Favorites; @@ -40,6 +41,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Array; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -80,6 +82,9 @@ public class CasesServiceImpl implements ICasesService { @Resource private StringRedisTemplate stringRedisTemplate; + @Resource + private ThirdApi thirdApi; + /** * 案例分页查询,用于门户的查询 */ @@ -1416,4 +1421,39 @@ public class CasesServiceImpl implements ICasesService { } + @Override + public PageList browsingHistory(Integer pageIndex, Integer pageSize, String accountId, HttpServletRequest request) { + UserdynamicParam userdynamicParam = new UserdynamicParam(); + userdynamicParam.setPageIndex(pageIndex); + userdynamicParam.setPageSize(pageSize); + userdynamicParam.setContentType(3); + userdynamicParam.setAid(Long.valueOf(accountId)); + userdynamicParam.setHidden(""); + + String token = request.getHeader("Xboe-Access-Token"); + if (StringUtils.isEmpty(token)) { + token = request.getHeader("token"); + } + UserDynamicResult userDynamicResult = thirdApi.getAllUserdynamicList2(userdynamicParam, token); + + List allUserdynamicList = userDynamicResult.getList(); + List collect = allUserdynamicList.stream().map(UserDynamic::getContentId).distinct().collect(Collectors.toList()); + List caseList = this.ids(collect, accountId); + Map map = caseList.stream().collect(Collectors.toMap(Cases::getId, cases -> cases)); + + List batchHistoryVoList = allUserdynamicList.stream().map(userDynamic -> { + CasesBrowsingHistoryVo browsingHistoryVo = new CasesBrowsingHistoryVo(); + BeanUtils.copyProperties(userDynamic, browsingHistoryVo); + BeanUtils.copyProperties(map.get(userDynamic.getContentId()), browsingHistoryVo); + return browsingHistoryVo; + }).collect(Collectors.toList()); + + PageList pageList = new PageList<>(); + pageList.setList(batchHistoryVoList); + pageList.setCount(userDynamicResult.getCount()); + pageList.setPageSize(userDynamicResult.getPageSize()); + + return pageList; + } + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesBrowsingHistoryVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesBrowsingHistoryVo.java new file mode 100644 index 00000000..002bc631 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesBrowsingHistoryVo.java @@ -0,0 +1,87 @@ +package com.xboe.module.boecase.vo; + +import com.xboe.module.boecase.entity.Cases; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class CasesBrowsingHistoryVo extends Cases{ + + + + 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; + +}