Commit b90b9f47 by 李传峰

Merge remote-tracking branch 'remotes/origin/master' into 3.x

parents 11970aed a6127327
......@@ -90,4 +90,10 @@ public class GroupActivity4AppletDTO implements Serializable {
@ApiModelProperty("描述")
private String groupDesc;
@ApiModelProperty("群分类")
private Long firstClassify;
@ApiModelProperty("群分类")
private String firstClassifyName;
}
......@@ -15,6 +15,26 @@ public class AviserBookInfoParam implements Serializable {
private List<Long> adviserIds;
private Integer currentPage;
private Integer numPerPage;
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(Integer numPerPage) {
this.numPerPage = numPerPage;
}
public List<Long> getBookIds() {
return bookIds;
}
......
......@@ -820,9 +820,35 @@ public class BookDto extends BaseDto {
*/
private List<String> erpNumbers;
/**
* 创建人(ERP运维人员)
*/
private Integer uploadUserId;
/**
* 创建人名称(ERP运维人员)
*/
private String uploadUserName;
//是否开启手机号登录
private Integer bookPhoneAuth;
public Integer getUploadUserId() {
return uploadUserId;
}
public void setUploadUserId(Integer uploadUserId) {
this.uploadUserId = uploadUserId;
}
public String getUploadUserName() {
return uploadUserName;
}
public void setUploadUserName(String uploadUserName) {
this.uploadUserName = uploadUserName;
}
public Integer getBookPhoneAuth() {
return bookPhoneAuth;
}
......
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class ProjectRelateVO {
private Long orderSheetId;
private Long projectId;
private Long raysBookId;
......@@ -13,4 +18,13 @@ public class ProjectRelateVO {
private Long raysChannelId;
private String coverImg;
private Integer uploadUserId;
private String serveType;
@ApiModelProperty("bookId/sceneId")
private List<Long> serveIds;
}
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProjectUploaderDTO {
private Integer id;
private Long projectId;
private Integer uploadUserId;
private String uploadUserName;
@ApiModelProperty("服务类型-BOOK/QRCODE")
private String serveType;
@ApiModelProperty("bookId/qrcodeSceneId")
private Long serveId;
}
......@@ -5,8 +5,6 @@ package com.pcloud.book.book.entity;
import com.pcloud.common.entity.BaseEntity;
import java.util.List;
/**
* @描述:书籍实体
* @作者:songx
......@@ -274,10 +272,36 @@ public class Book extends BaseEntity {
private String erpNumber;
/**
* ERP-运维人员
*/
private Integer uploadUserId;
/**
* 类型
*/
private String serveType;
/**
* 强制更新
*/
private Integer forceUpdateSerialNumber;
public String getServeType() {
return serveType;
}
public void setServeType(String serveType) {
this.serveType = serveType;
}
public Integer getUploadUserId() {
return uploadUserId;
}
public void setUploadUserId(Integer uploadUserId) {
this.uploadUserId = uploadUserId;
}
public Long getThirdTempletId() {
return thirdTempletId;
}
......
......@@ -3,6 +3,7 @@
*/
package com.pcloud.book.book.service;
import com.pcloud.book.book.dto.AviserBookInfoParam;
import com.pcloud.book.book.dto.BookAdviserUpdateTimeDTO;
import com.pcloud.book.book.dto.BookDetialDTO;
import com.pcloud.book.book.dto.BookDto;
......@@ -12,6 +13,8 @@ import com.pcloud.book.book.dto.BookInfoAndAuthStatusDTO;
import com.pcloud.book.book.dto.BookMinimumSupportDTO4Service;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
......@@ -306,4 +309,8 @@ public interface BookService {
@GetMapping("getWxworkGroupQrcodeIdsExceptBook")
ResponseEntity<ResponseDto<List<Long>>> getWxworkGroupQrcodeIdsExceptBook(@RequestParam(value = "sceneId", required = false) Long sceneId,
@RequestParam(value = "bookGroupId", required = false) Long bookGroupId);
@ApiOperation("编辑图书列表")
@PostMapping("listAdviserBook")
ResponseEntity<ResponseDto<PageBean>> listAdviserBook(@RequestBody AviserBookInfoParam aviserBookInfoParam);
}
package com.pcloud.book.cultivate.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName com.pcloud.book.cultivate.dto.NotifyItemDTO
* @Author zhuyajie
* @Description 消息详情
* @Date 2021/7/14 14:40
* @Version 1.0
**/
@Data
public class NotifyItemDTO {
@ApiModelProperty("发送内容(1-文本,2-图片,3-音频, 4-链接,5 问题)")
private Integer contentType;
@ApiModelProperty("文字内容")
private String content;
@ApiModelProperty("图片地址")
private String picUrl;
@ApiModelProperty("音频资源id")
private Long resourceId;
@ApiModelProperty("跳转类型 1指定页面, 2web页面, 3资讯, 4应用作品")
private Integer jumpType;
@ApiModelProperty("跳转地址")
private String jumpUrl;
@ApiModelProperty("作品/应用/咨询的ID")
private Long serveId;
@ApiModelProperty("作品5/应用6/咨询的类型1")
private Integer serveType;
@ApiModelProperty("JSON格式的额外信息")
private String extJson;
}
package com.pcloud.book.cultivate.dto;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName com.pcloud.book.cultivate.dto.NotifySendDTO
* @Author zhuyajie
* @Description 小程序消息发送
* @Date 2021/7/14 14:39
* @Version 1.0
**/
@Data
public class NotifySendDTO {
@ApiModelProperty("用户微信id")
private Long wechatUserId;
@ApiModelProperty("发送类型(1-指定用户,2-分类用户,3-按书籍查询,4-全局公告消息)")
private Integer sendType;
@ApiModelProperty("消息类型(1-系统消息,2-通知消息,3-提醒消息,4-活动消息 5-更多消息)")
private Integer messageType;
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("消息详情")
private List<NotifyItemDTO> notifyItemDTOS;
}
......@@ -3,6 +3,7 @@ package com.pcloud.book.cultivate.service;
import com.pcloud.book.copyright.dto.BookAuthInfoCountDTO;
import com.pcloud.book.copyright.dto.BookAuthTotalCountDTO;
import com.pcloud.book.copyright.dto.CheckUserAuthDTO;
import com.pcloud.book.cultivate.dto.NotifySendDTO;
import com.pcloud.book.cultivate.entity.AppletNotifySendDTO;
import com.pcloud.book.cultivate.entity.CultivateNotifySend;
import com.pcloud.common.dto.ResponseDto;
......@@ -10,6 +11,7 @@ import com.pcloud.common.exceptions.BizException;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
......@@ -47,4 +49,8 @@ public interface CultivateNotifyService {
@RequestMapping(value = "createNotify4App", method = RequestMethod.POST)
ResponseEntity<ResponseDto<Long>> createNotify4App(@RequestBody AppletNotifySendDTO newSendDTO) throws BizException;
@ApiOperation("发小程序消息")
@PostMapping("sendNotifyToUser")
ResponseEntity<ResponseDto<Long>> sendNotifyToUser(@RequestBody NotifySendDTO notifySendDTO);
}
......@@ -37,4 +37,12 @@ public interface AppletRecordAggrStatisBiz {
* * @param null
*/
PageBeanNew getResource4H5(Long wechatUserId, Long officialAccountsId, String keyword, Integer sourceType, Integer currentPage, Integer numPerPage);
/**
* 平台端资源推荐
* @author:zhuyajie
* @date:2021/7/9 16:17
* * @param null
*/
PageBeanNew getResource4H54Pcloud(Integer currentPage, Integer numPerPage, String query, Integer sourceFrom);
}
......@@ -2,12 +2,14 @@ package com.pcloud.book.applet.biz.impl;
import com.google.common.collect.Lists;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.applet.biz.AppletRecordAggrStatisBiz;
import com.pcloud.book.applet.biz.AppletRecordBiz;
import com.pcloud.book.applet.biz.ServeCollectBiz;
import com.pcloud.book.applet.contants.AppletConstants;
import com.pcloud.book.applet.dao.AppletRecordDao;
import com.pcloud.book.applet.dao.AppletRecordSevenDayDao;
import com.pcloud.book.applet.dto.AppletAppOrProductDTO;
import com.pcloud.book.applet.dto.AppletRecordDTO;
import com.pcloud.book.applet.entity.AppletRecord;
import com.pcloud.book.applet.entity.AppletRecordSevenDay;
......@@ -16,15 +18,21 @@ import com.pcloud.book.applet.enums.AppletRankTypeEnum;
import com.pcloud.book.applet.enums.AppletRecordTypeEnum;
import com.pcloud.book.applet.enums.AppletSourceTypeEnum;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.app.AppConsr;
import com.pcloud.book.consumer.label.LabelConsr;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.MerchantConsr;
import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.book.group.constant.ResourcePageConstants;
import com.pcloud.book.group.dao.WeworkTeacherFriendRecordDao;
import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.mapper.clickhouse.AppletRecordCHMapper;
import com.pcloud.book.util.common.YesOrNoEnums;
import com.pcloud.book.util.properties.BookProps;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
......@@ -32,6 +40,8 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.common.enums.YesOrNoNumEnum;
import com.pcloud.readercenter.userlabel.dto.UserGradeLabelIdDTO;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductLabelDto;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -71,13 +81,21 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
@Autowired
private ServeCollectBiz serveCollectBiz;
@Autowired
private ResourcePageBiz resourcePageBiz;
@Autowired
private AppletRecordSevenDayDao appletRecordSevenDayDao;
@Autowired
private ReaderConsr readerConsr;
@Autowired
private LabelConsr labelConsr;
@Autowired
private ProductConsr productConsr;
@Autowired
private AppConsr appConsr;
@Autowired
private AdviserConsr adviserConsr;
@Autowired
private MerchantConsr merchantConsr;
@Autowired
private ResourcePageBiz resourcePageBiz;
@Override
public PageBeanNew getAggrStatis(Long wechatUserId, String keyword, Integer sourceType, Integer rankType, Integer currentPage, Integer numPerPage) {
......@@ -351,13 +369,23 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
@Override
public PageBeanNew getResource4H5(Long wechatUserId, Long officialAccountsId, String keyword, Integer sourceType, Integer currentPage, Integer numPerPage) {
if (null == sourceType && StringUtil.isEmpty(keyword)) {
if (null == sourceType) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少参数");
}
//最多查询50个
Integer maxCount = 50;
List<AppletRecordDTO> countList;
Boolean isDefaultList;//默认列表还是关键词实时搜索
Integer sourceFrom;//来源 育儿/教辅
if (ResourcePageConstants.ResourceSourceTypeEnum.CHILD.getCode().equals(sourceType)) {
//育儿宝库
sourceFrom = ResourcePageConstants.RecommendResourceFromEnum.CHILD_RESOURCE.getCode();
} else {
//教辅资料
sourceFrom = ResourcePageConstants.RecommendResourceFromEnum.TEACHE_RESOURCE.getCode();
}
if (StringUtils.isNotEmpty(keyword)) {
isDefaultList = false;
//关键词搜索
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("sourceKeywords", Arrays.asList(keyword));
......@@ -367,7 +395,8 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
countList = appletRecordCHMapper.getAggrStatis4H5(paramMap);
} else {
//无关键词-根据学龄段搜索,序优先匹配同年级的资源
isDefaultList = true;
//无关键词-根据学龄段搜索,优先匹配同年级的资源
UserGradeLabelIdDTO userGradeLabelIdDTO = readerConsr.getUserGrade(wechatUserId, officialAccountsId);
//学龄段标签, 年级标签
Long parentLabel = 1L;
......@@ -385,13 +414,14 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
gradeLabelIds.remove(gradeLabelId);
}
orderFieldIds.addAll(gradeLabelIds);
countList = appletRecordSevenDayDao.getResourceByGrade4H5(sourceType, orderFieldIds, maxCount);
countList = appletRecordSevenDayDao.getResourceByGrade4H5(sourceType, orderFieldIds, maxCount, sourceFrom);
}
if (ListUtils.isEmpty(countList)) {
return new PageBeanNew(currentPage, numPerPage, 0, Lists.newArrayList());
}
appletRecordBiz.fillAppletRecord(countList, YesOrNoNumEnum.NO.getValue());
countList = countList.stream().filter(x -> x.getSourceDelete() == 0).collect(Collectors.toList());
dealServeNamePic(countList, isDefaultList, sourceFrom);
if (ListUtils.isEmpty(countList)) {
return new PageBeanNew(currentPage, numPerPage, 0, Lists.newArrayList());
}
......@@ -401,6 +431,140 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
return pageBeanNew;
}
/**
* 处理平台端替换的资源名称封面
* @author:zhuyajie
* @date:2021/7/9 17:28
* * @param null
*/
private void dealServeNamePic(List<AppletRecordDTO> recordDTOS, Boolean isDefaultList, Integer sourceFrom) {
if (ListUtils.isEmpty(recordDTOS)) {
return;
}
if (isDefaultList) {
//默认列表
for (AppletRecordDTO appletRecordDTO:recordDTOS){
AppletAppOrProductDTO appletAppOrProductDTO = appletRecordDTO.getAppletAppOrProductDTO();
if (!StringUtil.isEmpty(appletRecordDTO.getFromName())) {
appletAppOrProductDTO.setServeName(appletRecordDTO.getFromName());
}
if (!StringUtil.isEmpty(appletRecordDTO.getServePic())) {
appletAppOrProductDTO.setServePic(appletRecordDTO.getServePic());
}
}
} else {
List<AppletRecordDTO> deleteList = new ArrayList<>();
//关键词搜索
List<Long> appIds = recordDTOS.stream().filter(s->s.getRecordType().equals(6)).map(AppletRecordDTO::getFromId).collect(Collectors.toList());
List<Long> productIds = recordDTOS.stream().filter(s->s.getRecordType().equals(5)).map(AppletRecordDTO::getFromId).collect(Collectors.toList());
Map<Long,ResourceRecomManage> appMap = resourcePageBiz.mapResourceRecomManage(appIds, "APP", sourceFrom);
Map<Long,ResourceRecomManage> productMap = resourcePageBiz.mapResourceRecomManage(productIds, "PRODUCT", sourceFrom);
if (!MapUtils.isEmpty(appMap) || !MapUtils.isEmpty(productMap)) {
for (AppletRecordDTO appletRecordDTO:recordDTOS){
Long fromId = appletRecordDTO.getFromId();
AppletAppOrProductDTO appletAppOrProductDTO = appletRecordDTO.getAppletAppOrProductDTO();
if (appletRecordDTO.getRecordType().equals(6) && !MapUtils.isEmpty(appMap) && appMap.containsKey(fromId)) {
ResourceRecomManage resourceRecomManage = appMap.get(fromId);
replaceServe(resourceRecomManage, appletAppOrProductDTO, deleteList, appletRecordDTO);
} else if (appletRecordDTO.getRecordType().equals(5) && !MapUtils.isEmpty(productMap) && productMap.containsKey(fromId)) {
ResourceRecomManage resourceRecomManage = productMap.get(fromId);
replaceServe(resourceRecomManage, appletAppOrProductDTO, deleteList, appletRecordDTO);
}
}
}
if (!ListUtils.isEmpty(deleteList)) {
recordDTOS.removeAll(deleteList);
}
}
}
private void replaceServe(ResourceRecomManage resourceRecomManage, AppletAppOrProductDTO appletAppOrProductDTO,
List<AppletRecordDTO> deleteList, AppletRecordDTO appletRecordDTO) {
if (null == resourceRecomManage) {
return;
}
if (resourceRecomManage.getShowState() == 0) {
deleteList.add(appletRecordDTO);
} else {
if (!StringUtil.isEmpty(resourceRecomManage.getCoverImg())) {
appletAppOrProductDTO.setServePic(resourceRecomManage.getCoverImg());
}
if (!StringUtil.isEmpty(resourceRecomManage.getServeName())) {
appletAppOrProductDTO.setServeName(resourceRecomManage.getServeName());
appletRecordDTO.setFromName(resourceRecomManage.getServeName());
}
}
}
@Override
public PageBeanNew getResource4H54Pcloud(Integer currentPage, Integer numPerPage, String query, Integer sourceFrom) {
Map<String,Object> map = new HashMap<>();
map.put("sourceTypeList", ResourcePageConstants.RecommendResourceFromEnum.getSourceTypesByCode(sourceFrom));
map.put("sourceFrom", sourceFrom);
map.put("query", query);
PageBeanNew<AppletRecordDTO> pageBeanNew = appletRecordSevenDayDao.listPageNew(new PageParam(currentPage,numPerPage),map,"getList4Pcloud");
fillResource4Pcloud(pageBeanNew.getRecordList());
return pageBeanNew;
}
/**
* 填充应用作品信息
* @author:zhuyajie
* @date:2021/7/9 17:09
* * @param null
*/
private void fillResource4Pcloud(List<AppletRecordDTO> recordList) {
if (ListUtils.isEmpty(recordList)) {
return;
}
List<Long> productIds = recordList.stream().filter(appletRecordDTO -> AppletRecordTypeEnum.PRODUCT.value.equals(appletRecordDTO.getRecordType())).map(AppletRecordDTO::getFromId).distinct().collect(Collectors.toList());
List<Long> appIds = recordList.stream().filter(appletRecordDTO -> AppletRecordTypeEnum.APP.value.equals(appletRecordDTO.getRecordType())).map(AppletRecordDTO::getFromId).distinct().collect(Collectors.toList());
//应用作品创建人
Map<Long, AppDto> appDtoMap = appConsr.mapBaseByIds(appIds);
List<Long> adviserIds = MapUtils.isEmpty(appDtoMap)?new ArrayList<>():appDtoMap.values().stream().map(AppDto::getCreatedUser).distinct().collect(Collectors.toList());
Map<Long, String> adviserMap = adviserConsr.getNames(adviserIds);
Map<Long, ProductDto> productDtoMap = productConsr.getProBasesByIds(productIds);
List<Long> merchantIds = MapUtils.isEmpty(productDtoMap)?new ArrayList<>():productDtoMap.values().stream().map(ProductDto::getCreatedUser).distinct().collect(Collectors.toList());
Map<Long, String> merchantMap = merchantConsr.getNamesByIdList(merchantIds);
for (AppletRecordDTO recordDTO : recordList) {
Long fromId = recordDTO.getFromId();
if (AppletRecordTypeEnum.APP.value.equals(recordDTO.getRecordType())
&& !MapUtils.isEmpty(appDtoMap) && appDtoMap.containsKey(fromId)) {
recordDTO.setServeType("APP");
AppDto appDto = appDtoMap.get(fromId);
//平台端没给封面,取原有封面
if (StringUtil.isEmpty(recordDTO.getServePic())) {
recordDTO.setServePic(appDto.getSquareImg());
}
recordDTO.setProLabelName(appDto.getProLabelName());
recordDTO.setDepLabelName(appDto.getDepLabelName());
recordDTO.setPurLabelName(appDto.getPurLabelName());
recordDTO.setServeCreateUserId(appDto.getCreatedUser());
//应用创建人名称
if (!MapUtils.isEmpty(adviserMap) && adviserMap.containsKey(appDto.getCreatedUser())) {
recordDTO.setServeCreateUserName(adviserMap.get(appDto.getCreatedUser()));
}
} else if (AppletRecordTypeEnum.PRODUCT.value.equals(recordDTO.getRecordType())
&& !MapUtils.isEmpty(productDtoMap) && productDtoMap.containsKey(fromId)) {
recordDTO.setServeType("PRODUCT");
ProductDto productDto = productDtoMap.get(fromId);
if (StringUtil.isEmpty(recordDTO.getServePic())) {
recordDTO.setServePic(productDto.getCoverImg());
}
List<ProductLabelDto> labelDtos = productDto.getProductLabels();
if (!ListUtils.isEmpty(labelDtos)) {
recordDTO.setProLabelName(labelDtos.get(0).getProLabelName());
recordDTO.setDepLabelName(labelDtos.get(0).getDepLabelName());
recordDTO.setPurLabelName(labelDtos.get(0).getPurLabelName());
}
recordDTO.setServeCreateUserId(productDto.getCreatedUser());
if (!MapUtils.isEmpty(merchantMap) && merchantMap.containsKey(productDto.getCreatedUser())) {
recordDTO.setServeCreateUserName(merchantMap.get(productDto.getCreatedUser()));
}
}
}
}
private void fillLabel(List<AppletRecordDTO> recordList) {
if (ListUtils.isEmpty(recordList)) {
......
......@@ -16,5 +16,5 @@ public interface AppletRecordSevenDayDao extends BaseDao<AppletRecordSevenDay>{
void deleteBySourceType(Integer sourceType);
List<AppletRecordDTO> getResourceByGrade4H5(Integer sourceType, List<Long> gradeLabelIds, Integer limit);
List<AppletRecordDTO> getResourceByGrade4H5(Integer sourceType, List<Long> gradeLabelIds, Integer limit, Integer sourceFrom);
}
\ No newline at end of file
......@@ -26,11 +26,12 @@ public class AppletRecordSevenDayDaoImpl extends BaseDaoImpl<AppletRecordSevenDa
}
@Override
public List<AppletRecordDTO> getResourceByGrade4H5(Integer sourceType, List<Long> gradeLabelIds, Integer limit) {
public List<AppletRecordDTO> getResourceByGrade4H5(Integer sourceType, List<Long> gradeLabelIds, Integer limit, Integer sourceFrom) {
Map<String, Object> map = new HashMap<>();
map.put("sourceType", sourceType);
map.put("gradeLabelIds", gradeLabelIds);
map.put("limit", limit);
map.put("sourceFrom", sourceFrom);
return getSessionTemplate().selectList(getStatement("getResourceByGrade4H5"), map);
}
}
......@@ -116,4 +116,22 @@ public class AppletRecordDTO {
private String proLabelName;
private String depLabelName;
private String purLabelName;
/**
* 应用作品资源封面
*/
private String servePic;
/**
* 应用作品资源创建人
*/
private Long serveCreateUserId;
/**
* 应用作品资源创建人名称
*/
private String serveCreateUserName;
/**
* 应用作品是否显示
*/
private Boolean serveShowState;
private String serveType;
}
......@@ -666,7 +666,7 @@ public interface BookBiz {
BookDto getBaseById4Erp(Long bookId,Long channelId,Long adviserId);
List<BookGroupDTO> getQrcode4Erp(Long bookId, Long channelId, Long adviserId);
List<BookGroupDTO> getQrcode4Erp(Long bookId, Long channelId, Long adviserId, Long projectId);
PageBeanNew<QrcodeServeDto> getQrcodeDetail4Erp(Long sceneId, Long bookGroupId, Long channelId, Integer currentPage, Integer numPerPage);
......@@ -790,5 +790,18 @@ public interface BookBiz {
*/
void syncRelateDataToRays(SyncRelateDataToRaysVO vo);
/**
* 更新封面
*/
void updateCoverImg(SyncRelateDataToRaysVO vo);
boolean checkIsBookId(Long isbnNumber);
/**
* 编辑图书
* @author:zhuyajie
* @date:2021/7/28 11:21
* * @param null
*/
PageBean listAdviserBook(AviserBookInfoParam aviserBookInfoParam);
}
......@@ -8,7 +8,6 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
......@@ -740,6 +739,8 @@ public class BookBizImpl implements BookBiz {
bookSet.setOpenRobotProcess(new ArrayList<>(Arrays.asList(bookDto)));
// 尝试加载ERP单号
bookSet.setErpNumbers(bookDto);
// 尝试加载创建人(ERP运维人员)
bookSet.setUploadUserId(bookDto);
return bookDto;
}
......@@ -1690,16 +1691,40 @@ public class BookBizImpl implements BookBiz {
}
// 调用erp接口进行关联
ProjectRelateVO vo = new ProjectRelateVO();
vo.setOrderSheetId(dto.getId());
vo.setProjectId(dto.getProjectId());
vo.setRaysBookId(book.getBookId());
vo.setServeIds(CollUtil.toList(book.getBookId()));
vo.setRaysAdviserId(book.getCreatedUser());
vo.setRaysChannelId(book.getChannelId());
vo.setCoverImg(book.getCoverImg());
vo.setUploadUserId(book.getUploadUserId());
vo.setServeType(book.getServeType());
Integer changeCount = erpConsr.relateRaysBook(vo);
if(changeCount == null && changeCount <= 0){
LOGGER.info("relationBook4Erp:关联ERP项目可能未成功;book:" + book);
}
}
/**
* 更新关联书刊信息
*/
private void updateRelationBook(Book book){
if(book == null || book.getBookId() == null || book.getLastModifiedUser() == null || book.getChannelId() == null
|| !"BOOK".equalsIgnoreCase(book.getServeType()) || book.getUploadUserId() == null){
return;
}
// 调用erp接口进行关联
ProjectRelateVO vo = new ProjectRelateVO();
vo.setRaysBookId(book.getBookId());
vo.setServeIds(CollUtil.toList(book.getBookId()));
vo.setRaysAdviserId(book.getLastModifiedUser());
vo.setRaysChannelId(book.getChannelId());
vo.setCoverImg(book.getCoverImg());
vo.setUploadUserId(book.getUploadUserId());
vo.setServeType(book.getServeType());
erpConsr.updateRelationBook(vo);
}
/**
* 修改图书与图书类型
......@@ -1727,6 +1752,8 @@ public class BookBizImpl implements BookBiz {
LOGGER.info("修改图书基本信息与类型[END]");
//更新超级搜索es
searchProducer.updateBook(book);
// 更新ERP运维人员、封面图
this.updateRelationBook(book);
}
/**
......@@ -2675,7 +2702,7 @@ public class BookBizImpl implements BookBiz {
List<ESBookAndAdviser> esBookAndAdvisers = esPage.getContent();
if (ListUtils.isEmpty(esBookAndAdvisers)) {
return new PageBeanNew<>(currentPage,numPerPage,0,new ArrayList<>());
return new PageBeanNew<>(currentPage,numPerPage, (int)esPage.getTotalElements(),new ArrayList<>());
}
List<BookDto> bookDtos = changeToBookDto(esBookAndAdvisers);
fillOtherBookInfo(bookDtos);
......@@ -2758,11 +2785,15 @@ public class BookBizImpl implements BookBiz {
if (!MapUtils.isEmpty(agentNameMap) && agentNameMap.containsKey(agentId)) {
bookDto.setAgentName(agentNameMap.get(agentId));
}
ProjectUploaderDTO projectUploadUser = erpConsr.getProjectUploadUser(bookId);
bookDto.setUploadUserName(projectUploadUser == null ? null : projectUploadUser.getUploadUserName());
} else {
// 从redis获取书籍信息
bookDto = bookCache.getBookToRedis(bookId);
if (null == bookDto) {
bookDto = bookDao.getBaseById(bookId);
ProjectUploaderDTO projectUploadUser = erpConsr.getProjectUploadUser(bookId);
bookDto.setUploadUserName(projectUploadUser == null ? null : projectUploadUser.getUploadUserName());
// 将数据存入redis
bookCache.setBookToRedis(bookDto);
}
......@@ -3101,7 +3132,7 @@ public class BookBizImpl implements BookBiz {
}
@Override
public List<BookGroupDTO> getQrcode4Erp(Long bookId, Long channelId, Long adviserId) {
public List<BookGroupDTO> getQrcode4Erp(Long bookId, Long channelId, Long adviserId, Long projectId) {
if(bookId == null || channelId == null || adviserId == null){
return null;
}
......@@ -3122,9 +3153,24 @@ public class BookBizImpl implements BookBiz {
this.mergeQrcodeData(qrcodeSceneDtos, bookGroupList);
// 填充书刊标签
this.setBookGroupLabel(bookGroupList);
// 设置创建人(ERP运维人员)
this.setProjectUploadUser(bookGroupList, projectId);
return bookGroupList;
}
private void setProjectUploadUser(List<BookGroupDTO> bookGroupList, Long projectId) {
if(CollUtil.isEmpty(bookGroupList) || projectId == null){
return;
}
Map<Long, String> uploadMap = erpConsr.getQrcodeUploadUserByProjectId(projectId);
for (BookGroupDTO bookGroupDTO : bookGroupList) {
if(bookGroupDTO.getSceneId() == null){
continue;
}
bookGroupDTO.setUploadUserName(uploadMap.get(bookGroupDTO.getSceneId()));
}
}
private void mergeQrcodeData(List<QrcodeSceneDto> qrcodeSceneDtos, List<BookGroupDTO> bookGroupList) {
BookGroupDTO tempBookGroupDTO;
for (QrcodeSceneDto qrcodeSceneDto : qrcodeSceneDtos) {
......@@ -4297,7 +4343,38 @@ public class BookBizImpl implements BookBiz {
}
@Override
public void updateCoverImg(SyncRelateDataToRaysVO vo){
if(vo == null || vo.getBookId() == null || StrUtil.isBlank(vo.getCoverImg())){
throw new BizException(BizException.PARAM_DELETION.getCode(), "参数不能为空");
}
BookDto bookDto = this.getBaseById(vo.getBookId());
Book book = new Book();
book.setBookId(vo.getBookId().longValue());
book.setCoverImg(vo.getCoverImg());
book.setLastModifiedUser(bookDto.getLastModifiedUser());
this.updateCoverImg(book);
}
@Override
public boolean checkIsBookId(Long isbnNumber) {
return bookDao.checkIsBookId(isbnNumber);
}
@Override
public PageBean listAdviserBook(AviserBookInfoParam aviserBookInfoParam) {
Integer currentPage = null == aviserBookInfoParam.getCurrentPage()?0:aviserBookInfoParam.getCurrentPage();
Integer numPerPage = null == aviserBookInfoParam.getNumPerPage()?10:aviserBookInfoParam.getNumPerPage();
PageBean pageBean = bookDao.listPage(new PageParam(currentPage,numPerPage), new HashMap<>(), "listBookClassify", "listBookClassifyCount");
if (pageBean != null) {
// 设置书刊分类
bookSet.setTemplateNameNew(pageBean.getRecordList());
// 设置出版社名称
bookSet.setAgentId4BookDto(pageBean.getRecordList());
//标签
bookSet.setProDepPurLabelNameList(pageBean.getRecordList());
} else {
pageBean = new PageBean();
}
return pageBean;
}
}
......@@ -1231,8 +1231,9 @@ public class BookFacadeImpl implements BookFacade {
@GetMapping("getQrcode4Erp")
public ResponseDto<?> getQrcode4Erp(@RequestParam(value = "bookId") Long bookId,
@RequestParam(value = "channelId") Long channelId,
@RequestParam(value = "adviserId") Long adviserId ) {
return new ResponseDto<>(bookBiz.getQrcode4Erp(bookId, channelId, adviserId));
@RequestParam(value = "adviserId") Long adviserId,
@RequestParam(value = "projectId", required = false) Long projectId) {
return new ResponseDto<>(bookBiz.getQrcode4Erp(bookId, channelId, adviserId, projectId));
}
@ApiOperation("获取二维码下的应用作品(ERP)")
......@@ -1387,4 +1388,11 @@ public class BookFacadeImpl implements BookFacade {
bookBiz.syncRelateDataToRays(vo);
return new ResponseDto<>();
}
@ApiOperation("更新封面")
@PostMapping("updateCoverImg4Erp")
public ResponseDto<?> updateCoverImg4Erp(@RequestBody SyncRelateDataToRaysVO vo) {
bookBiz.updateCoverImg(vo);
return new ResponseDto<>();
}
}
......@@ -7,6 +7,7 @@ import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.biz.BookLabelBiz;
import com.pcloud.book.book.biz.BookQrcodeWxworkBiz;
import com.pcloud.book.book.biz.BookMinimumSupportBiz;
import com.pcloud.book.book.dto.AviserBookInfoParam;
import com.pcloud.book.book.dto.BookAdviserUpdateTimeDTO;
import com.pcloud.book.book.dto.BookDetialDTO;
import com.pcloud.book.book.dto.BookDto;
......@@ -18,6 +19,7 @@ import com.pcloud.book.book.dto.BookMinimumSupportDTO4Service;
import com.pcloud.book.book.service.BookService;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.utils.ResponseHandleUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -282,4 +284,10 @@ public class BookServiceImpl implements BookService {
@RequestParam(value = "bookGroupId", required = false) Long bookGroupId) {
return ResponseHandleUtil.toResponse(bookQrcodeWxworkBiz.getWxworkGroupQrcodeIdsExceptBook(sceneId, bookGroupId));
}
@Override
@PostMapping("listAdviserBook")
public ResponseEntity<ResponseDto<PageBean>> listAdviserBook(@RequestBody AviserBookInfoParam aviserBookInfoParam) {
return ResponseHandleUtil.toResponse(bookBiz.listAdviserBook(aviserBookInfoParam));
}
}
......@@ -29,6 +29,7 @@ import com.pcloud.book.book.dto.BookFreezeDto;
import com.pcloud.book.book.dto.BookProductDto;
import com.pcloud.book.book.dto.BookResourceDto;
import com.pcloud.book.book.dto.BookTypeDto;
import com.pcloud.book.book.dto.ProjectUploaderDTO;
import com.pcloud.book.book.entity.BookDefendant;
import com.pcloud.book.book.entity.BookLabel;
import com.pcloud.book.book.tools.BookTools;
......@@ -2047,4 +2048,28 @@ public class BookSet {
List<String> erpNumbers = erpConsr.getErpNumbers(bookDto.getBookId(), bookDto.getChannelId(), bookDto.getAdviserId());
bookDto.setErpNumbers(erpNumbers);
}
public void setUploadUserId(BookDto bookDto){
if(bookDto == null || bookDto.getBookId() == null || bookDto.getChannelId() == null || bookDto.getAdviserId() == null){
return;
}
ProjectUploaderDTO projectUploadUser = erpConsr.getProjectUploadUser(bookDto.getBookId());
if(projectUploadUser == null){
return;
}
bookDto.setUploadUserId(projectUploadUser.getUploadUserId());
bookDto.setUploadUserName(projectUploadUser.getUploadUserName());
}
public void setProDepPurLabelNameList(List<Object> objects) {
if(ListUtils.isEmpty(objects)) {
return;
}
List<BookDto> bookDtos = new ArrayList<>();
for (Object object : objects) {
BookDto bookDto = (BookDto) object;
bookDtos.add(bookDto);
}
this.setProDepPurLabelNames(bookDtos);
}
}
......@@ -70,4 +70,8 @@ public class BookQrcodeWxworkResponseVO extends BaseDto {
*/
private String url;
/**
* 群分类
*/
private String classifyName;
}
......@@ -11,6 +11,7 @@ import com.pcloud.book.book.dto.ErpBookApprovalDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.dto.ProjectOrderSheetDTO;
import com.pcloud.book.book.dto.ProjectRelateVO;
import com.pcloud.book.book.dto.ProjectUploaderDTO;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
......@@ -326,4 +327,55 @@ public class ErpConsr {
throw new BookBizException(BookBizException.INVOKE_CONTENT_ERROR, "关联RAYS书刊失败~!");
}
}
@ParamLog("更新RAYS书刊关联的尽调单信息")
public void updateRelationBook(ProjectRelateVO vo) throws BizException {
try {
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
HttpResponse response = HttpUtils.doPost(domain, "/erp/project4Third/updateRelationBook", "POST", headers, new HashMap<>(), JSONObject.toJSONString(vo));
String entityString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONObject.parseObject(entityString);
if(jsonObject.getInteger("errCode") != 0){
throw new BizException(jsonObject.getString("message"));
}
} catch (Exception e){
LOGGER.error("关联RAYS书刊[project4Third.relateRaysBook]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_CONTENT_ERROR, "关联RAYS书刊失败~!");
}
}
public ProjectUploaderDTO getProjectUploadUser(Long bookId) {
Map<String, String> querys = new HashMap<>();
querys.put("bookId", bookId.toString());
try {
HttpResponse response = HttpUtils.doGet(domain, "/erp/project4Third/getProjectUploadUser", "GET", new HashMap<>(), querys);
String entityString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONObject.parseObject(entityString);
if(jsonObject.getInteger("errCode") != 0){
throw new BizException(jsonObject.getString("message"));
}
return JSONObject.parseObject(jsonObject.getString("data"), ProjectUploaderDTO.class);
} catch (Exception e){
LOGGER.error("根据isbn获取erp书刊信息[project4Third.getByErpNumber]:" + e.getMessage(), e);
}
return null;
}
public Map<Long, String> getQrcodeUploadUserByProjectId(Long projectId) {
Map<String, String> querys = new HashMap<>();
querys.put("projectId", projectId.toString());
try {
HttpResponse response = HttpUtils.doGet(domain, "/erp/project4Third/getQrcodeUploadUserByProjectId", "GET", new HashMap<>(), querys);
String entityString = EntityUtils.toString(response.getEntity());
JSONObject jsonObject = JSONObject.parseObject(entityString);
if(jsonObject.getInteger("errCode") != 0){
throw new BizException(jsonObject.getString("message"));
}
return JSONObject.parseObject(jsonObject.getString("data"), new TypeReference<Map<Long, String>>(){});
} catch (Exception e){
LOGGER.error("根据isbn获取erp书刊信息[project4Third.getByErpNumber]:" + e.getMessage(), e);
}
return new HashMap<>();
}
}
......@@ -3,6 +3,7 @@ package com.pcloud.book.cultivate.biz;
import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyPageDTO;
import com.pcloud.book.cultivate.dto.NotifySendDTO;
import com.pcloud.book.cultivate.dto.SearchNotifyDTO;
import com.pcloud.book.cultivate.dto.SearchSendUserDTO;
import com.pcloud.book.cultivate.dto.SendUserDetailDto;
......@@ -44,4 +45,6 @@ public interface CultivateNotifyBiz {
Long createNotify4App(AppletNotifySendDTO newSendDTO);
void clearExpireNotifies();
Long sendNotifyToUser(NotifySendDTO notifySendDTO);
}
......@@ -30,6 +30,8 @@ import com.pcloud.book.cultivate.dao.CultivateNotifySendDao;
import com.pcloud.book.cultivate.dto.CultivateNotifyDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyPageDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyTypeDTO;
import com.pcloud.book.cultivate.dto.NotifyItemDTO;
import com.pcloud.book.cultivate.dto.NotifySendDTO;
import com.pcloud.book.cultivate.dto.SearchNotifyDTO;
import com.pcloud.book.cultivate.dto.SearchSendUserDTO;
import com.pcloud.book.cultivate.dto.WechatUserDTO;
......@@ -45,6 +47,7 @@ import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.dto.AppletTemplateMessageDto;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ServeLinkUtils;
......@@ -622,4 +625,36 @@ public class CultivateNotifyBizImpl implements CultivateNotifyBiz {
public void clearExpireNotifies() {
cultivateNotifySendDao.clearExpireNotifies();
}
@Override
public Long sendNotifyToUser(NotifySendDTO notifySendDTO) {
if (null == notifySendDTO || null == notifySendDTO.getSendType() || null == notifySendDTO.getMessageType() || StringUtil.isEmpty(notifySendDTO.getTitle()) || null == notifySendDTO.getWechatUserId()) {
throw new BookBizException(BookBizException.PARAM_IS_NULL,"新建站内信消息参数为空");
}
CultivateNotify cultivateNotify=new CultivateNotify();
cultivateNotify.setMessageType(notifySendDTO.getMessageType());
cultivateNotify.setTitle(notifySendDTO.getTitle());
cultivateNotify.setSendType(notifySendDTO.getSendType());
cultivateNotify.setAgentId(0L);
cultivateNotifyDao.insert(cultivateNotify);
Long messageId = cultivateNotify.getMessageId();
if(!ListUtils.isEmpty(notifySendDTO.getNotifyItemDTOS())) {
List<CultivateNotifyItem> items = new ArrayList<>();
for (NotifyItemDTO itemDTO: notifySendDTO.getNotifyItemDTOS()){
CultivateNotifyItem item = new CultivateNotifyItem();
BeanUtils.copyProperties(itemDTO,item);
item.setMessageId(messageId);
items.add(item);
}
cultivateNotifyItemDao.insert(items);
}
//发给用户
CultivateNotifySend notifySend = new CultivateNotifySend();
notifySend.setMessageId(messageId);
notifySend.setWechatUserId(notifySendDTO.getWechatUserId());
notifySend.setSendType(notifySendDTO.getSendType());
notifySend.setMessageType(notifySendDTO.getMessageType());
cultivateNotifySendDao.insert(notifySend);
return messageId;
}
}
package com.pcloud.book.cultivate.service.impl;
import com.pcloud.book.cultivate.biz.CultivateNotifyBiz;
import com.pcloud.book.cultivate.dto.NotifySendDTO;
import com.pcloud.book.cultivate.entity.AppletNotifySendDTO;
import com.pcloud.book.cultivate.entity.CultivateNotifySend;
import com.pcloud.book.cultivate.service.CultivateNotifyService;
......@@ -11,6 +12,7 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
......@@ -52,4 +54,10 @@ public class CultivateNotifyServiceImpl implements CultivateNotifyService {
public ResponseEntity<ResponseDto<Long>> createNotify4App(@RequestBody AppletNotifySendDTO newSendDTO) throws BizException{
return ResponseHandleUtil.toResponse(cultivateNotifyBiz.createNotify4App(newSendDTO));
}
@Override
@PostMapping("sendNotifyToUser")
public ResponseEntity<ResponseDto<Long>> sendNotifyToUser(@RequestBody NotifySendDTO notifySendDTO) {
return ResponseHandleUtil.toResponse(cultivateNotifyBiz.sendNotifyToUser(notifySendDTO));
}
}
......@@ -10,6 +10,7 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.ResourcePage;
import com.pcloud.book.group.entity.ResourcePageCollect;
import com.pcloud.book.group.entity.ResourcePageTool;
import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.group.vo.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageItemVO;
import com.pcloud.book.group.vo.ResourcePageOneServe;
......@@ -360,4 +361,36 @@ public interface ResourcePageBiz {
* * @param null
*/
void updateBookId(Long bookId, Long sceneId);
/**
* 平台端-资源推荐管理-热门课程
* @author:zhuyajie
* @date:2021/7/9 15:03
* * @param null
*/
PageBeanNew listRecommendCourse4Pcloud(Integer currentPage, Integer numPerPage, String query);
/**
* 平台端-资源推荐管理-教辅、育儿宝库
* @author:zhuyajie
* @date:2021/7/9 17:41
* * @param null
*/
PageBeanNew listRecommendResource4Pcloud(Integer currentPage, Integer numPerPage, String query, Integer sourceFrom);
/**
* 平台端-资源推荐管理-修改
* @author:zhuyajie
* @date:2021/7/9 18:05
* * @param null
*/
void updateRecommendResource4Pcloud(ResourceRecomManage resourceRecomManage);
/**
* 查平台端应用作品修改记录
* @author:zhuyajie
* @date:2021/7/19 18:20
* * @param null
*/
Map<Long, ResourceRecomManage> mapResourceRecomManage(List<Long> serveIds, String serveType, Integer sourceFrom);
}
package com.pcloud.book.group.biz.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.qrcode.QrCodeException;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.http.HttpUtil;
import com.pcloud.advertising.advertising.dto.AdvertisingSpaceDTO;
import com.pcloud.advertising.advertising.dto.AdvertisingSpaceItemDTO;
import com.pcloud.analysisengine.browse.dto.BrowseRecordStatisticDTO;
import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.applet.biz.AppletBooklistBiz;
import com.pcloud.book.applet.biz.AppletGroupSearchRecordBiz;
import com.pcloud.book.applet.biz.AppletRecordAggrStatisBiz;
import com.pcloud.book.applet.biz.AppletThirdResourcesBiz;
import com.pcloud.book.applet.dto.AppletGroupStatementDTO;
import com.pcloud.book.applet.dto.AppletOuterBooklistDTO;
......@@ -21,8 +15,8 @@ import com.pcloud.book.applet.entity.AppletThirdResources;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.dto.RaysSceneCatalogDto;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.enums.WxworkQrcodeType;
import com.pcloud.book.book.vo.BookLinkVO;
import com.pcloud.book.book.vo.response.BookQrcodeWxworkResponseVO;
......@@ -37,6 +31,7 @@ import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.ChannelConsr;
import com.pcloud.book.consumer.user.MerchantConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.group.biz.BookGroupBiz;
......@@ -50,6 +45,7 @@ import com.pcloud.book.group.dao.ResourcePageCourseDao;
import com.pcloud.book.group.dao.ResourcePageDao;
import com.pcloud.book.group.dao.ResourcePageItemDao;
import com.pcloud.book.group.dao.ResourcePageToolDao;
import com.pcloud.book.group.dao.ResourceRecomManageDao;
import com.pcloud.book.group.dto.AddBookGroupServeDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO;
......@@ -66,6 +62,7 @@ import com.pcloud.book.group.entity.ResourcePageColumn;
import com.pcloud.book.group.entity.ResourcePageCourse;
import com.pcloud.book.group.entity.ResourcePageItem;
import com.pcloud.book.group.entity.ResourcePageTool;
import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageItemVO;
......@@ -99,11 +96,11 @@ import com.pcloud.common.utils.QrcodeUtils;
import com.pcloud.common.utils.ServeLinkUtils;
import com.pcloud.common.utils.UUIDUitl;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.userlabel.dto.UserGradeLabelIdDTO;
import com.pcloud.message.common.enums.YesNoEnums;
import com.pcloud.readercenter.userlabel.dto.UserGradeLabelIdDTO;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductLabelDto;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import lombok.extern.slf4j.Slf4j;
import com.pcloud.wechatgroup.wxwork.dto.WxworkGroupQrcodeBaseDTO;
import org.apache.commons.collections.CollectionUtils;
......@@ -125,6 +122,15 @@ import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.qrcode.QrCodeException;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.http.HttpUtil;
import lombok.extern.slf4j.Slf4j;
/**
* @ClassName com.pcloud.book.group.biz.impl.ResourcePageBizImpl
* @Author zhuyajie
......@@ -189,9 +195,13 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@Autowired
private ChannelConsr channelConsr;
@Autowired
private LabelConsr labelConsr;
@Autowired
private AppletGroupSearchRecordBiz appletGroupSearchRecordBiz;
@Autowired
private MerchantConsr merchantConsr;
@Autowired
private AppletRecordAggrStatisBiz appletRecordAggrStatisBiz;
@Autowired
private ResourceRecomManageDao resourceRecomManageDao;
@Override
public Long updateResourcePage(UpdateResourcePageVO updateResourcePageVO) {
......@@ -786,6 +796,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
responseVO.setGroupName(wxworkGroupQrcodeBaseDTO.getGroupQrcodeName());
responseVO.setGroupDesc(wxworkGroupQrcodeBaseDTO.getInvitationRays());
responseVO.setUrl(wxworkGroupQrcodeBaseDTO.getUrl());
responseVO.setClassifyName(wxworkGroupQrcodeBaseDTO.getClassifyName());
//头像列表从缓存里取
List<String> headUrlList = appletGroupSearchRecordBiz.getHeadUrlList(9, itemVO.getServeId());
responseVO.setHeadUrlList(headUrlList);
......@@ -1718,6 +1729,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
Long gradeLabel = null == userGradeLabelIdDTO? 11L : userGradeLabelIdDTO.getLabelId();
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("userGradeLabelId", gradeLabel);
paramMap.put("sourceFrom", ResourcePageConstants.RecommendResourceFromEnum.HOT_COURSE.getCode());
PageBeanNew<ResourcePageCourseDTO> pageBeanNew = resourcePageCourseDao.listPageNew(new PageParam(currentPage,numPerPage), paramMap,"listCourseByGradeLabelId");
if (ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return new PageBeanNew<>(currentPage,numPerPage,pageBeanNew.getTotalCount(),new ArrayList<>());
......@@ -1725,7 +1737,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
List<ResourcePageCourseDTO> dtos = pageBeanNew.getRecordList();
List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>();
List<Long> labelIds = new ArrayList<>();
for (ResourcePageCourseDTO dto : dtos) {
Long serveId = dto.getServeId();
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(dto.getServeType()) && !appIds.contains(serveId)) {
......@@ -1734,30 +1745,24 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(dto.getServeType()) && !productIds.contains(serveId)) {
productIds.add(serveId);
}
if (null != dto.getProLabelId() && !labelIds.contains(dto.getProLabelId())) {
labelIds.add(dto.getProLabelId());
}
if (null != dto.getDepLabelId() && !labelIds.contains(dto.getDepLabelId())) {
labelIds.add(dto.getDepLabelId());
}
if (null != dto.getPurLabelId() && !labelIds.contains(dto.getPurLabelId())) {
labelIds.add(dto.getPurLabelId());
}
}
Map<Long, AppDto> appDtoMap = appConsr.mapBaseByIds(appIds);
Map<Long, ProductDto> productDtoMap = productConsr.getProBasesByIds(productIds);
Long accountSettingId = BookProps.getOperateOfficalId();
AccountSetting accountSetting = channelConsr.getAppInfo(accountSettingId);
Map<Long, String> labelMap = labelConsr.getLabelName(labelIds);
for (ResourcePageCourseDTO courseDTO : dtos) {
Long serveId = courseDTO.getServeId();
String serveType = courseDTO.getServeType();
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType)
&& !MapUtils.isEmpty(appDtoMap) && appDtoMap.containsKey(serveId)) {
AppDto appDto = appDtoMap.get(courseDTO.getServeId());
courseDTO.setServeName(appDto.getTitle());
courseDTO.setServePic(appDto.getSquareImg());
if (StringUtil.isEmpty(courseDTO.getServePic())) {
courseDTO.setServePic(appDto.getSquareImg());
}
courseDTO.setTransverseImg(appDto.getTransverseImg());
courseDTO.setProLabelName(appDto.getProLabelName());
courseDTO.setDepLabelName(appDto.getDepLabelName());
courseDTO.setPurLabelName(appDto.getPurLabelName());
//跳转链接
String turnUrl = ServeLinkUtils.getCompleteLink("APP", appDto.getTypeCode(), appDto.getAppId().toString(),
appDto.getSceneCode(), appDto.getChannelId().toString(), appDto.getCreatedUser().toString(), null, accountSettingId.toString(),
......@@ -1768,10 +1773,17 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} else if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType)
&& !MapUtils.isEmpty(productDtoMap) && productDtoMap.containsKey(serveId)) {
ProductDto productDto = productDtoMap.get(courseDTO.getServeId());
courseDTO.setServeName(productDto.getProductName());
courseDTO.setServePic(productDto.getCoverImg());
if (StringUtil.isEmpty(courseDTO.getServePic())) {
courseDTO.setServePic(productDto.getCoverImg());
}
courseDTO.setTransverseImg(StringUtil.isEmpty(productDto.getPicture1())?
getDefaultBigPic(courseDTO.getTypeCode()): productDto.getPicture1());
List<ProductLabelDto> labelDtos = productDto.getProductLabels();
if (!ListUtils.isEmpty(labelDtos)) {
courseDTO.setProLabelName(labelDtos.get(0).getProLabelName());
courseDTO.setDepLabelName(labelDtos.get(0).getDepLabelName());
courseDTO.setPurLabelName(labelDtos.get(0).getPurLabelName());
}
//跳转链接
String turnUrl = ServeLinkUtils.getCompleteLink("PRODUCT", courseDTO.getTypeCode(), productDto.getProductId().toString(),
productDto.getProductSceneCode(), courseDTO.getChannelId().toString(), null, null, accountSettingId.toString(),
......@@ -1779,17 +1791,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
null != accountSetting.getRandom() ? accountSetting.getRandom().toString() : null);
courseDTO.setResultUrl(turnUrl);
}
if (!MapUtils.isEmpty(labelMap)) {
if (null != courseDTO.getProLabelId() && labelMap.containsKey(courseDTO.getProLabelId())) {
courseDTO.setProLabelName(labelMap.get(courseDTO.getProLabelId()));
}
if (null != courseDTO.getDepLabelId() && labelMap.containsKey(courseDTO.getDepLabelId())) {
courseDTO.setDepLabelName(labelMap.get(courseDTO.getDepLabelId()));
}
if (null != courseDTO.getPurLabelId() && labelMap.containsKey(courseDTO.getPurLabelId())) {
courseDTO.setPurLabelName(labelMap.get(courseDTO.getPurLabelId()));
}
}
}
return pageBeanNew;
}
......@@ -1911,4 +1912,122 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
bookGroupDao.updateBookIdById(bookGroupId, bookId);
}
}
@Override
public PageBeanNew listRecommendCourse4Pcloud(Integer currentPage, Integer numPerPage, String query) {
//热门课程
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("query", query);
paramMap.put("sourceFrom", ResourcePageConstants.RecommendResourceFromEnum.HOT_COURSE.getCode());
PageBeanNew<ResourcePageCourseDTO> pageBeanNew = resourcePageCourseDao.listPageNew(new PageParam(currentPage,numPerPage), paramMap,"listCourse4Pcloud");
if (ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return pageBeanNew;
}
fillHotCourse4Pcloud(pageBeanNew.getRecordList());
return pageBeanNew;
}
@Override
public PageBeanNew listRecommendResource4Pcloud(Integer currentPage, Integer numPerPage, String query, Integer sourceFrom) {
if (null == sourceFrom) {
throw new BookBizException(BookBizException.PARAM_IS_NULL,"参数缺失");
}
if (ListUtils.isEmpty(ResourcePageConstants.RecommendResourceFromEnum.getSourceTypesByCode(sourceFrom))) {
throw new BookBizException(BookBizException.PARAM_IS_NULL,"参数有误");
}
//育儿宝库/搜教辅资料
PageBeanNew pageBeanNew = appletRecordAggrStatisBiz.getResource4H54Pcloud(currentPage, numPerPage, query, sourceFrom);
return pageBeanNew;
}
@Override
public void updateRecommendResource4Pcloud(ResourceRecomManage resourceRecomManage) {
if (null == resourceRecomManage || null == resourceRecomManage.getSourceFrom()
|| null == resourceRecomManage.getServeId()
|| StringUtil.isEmpty(resourceRecomManage.getServeType())
|| null == resourceRecomManage.getTypeCode()) {
throw new BookBizException(BookBizException.PARAM_IS_NULL,"参数缺失");
}
resourceRecomManageDao.deleteByServe(resourceRecomManage.getServeId(), resourceRecomManage.getServeType(),
resourceRecomManage.getSourceFrom());
if (null == resourceRecomManage.getShowState()) {
resourceRecomManage.setShowState(1);
}
resourceRecomManageDao.insert(resourceRecomManage);
}
@Override
public Map<Long, ResourceRecomManage> mapResourceRecomManage(List<Long> serveIds, String serveType, Integer sourceFrom) {
if (ListUtils.isEmpty(serveIds) || StringUtil.isEmpty(serveType) || null == sourceFrom) {
return new HashMap<>();
}
Map<Long, ResourceRecomManage> manageMap = resourceRecomManageDao.mapResourceRecomManage(serveIds, serveType, sourceFrom);
return manageMap;
}
/**
* 热门课程
* @author:zhuyajie
* @date:2021/7/9 15:30
* * @param null
*/
private void fillHotCourse4Pcloud(List<ResourcePageCourseDTO> recordList) {
if (ListUtils.isEmpty(recordList)) {
return;
}
List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>();
for (ResourcePageCourseDTO dto : recordList) {
Long serveId = dto.getServeId();
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(dto.getServeType()) && !appIds.contains(serveId)) {
appIds.add(serveId);
}
if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(dto.getServeType()) && !productIds.contains(serveId)) {
productIds.add(serveId);
}
}
Map<Long, AppDto> appDtoMap = appConsr.mapBaseByIds(appIds);
List<Long> adviserIds = MapUtils.isEmpty(appDtoMap)?new ArrayList<>():appDtoMap.values().stream().map(AppDto::getCreatedUser).distinct().collect(Collectors.toList());
Map<Long, String> adviserMap = adviserConsr.getNames(adviserIds);
Map<Long, ProductDto> productDtoMap = productConsr.getProBasesByIds(productIds);
List<Long> merchantIds = MapUtils.isEmpty(productDtoMap)?new ArrayList<>():productDtoMap.values().stream().map(ProductDto::getCreatedUser).distinct().collect(Collectors.toList());
Map<Long, String> merchantMap = merchantConsr.getNamesByIdList(merchantIds);
for (ResourcePageCourseDTO courseDTO : recordList) {
Long serveId = courseDTO.getServeId();
String serveType = courseDTO.getServeType();
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType)
&& !MapUtils.isEmpty(appDtoMap) && appDtoMap.containsKey(serveId)) {
AppDto appDto = appDtoMap.get(serveId);
//平台端没给封面,取原有封面
if (StringUtil.isEmpty(courseDTO.getServePic())) {
courseDTO.setServePic(appDto.getSquareImg());
}
courseDTO.setProLabelName(appDto.getProLabelName());
courseDTO.setDepLabelName(appDto.getDepLabelName());
courseDTO.setPurLabelName(appDto.getPurLabelName());
courseDTO.setServeCreateUserId(appDto.getCreatedUser());
//应用创建人名称
if (!MapUtils.isEmpty(adviserMap) && adviserMap.containsKey(appDto.getCreatedUser())) {
courseDTO.setServeCreateUserName(adviserMap.get(appDto.getCreatedUser()));
}
} else if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType)
&& !MapUtils.isEmpty(productDtoMap) && productDtoMap.containsKey(serveId)) {
ProductDto productDto = productDtoMap.get(serveId);
if (StringUtil.isEmpty(courseDTO.getServePic())) {
courseDTO.setServePic(productDto.getCoverImg());
}
List<ProductLabelDto> labelDtos = productDto.getProductLabels();
if (!ListUtils.isEmpty(labelDtos)) {
courseDTO.setProLabelName(labelDtos.get(0).getProLabelName());
courseDTO.setDepLabelName(labelDtos.get(0).getDepLabelName());
courseDTO.setPurLabelName(labelDtos.get(0).getPurLabelName());
}
courseDTO.setServeCreateUserId(productDto.getCreatedUser());
if (!MapUtils.isEmpty(merchantMap) && merchantMap.containsKey(productDto.getCreatedUser())) {
courseDTO.setServeCreateUserName(merchantMap.get(productDto.getCreatedUser()));
}
}
}
}
}
......@@ -3,6 +3,9 @@ package com.pcloud.book.group.constant;
import com.pcloud.book.applet.contants.AppletResourceApplyConstants;
import com.pcloud.common.constant.CacheConstant;
import java.util.Arrays;
import java.util.List;
/**
* @ClassName com.pcloud.book.group.constant.ResourcePageConstants
* @Author zhuyajie
......@@ -278,4 +281,52 @@ public class ResourcePageConstants {
}
}
/**
* 资源推荐管理-类型
* @author:zhuyajie
* @date:2021/7/9 15:02
* * @param null
*/
public enum RecommendResourceFromEnum{
//(1育儿宝库2教辅资料3热门课程)
CHILD_RESOURCE(1, new Integer[]{ResourceSourceTypeEnum.CHILD.getCode()}),
TEACHE_RESOURCE(2, new Integer[]{
ResourceSourceTypeEnum.PAPER.getCode(),ResourceSourceTypeEnum.PDF.getCode(),
ResourceSourceTypeEnum.ARTICLE.getCode(), ResourceSourceTypeEnum.KNOWLEDGE.getCode()
}),
HOT_COURSE(3,new Integer[]{});
private Integer code;
private Integer[] sourceTypes;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public Integer[] getSourceTypes() {
return sourceTypes;
}
public void setSourceTypes(Integer[] sourceTypes) {
this.sourceTypes = sourceTypes;
}
RecommendResourceFromEnum(Integer code, Integer[] sourceTypes) {
this.code = code;
this.sourceTypes = sourceTypes;
}
public static List<Integer> getSourceTypesByCode(Integer code) {
for (RecommendResourceFromEnum resourceFromEnum:RecommendResourceFromEnum.values()){
if (resourceFromEnum.getCode().equals(code)){
return Arrays.asList(resourceFromEnum.getSourceTypes());
}
}
return null;
}
}
}
package com.pcloud.book.group.dao;
import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
import java.util.Map;
/**
* 资源页推荐资源管理(ResourceRecomManage)表数据库访问层
*
* @author makejava
* @since 2021-07-09 14:39:21
*/
public interface ResourceRecomManageDao extends BaseDao<ResourceRecomManage>{
void deleteByServe(Long serveId, String serveType, Integer sourceFrom);
Map<Long,ResourceRecomManage> mapResourceRecomManage(List<Long> serveIds, String serveType, Integer sourceFrom);
}
\ No newline at end of file
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.dao.ResourceRecomManageDao;
import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @ClassName com.pcloud.book.group.dao.impl.ResourceRecomManageDaoImpl
* @Author zhuyajie
* @Description 推荐资源管理
* @Date 2021/7/9 14:48
* @Version 1.0
**/
@Component
public class ResourceRecomManageDaoImpl extends BaseDaoImpl<ResourceRecomManage> implements ResourceRecomManageDao {
@Override
public void deleteByServe(Long serveId, String serveType, Integer sourceFrom) {
Map<String, Object> map = new HashMap<>();
map.put("serveId", serveId);
map.put("sourceFrom", sourceFrom);
map.put("serveType", serveType);
getSessionTemplate().delete(getStatement("deleteByServe"), map);
}
@Override
public Map<Long, ResourceRecomManage> mapResourceRecomManage(List<Long> serveIds, String serveType, Integer sourceFrom) {
Map<String, Object> map = new HashMap<>();
map.put("serveIds", serveIds);
map.put("sourceFrom", sourceFrom);
map.put("serveType", serveType);
return getSessionTemplate().selectMap(getStatement("mapResourceRecomManage"), map, "serveId");
}
}
......@@ -354,6 +354,19 @@ public class BookGroupDTO extends BaseDto {
*/
private String entranceContent;
/**
* 创建人(ERP运维人员)
*/
private String uploadUserName;
public String getUploadUserName() {
return uploadUserName;
}
public void setUploadUserName(String uploadUserName) {
this.uploadUserName = uploadUserName;
}
public String getEntranceTitle() {
return entranceTitle;
}
......
......@@ -62,4 +62,19 @@ public class ResourcePageCourseDTO extends BaseDto {
private String proLabelName;
private String depLabelName;
private String purLabelName;
private Integer browseCount;
/**
* 资源创建人
*/
private Long serveCreateUserId;
/**
* 资源创建人名称
*/
private String serveCreateUserName;
/**
* 是否显示
*/
private Boolean showState;
}
\ No newline at end of file
package com.pcloud.book.group.entity;
import com.pcloud.common.entity.BaseEntity;
import lombok.Data;
/**
* 资源页推荐资源管理(ResourceRecomManage)实体类
*
* @author makejava
* @since 2021-07-09 14:39:21
*/
@Data
public class ResourceRecomManage extends BaseEntity {
private static final long serialVersionUID = -25381380975839107L;
/**
* 主键
*/
private Long id;
/**
* 资源id
*/
private Long serveId;
/**
* 资源名称
*/
private String serveName;
/**
* 资源类型
*/
private String serveType;
/**
* 具体类型
*/
private String typeCode;
/**
* 封面图
*/
private String coverImg;
/**
* 来源(1育儿宝库2教辅资料3热门课程)
*/
private Integer sourceFrom;
/**
* 是否显示
*/
private Integer showState;
/**
* 创建人
*/
private Long createUser;
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.pcloud.book.group.facade.impl;
import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.book.group.entity.ResourcePageCollect;
import com.pcloud.book.group.entity.ResourceRecomManage;
import com.pcloud.book.group.vo.ResourcePageVO;
import com.pcloud.book.group.vo.UpdateResourceColumnVO;
import com.pcloud.book.group.vo.UpdateResourcePageVO;
......@@ -245,4 +246,36 @@ public class ResourcePageFacade {
Cookie.getId(userInfo,Cookie._WECHAT_USER_ID);
return new ResponseDto<>(resourcePageBiz.hasOfficialAccountsTool(resourcePageId));
}
@ApiOperation("平台端-资源推荐管理-热门课程")
@GetMapping("listRecommendCourse4Pcloud")
public ResponseDto<?> listRecommendCourse4Pcloud(@RequestHeader("token") String token,
@RequestParam("currentPage") Integer currentPage,
@RequestParam("numPerPage") Integer numPerPage,
@RequestParam(value = "query", required = false) String query) {
SessionUtil.getToken4Redis(token);
return new ResponseDto<>(resourcePageBiz.listRecommendCourse4Pcloud(currentPage, numPerPage, query));
}
@ApiOperation("平台端-资源推荐管理-教辅、育儿宝库")
@GetMapping("listRecommendResource4Pcloud")
public ResponseDto<?> listRecommendResource4Pcloud(@RequestHeader("token") String token,
@RequestParam("currentPage") Integer currentPage,
@RequestParam("numPerPage") Integer numPerPage,
@RequestParam(value = "query", required = false) String query,
@RequestParam("sourceFrom") Integer sourceFrom) {
SessionUtil.getToken4Redis(token);
return new ResponseDto<>(resourcePageBiz.listRecommendResource4Pcloud(currentPage, numPerPage, query, sourceFrom));
}
@ApiOperation("平台端-资源推荐管理-修改")
@PostMapping("updateRecommendResource4Pcloud")
public ResponseDto<?> updateRecommendResource4Pcloud(@RequestHeader("token") String token,
@RequestBody ResourceRecomManage resourceRecomManage) {
Long partyId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
resourceRecomManage.setCreateUser(partyId);
resourcePageBiz.updateRecommendResource4Pcloud(resourceRecomManage);
return new ResponseDto<>();
}
}
......@@ -834,10 +834,15 @@ public class PcloudGroupActivityBizImpl implements PcloudGroupActivityBiz {
if (!ListUtils.isEmpty(activityGroupIds)) {
localMap = pcloudGroupActivityDao.getByIds(activityGroupIds, 1);
}
List<Long> firstClassifys = localMap.values().stream().filter(s->null != s.getFirstClassify() && s.getFirstClassify()>0).map(GroupActivity4AppletDTO::getFirstClassify).distinct().collect(Collectors.toList());
Map<Long, AssistTempletDTO> classifyMap = assistTempletConsr.mapByIds4Classify(firstClassifys);
for(GroupActivity4AppletDTO groupActivity4AppletDTO: localMap.values()){
String filterStr = StringUtilParent.replaceHtml(groupActivity4AppletDTO.getDesc());
String subStr = filterStr.length() > 60 ? filterStr.substring(0, 60) + "..." : filterStr;
groupActivity4AppletDTO.setCutDesc(subStr);
if (!MapUtils.isEmpty(classifyMap) && classifyMap.containsKey(groupActivity4AppletDTO.getFirstClassify())){
groupActivity4AppletDTO.setFirstClassifyName(classifyMap.get(groupActivity4AppletDTO.getFirstClassify()).getTempletName());
}
}
return localMap;
}
......
......@@ -100,16 +100,21 @@
SELECT
a.record_type recordType,
a.from_id fromId,
a.from_name fromName,
IFNULL(m.serve_name, a.from_name) fromName,
a.link_url linkUrl,
a.type_code typeCode,
a.click_count clickCount,
a.user_count userCount
a.user_count userCount,
m.cover_img servePic
FROM
applet_record_seven_day a
INNER JOIN resource_page_grade_label g ON a.dep_label_id = g.dep_label_id
LEFT JOIN resource_recom_manage m ON A.from_id = m.serve_id
AND m.source_from = #{sourceFrom}
AND a.type_code = m.type_code
WHERE
a.source_type = #{sourceType}
AND IFNULL(m.show_state, 1) = 1
<if test="gradeLabelIds != null and gradeLabelIds.size>0">
AND g.user_grade_label_id IN
<foreach collection="gradeLabelIds" separator="," index="index" item="item" close=")" open="(">
......@@ -132,4 +137,38 @@
limit #{limit}
</if>
</select>
<select id="getList4Pcloud" parameterType="map" resultType="com.pcloud.book.applet.dto.AppletRecordDTO">
SELECT
a.record_type recordType,
a.from_id fromId,
IFNULL(m.serve_name, a.from_name) fromName,
a.link_url linkUrl,
a.type_code typeCode,
a.click_count clickCount,
a.user_count userCount,
m.cover_img servePic,
IFNULL(m.show_state, 1) serveShowState
FROM
applet_record_seven_day a
LEFT JOIN resource_recom_manage m ON A.from_id = m.serve_id
AND m.source_from = #{sourceFrom}
AND a.type_code = m.type_code
WHERE 1=1
<if test="sourceTypeList != null and sourceTypeList.size>0">
AND a.source_type IN
<foreach collection="sourceTypeList" index="index" separator="," item="item" close=")" open="(">
${item}
</foreach>
</if>
<if test="query != null">
AND IFNULL(m.serve_name, a.from_name) LIKE CONCAT("%", #{query}, "%")
</if>
GROUP BY
a.record_type,
a.from_id
ORDER BY
a.user_count DESC
</select>
</mapper>
\ No newline at end of file
......@@ -1453,7 +1453,7 @@
bt.TYPE_NAME, ba.IS_PRINT isPrint,
ba.SECOND_TEMPLET_ID, ba.GRA_LABEL_ID,ba.SUB_LABEL_ID,ba.VER_LABEL_ID,ba.AREA_LABEL_ID,ba.vol_label_id,ba.is_approval,
la1.`name` graLabelName,la2.`name` subLabelName,la3.`name` verLabelName,la4.`name` areaLabelName,la5.`name` volLabelName,
ba.third_TEMPLET_ID
ba.third_TEMPLET_ID, ba.pro_label_id, ba.dep_label_id,ba.pur_label_id
FROM
BOOK_ADVISER ba
JOIN
......
......@@ -18,6 +18,32 @@
id,wx_user_id, wechat_user_id, send_type,message_id,message_type,is_read,read_time, create_time,update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.cultivate.entity.CultivateNotifySend" useGeneratedKeys="true" keyProperty="id">
insert into cultivate_notify_send
(
wx_user_id,
wechat_user_id,
send_type,
message_id,
message_type,
is_read,
show_home,
create_time,
update_time
)
values
(#{wxUserId},
#{wechatUserId},
#{sendType},
#{messageId},
#{messageType},
0,
1,
NOW(),
NOW()
)
</insert>
<insert id="batchInsert" parameterType="com.pcloud.book.cultivate.entity.CultivateNotifySend" useGeneratedKeys="true" keyProperty="id">
insert into cultivate_notify_send
(
......
......@@ -98,19 +98,25 @@
<select id="listCourseByGradeLabelId" resultType="com.pcloud.book.group.dto.ResourcePageCourseDTO" parameterType="map">
SELECT
c.serve_id serveId,
c.serve_name serveName,
IFNULL(m.serve_name, c.serve_name) serveName,
c.serve_type serveType,
c.type_code typeCode,
c.channel_id channelId,
c.type_name typeName,
c.pro_label_id proLabelId,
c.dep_lable_id depLabelId,
c.pur_label_id purLabelId
c.pur_label_id purLabelId,
c.browse_count browseCount,
m.cover_img servePic
FROM
resource_page_course c
INNER JOIN resource_page_grade_label g ON c.dep_lable_id = g.dep_label_id
LEFT JOIN resource_recom_manage m ON c.serve_id = m.serve_id
AND m.source_from = #{sourceFrom}
AND c.type_code = m.type_code
WHERE
g.user_grade_label_id = #{userGradeLabelId}
AND IFNULL(m.show_state, 1) = 1
GROUP BY
c.serve_id
ORDER BY
......@@ -136,4 +142,34 @@
dep_label_id = #{depLabelId}
LIMIT 1
</select>
<select id="listCourse4Pcloud" resultType="com.pcloud.book.group.dto.ResourcePageCourseDTO" parameterType="map">
SELECT
c.serve_id serveId,
c.serve_type serveType,
c.type_code typeCode,
c.type_name typeName,
c.pro_label_id proLabelId,
c.dep_lable_id depLabelId,
c.pur_label_id purLabelId,
c.browse_count browseCount,
m.cover_img servePic,
IFNULL(m.serve_name, c.serve_name) serveName,
IFNULL(m.show_state, 1) showState
FROM
resource_page_course c
LEFT JOIN resource_recom_manage m ON c.serve_id = m.serve_id
AND m.source_from = #{sourceFrom}
AND c.type_code = m.type_code
WHERE
1 = 1
<if test="query != null">
AND IFNULL(m.serve_name, c.serve_name) LIKE CONCAT("%", #{query}, "%")
</if>
GROUP BY
c.serve_id
ORDER BY
c.browse_count DESC
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.pcloud.book.group.dao.impl.ResourceRecomManageDaoImpl">
<resultMap type="com.pcloud.book.group.entity.ResourceRecomManage" id="ResourceRecomManageMap">
<result property="id" column="id" jdbcType="INTEGER"/>
<result property="serveId" column="serve_id" jdbcType="INTEGER"/>
<result property="serveName" column="serve_name" jdbcType="VARCHAR"/>
<result property="serveType" column="serve_type" jdbcType="VARCHAR"/>
<result property="typeCode" column="type_code" jdbcType="VARCHAR"/>
<result property="coverImg" column="cover_img" jdbcType="VARCHAR"/>
<result property="sourceFrom" column="source_from" jdbcType="INTEGER"/>
<result property="showState" column="show_state" jdbcType="INTEGER"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="createUser" column="create_user" jdbcType="INTEGER"/>
</resultMap>
<sql id="Base_Column_List">
id, serve_id, serve_name, serve_type, type_code, cover_img, source_from, show_state
</sql>
<!--查询单个-->
<select id="getById" resultMap="ResourceRecomManageMap">
select
<include refid="Base_Column_List"/>
from book.resource_recom_manage
where id = #{id}
</select>
<!--新增所有列-->
<insert id="insert" keyProperty="id" useGeneratedKeys="true">
insert into book.resource_recom_manage(serve_id, serve_name, serve_type, type_code, cover_img, source_from, show_state, create_time, create_user)
values (#{serveId}, #{serveName}, #{serveType}, #{typeCode}, #{coverImg}, #{sourceFrom}, #{showState}, now(), #{createUser})
</insert>
<!--通过主键修改数据-->
<update id="update">
update book.resource_recom_manage
<set>
<if test="serveId != null">
serve_id = #{serveId},
</if>
<if test="serveName != null and serveName != ''">
serve_name = #{serveName},
</if>
<if test="serveType != null and serveType != ''">
serve_type = #{serveType},
</if>
<if test="typeCode != null and typeCode != ''">
type_code = #{typeCode},
</if>
<if test="coverImg != null and coverImg != ''">
cover_img = #{coverImg},
</if>
<if test="sourceFrom != null">
source_from = #{sourceFrom},
</if>
<if test="showState != null">
show_state = #{showState},
</if>
<if test="createTime != null">
create_time = #{createTime},
</if>
<if test="createUser != null">
create_user = #{createUser},
</if>
</set>
where id = #{id}
</update>
<!--通过主键删除-->
<delete id="deleteById">
delete from book.resource_recom_manage where id = #{id}
</delete>
<select id="deleteByServe" parameterType="map">
DELETE
from book.resource_recom_manage
where serve_id = #{serveId}
and source_from = #{sourceFrom}
and serve_type = #{serveType}
</select>
<select id="mapResourceRecomManage" parameterType="map" resultMap="ResourceRecomManageMap">
SELECT
<include refid="Base_Column_List"/>
FROM
resource_recom_manage
WHERE
serve_id IN
<foreach collection="serveIds" index="index" separator="," item="item" close=")" open="(">
#{item}
</foreach>
AND source_from = #{sourceFrom}
AND serve_type = #{serveType}
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment