| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- package com.zhongzheng.service.impl;
- import cn.hutool.core.bean.BeanUtil;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
- import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
- import com.baomidou.mybatisplus.core.toolkit.StringUtils;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.zhongzheng.bo.*;
- import com.zhongzheng.entity.*;
- import com.zhongzheng.exception.CustomException;
- import com.zhongzheng.mapper.OfficialArticleMapper;
- import com.zhongzheng.service.*;
- import com.zhongzheng.util.DateUtils;
- import com.zhongzheng.util.HttpUtils;
- import com.zhongzheng.util.ToolsUtils;
- import com.zhongzheng.vo.*;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.stream.Collectors;
- @Slf4j
- @Service
- public class OfficialApiServiceImpl implements IOfficialApiService {
- @Autowired
- private IOfficialMenuService officialMenuService;
- @Autowired
- private IOfficialArticleService officialArticleService;
- @Autowired
- private IOfficialActivityService officialActivityService;
- @Autowired
- private IOfficialLinkService officialLinkService;
- @Autowired
- private IOfficialProblemService officialProblemService;
- @Autowired
- private IOfficialSuggestService officialSuggestService;
- @Value("${studySys.eduPath}")
- private String SYS_EDUPATH;
- @Value("${studySys.goodsPath}")
- private String SYS_GOODSPATH;
- @Value("${studyApi.domain}")
- private String SYS_DOMAIN;
- @Value("${studyApi.h5Domain}")
- private String SYS_H5DOMAIN;
- @Value("${studyApi.tenantId}")
- private String SYS_TENANTID;
- @Override
- @Transactional // 必须添加此注解
- public List<OfficialMenuVo> listOfficialMenu(OfficialMenuQuery query) {
- //获取一级菜单
- List<OfficialMenu> list = officialMenuService.list(new LambdaQueryWrapper<OfficialMenu>()
- .eq(OfficialMenu::getParentId, ObjectUtils.isNotNull(query.getParentId())? query.getParentId() : 0)
- .eq(OfficialMenu::getStatus,1)
- .orderByAsc(OfficialMenu::getSortNumber));
- if (CollectionUtils.isEmpty(list)){
- return new ArrayList<>();
- }
- List<OfficialMenuVo> collect = list.stream().map(item -> {
- OfficialMenuVo vo = BeanUtil.toBean(item, OfficialMenuVo.class);
- //递归查询子集
- getChildren(vo);
- return vo;
- }).collect(Collectors.toList());
- return collect;
- }
- @Override
- public Page<OfficialArticleVo> listArticle(OfficialArticleQuery query) {
- List<Long> menuIds = new ArrayList<>();
- if (ObjectUtils.isNotNull(query.getParentId())){
- //获取所有子集id
- getChildrenIds(query.getParentId(),menuIds);
- }
- Page<OfficialArticle> list = officialArticleService.page(new Page<>(query.getPageNum(),query.getPageSize()),
- new LambdaQueryWrapper<OfficialArticle>()
- .eq(ObjectUtils.isNotNull(query.getMenuId()),OfficialArticle::getMenuId, query.getMenuId())
- .in(CollectionUtils.isNotEmpty(menuIds),OfficialArticle::getMenuId,menuIds)
- .eq(ObjectUtils.isNotNull(query.getArticleId()),OfficialArticle::getArticleId, query.getArticleId())
- .like(StringUtils.isNotBlank(query.getTitle()),OfficialArticle::getTitle, query.getTitle())
- .eq(OfficialArticle::getStatus, 1)
- .orderByDesc(OfficialArticle::getTopStatus)
- .orderByDesc(OfficialArticle::getCreateTime));
- if (CollectionUtils.isEmpty(list.getRecords())){
- return new Page<>();
- }
- List<OfficialArticleVo> collect = list.getRecords().stream().map(x ->BeanUtil.toBean(x, OfficialArticleVo.class)).collect(Collectors.toList());
- Page<OfficialArticleVo> result = new Page<>();
- result.setTotal(list.getTotal());
- result.setRecords(collect);
- result.setSize(list.getSize());
- return result;
- }
- private void getChildrenIds(Long parentId,List<Long> menuIds) {
- menuIds.add(parentId);
- List<OfficialMenu> list = officialMenuService.list(new LambdaQueryWrapper<OfficialMenu>().eq(OfficialMenu::getParentId, parentId).eq(OfficialMenu::getStatus, 1));
- if (CollectionUtils.isNotEmpty(list)){
- menuIds.addAll(list.stream().map(OfficialMenu::getMenuId).collect(Collectors.toList()));
- list.forEach(item -> {
- getChildrenIds(item.getMenuId(),menuIds);
- });
- }
- }
- @Override
- public List<OfficialActivityVo> listActivity(OfficialActivityQuery query) {
- List<OfficialActivity> list = officialActivityService.list(new LambdaQueryWrapper<OfficialActivity>()
- .eq(ObjectUtils.isNotNull(query.getType()), OfficialActivity::getType, query.getType())
- .eq(OfficialActivity::getStatus, 1)
- .orderByAsc(OfficialActivity::getSort));
- if (CollectionUtils.isEmpty(list)){
- return new ArrayList<>();
- }
- return list.stream().map(x -> BeanUtil.toBean(x, OfficialActivityVo.class)).collect(Collectors.toList());
- }
- @Override
- public List<OfficialLinkVo> listLink(OfficialLinkQuery query) {
- List<OfficialLink> list = officialLinkService.list(new LambdaQueryWrapper<OfficialLink>().eq(OfficialLink::getStatus, 1));
- if (CollectionUtils.isEmpty(list)){
- return new ArrayList<>();
- }
- return list.stream().map(x -> BeanUtil.toBean(x, OfficialLinkVo.class)).collect(Collectors.toList());
- }
- @Override
- public List<OfficialProblemVo> listProblem(OfficialProblemQuery query) {
- List<OfficialProblem> list = officialProblemService.list(new LambdaQueryWrapper<OfficialProblem>().eq(OfficialProblem::getStatus, 1));
- if (CollectionUtils.isEmpty(list)){
- return new ArrayList<>();
- }
- return list.stream().map(x -> BeanUtil.toBean(x, OfficialProblemVo.class)).collect(Collectors.toList());
- }
- @Override
- public boolean saveSuggest(OfficialSuggestBo bo) {
- OfficialSuggest bean = BeanUtil.toBean(bo, OfficialSuggest.class);
- return officialSuggestService.save(bean);
- }
- @Override
- public List<EducationVo> getEduList(OfficialOpenBo bo) {
- CommonOfficialBo studentBo = new CommonOfficialBo();
- Long nowTime = DateUtils.getNowTime();
- String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");
- studentBo.setStamp(nowTime);
- studentBo.setSign(sign);
- HashMap<String, String> headersMap = new HashMap<>();
- headersMap.put("TenantId",StringUtils.isNotBlank(bo.getTenantId())?bo.getTenantId():SYS_TENANTID);
- String respone = "";
- try {
- respone = HttpUtils.sendPostHeader(SYS_EDUPATH, JSONObject.parseObject(JSONObject.toJSONString(studentBo)),headersMap);
- if (!respone.contains("\"code\":200")) {
- throw new CustomException("云学堂教育类型获取失败");
- }
- JSONObject jsonObject = JSONObject.parseObject(respone);
- List<EducationVo> educationVos = JSONArray.parseArray(jsonObject.get("data").toString(), EducationVo.class);
- if (CollectionUtils.isNotEmpty(educationVos)){
- //填充跳转地址
- String path = SYS_DOMAIN + "course-list?sortType=1&showStatus=1&goodsStatus=1";
- educationVos.forEach(item -> {
- item.setJumpUrl(path+String.format("&educationId=%s",item.getId()));
- if (CollectionUtils.isNotEmpty(item.getBusinessList())){
- item.getBusinessList().forEach(x -> {
- x.setJumpUrl(path+String.format("&educationId=%s&projectId=%s&businessId=%s",item.getId(),x.getProjectId(),x.getId()));
- });
- }
- });
- }
- return educationVos;
- } catch (Exception e) {
- e.printStackTrace();
- throw new CustomException("云学堂教育类型获取失败");
- }
- }
- @Override
- public OfficialArticleVo detailArticle(Long articleId) {
- return BeanUtil.toBean(officialArticleService.getById(articleId), OfficialArticleVo.class);
- }
- @Override
- public OfficialMenuVo detailMenu(Long menuId) {
- return BeanUtil.toBean(officialMenuService.getById(menuId), OfficialMenuVo.class);
- }
- @Override
- public List<OfficialRecommendVo> getEduGoodsList(OfficialOpenBo bo) {
- CommonOfficialBo studentBo = new CommonOfficialBo();
- Long nowTime = DateUtils.getNowTime();
- String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");
- studentBo.setStamp(nowTime);
- studentBo.setSign(sign);
- studentBo.setPlatform(2);
- studentBo.setStatus(1);
- HashMap<String, String> headersMap = new HashMap<>();
- headersMap.put("TenantId",StringUtils.isNotBlank(bo.getTenantId())?bo.getTenantId():SYS_TENANTID);
- String respone = "";
- try {
- respone = HttpUtils.sendPostHeader(SYS_GOODSPATH, JSONObject.parseObject(JSONObject.toJSONString(studentBo)),headersMap);
- if (!respone.contains("\"code\":200")) {
- throw new CustomException("云学堂推荐商品列表获取失败");
- }
- JSONObject jsonObject = JSONObject.parseObject(respone);
- List<OfficialRecommendVo> educationVos = JSONArray.parseArray(jsonObject.get("data").toString(), OfficialRecommendVo.class);
- if (CollectionUtils.isNotEmpty(educationVos)){
- //填充跳转地址
- String path = SYS_DOMAIN + "course-detail/";
- String path1 = SYS_DOMAIN + "course-list?sortType=1&showStatus=1&goodsStatus=1";
- String path2 = SYS_DOMAIN + "bank-list?sortType=1&showStatus=1&goodsStatus=1";
- educationVos.forEach(item -> {
- switch (item.getType()){
- case 1: item.setJumpUrl(path1);
- break;
- case 2: item.setJumpUrl(path2);
- break;
- default:
- break;
- }
- if (CollectionUtils.isNotEmpty(item.getGoodsList())){
- for (OfficialGoodsVo goodsVo : item.getGoodsList()) {
- goodsVo.setJumpUrl(path+goodsVo.getGoodsId());
- }
- }
- });
- }
- return educationVos;
- } catch (Exception e) {
- e.printStackTrace();
- throw new CustomException("云学堂推荐商品列表获取失败");
- }
- }
- @Override
- public List<CourseBusinessVo> getBusinessList(OfficialOpenBo bo) {
- CommonOfficialBo studentBo = new CommonOfficialBo();
- Long nowTime = DateUtils.getNowTime();
- String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");
- studentBo.setStamp(nowTime);
- studentBo.setSign(sign);
- HashMap<String, String> headersMap = new HashMap<>();
- headersMap.put("TenantId",StringUtils.isNotBlank(bo.getTenantId())?bo.getTenantId():SYS_TENANTID);
- String respone = "";
- try {
- respone = HttpUtils.sendPostHeader(SYS_EDUPATH, JSONObject.parseObject(JSONObject.toJSONString(studentBo)),headersMap);
- if (!respone.contains("\"code\":200")) {
- throw new CustomException("云学堂教育类型获取失败");
- }
- JSONObject jsonObject = JSONObject.parseObject(respone);
- List<EducationVo> educationVos = JSONArray.parseArray(jsonObject.get("data").toString(), EducationVo.class);
- List<CourseBusinessVo> businessVos = new ArrayList<>();
- if (CollectionUtils.isNotEmpty(educationVos)){
- //填充跳转地址
- String path = SYS_H5DOMAIN + "pages/course/index?";
- educationVos.forEach(item -> {
- if (CollectionUtils.isNotEmpty(item.getBusinessList())){
- item.getBusinessList().forEach(x -> {
- x.setJumpUrl(path+String.format("educationId=%s&projectId=%s&businessId=%s",item.getId(),x.getProjectId(),x.getId()));
- });
- businessVos.addAll(item.getBusinessList());
- }
- });
- }
- return businessVos;
- } catch (Exception e) {
- e.printStackTrace();
- throw new CustomException("云学堂教育类型获取失败");
- }
- }
- @Override
- public List<OfficialGoodsVo> getEduApiGoodsList(OfficialOpenBo bo) {
- CommonOfficialBo studentBo = new CommonOfficialBo();
- Long nowTime = DateUtils.getNowTime();
- String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");
- studentBo.setStamp(nowTime);
- studentBo.setSign(sign);
- studentBo.setPlatform(2);
- studentBo.setStatus(1);
- HashMap<String, String> headersMap = new HashMap<>();
- headersMap.put("TenantId",StringUtils.isNotBlank(bo.getTenantId())?bo.getTenantId():SYS_TENANTID);
- String respone = "";
- try {
- respone = HttpUtils.sendPostHeader(SYS_GOODSPATH, JSONObject.parseObject(JSONObject.toJSONString(studentBo)),headersMap);
- if (!respone.contains("\"code\":200")) {
- throw new CustomException("云学堂推荐商品列表获取失败");
- }
- JSONObject jsonObject = JSONObject.parseObject(respone);
- List<OfficialRecommendVo> educationVos = JSONArray.parseArray(jsonObject.get("data").toString(), OfficialRecommendVo.class);
- List<OfficialGoodsVo> goodsVos = new ArrayList<>();
- if (CollectionUtils.isNotEmpty(educationVos)){
- //填充跳转地址
- String path = SYS_H5DOMAIN + "pages3/course/detail?";
- educationVos.forEach(item -> {
- if (CollectionUtils.isNotEmpty(item.getGoodsList())){
- for (OfficialGoodsVo goodsVo : item.getGoodsList()) {
- goodsVo.setJumpUrl(path+String.format("id=%s&goodsType=%s",goodsVo.getGoodsId(),goodsVo.getGoodsType()));
- }
- goodsVos.addAll(item.getGoodsList());
- }
- });
- }
- return goodsVos;
- } catch (Exception e) {
- e.printStackTrace();
- throw new CustomException("云学堂推荐商品列表获取失败");
- }
- }
- private void getChildren(OfficialMenuVo parent) {
- List<OfficialMenu> list = officialMenuService.list(new LambdaQueryWrapper<OfficialMenu>()
- .eq(OfficialMenu::getParentId, parent.getMenuId())
- .orderByAsc(OfficialMenu::getSortNumber));
- if (CollectionUtils.isEmpty(list)){
- return;
- }
- List<OfficialMenuVo> collect = list.stream().map(x -> BeanUtil.toBean(x, OfficialMenuVo.class)).collect(Collectors.toList());
- parent.setChildList(collect);
- list.forEach(item -> {
- getChildren(BeanUtil.toBean(item,OfficialMenuVo.class));
- });
- }
- }
|