Commit e5465d27 by 郑勇

feat: [1005635] 应用算法推荐

parent d0ecd686
...@@ -459,4 +459,6 @@ public class BookConstant { ...@@ -459,4 +459,6 @@ public class BookConstant {
*/ */
public static final Long QQ_ACCOUNT_SETTING_ID = 999L; public static final Long QQ_ACCOUNT_SETTING_ID = 999L;
public static final String SUPER_MERCHANT_LIST = CacheConstant.BOOK + "superMerchantList";
} }
package com.pcloud.book.book.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 是否开启商品推荐
*/
@Data
public class OpenRecommendVO {
@ApiModelProperty("是否开启商品推荐")
private Integer isOpenRecommend;
@ApiModelProperty("推荐商品来源(1-我的应用作品,2-我的作品,同社作品,0-2的基础上加超级作者作品)")
private Integer recommendFromType;
}
...@@ -466,4 +466,14 @@ public interface BookAdviserBiz { ...@@ -466,4 +466,14 @@ public interface BookAdviserBiz {
* @return * @return
*/ */
Integer getJumpBookState(Long bookId, Long adviserId, Long channelId); Integer getJumpBookState(Long bookId, Long adviserId, Long channelId);
/**
* 设置是否开启商品推荐
*/
void updateOpenRecommend(Long bookId, Long adviserId, Long channelId, Integer isOpenRecommend, Integer recommendFromType);
/**
* 查看是否开启商品推荐
*/
OpenRecommendVO getOpenRecommend(Long sceneId, Long bookId, Long adviserId, Long channelId);
} }
...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
...@@ -3401,4 +3402,35 @@ public class BookAdviserBizImpl implements BookAdviserBiz { ...@@ -3401,4 +3402,35 @@ public class BookAdviserBizImpl implements BookAdviserBiz {
} }
return jumpBookState; return jumpBookState;
} }
@Override
public void updateOpenRecommend(Long bookId, Long adviserId, Long channelId, Integer isOpenRecommend, Integer recommendFromType) {
if (ObjectUtil.hasEmpty(bookId,adviserId,channelId,isOpenRecommend,recommendFromType)) {
throw new BizException(BizException.PARAM_IS_NULL.getCode(), "缺少参数!");
}
bookAdviserDao.updateOpenRecommend(bookId, adviserId, channelId, isOpenRecommend,recommendFromType);
}
@Override
public OpenRecommendVO getOpenRecommend(Long sceneId, Long bookId, Long adviserId, Long channelId) {
OpenRecommendVO openRecommendVO=null;
if(null == sceneId && null == bookId && null == adviserId && null == channelId) {
return openRecommendVO;
}
if (null != bookId) {
openRecommendVO = bookAdviserDao.getOpenRecommend(bookId, adviserId, channelId);
} else if (null != sceneId) {
//根据sceneId获取二维码信息
Map<Long, QrcodeSceneDto> qrcodeSceneDtoMap = qrcodeSceneConsr.listBaseInfoByIds(Lists.newArrayList(sceneId));
if (MapUtils.isEmpty(qrcodeSceneDtoMap) || null == qrcodeSceneDtoMap.get(sceneId)) {
return openRecommendVO;
}
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneDtoMap.get(sceneId);
if (null == qrcodeSceneDto || null == qrcodeSceneDto.getAdviserBookId()) {
return openRecommendVO;
}
openRecommendVO = bookAdviserDao.getOpenRecommend(qrcodeSceneDto.getAdviserBookId(), qrcodeSceneDto.getCreatedByUserLogin(),qrcodeSceneDto.getChannelPartyId());
}
return openRecommendVO;
}
} }
...@@ -13,6 +13,7 @@ import com.pcloud.book.book.dto.BookCountDto; ...@@ -13,6 +13,7 @@ import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.ERPPublishNumDTO; import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO; import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.dto.OpenRecommendVO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookInfo4ScanCount; import com.pcloud.book.book.vo.BookInfo4ScanCount;
...@@ -343,4 +344,8 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> { ...@@ -343,4 +344,8 @@ public interface BookAdviserDao extends BaseDao<BookAdviser> {
List<Long> getYesterdayUpdateBookIds(String startTime, String endTime); List<Long> getYesterdayUpdateBookIds(String startTime, String endTime);
void updateJumpBookState(Long bookId, Long adviserId, Long channelId, Integer isJumpBook); void updateJumpBookState(Long bookId, Long adviserId, Long channelId, Integer isJumpBook);
void updateOpenRecommend(Long bookId, Long adviserId, Long channelId, Integer isOpenRecommend, Integer recommendFromType);
OpenRecommendVO getOpenRecommend(Long bookId, Long adviserId, Long channelId);
} }
...@@ -18,6 +18,7 @@ import com.pcloud.book.book.dto.BookCountDto; ...@@ -18,6 +18,7 @@ import com.pcloud.book.book.dto.BookCountDto;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.ERPPublishNumDTO; import com.pcloud.book.book.dto.ERPPublishNumDTO;
import com.pcloud.book.book.dto.ErpBookInfoDTO; import com.pcloud.book.book.dto.ErpBookInfoDTO;
import com.pcloud.book.book.dto.OpenRecommendVO;
import com.pcloud.book.book.entity.BookAdviser; import com.pcloud.book.book.entity.BookAdviser;
import com.pcloud.book.book.vo.AgentBookStatsDetailVO; import com.pcloud.book.book.vo.AgentBookStatsDetailVO;
import com.pcloud.book.book.vo.BookInfo4ScanCount; import com.pcloud.book.book.vo.BookInfo4ScanCount;
...@@ -503,4 +504,24 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book ...@@ -503,4 +504,24 @@ public class BookAdviserDaoImpl extends BaseDaoImpl<BookAdviser> implements Book
paramMap.put("isJumpBook", isJumpBook); paramMap.put("isJumpBook", isJumpBook);
getSessionTemplate().update(getStatement("updateJumpBookState"), paramMap); getSessionTemplate().update(getStatement("updateJumpBookState"), paramMap);
} }
@Override
public void updateOpenRecommend(Long bookId, Long adviserId, Long channelId, Integer isOpenRecommend, Integer recommendFromType) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookId",bookId);
paramMap.put("channelId", channelId);
paramMap.put("adviserId", adviserId);
paramMap.put("isOpenRecommend", isOpenRecommend);
paramMap.put("recommendFromType", recommendFromType);
getSessionTemplate().update(getStatement("updateOpenRecommend"), paramMap);
}
@Override
public OpenRecommendVO getOpenRecommend(Long bookId, Long adviserId, Long channelId) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("bookId",bookId);
paramMap.put("channelId", channelId);
paramMap.put("adviserId", adviserId);
return getSessionTemplate().selectOne(getStatement("getOpenRecommend"), paramMap);
}
} }
...@@ -533,4 +533,30 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade { ...@@ -533,4 +533,30 @@ public class BookAdviserFacadeImpl implements BookAdviserFacade {
return new ResponseDto<>( bookAdviserBiz.getJumpBookState(bookId, adviserId, channelId)); return new ResponseDto<>( bookAdviserBiz.getJumpBookState(bookId, adviserId, channelId));
} }
/**
* 设置是否开启商品推荐
*/
@RequestMapping(value = "updateOpenRecommend", method = RequestMethod.GET)
public ResponseDto<?> updateOpenRecommend(@RequestHeader("token") String token,
@RequestParam(value = "bookId") Long bookId,
@RequestParam(value = "channelId") Long channelId,
@RequestParam(value = "isOpenRecommend") Integer isOpenRecommend,
@RequestParam(value = "recommendFromType") Integer recommendFromType
) throws PermissionException {
Long adviserId = (Long)SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
bookAdviserBiz.updateOpenRecommend(bookId, adviserId, channelId, isOpenRecommend,recommendFromType);
return new ResponseDto<>();
}
/**
* 查看是否开启商品推荐
*/
@RequestMapping(value = "getOpenRecommend", method = RequestMethod.GET)
public ResponseDto<?> getOpenRecommend(@RequestParam(value = "sceneId",required = false) Long sceneId,
@RequestParam(value = "bookId",required = false) Long bookId,
@RequestParam(value = "adviserId",required = false) Long adviserId,
@RequestParam(value = "channelId", required = false) Long channelId) throws PermissionException {
return new ResponseDto<>(bookAdviserBiz.getOpenRecommend(sceneId,bookId, adviserId, channelId));
}
} }
...@@ -20,13 +20,16 @@ import com.pcloud.channelcenter.wechat.entity.AccountSetting; ...@@ -20,13 +20,16 @@ import com.pcloud.channelcenter.wechat.entity.AccountSetting;
import com.pcloud.channelcenter.wechat.service.AccountSettingService; import com.pcloud.channelcenter.wechat.service.AccountSettingService;
import com.pcloud.channelcenter.wechat.service.MessageService; import com.pcloud.channelcenter.wechat.service.MessageService;
import com.pcloud.common.core.aspect.ParamLog; import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.promotion.base.exception.PromotionException;
import com.pcloud.usercenter.party.channel.service.ChannelService; import com.pcloud.usercenter.party.channel.service.ChannelService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -353,4 +356,26 @@ public class ChannelConsr { ...@@ -353,4 +356,26 @@ public class ChannelConsr {
return new ArrayList<>(); return new ArrayList<>();
} }
} }
/**
* 根据渠道标识,批量获取公众号信息
*/
public Map<Long, AccountSettingDto> listWechatAccountInfo(List<Long> channelIds) throws BizException {
LOGGER.warn("获取公众号信息[accountSettingService.listWechatAccountInfo],参数列表[channelIds]:" + channelIds);
Map<Long, AccountSettingDto> result=new HashMap<>();
if(CollUtil.isEmpty(channelIds)){
return new HashMap<>();
}
try {
ResponseEntity<ResponseDto<Map<Long, AccountSettingDto>>> response = accountSettingService.listWechat(channelIds);
result = ResponseHandleUtil.parseMap(response, Long.class,AccountSettingDto.class);
} catch (BizException e) {
LOGGER.error("获取公众号信息[accountSettingService.listWechatAccountInfo]:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("获取公众号信息[accountSettingService.listWechatAccountInfo]:" + e.getMessage(), e);
throw new PromotionException(PromotionException._ERROR, "获取公众号信息~!");
}
return result;
}
} }
package com.pcloud.book.consumer.user; package com.pcloud.book.consumer.user;
import com.pcloud.book.applet.contants.AppletConstants;
import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.util.common.CommonUtils;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils; import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil; import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.resourcecenter.base.constants.ResourceRedisCons;
import com.pcloud.usercenter.party.merchant.service.MerchantService; import com.pcloud.usercenter.party.merchant.service.MerchantService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import cn.hutool.core.collection.CollUtil;
/** /**
* @Description * @Description
* @Author ruansiyuan * @Author ruansiyuan
...@@ -59,4 +67,21 @@ public class MerchantConsr { ...@@ -59,4 +67,21 @@ public class MerchantConsr {
} }
return map; return map;
} }
public List<Long> getSuperMerchantIdList() throws BizException {
List<Long> result = null;
try {
result = JedisClusterUtils.getJsonList(BookConstant.SUPER_MERCHANT_LIST, Long.class);
if(CollUtil.isEmpty(result)){
Map<Long, Long> map = ResponseHandleUtil.parseMapResponse(merchantService.getSuperMerchantList(), Long.class, Long.class);
result = CollUtil.isEmpty(map) ? new ArrayList<>()
: new ArrayList<>(map.keySet());
JedisClusterUtils.setJsonList(BookConstant.SUPER_MERCHANT_LIST, result,
CommonUtils.todayRemainingSeconds());
}
} catch (Exception e) {
LOGGER.error("获取所有超级作者id,<ERROR>.[getSuperMerchantList]:" + e.getMessage(), e);
}
return result;
}
} }
...@@ -14,6 +14,7 @@ import com.pcloud.book.group.entity.ResourcePageCollect; ...@@ -14,6 +14,7 @@ import com.pcloud.book.group.entity.ResourcePageCollect;
import com.pcloud.book.group.entity.ResourcePagePic; import com.pcloud.book.group.entity.ResourcePagePic;
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.entity.ResourceRecomManage;
import com.pcloud.book.group.vo.RecommendServeVO;
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;
...@@ -472,4 +473,14 @@ public interface ResourcePageBiz { ...@@ -472,4 +473,14 @@ public interface ResourcePageBiz {
* * @param null * * @param null
*/ */
Boolean checkBookChildGrade(Long bookId, Long adviserId, Long channelId); Boolean checkBookChildGrade(Long bookId, Long adviserId, Long channelId);
/**
* 客户端-查询书刊推荐资源
*/
List<RecommendServeVO> getBookRecommendServe(Long wechatUserId, Long bookId, Long adviserId, Long channelId,Long sceneId);
/**
* 客户端-查询应用或作品推荐资源
*/
List<RecommendServeVO> getAppRecommendServe(Long wechatUserId, Long bookId, Long adviserId, Long channelId, Long serveId, String serveType,Long sceneId);
} }
package com.pcloud.book.group.biz.impl; package com.pcloud.book.group.biz.impl;
import cn.hutool.core.collection.CollUtil; import com.google.common.collect.Lists;
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;
...@@ -26,6 +21,7 @@ import com.pcloud.book.book.biz.BookBiz; ...@@ -26,6 +21,7 @@ import com.pcloud.book.book.biz.BookBiz;
import com.pcloud.book.book.constant.BookConstant; import com.pcloud.book.book.constant.BookConstant;
import com.pcloud.book.book.dto.BookAdviserDto; import com.pcloud.book.book.dto.BookAdviserDto;
import com.pcloud.book.book.dto.BookDto; import com.pcloud.book.book.dto.BookDto;
import com.pcloud.book.book.dto.OpenRecommendVO;
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.entity.Book;
import com.pcloud.book.book.enums.WxworkQrcodeType; import com.pcloud.book.book.enums.WxworkQrcodeType;
...@@ -50,11 +46,51 @@ import com.pcloud.book.group.biz.BookGroupBiz; ...@@ -50,11 +46,51 @@ import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.ResourcePageBiz; import com.pcloud.book.group.biz.ResourcePageBiz;
import com.pcloud.book.group.biz.ResourcePageBookstoreBiz; import com.pcloud.book.group.biz.ResourcePageBookstoreBiz;
import com.pcloud.book.group.constant.ResourcePageConstants; import com.pcloud.book.group.constant.ResourcePageConstants;
import com.pcloud.book.group.dao.*; import com.pcloud.book.group.dao.BookAppletSceneDao;
import com.pcloud.book.group.dto.*; import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.entity.*; import com.pcloud.book.group.dao.ResourcePageCollectDao;
import com.pcloud.book.group.dao.ResourcePageColumnDao;
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.ResourcePageNavigationDao;
import com.pcloud.book.group.dao.ResourcePagePicDao;
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;
import com.pcloud.book.group.dto.BookGroupServeDTO;
import com.pcloud.book.group.dto.BookServeDTO;
import com.pcloud.book.group.dto.MemberActivityBookSetDTO;
import com.pcloud.book.group.dto.NavigationParamDTO;
import com.pcloud.book.group.dto.ResourcePageCourseDTO;
import com.pcloud.book.group.dto.ResourcePageDTO;
import com.pcloud.book.group.dto.ResourcePageUrlDTO;
import com.pcloud.book.group.entity.BookAppletScene;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.ResourcePage;
import com.pcloud.book.group.entity.ResourcePageBookstore;
import com.pcloud.book.group.entity.ResourcePageCollect;
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.ResourcePageNavigation;
import com.pcloud.book.group.entity.ResourcePagePic;
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.*; import com.pcloud.book.group.vo.RecommendServeVO;
import com.pcloud.book.group.vo.ResourceColumnAndServeVO;
import com.pcloud.book.group.vo.ResourcePageBookstoreVO;
import com.pcloud.book.group.vo.ResourcePageItemVO;
import com.pcloud.book.group.vo.ResourcePageOneServe;
import com.pcloud.book.group.vo.ResourcePageVO;
import com.pcloud.book.group.vo.UpdateResourceColumnVO;
import com.pcloud.book.group.vo.UpdateResourcePageVO;
import com.pcloud.book.recommend.biz.BookRecommendBiz;
import com.pcloud.book.recommend.dto.RecommendServeDto;
import com.pcloud.book.rightsSetting.biz.RightsSettingBiz; import com.pcloud.book.rightsSetting.biz.RightsSettingBiz;
import com.pcloud.book.skill.biz.PcloudGroupActivityBiz; import com.pcloud.book.skill.biz.PcloudGroupActivityBiz;
import com.pcloud.book.util.common.ThreadPoolUtils; import com.pcloud.book.util.common.ThreadPoolUtils;
...@@ -77,17 +113,22 @@ import com.pcloud.common.core.constant.ProductTypeConstant; ...@@ -77,17 +113,22 @@ import com.pcloud.common.core.constant.ProductTypeConstant;
import com.pcloud.common.exceptions.BizException; import com.pcloud.common.exceptions.BizException;
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.*; import com.pcloud.common.utils.BeanUtils;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import com.pcloud.common.utils.QrcodeUtils;
import com.pcloud.common.utils.ServeLinkUtils;
import com.pcloud.common.utils.UUIDUitl;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils; 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.message.common.enums.YesNoEnums; import com.pcloud.message.common.enums.YesNoEnums;
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.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductLabelDto; import com.pcloud.resourcecenter.product.dto.ProductLabelDto;
import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto; import com.pcloud.usercenter.party.adviser.dto.AdviserBaseInfoDto;
import com.pcloud.wechatgroup.wxwork.dto.WxworkGroupQrcodeBaseDTO; import com.pcloud.wechatgroup.wxwork.dto.WxworkGroupQrcodeBaseDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -99,14 +140,31 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -99,14 +140,31 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.File; import java.io.File;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
import java.util.*;
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
...@@ -192,6 +250,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -192,6 +250,8 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
private AmqpTemplate amqpTemplate; private AmqpTemplate amqpTemplate;
@Autowired @Autowired
private BookAdviserBiz bookAdviserBiz; private BookAdviserBiz bookAdviserBiz;
@Autowired
private BookRecommendBiz bookRecommendBiz;
@Value("${nft.book}") @Value("${nft.book}")
private List<Long> nftBookId; private List<Long> nftBookId;
...@@ -2810,4 +2870,168 @@ public class ResourcePageBizImpl implements ResourcePageBiz { ...@@ -2810,4 +2870,168 @@ public class ResourcePageBizImpl implements ResourcePageBiz {
} }
return false; return false;
} }
/**
* 查询书刊推荐资源
*/
@Override
public List<RecommendServeVO> getBookRecommendServe(Long wechatUserId, Long bookId, Long adviserId, Long channelId,Long sceneId) {
//1.首先查书刊是否开启了资源推荐
OpenRecommendVO openRecommend=getRecommend(bookId,adviserId,channelId,sceneId);
if(null==openRecommend || null==openRecommend.getIsOpenRecommend() || 0==openRecommend.getIsOpenRecommend()){
return null;
}
//2.从系统数据表里面查到推荐资源,填充资源信息
List<RecommendServeDto> serveList = bookRecommendBiz.getById(bookId, channelId, adviserId, openRecommend.getRecommendFromType());
if(CollUtil.isEmpty(serveList)){
return null;
}
//3.填充服务信息。以及channel对应的公众号信息
List<RecommendServeVO> result = getRecommendServeVOS(channelId, serveList);
return result;
}
private OpenRecommendVO getRecommend(Long bookId, Long adviserId, Long channelId,Long sceneId){
OpenRecommendVO openRecommend=null;
if (null != bookId) {
openRecommend = bookAdviserBiz.getOpenRecommend(null, bookId, adviserId, channelId);
} else if (null != sceneId) {
//根据sceneId获取二维码信息
Map<Long, QrcodeSceneDto> qrcodeSceneDtoMap = qrcodeSceneConsr.listBaseInfoByIds(Lists.newArrayList(sceneId));
if (MapUtils.isEmpty(qrcodeSceneDtoMap) || null == qrcodeSceneDtoMap.get(sceneId)) {
return null;
}
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneDtoMap.get(sceneId);
if (null == qrcodeSceneDto || null == qrcodeSceneDto.getAdviserBookId()) {
return null;
}
openRecommend = bookAdviserBiz.getOpenRecommend(null,qrcodeSceneDto.getAdviserBookId(), qrcodeSceneDto.getCreatedByUserLogin(),qrcodeSceneDto.getChannelPartyId());
}
return openRecommend;
}
/**
* 客户端-查询应用或作品推荐资源
*/
@Override
public List<RecommendServeVO> getAppRecommendServe(Long wechatUserId, Long bookId, Long adviserId, Long channelId, Long serveId, String serveType,Long sceneId) {
//1.首先查书刊是否开启了资源推荐
OpenRecommendVO openRecommend=getRecommend(bookId,adviserId,channelId,sceneId);
if(null==openRecommend || null==openRecommend.getIsOpenRecommend() || 0==openRecommend.getIsOpenRecommend()){
return null;
}
//2.从系统数据表里面查到推荐资源,填充资源信息
List<RecommendServeDto> serveList = bookRecommendBiz.getByServeId(adviserId,serveId,serveType,openRecommend.getRecommendFromType());
if(CollUtil.isEmpty(serveList)){
return null;
}
//3.填充服务信息。以及channel对应的公众号信息
List<RecommendServeVO> result = getRecommendServeVOS(channelId, serveList);
return result;
}
private List<RecommendServeVO> getRecommendServeVOS(Long channelId, List<RecommendServeDto> serveList) {
List<Long> superMerchantIdList = merchantConsr.getSuperMerchantIdList();
List<Long> superProductIds = new ArrayList<>();
List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>();
serveList.stream().forEach(e -> {
if ("APP".equalsIgnoreCase(e.getServeType())) {
appIds.add(e.getServeId());
}
if ("PRODUCT".equalsIgnoreCase(e.getServeType())) {
productIds.add(e.getServeId());
}
});
Map<Long, AppDto> appDtoMap = appConsr.getBaseByIds(appIds);
Map<Long, ProductDto> productDtoMap = productConsr.getProBasesByIds(productIds);
List<Long> channelIds=new ArrayList<>();
/* if(CollUtil.isNotEmpty(appDtoMap)){
for (AppDto appDto : appDtoMap.values()) {
if(null!=appDto.getChannelId()){
channelIds.add(appDto.getChannelId());
}
}
}
if(CollUtil.isNotEmpty(productDtoMap)){
for (ProductDto productDto : productDtoMap.values()) {
if(null!=productDto.getChannelId()){
channelIds.add(productDto.getChannelId());
}
}
}*/
Map<Long, AccountSettingDto> map = channelConsr.listWechatAccountInfo(Lists.newArrayList(channelId));
List<RecommendServeVO> result = new ArrayList<>();
RecommendServeVO recommendServeVO;
for (RecommendServeDto dto : serveList) {
if (StrUtil.isBlank(dto.getServeType()) || null == dto.getServeId()) {
continue;
}
recommendServeVO = new RecommendServeVO();
if ("APP".equalsIgnoreCase(dto.getServeType()) && CollUtil.isNotEmpty(appDtoMap) && appDtoMap.containsKey(dto.getServeId())) {
AppDto appDto = appDtoMap.get(dto.getServeId());
recommendServeVO.setServeId(dto.getServeId());
recommendServeVO.setServeType("APP");
if (null != appDto) {
recommendServeVO.setServeName(appDto.getTitle());
recommendServeVO.setServePic(appDto.getSquareImg());
recommendServeVO.setTransverseImg(appDto.getTransverseImg());
recommendServeVO.setTypeCode(appDto.getTypeCode());
recommendServeVO.setTypeName(appDto.getTypeName());
recommendServeVO.setPrice(null == appDto.getRetailPrice() ? new BigDecimal(0) : appDto.getRetailPrice());
recommendServeVO.setHasThirdLink(!StringUtil.isEmpty(appDto.getTurnUrl()) ? true : false);
}
}
if ("PRODUCT".equalsIgnoreCase(dto.getServeType()) && CollUtil.isNotEmpty(productDtoMap) && productDtoMap.containsKey(dto.getServeId())) {
ProductDto productDto = productDtoMap.get(dto.getServeId());
recommendServeVO.setServeId(dto.getServeId());
recommendServeVO.setServeType("PRODUCT");
if (null != productDto) {
if(CollUtil.isNotEmpty(superMerchantIdList) && superMerchantIdList.contains(productDto.getCreatedUser())){
superProductIds.add(productDto.getProductId());
}
recommendServeVO.setServeName(productDto.getProductName());
recommendServeVO.setServePic(productDto.getCoverImg());
recommendServeVO.setTransverseImg(productDto.getPicture1());
recommendServeVO.setTypeCode(productDto.getProductTypeCode());
recommendServeVO.setTypeName(productDto.getProductTypeName());
if (productDto.getProductTypeDto() != null) {
recommendServeVO.setTypeCode(productDto.getProductTypeDto().getTypeCode());
recommendServeVO.setTypeName(productDto.getProductTypeDto().getTypeName());
}
if (!ListUtils.isEmpty(productDto.getSpecification())) {
Double advisePrice = productDto.getSpecification().get(0).getAdvisePrice();
recommendServeVO.setPrice(new BigDecimal(advisePrice));
}
recommendServeVO.setTransverseImg(StringUtil.isEmpty(productDto.getPicture1()) ?
getDefaultBigPic(recommendServeVO.getTypeCode()) : productDto.getPicture1());
recommendServeVO.setHasThirdLink(!StringUtil.isEmpty(productDto.getSkipUrl()) ? true : false);
}
}
if(StrUtil.isBlank(recommendServeVO.getServeName())){
continue;
}
if (CollUtil.isNotEmpty(map) && map.containsKey(channelId)) {
recommendServeVO.setChannelId(channelId);
AccountSettingDto accountSettingDto = map.get(channelId);
if (null != accountSettingDto) {
recommendServeVO.setAccountSettingId(accountSettingDto.getAccountSettingId());
recommendServeVO.setAppDomain("app" + (accountSettingDto.getRandom() == null ? "" : accountSettingDto.getRandom())
+ "." + accountSettingDto.getFirstDomain());
recommendServeVO.setDomain(accountSettingDto.getDomain());
recommendServeVO.setFirstDomain(accountSettingDto.getFirstDomain());
recommendServeVO.setRandom(accountSettingDto.getRandom());
recommendServeVO.setProtocol(accountSettingDto.getProtocol());
}
}
result.add(recommendServeVO);
}
//超级作者作品自动上架
if(CollUtil.isNotEmpty(superProductIds)){
ThreadPoolUtils.OTHER_POOL.execute(()-> {
productConsr.productAutoOnShelves(channelId,superProductIds);
});
}
return result;
}
} }
...@@ -12,8 +12,8 @@ import com.pcloud.channelcenter.qrcode.dto.BookSceneIdListDTO; ...@@ -12,8 +12,8 @@ import com.pcloud.channelcenter.qrcode.dto.BookSceneIdListDTO;
import com.pcloud.common.dto.ResponseDto; import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.utils.SessionUtil; import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie; import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.encrypt.AESUtil; import com.pcloud.common.utils.encrypt.AESUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -347,4 +347,28 @@ public class ResourcePageFacade { ...@@ -347,4 +347,28 @@ public class ResourcePageFacade {
Long wechatUserId = Cookie.getId(userInfo,Cookie._WECHAT_USER_ID); Long wechatUserId = Cookie.getId(userInfo,Cookie._WECHAT_USER_ID);
return new ResponseDto<>(resourcePageBiz.getPopupQrcode4Wechat(resourcePageId, wechatUserId)); return new ResponseDto<>(resourcePageBiz.getPopupQrcode4Wechat(resourcePageId, wechatUserId));
} }
@ApiOperation("客户端-查询书刊推荐资源")
@GetMapping("getBookRecommendServe")
public ResponseDto<?> getBookRecommendServe(@CookieValue("userInfo") String userInfo,
@RequestParam(value = "bookId", required = false) Long bookId,
@RequestParam(value = "adviserId", required = false) Long adviserId,
@RequestParam(value = "sceneId", required = false) Long sceneId,
@RequestParam(value = "channelId", required = false) Long channelId) {
Long wechatUserId = Cookie.getId(userInfo,Cookie._WECHAT_USER_ID);
return new ResponseDto<>(resourcePageBiz.getBookRecommendServe(wechatUserId, bookId, adviserId, channelId,sceneId));
}
@ApiOperation("客户端-查询应用或作品推荐资源")
@GetMapping("getServeRecommendList")
public ResponseDto<?> getAppRecommendServe(@CookieValue("userInfo") String userInfo,
@RequestParam(value = "bookId", required = false) Long bookId,
@RequestParam(value = "adviserId", required = false) Long adviserId,
@RequestParam(value = "channelId", required = false) Long channelId,
@RequestParam(value = "sceneId", required = false) Long sceneId,
@RequestParam(value = "serveId", required = false) Long serveId,
@RequestParam(value = "serveType", required = false) String serveType) {
Long wechatUserId = Cookie.getId(userInfo,Cookie._WECHAT_USER_ID);
return new ResponseDto<>(resourcePageBiz.getAppRecommendServe(wechatUserId, bookId, adviserId, channelId,serveId, serveType,sceneId));
}
} }
package com.pcloud.book.group.vo;
import com.pcloud.book.applet.dto.AppletOuterBooklistDTO;
import com.pcloud.book.applet.dto.GroupActivity4AppletDTO;
import com.pcloud.book.applet.entity.AppletThirdResources;
import com.pcloud.book.book.vo.response.BookQrcodeWxworkResponseVO;
import com.pcloud.common.dto.BaseDto;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 推荐资源vo
*/
@Data
public class RecommendServeVO extends BaseDto{
/**
* 资源id
*/
private Long serveId;
/**
* 资源类型
*/
private String serveType;
/**
* 资源类型
*/
private String typeCode;
/**
* 二维码来源
*/
private Integer qrcodeSource;
/**资源其他信息**/
private String serveName;
private String servePic;
private String typeName;
private String transverseImg;
private BigDecimal price;
private Long channelId;
private Long sceneId;
/**
* 二维码公众号id
*/
private Long accountSettingId;
/**
* 二维码公众号名称
*/
private String accountSettingName;
private String domain;
private String firstDomain;
private Long random;
private String appDomain;
/**
* http协议
*/
private String protocol;
/**
* 是否购买
*/
private Boolean buyState;
@ApiModelProperty("商品应用中有第三方链接")
private Boolean hasThirdLink;
}
package com.pcloud.book.recommend.biz;
import com.pcloud.book.recommend.dto.RecommendServeDto;
import com.pcloud.book.recommend.entity.BookRecommend;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
/**
* 基于书的推荐(BookRecommend)表服务接口
*
* @author makejava
* @since 2021-10-29 15:21:57
*/
public interface BookRecommendBiz {
/**
* 通过ID查询单条数据
*/
List<RecommendServeDto> getById(Long bookId, Long channelId, Long adviserId, Integer fromType);
/**
* 查应用或作品的资源推荐
*/
List<RecommendServeDto> getByServeId(Long adviserId,Long serveId, String serveType, Integer fromType);
}
\ No newline at end of file
package com.pcloud.book.recommend.biz.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.pcloud.book.recommend.dao.ResourceRecommendDao;
import com.pcloud.book.recommend.dto.RecommendServeDto;
import com.pcloud.book.recommend.entity.BookRecommend;
import com.pcloud.book.recommend.dao.BookRecommendDao;
import com.pcloud.book.recommend.biz.BookRecommendBiz;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.NumberUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
/**
* 基于书的推荐(BookRecommend)表服务实现类
*
* @author makejava
* @since 2021-10-29 15:21:58
*/
@Service("bookRecommendBiz")
public class BookRecommendBizImpl implements BookRecommendBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(BookRecommendBizImpl.class);
@Autowired
private BookRecommendDao bookRecommendDao;
@Autowired
private ResourceRecommendDao resourceRecommendDao;
@Override
public List<RecommendServeDto> getById(Long bookId, Long channelId, Long adviserId, Integer fromType) {
String recommend=bookRecommendDao.getBookRecommend(bookId,channelId,adviserId,fromType);
if(StrUtil.isBlank(recommend)){
return null;
}
List<RecommendServeDto> result = getRecommendServeDtos(recommend);
if (result == null) return null;
return result;
}
private List<RecommendServeDto> getRecommendServeDtos(String recommend) {
List<String> ids = JSONArray.parseArray(recommend, String.class);
if(CollUtil.isEmpty(ids)){
return null;
}
List<RecommendServeDto> result=new ArrayList<>();
RecommendServeDto recommendServeDto;
for (String id : ids) {
recommendServeDto=new RecommendServeDto();
Long serveId=null;
String prefix=null;
if(id.startsWith("AP")){
recommendServeDto.setServeType("APP");
prefix="AP";
}else if(id.startsWith("PD")){
recommendServeDto.setServeType("PRODUCT");
prefix="PD";
}else{
continue;
}
String ap = id.replace(prefix, "");
try {
serveId = Long.valueOf(ap);
} catch (NumberFormatException e) {
continue;
}
recommendServeDto.setServeId(serveId);
result.add(recommendServeDto);
}
return result;
}
@Override
public List<RecommendServeDto> getByServeId(Long adviserId,Long serveId, String serveType, Integer fromType) {
String recommend=resourceRecommendDao.getServeRecommend(adviserId,serveId,serveType,fromType);
if(StrUtil.isBlank(recommend)){
return null;
}
List<RecommendServeDto> result = getRecommendServeDtos(recommend);
if (result == null) return null;
return result;
}
}
package com.pcloud.book.recommend.dao;
import com.pcloud.book.recommend.entity.BookRecommend;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* 基于书的推荐(BookRecommend)表数据库访问层
*
* @author makejava
* @since 2021-10-29 15:21:56
*/
public interface BookRecommendDao extends BaseDao<BookRecommend> {
String getBookRecommend(Long bookId, Long channelId, Long adviserId, Integer fromType);
}
\ No newline at end of file
package com.pcloud.book.recommend.dao;
import com.pcloud.book.recommend.entity.ResourceRecommend;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
/**
* 基于资源的推荐(ResourceRecommend)表数据库访问层
*
* @author makejava
* @since 2021-10-29 15:22:48
*/
public interface ResourceRecommendDao extends BaseDao<ResourceRecommend> {
String getServeRecommend(Long adviserId,Long serveId, String serveType, Integer fromType);
}
\ No newline at end of file
package com.pcloud.book.recommend.dao.impl;
import com.pcloud.book.recommend.entity.BookRecommend;
import com.pcloud.book.recommend.dao.BookRecommendDao;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 基于书的推荐(BookRecommend)表数据库访问层
*
* @author makejava
* @since 2021-10-29 15:21:57
*/
@Repository("bookRecommendDaoImpl")
public class BookRecommendDaoImpl extends BaseDaoImpl<BookRecommend> implements BookRecommendDao {
@Override
public String getBookRecommend(Long bookId, Long channelId, Long adviserId, Integer fromType) {
Map<String,Object> paramMap=new HashMap<>();
paramMap.put("bookId",bookId);
paramMap.put("channelId",channelId);
paramMap.put("adviserId",adviserId);
paramMap.put("fromType",fromType);
return super.getSessionTemplate().selectOne(getStatement("getBookRecommend"),paramMap);
}
}
\ No newline at end of file
package com.pcloud.book.recommend.dao.impl;
import com.pcloud.book.recommend.entity.ResourceRecommend;
import com.pcloud.book.recommend.dao.ResourceRecommendDao;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 基于资源的推荐(ResourceRecommend)表数据库访问层
*
* @author makejava
* @since 2021-10-29 15:22:48
*/
@Repository("resourceRecommendDaoImpl")
public class ResourceRecommendDaoImpl extends BaseDaoImpl<ResourceRecommend> implements ResourceRecommendDao {
@Override
public String getServeRecommend(Long adviserId,Long serveId, String serveType, Integer fromType) {
Map<String,Object> paramMap=new HashMap<>();
paramMap.put("serveId",serveId);
paramMap.put("serveType",serveType);
paramMap.put("fromType",fromType);
paramMap.put("adviserId",adviserId);
return super.getSessionTemplate().selectOne(getStatement("getServeRecommend"),paramMap);
}
}
\ No newline at end of file
package com.pcloud.book.recommend.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @ClassName com.pcloud.book.recommend.dto.RecommendServeDto
* @Author David
* @Description
* @Date 2021/10/29 18:16
* @Version 1.0
**/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RecommendServeDto {
@ApiModelProperty("服务标识")
private Long serveId;
@ApiModelProperty("服务类型")
private String serveType;
}
package com.pcloud.book.recommend.entity;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 基于书的推荐(BookRecommend)实体类
*
* @author makejava
* @since 2021-10-29 15:21:53
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class BookRecommend extends BaseEntity {
private static final long serialVersionUID = 780912455843928302L;
@ApiModelProperty("书刊id")
private Long bookId;
@ApiModelProperty("编辑id")
private Long adviserId;
@ApiModelProperty("渠道id")
private Integer channelId;
@ApiModelProperty("推荐类型")
private Integer resourceLimitType;
@ApiModelProperty("推荐id集合")
private String recommendList;
@ApiModelProperty("修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
}
\ No newline at end of file
package com.pcloud.book.recommend.entity;
import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 基于资源的推荐(ResourceRecommend)实体类
*
* @author makejava
* @since 2021-10-29 15:22:48
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ResourceRecommend extends BaseEntity {
private static final long serialVersionUID = 910936933680168511L;
@ApiModelProperty("编辑id")
private Long adviserId;
@ApiModelProperty("应用或作品id")
private Integer productOrAppId;
@ApiModelProperty("服务类型")
private String serverType;
@ApiModelProperty("商品来源")
private Integer resourceLimitType;
@ApiModelProperty("推荐id集合")
private String recommendList;
@ApiModelProperty("修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
}
\ No newline at end of file
...@@ -1329,4 +1329,40 @@ ...@@ -1329,4 +1329,40 @@
IS_DELETE = 0 IS_DELETE = 0
</update> </update>
<update id="updateOpenRecommend" parameterType="map">
update
book_adviser
set
is_open_recommend = #{isOpenRecommend},
recommend_from_type = #{recommendFromType},
last_modified_date = NOW()
where
book_id = #{bookId, jdbcType=BIGINT}
AND
adviser_id = #{adviserId, jdbcType=BIGINT}
AND
channel_id = #{channelId, jdbcType=BIGINT}
and
is_delete = 0
</update>
<select id="getOpenRecommend" parameterType="map" resultType="com.pcloud.book.book.dto.OpenRecommendVO">
select
is_open_recommend isOpenRecommend,
recommend_from_type recommendFromType
from
book_adviser
where
book_id = #{bookId}
<if test="adviserId != null">
and adviser_id = #{adviserId}
</if>
<if test="channelId != null">
and channel_id = #{channelId}
</if>
and
is_delete = 0
limit 1
</select>
</mapper> </mapper>
<?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.recommend.dao.impl.BookRecommendDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.recommend.entity.BookRecommend">
<result column="book_id" property="bookId" jdbcType="BIGINT"/>
<result column="adviser_id" property="adviserId" jdbcType="BIGINT"/>
<result column="channel_id" property="channelId" jdbcType="INTEGER"/>
<result column="resource_limit_type" property="resourceLimitType" jdbcType="INTEGER"/>
<result column="recommend_list" property="recommendList" jdbcType="VARCHAR"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
book_id, adviser_id, channel_id, resource_limit_type, recommend_list, update_time
</sql>
<select id="getById" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM book_recommend
WHERE book_id = #{bookId}
</select>
<!--通过主键删除-->
<delete id="deleteById">
DELETE FROM book_recommend WHERE book_id = #{bookId}
</delete>
<select id="getBookRecommend" parameterType="map" resultType="String">
select recommend_list
from book_recommend
where book_id=#{bookId}
and adviser_id=#{adviserId}
and channel_id=#{channelId}
and resource_limit_type=#{fromType}
limit 1
</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.recommend.dao.impl.ResourceRecommendDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.recommend.entity.ResourceRecommend">
<result column="adviser_id" property="adviserId" jdbcType="BIGINT"/>
<result column="product_or_app_id" property="productOrAppId" jdbcType="INTEGER"/>
<result column="server_type" property="serverType" jdbcType="VARCHAR"/>
<result column="resource_limit_type" property="resourceLimitType" jdbcType="INTEGER"/>
<result column="recommend_list" property="recommendList" jdbcType="VARCHAR"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
adviser_id, product_or_app_id, server_type, resource_limit_type, recommend_list, update_time
</sql>
<select id="getById" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM resource_recommend
WHERE adviser_id = #{adviserId}
</select>
<select id="getList" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM resource_recommend
</select>
<insert id="insert" keyProperty="adviserId" useGeneratedKeys="true">
INSERT INTO resource_recommend(
recommend_list,
update_time
) VALUES (
#{recommendList, jdbcType=VARCHAR},
#{updateTime, jdbcType=TIMESTAMP}
)
</insert>
<insert id="batchInsert" keyProperty="adviserId" useGeneratedKeys="true">
INSERT INTO resource_recommend (
recommend_list,
update_time
) VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.recommendList, jdbcType=VARCHAR},
#{item.updateTime, jdbcType=TIMESTAMP}
)
</foreach>
</insert>
<!--通过主键修改数据-->
<update id="update">
UPDATE resource_recommend
<set>
<if test="recommendList != null and recommendList != ''">
recommend_list = #{recommendList},
</if>
<if test="updateTime != null">
update_time = #{updateTime},
</if>
</set>
WHERE adviser_id = #{adviserId}
</update>
<!--通过主键删除-->
<delete id="deleteById">
DELETE FROM resource_recommend WHERE adviser_id = #{adviserId}
</delete>
<select id="getServeRecommend" parameterType="map" resultType="String">
select recommend_list
from resource_recommend
where product_or_app_id=#{serveId}
and server_type=#{serveType}
and resource_limit_type=#{fromType}
and adviser_id=#{adviserId}
limit 1
</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