Commit d420939e by 朱亚洁

feat:[1005028]平台端干预

parent 96423d40
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; ...@@ -3,6 +3,7 @@ package com.pcloud.book.cultivate.service;
import com.pcloud.book.copyright.dto.BookAuthInfoCountDTO; import com.pcloud.book.copyright.dto.BookAuthInfoCountDTO;
import com.pcloud.book.copyright.dto.BookAuthTotalCountDTO; import com.pcloud.book.copyright.dto.BookAuthTotalCountDTO;
import com.pcloud.book.copyright.dto.CheckUserAuthDTO; 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.AppletNotifySendDTO;
import com.pcloud.book.cultivate.entity.CultivateNotifySend; import com.pcloud.book.cultivate.entity.CultivateNotifySend;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
...@@ -10,6 +11,7 @@ import com.pcloud.common.exceptions.BizException; ...@@ -10,6 +11,7 @@ import com.pcloud.common.exceptions.BizException;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.http.ResponseEntity; 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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
...@@ -47,4 +49,8 @@ public interface CultivateNotifyService { ...@@ -47,4 +49,8 @@ public interface CultivateNotifyService {
@RequestMapping(value = "createNotify4App", method = RequestMethod.POST) @RequestMapping(value = "createNotify4App", method = RequestMethod.POST)
ResponseEntity<ResponseDto<Long>> createNotify4App(@RequestBody AppletNotifySendDTO newSendDTO) throws BizException; 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 { ...@@ -37,4 +37,12 @@ public interface AppletRecordAggrStatisBiz {
* * @param null * * @param null
*/ */
PageBeanNew getResource4H5(Long wechatUserId, Long officialAccountsId, String keyword, Integer sourceType, Integer currentPage, Integer numPerPage); 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; ...@@ -2,12 +2,14 @@ package com.pcloud.book.applet.biz.impl;
import com.google.common.collect.Lists; 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.AppletRecordAggrStatisBiz;
import com.pcloud.book.applet.biz.AppletRecordBiz; import com.pcloud.book.applet.biz.AppletRecordBiz;
import com.pcloud.book.applet.biz.ServeCollectBiz; import com.pcloud.book.applet.biz.ServeCollectBiz;
import com.pcloud.book.applet.contants.AppletConstants; import com.pcloud.book.applet.contants.AppletConstants;
import com.pcloud.book.applet.dao.AppletRecordDao; import com.pcloud.book.applet.dao.AppletRecordDao;
import com.pcloud.book.applet.dao.AppletRecordSevenDayDao; 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.dto.AppletRecordDTO;
import com.pcloud.book.applet.entity.AppletRecord; import com.pcloud.book.applet.entity.AppletRecord;
import com.pcloud.book.applet.entity.AppletRecordSevenDay; import com.pcloud.book.applet.entity.AppletRecordSevenDay;
...@@ -16,15 +18,21 @@ import com.pcloud.book.applet.enums.AppletRankTypeEnum; ...@@ -16,15 +18,21 @@ import com.pcloud.book.applet.enums.AppletRankTypeEnum;
import com.pcloud.book.applet.enums.AppletRecordTypeEnum; import com.pcloud.book.applet.enums.AppletRecordTypeEnum;
import com.pcloud.book.applet.enums.AppletSourceTypeEnum; import com.pcloud.book.applet.enums.AppletSourceTypeEnum;
import com.pcloud.book.base.exception.BookBizException; 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.label.LabelConsr;
import com.pcloud.book.consumer.reader.ReaderConsr; 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.biz.ResourcePageBiz;
import com.pcloud.book.group.constant.ResourcePageConstants; import com.pcloud.book.group.constant.ResourcePageConstants;
import com.pcloud.book.group.dao.WeworkTeacherFriendRecordDao; 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.mapper.clickhouse.AppletRecordCHMapper;
import com.pcloud.book.util.common.YesOrNoEnums; import com.pcloud.book.util.common.YesOrNoEnums;
import com.pcloud.book.util.properties.BookProps; import com.pcloud.book.util.properties.BookProps;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.BeanUtils; import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
...@@ -32,6 +40,8 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils; ...@@ -32,6 +40,8 @@ import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.common.enums.YesOrNoNumEnum; import com.pcloud.readercenter.common.enums.YesOrNoNumEnum;
import com.pcloud.readercenter.userlabel.dto.UserGradeLabelIdDTO; 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.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -71,13 +81,21 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz ...@@ -71,13 +81,21 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
@Autowired @Autowired
private ServeCollectBiz serveCollectBiz; private ServeCollectBiz serveCollectBiz;
@Autowired @Autowired
private ResourcePageBiz resourcePageBiz;
@Autowired
private AppletRecordSevenDayDao appletRecordSevenDayDao; private AppletRecordSevenDayDao appletRecordSevenDayDao;
@Autowired @Autowired
private ReaderConsr readerConsr; private ReaderConsr readerConsr;
@Autowired @Autowired
private LabelConsr labelConsr; private LabelConsr labelConsr;
@Autowired
private ProductConsr productConsr;
@Autowired
private AppConsr appConsr;
@Autowired
private AdviserConsr adviserConsr;
@Autowired
private MerchantConsr merchantConsr;
@Autowired
private ResourcePageBiz resourcePageBiz;
@Override @Override
public PageBeanNew getAggrStatis(Long wechatUserId, String keyword, Integer sourceType, Integer rankType, Integer currentPage, Integer numPerPage) { public PageBeanNew getAggrStatis(Long wechatUserId, String keyword, Integer sourceType, Integer rankType, Integer currentPage, Integer numPerPage) {
...@@ -351,13 +369,23 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz ...@@ -351,13 +369,23 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
@Override @Override
public PageBeanNew getResource4H5(Long wechatUserId, Long officialAccountsId, String keyword, Integer sourceType, Integer currentPage, Integer numPerPage) { 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, "缺少参数"); throw new BookBizException(BookBizException.PARAM_IS_NULL, "缺少参数");
} }
//最多查询50个 //最多查询50个
Integer maxCount = 50; Integer maxCount = 50;
List<AppletRecordDTO> countList; 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)) { if (StringUtils.isNotEmpty(keyword)) {
isDefaultList = false;
//关键词搜索 //关键词搜索
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("sourceKeywords", Arrays.asList(keyword)); paramMap.put("sourceKeywords", Arrays.asList(keyword));
...@@ -367,7 +395,8 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz ...@@ -367,7 +395,8 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
countList = appletRecordCHMapper.getAggrStatis4H5(paramMap); countList = appletRecordCHMapper.getAggrStatis4H5(paramMap);
} else { } else {
//无关键词-根据学龄段搜索,序优先匹配同年级的资源 isDefaultList = true;
//无关键词-根据学龄段搜索,优先匹配同年级的资源
UserGradeLabelIdDTO userGradeLabelIdDTO = readerConsr.getUserGrade(wechatUserId, officialAccountsId); UserGradeLabelIdDTO userGradeLabelIdDTO = readerConsr.getUserGrade(wechatUserId, officialAccountsId);
//学龄段标签, 年级标签 //学龄段标签, 年级标签
Long parentLabel = 1L; Long parentLabel = 1L;
...@@ -385,13 +414,14 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz ...@@ -385,13 +414,14 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
gradeLabelIds.remove(gradeLabelId); gradeLabelIds.remove(gradeLabelId);
} }
orderFieldIds.addAll(gradeLabelIds); orderFieldIds.addAll(gradeLabelIds);
countList = appletRecordSevenDayDao.getResourceByGrade4H5(sourceType, orderFieldIds, maxCount); countList = appletRecordSevenDayDao.getResourceByGrade4H5(sourceType, orderFieldIds, maxCount, sourceFrom);
} }
if (ListUtils.isEmpty(countList)) { if (ListUtils.isEmpty(countList)) {
return new PageBeanNew(currentPage, numPerPage, 0, Lists.newArrayList()); return new PageBeanNew(currentPage, numPerPage, 0, Lists.newArrayList());
} }
appletRecordBiz.fillAppletRecord(countList, YesOrNoNumEnum.NO.getValue()); appletRecordBiz.fillAppletRecord(countList, YesOrNoNumEnum.NO.getValue());
countList = countList.stream().filter(x -> x.getSourceDelete() == 0).collect(Collectors.toList()); countList = countList.stream().filter(x -> x.getSourceDelete() == 0).collect(Collectors.toList());
dealServeNamePic(countList, isDefaultList, sourceFrom);
if (ListUtils.isEmpty(countList)) { if (ListUtils.isEmpty(countList)) {
return new PageBeanNew(currentPage, numPerPage, 0, Lists.newArrayList()); return new PageBeanNew(currentPage, numPerPage, 0, Lists.newArrayList());
} }
...@@ -401,6 +431,140 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz ...@@ -401,6 +431,140 @@ public class AppletRecordAggrStatisBizImpl implements AppletRecordAggrStatisBiz
return pageBeanNew; 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) { private void fillLabel(List<AppletRecordDTO> recordList) {
if (ListUtils.isEmpty(recordList)) { if (ListUtils.isEmpty(recordList)) {
......
...@@ -16,5 +16,5 @@ public interface AppletRecordSevenDayDao extends BaseDao<AppletRecordSevenDay>{ ...@@ -16,5 +16,5 @@ public interface AppletRecordSevenDayDao extends BaseDao<AppletRecordSevenDay>{
void deleteBySourceType(Integer sourceType); 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 ...@@ -26,11 +26,12 @@ public class AppletRecordSevenDayDaoImpl extends BaseDaoImpl<AppletRecordSevenDa
} }
@Override @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<String, Object> map = new HashMap<>();
map.put("sourceType", sourceType); map.put("sourceType", sourceType);
map.put("gradeLabelIds", gradeLabelIds); map.put("gradeLabelIds", gradeLabelIds);
map.put("limit", limit); map.put("limit", limit);
map.put("sourceFrom", sourceFrom);
return getSessionTemplate().selectList(getStatement("getResourceByGrade4H5"), map); return getSessionTemplate().selectList(getStatement("getResourceByGrade4H5"), map);
} }
} }
...@@ -116,4 +116,22 @@ public class AppletRecordDTO { ...@@ -116,4 +116,22 @@ public class AppletRecordDTO {
private String proLabelName; private String proLabelName;
private String depLabelName; private String depLabelName;
private String purLabelName; private String purLabelName;
/**
* 应用作品资源封面
*/
private String servePic;
/**
* 应用作品资源创建人
*/
private Long serveCreateUserId;
/**
* 应用作品资源创建人名称
*/
private String serveCreateUserName;
/**
* 应用作品是否显示
*/
private Boolean serveShowState;
private String serveType;
} }
...@@ -3,6 +3,7 @@ package com.pcloud.book.cultivate.biz; ...@@ -3,6 +3,7 @@ package com.pcloud.book.cultivate.biz;
import com.pcloud.book.book.dto.AdviserBookInfoDTO; import com.pcloud.book.book.dto.AdviserBookInfoDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyDTO; import com.pcloud.book.cultivate.dto.CultivateNotifyDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyPageDTO; 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.SearchNotifyDTO;
import com.pcloud.book.cultivate.dto.SearchSendUserDTO; import com.pcloud.book.cultivate.dto.SearchSendUserDTO;
import com.pcloud.book.cultivate.dto.SendUserDetailDto; import com.pcloud.book.cultivate.dto.SendUserDetailDto;
...@@ -44,4 +45,6 @@ public interface CultivateNotifyBiz { ...@@ -44,4 +45,6 @@ public interface CultivateNotifyBiz {
Long createNotify4App(AppletNotifySendDTO newSendDTO); Long createNotify4App(AppletNotifySendDTO newSendDTO);
void clearExpireNotifies(); void clearExpireNotifies();
Long sendNotifyToUser(NotifySendDTO notifySendDTO);
} }
...@@ -30,6 +30,8 @@ import com.pcloud.book.cultivate.dao.CultivateNotifySendDao; ...@@ -30,6 +30,8 @@ import com.pcloud.book.cultivate.dao.CultivateNotifySendDao;
import com.pcloud.book.cultivate.dto.CultivateNotifyDTO; import com.pcloud.book.cultivate.dto.CultivateNotifyDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyPageDTO; import com.pcloud.book.cultivate.dto.CultivateNotifyPageDTO;
import com.pcloud.book.cultivate.dto.CultivateNotifyTypeDTO; 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.SearchNotifyDTO;
import com.pcloud.book.cultivate.dto.SearchSendUserDTO; import com.pcloud.book.cultivate.dto.SearchSendUserDTO;
import com.pcloud.book.cultivate.dto.WechatUserDTO; import com.pcloud.book.cultivate.dto.WechatUserDTO;
...@@ -45,6 +47,7 @@ import com.pcloud.common.core.aspect.ParamLog; ...@@ -45,6 +47,7 @@ import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.dto.AppletTemplateMessageDto; import com.pcloud.common.core.dto.AppletTemplateMessageDto;
import com.pcloud.common.page.PageBeanNew; import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam; import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.DateUtils; import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ServeLinkUtils; import com.pcloud.common.utils.ServeLinkUtils;
...@@ -622,4 +625,36 @@ public class CultivateNotifyBizImpl implements CultivateNotifyBiz { ...@@ -622,4 +625,36 @@ public class CultivateNotifyBizImpl implements CultivateNotifyBiz {
public void clearExpireNotifies() { public void clearExpireNotifies() {
cultivateNotifySendDao.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; package com.pcloud.book.cultivate.service.impl;
import com.pcloud.book.cultivate.biz.CultivateNotifyBiz; 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.AppletNotifySendDTO;
import com.pcloud.book.cultivate.entity.CultivateNotifySend; import com.pcloud.book.cultivate.entity.CultivateNotifySend;
import com.pcloud.book.cultivate.service.CultivateNotifyService; import com.pcloud.book.cultivate.service.CultivateNotifyService;
...@@ -11,6 +12,7 @@ import com.pcloud.common.utils.ListUtils; ...@@ -11,6 +12,7 @@ import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; 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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestMethod;
...@@ -52,4 +54,10 @@ public class CultivateNotifyServiceImpl implements CultivateNotifyService { ...@@ -52,4 +54,10 @@ public class CultivateNotifyServiceImpl implements CultivateNotifyService {
public ResponseEntity<ResponseDto<Long>> createNotify4App(@RequestBody AppletNotifySendDTO newSendDTO) throws BizException{ public ResponseEntity<ResponseDto<Long>> createNotify4App(@RequestBody AppletNotifySendDTO newSendDTO) throws BizException{
return ResponseHandleUtil.toResponse(cultivateNotifyBiz.createNotify4App(newSendDTO)); 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; ...@@ -10,6 +10,7 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.ResourcePage; import com.pcloud.book.group.entity.ResourcePage;
import com.pcloud.book.group.entity.ResourcePageCollect; import com.pcloud.book.group.entity.ResourcePageCollect;
import com.pcloud.book.group.entity.ResourcePageTool; 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.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageItemVO; import com.pcloud.book.group.vo.ResourcePageItemVO;
import com.pcloud.book.group.vo.ResourcePageOneServe; import com.pcloud.book.group.vo.ResourcePageOneServe;
...@@ -360,4 +361,36 @@ public interface ResourcePageBiz { ...@@ -360,4 +361,36 @@ public interface ResourcePageBiz {
* * @param null * * @param null
*/ */
void updateBookId(Long bookId, Long sceneId); 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; 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.AdvertisingSpaceDTO;
import com.pcloud.advertising.advertising.dto.AdvertisingSpaceItemDTO; import com.pcloud.advertising.advertising.dto.AdvertisingSpaceItemDTO;
import com.pcloud.analysisengine.browse.dto.BrowseRecordStatisticDTO; import com.pcloud.analysisengine.browse.dto.BrowseRecordStatisticDTO;
import com.pcloud.appcenter.app.dto.AppDto; import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.book.applet.biz.AppletBooklistBiz; import com.pcloud.book.applet.biz.AppletBooklistBiz;
import com.pcloud.book.applet.biz.AppletGroupSearchRecordBiz; 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.biz.AppletThirdResourcesBiz;
import com.pcloud.book.applet.dto.AppletGroupStatementDTO; import com.pcloud.book.applet.dto.AppletGroupStatementDTO;
import com.pcloud.book.applet.dto.AppletOuterBooklistDTO; import com.pcloud.book.applet.dto.AppletOuterBooklistDTO;
...@@ -21,8 +15,8 @@ import com.pcloud.book.applet.entity.AppletThirdResources; ...@@ -21,8 +15,8 @@ import com.pcloud.book.applet.entity.AppletThirdResources;
import com.pcloud.book.base.exception.BookBizException; import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz; import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.dto.BookDto; 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.dto.RaysSceneCatalogDto;
import com.pcloud.book.book.entity.Book;
import com.pcloud.book.book.enums.WxworkQrcodeType; import com.pcloud.book.book.enums.WxworkQrcodeType;
import com.pcloud.book.book.vo.BookLinkVO; import com.pcloud.book.book.vo.BookLinkVO;
import com.pcloud.book.book.vo.response.BookQrcodeWxworkResponseVO; import com.pcloud.book.book.vo.response.BookQrcodeWxworkResponseVO;
...@@ -37,6 +31,7 @@ import com.pcloud.book.consumer.resource.ProductConsr; ...@@ -37,6 +31,7 @@ import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.user.AdviserConsr; import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.user.AgentConsr; import com.pcloud.book.consumer.user.AgentConsr;
import com.pcloud.book.consumer.user.ChannelConsr; 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.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.es.biz.ESBookAndAdviserBiz; import com.pcloud.book.es.biz.ESBookAndAdviserBiz;
import com.pcloud.book.group.biz.BookGroupBiz; import com.pcloud.book.group.biz.BookGroupBiz;
...@@ -50,6 +45,7 @@ import com.pcloud.book.group.dao.ResourcePageCourseDao; ...@@ -50,6 +45,7 @@ import com.pcloud.book.group.dao.ResourcePageCourseDao;
import com.pcloud.book.group.dao.ResourcePageDao; import com.pcloud.book.group.dao.ResourcePageDao;
import com.pcloud.book.group.dao.ResourcePageItemDao; import com.pcloud.book.group.dao.ResourcePageItemDao;
import com.pcloud.book.group.dao.ResourcePageToolDao; 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.AddBookGroupServeDTO;
import com.pcloud.book.group.dto.BookGroupDTO; import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupServeCountDTO; import com.pcloud.book.group.dto.BookGroupServeCountDTO;
...@@ -66,6 +62,7 @@ import com.pcloud.book.group.entity.ResourcePageColumn; ...@@ -66,6 +62,7 @@ import com.pcloud.book.group.entity.ResourcePageColumn;
import com.pcloud.book.group.entity.ResourcePageCourse; import com.pcloud.book.group.entity.ResourcePageCourse;
import com.pcloud.book.group.entity.ResourcePageItem; import com.pcloud.book.group.entity.ResourcePageItem;
import com.pcloud.book.group.entity.ResourcePageTool; 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.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ResourceColumnAndServeVO; import com.pcloud.book.group.vo.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageItemVO; import com.pcloud.book.group.vo.ResourcePageItemVO;
...@@ -99,11 +96,11 @@ import com.pcloud.common.utils.QrcodeUtils; ...@@ -99,11 +96,11 @@ import com.pcloud.common.utils.QrcodeUtils;
import com.pcloud.common.utils.ServeLinkUtils; import com.pcloud.common.utils.ServeLinkUtils;
import com.pcloud.common.utils.UUIDUitl; import com.pcloud.common.utils.UUIDUitl;
import com.pcloud.common.utils.string.StringUtil; import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.readercenter.userlabel.dto.UserGradeLabelIdDTO;
import com.pcloud.message.common.enums.YesNoEnums; 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.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductLabelDto;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import lombok.extern.slf4j.Slf4j;
import com.pcloud.wechatgroup.wxwork.dto.WxworkGroupQrcodeBaseDTO; import com.pcloud.wechatgroup.wxwork.dto.WxworkGroupQrcodeBaseDTO;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -125,6 +122,15 @@ import java.util.Objects; ...@@ -125,6 +122,15 @@ import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; 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 * @ClassName com.pcloud.book.group.biz.impl.ResourcePageBizImpl
* @Author zhuyajie * @Author zhuyajie
...@@ -189,9 +195,13 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -189,9 +195,13 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
@Autowired @Autowired
private ChannelConsr channelConsr; private ChannelConsr channelConsr;
@Autowired @Autowired
private LabelConsr labelConsr;
@Autowired
private AppletGroupSearchRecordBiz appletGroupSearchRecordBiz; private AppletGroupSearchRecordBiz appletGroupSearchRecordBiz;
@Autowired
private MerchantConsr merchantConsr;
@Autowired
private AppletRecordAggrStatisBiz appletRecordAggrStatisBiz;
@Autowired
private ResourceRecomManageDao resourceRecomManageDao;
@Override @Override
public Long updateResourcePage(UpdateResourcePageVO updateResourcePageVO) { public Long updateResourcePage(UpdateResourcePageVO updateResourcePageVO) {
...@@ -1719,6 +1729,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1719,6 +1729,7 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
Long gradeLabel = null == userGradeLabelIdDTO? 11L : userGradeLabelIdDTO.getLabelId(); Long gradeLabel = null == userGradeLabelIdDTO? 11L : userGradeLabelIdDTO.getLabelId();
Map<String, Object> paramMap = new HashMap<>(); Map<String, Object> paramMap = new HashMap<>();
paramMap.put("userGradeLabelId", gradeLabel); paramMap.put("userGradeLabelId", gradeLabel);
paramMap.put("sourceFrom", ResourcePageConstants.RecommendResourceFromEnum.HOT_COURSE.getCode());
PageBeanNew<ResourcePageCourseDTO> pageBeanNew = resourcePageCourseDao.listPageNew(new PageParam(currentPage,numPerPage), paramMap,"listCourseByGradeLabelId"); PageBeanNew<ResourcePageCourseDTO> pageBeanNew = resourcePageCourseDao.listPageNew(new PageParam(currentPage,numPerPage), paramMap,"listCourseByGradeLabelId");
if (ListUtils.isEmpty(pageBeanNew.getRecordList())) { if (ListUtils.isEmpty(pageBeanNew.getRecordList())) {
return new PageBeanNew<>(currentPage,numPerPage,pageBeanNew.getTotalCount(),new ArrayList<>()); return new PageBeanNew<>(currentPage,numPerPage,pageBeanNew.getTotalCount(),new ArrayList<>());
...@@ -1726,7 +1737,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1726,7 +1737,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
List<ResourcePageCourseDTO> dtos = pageBeanNew.getRecordList(); List<ResourcePageCourseDTO> dtos = pageBeanNew.getRecordList();
List<Long> appIds = new ArrayList<>(); List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>(); List<Long> productIds = new ArrayList<>();
List<Long> labelIds = new ArrayList<>();
for (ResourcePageCourseDTO dto : dtos) { for (ResourcePageCourseDTO dto : dtos) {
Long serveId = dto.getServeId(); Long serveId = dto.getServeId();
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(dto.getServeType()) && !appIds.contains(serveId)) { if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(dto.getServeType()) && !appIds.contains(serveId)) {
...@@ -1735,30 +1745,24 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1735,30 +1745,24 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(dto.getServeType()) && !productIds.contains(serveId)) { if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(dto.getServeType()) && !productIds.contains(serveId)) {
productIds.add(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, AppDto> appDtoMap = appConsr.mapBaseByIds(appIds);
Map<Long, ProductDto> productDtoMap = productConsr.getProBasesByIds(productIds); Map<Long, ProductDto> productDtoMap = productConsr.getProBasesByIds(productIds);
Long accountSettingId = BookProps.getOperateOfficalId(); Long accountSettingId = BookProps.getOperateOfficalId();
AccountSetting accountSetting = channelConsr.getAppInfo(accountSettingId); AccountSetting accountSetting = channelConsr.getAppInfo(accountSettingId);
Map<Long, String> labelMap = labelConsr.getLabelName(labelIds);
for (ResourcePageCourseDTO courseDTO : dtos) { for (ResourcePageCourseDTO courseDTO : dtos) {
Long serveId = courseDTO.getServeId(); Long serveId = courseDTO.getServeId();
String serveType = courseDTO.getServeType(); String serveType = courseDTO.getServeType();
if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType) if (ResourcePageConstants.ServeTypeEnum.APP.getValue().equals(serveType)
&& !MapUtils.isEmpty(appDtoMap) && appDtoMap.containsKey(serveId)) { && !MapUtils.isEmpty(appDtoMap) && appDtoMap.containsKey(serveId)) {
AppDto appDto = appDtoMap.get(courseDTO.getServeId()); AppDto appDto = appDtoMap.get(courseDTO.getServeId());
courseDTO.setServeName(appDto.getTitle()); if (StringUtil.isEmpty(courseDTO.getServePic())) {
courseDTO.setServePic(appDto.getSquareImg()); courseDTO.setServePic(appDto.getSquareImg());
}
courseDTO.setTransverseImg(appDto.getTransverseImg()); 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(), String turnUrl = ServeLinkUtils.getCompleteLink("APP", appDto.getTypeCode(), appDto.getAppId().toString(),
appDto.getSceneCode(), appDto.getChannelId().toString(), appDto.getCreatedUser().toString(), null, accountSettingId.toString(), appDto.getSceneCode(), appDto.getChannelId().toString(), appDto.getCreatedUser().toString(), null, accountSettingId.toString(),
...@@ -1769,10 +1773,17 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1769,10 +1773,17 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} else if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType) } else if (ResourcePageConstants.ServeTypeEnum.PRODUCT.getValue().equals(serveType)
&& !MapUtils.isEmpty(productDtoMap) && productDtoMap.containsKey(serveId)) { && !MapUtils.isEmpty(productDtoMap) && productDtoMap.containsKey(serveId)) {
ProductDto productDto = productDtoMap.get(courseDTO.getServeId()); ProductDto productDto = productDtoMap.get(courseDTO.getServeId());
courseDTO.setServeName(productDto.getProductName()); if (StringUtil.isEmpty(courseDTO.getServePic())) {
courseDTO.setServePic(productDto.getCoverImg()); courseDTO.setServePic(productDto.getCoverImg());
}
courseDTO.setTransverseImg(StringUtil.isEmpty(productDto.getPicture1())? courseDTO.setTransverseImg(StringUtil.isEmpty(productDto.getPicture1())?
getDefaultBigPic(courseDTO.getTypeCode()): 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(), String turnUrl = ServeLinkUtils.getCompleteLink("PRODUCT", courseDTO.getTypeCode(), productDto.getProductId().toString(),
productDto.getProductSceneCode(), courseDTO.getChannelId().toString(), null, null, accountSettingId.toString(), productDto.getProductSceneCode(), courseDTO.getChannelId().toString(), null, null, accountSettingId.toString(),
...@@ -1780,17 +1791,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1780,17 +1791,6 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
null != accountSetting.getRandom() ? accountSetting.getRandom().toString() : null); null != accountSetting.getRandom() ? accountSetting.getRandom().toString() : null);
courseDTO.setResultUrl(turnUrl); 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; return pageBeanNew;
} }
...@@ -1912,4 +1912,122 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -1912,4 +1912,122 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
bookGroupDao.updateBookIdById(bookGroupId, bookId); 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; ...@@ -3,6 +3,9 @@ package com.pcloud.book.group.constant;
import com.pcloud.book.applet.contants.AppletResourceApplyConstants; import com.pcloud.book.applet.contants.AppletResourceApplyConstants;
import com.pcloud.common.constant.CacheConstant; import com.pcloud.common.constant.CacheConstant;
import java.util.Arrays;
import java.util.List;
/** /**
* @ClassName com.pcloud.book.group.constant.ResourcePageConstants * @ClassName com.pcloud.book.group.constant.ResourcePageConstants
* @Author zhuyajie * @Author zhuyajie
...@@ -278,4 +281,52 @@ public class ResourcePageConstants { ...@@ -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");
}
}
...@@ -62,4 +62,19 @@ public class ResourcePageCourseDTO extends BaseDto { ...@@ -62,4 +62,19 @@ public class ResourcePageCourseDTO extends BaseDto {
private String proLabelName; private String proLabelName;
private String depLabelName; private String depLabelName;
private String purLabelName; 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; ...@@ -2,6 +2,7 @@ package com.pcloud.book.group.facade.impl;
import com.pcloud.book.group.biz.ResourcePageBiz; import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.book.group.entity.ResourcePageCollect; 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.ResourcePageVO;
import com.pcloud.book.group.vo.UpdateResourceColumnVO; import com.pcloud.book.group.vo.UpdateResourceColumnVO;
import com.pcloud.book.group.vo.UpdateResourcePageVO; import com.pcloud.book.group.vo.UpdateResourcePageVO;
...@@ -245,4 +246,36 @@ public class ResourcePageFacade { ...@@ -245,4 +246,36 @@ public class ResourcePageFacade {
Cookie.getId(userInfo,Cookie._WECHAT_USER_ID); Cookie.getId(userInfo,Cookie._WECHAT_USER_ID);
return new ResponseDto<>(resourcePageBiz.hasOfficialAccountsTool(resourcePageId)); 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<>();
}
} }
...@@ -100,16 +100,21 @@ ...@@ -100,16 +100,21 @@
SELECT SELECT
a.record_type recordType, a.record_type recordType,
a.from_id fromId, a.from_id fromId,
a.from_name fromName, IFNULL(m.serve_name, a.from_name) fromName,
a.link_url linkUrl, a.link_url linkUrl,
a.type_code typeCode, a.type_code typeCode,
a.click_count clickCount, a.click_count clickCount,
a.user_count userCount a.user_count userCount,
m.cover_img servePic
FROM FROM
applet_record_seven_day a applet_record_seven_day a
INNER JOIN resource_page_grade_label g ON a.dep_label_id = g.dep_label_id 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 WHERE
a.source_type = #{sourceType} a.source_type = #{sourceType}
AND IFNULL(m.show_state, 1) = 1
<if test="gradeLabelIds != null and gradeLabelIds.size>0"> <if test="gradeLabelIds != null and gradeLabelIds.size>0">
AND g.user_grade_label_id IN AND g.user_grade_label_id IN
<foreach collection="gradeLabelIds" separator="," index="index" item="item" close=")" open="("> <foreach collection="gradeLabelIds" separator="," index="index" item="item" close=")" open="(">
...@@ -132,4 +137,38 @@ ...@@ -132,4 +137,38 @@
limit #{limit} limit #{limit}
</if> </if>
</select> </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> </mapper>
\ No newline at end of file
...@@ -18,6 +18,32 @@ ...@@ -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 id,wx_user_id, wechat_user_id, send_type,message_id,message_type,is_read,read_time, create_time,update_time
</sql> </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 id="batchInsert" parameterType="com.pcloud.book.cultivate.entity.CultivateNotifySend" useGeneratedKeys="true" keyProperty="id">
insert into cultivate_notify_send insert into cultivate_notify_send
( (
......
...@@ -98,19 +98,25 @@ ...@@ -98,19 +98,25 @@
<select id="listCourseByGradeLabelId" resultType="com.pcloud.book.group.dto.ResourcePageCourseDTO" parameterType="map"> <select id="listCourseByGradeLabelId" resultType="com.pcloud.book.group.dto.ResourcePageCourseDTO" parameterType="map">
SELECT SELECT
c.serve_id serveId, c.serve_id serveId,
c.serve_name serveName, IFNULL(m.serve_name, c.serve_name) serveName,
c.serve_type serveType, c.serve_type serveType,
c.type_code typeCode, c.type_code typeCode,
c.channel_id channelId, c.channel_id channelId,
c.type_name typeName, c.type_name typeName,
c.pro_label_id proLabelId, c.pro_label_id proLabelId,
c.dep_lable_id depLabelId, c.dep_lable_id depLabelId,
c.pur_label_id purLabelId c.pur_label_id purLabelId,
c.browse_count browseCount,
m.cover_img servePic
FROM FROM
resource_page_course c resource_page_course c
INNER JOIN resource_page_grade_label g ON c.dep_lable_id = g.dep_label_id 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 WHERE
g.user_grade_label_id = #{userGradeLabelId} g.user_grade_label_id = #{userGradeLabelId}
AND IFNULL(m.show_state, 1) = 1
GROUP BY GROUP BY
c.serve_id c.serve_id
ORDER BY ORDER BY
...@@ -136,4 +142,34 @@ ...@@ -136,4 +142,34 @@
dep_label_id = #{depLabelId} dep_label_id = #{depLabelId}
LIMIT 1 LIMIT 1
</select> </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> </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