Commit eed61c35 by 杨涛

【ID1001094】

parent 0ae5bbf4
......@@ -3,13 +3,8 @@ package com.pcloud.book.keywords.biz;
import com.pcloud.book.keywords.dto.KeywordDTO;
import com.pcloud.book.keywords.dto.KeywordStatisticsDTO;
import com.pcloud.book.keywords.dto.ReplyKeywordDTO;
import com.pcloud.book.keywords.vo.KeywordVO;
import com.pcloud.book.keywords.vo.ListKeywordParam;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.book.keywords.vo.ReplyMessageVO;
import com.pcloud.book.keywords.vo.SetKeywordVO;
import com.pcloud.book.keywords.vo.SetRankVO;
import com.pcloud.book.keywords.vo.UpdateKeywordVO;
import com.pcloud.book.keywords.dto.ServiceResourceDTO;
import com.pcloud.book.keywords.vo.*;
import com.pcloud.common.page.PageBeanNew;
import java.util.List;
......@@ -87,6 +82,20 @@ public interface BookKeywordBiz {
*/
PageBeanNew<KeywordStatisticsDTO> getKeywordStatistics(Integer currentPage, Integer numPerPage, Long bookGroupId, String weixinGroupId);
/**
* 获取某个群内关键词配置的所有资源
* @param qrWeixinParam
* @return
*/
List<ServiceResourceDTO> getServiceByWeixinGroup(QrWeixinParam qrWeixinParam,Long classifyId, Long qrcodeId);
ReplyKeywordDTO getReplyKeyword(String content, String weixinGroupId, String wexinGroupName);
/**
* 获取现代纸书的资源服务
* @param qrWeixinParam
* @return
*/
List<ServiceResourceDTO> getServiceByChannel(QrWeixinParam qrWeixinParam, Long wechatUserId);
}
......@@ -28,29 +28,32 @@ import com.pcloud.book.keywords.dao.KeywordDao;
import com.pcloud.book.keywords.dto.KeywordDTO;
import com.pcloud.book.keywords.dto.KeywordStatisticsDTO;
import com.pcloud.book.keywords.dto.ReplyKeywordDTO;
import com.pcloud.book.keywords.dto.ServiceResourceDTO;
import com.pcloud.book.keywords.entity.BookKeyword;
import com.pcloud.book.keywords.entity.BookKeywordRecord;
import com.pcloud.book.keywords.entity.Keyword;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.keywords.vo.KeywordVO;
import com.pcloud.book.keywords.vo.ListKeywordParam;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.book.keywords.vo.SetKeywordVO;
import com.pcloud.book.keywords.vo.SetRankVO;
import com.pcloud.book.keywords.vo.UpdateKeywordVO;
import com.pcloud.book.keywords.vo.*;
import com.pcloud.channelcenter.base.constants.ChannelEnum;
import com.pcloud.channelcenter.qrcode.service.QrcodeSceneService;
import com.pcloud.channelcenter.qrcode.vo.MessageBookVO;
import com.pcloud.channelcenter.qrcode.vo.QrWeixinParamVO;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.ResponseHandleUtil;
import com.pcloud.common.utils.bean.ResponesUtils;
import com.pcloud.common.utils.cache.redis.JedisClusterUtils;
import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.resourcecenter.product.dto.ProductDto;
import com.pcloud.resourcecenter.product.dto.ProductTypeDto;
import com.pcloud.wechatgroup.group.dto.RobotReplyDTO;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
......@@ -59,10 +62,12 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.stream.Collectors;
import javax.annotation.Resource;
......@@ -102,6 +107,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
private BookKeywordWarehouseBiz bookKeywordWarehouseBiz;
@Autowired
private BookGroupClassifyDao bookGroupClassifyDao;
@Autowired
private QrcodeSceneService qrcodeSceneService;
@Override
@ParamLog("新增关键词")
......@@ -489,6 +496,67 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
return pageBeanNew;
}
@Override
public List<ServiceResourceDTO> getServiceByWeixinGroup(QrWeixinParam qrWeixinParam,Long classifyId, Long qrcodeId) {
Map<String, Object> map = new HashMap<>();
map.put("bookGroupId", qrWeixinParam.getBookGroupId());
List<ServiceResourceDTO> serviceResourceDTOS = ResponesUtils.list(bookKeywordDao.listBy(map, "getServiceByWeixinGroup"), ServiceResourceDTO.class);
if (ListUtils.isEmpty(serviceResourceDTOS)) {
return new ArrayList<>();
}
for (ServiceResourceDTO serviceResourceDTO : serviceResourceDTOS) {
AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(serviceResourceDTO.getChannelId());
String linkUrl = SendWeixinRequestTools.splitUrlNew(accountSettingDto, serviceResourceDTO.getUrl(), qrWeixinParam.getBookGroupId(), classifyId, qrcodeId);
serviceResourceDTO.setUrl(linkUrl);
}
List<Long> appIds = serviceResourceDTOS.stream().filter(s -> ("APP").equals(s.getTypeCode())).map(ServiceResourceDTO::getFromId).collect(Collectors.toList());
Map<Long, AppDto> appMap = appConsr.getBaseByIds(appIds);
if (!MapUtils.isEmpty(appMap)) {
for (ServiceResourceDTO serviceResourceDTO : serviceResourceDTOS) {
AppDto appDto = appMap.get(serviceResourceDTO.getFromId());
if (appDto != null && serviceResourceDTO.getTypeCode().equals("APP")) {
serviceResourceDTO.setFromType(appDto.getTypeCode());
serviceResourceDTO.setTitle(appDto.getTitle());
serviceResourceDTO.setShortName(appDto.getTypeName());
}
}
}
List<Long> productIds = serviceResourceDTOS.stream().filter(s -> ("PRODUCT").equals(s.getTypeCode())).map(ServiceResourceDTO::getFromId).collect(Collectors.toList());
Map<Long, ProductDto> productMap = productConsr.getProBasesByIds(productIds);
if (!MapUtils.isEmpty(productMap)) {
for (ServiceResourceDTO serviceResourceDTO : serviceResourceDTOS) {
ProductDto productDto = productMap.get(serviceResourceDTO.getFromId());
if (productDto != null && serviceResourceDTO.getTypeCode().equals("PRODUCT")) {
ProductTypeDto productTypeDto = productDto.getProductTypeDto();
if (productTypeDto != null) {
serviceResourceDTO.setFromType(productTypeDto.getTypeCode());
serviceResourceDTO.setTitle(productDto.getProductName());
serviceResourceDTO.setShortName(productTypeDto.getTypeName());
}
}
}
}
if (serviceResourceDTOS != null && !StringUtil.isEmpty(qrWeixinParam.getTypeCode()) && qrWeixinParam.getServeId() != null) {
serviceResourceDTOS.removeIf(vo -> (qrWeixinParam.getTypeCode().equals(vo.getTypeCode()) && qrWeixinParam.getServeId().equals(vo.getFromId())));
}
List<ServiceResourceDTO> uniqueResources = serviceResourceDTOS.stream().collect(
Collectors. collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getFromId() + ";" + o.getTypeCode()))), ArrayList::new)
);
return uniqueResources;
}
@Override
public List<ServiceResourceDTO> getServiceByChannel(QrWeixinParam qrWeixinParam, Long wechatUserId) {
QrWeixinParamVO qrWeixinParamVO = new QrWeixinParamVO();
BeanUtils.copyProperties(qrWeixinParam, qrWeixinParamVO);
List<MessageBookVO> messageBookVOS = ResponseHandleUtil.parseListResponse(qrcodeSceneService.getQrMessage4Book(qrWeixinParamVO, wechatUserId), MessageBookVO.class);
return ResponesUtils.list(messageBookVOS, ServiceResourceDTO.class);
}
@Override
public ReplyKeywordDTO getReplyKeyword(String content, String weixinGroupId, String wexinGroupName) {
ReplyKeywordDTO replyKeywordDTO = null;
......
package com.pcloud.book.keywords.dto;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.io.Serializable;
import java.math.BigDecimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author 杨涛
* @description 资源服务
* @date 2019/7/17 18:38
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ServiceResourceDTO implements Serializable {
@ApiModelProperty("标题")
private String title;
@ApiModelProperty("具体类型")
private String fromType;
@ApiModelProperty("来源标识")
private Long fromId;
@ApiModelProperty("封面图")
private String coverImg;
@ApiModelProperty("跳转链接")
private String url;
@ApiModelProperty("短名称")
private String shortName;
@ApiModelProperty("类型(商品或应用)")
private String typeCode;
@ApiModelProperty("关键词")
private String keyword;
@ApiModelProperty("渠道ID")
private Long channelId;
}
package com.pcloud.book.keywords.facade;
import com.pcloud.book.keywords.vo.KeywordVO;
import com.pcloud.book.keywords.vo.ListKeywordParam;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.book.keywords.vo.SetKeywordVO;
import com.pcloud.book.keywords.vo.SetRankVO;
import com.pcloud.book.keywords.vo.UpdateKeywordVO;
import com.pcloud.book.keywords.vo.*;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -110,6 +106,14 @@ public interface BookKeywordFacade {
@RequestParam(value = "weixinGroupId",required = false) String weixinGroupId
) throws BizException, PermissionException;
@ApiOperation("获取某个群内关键词配置的所有资源")
@ApiImplicitParams({
@ApiImplicitParam(name = "userInfo", value = "Cookie", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "qrWeixinParam", value = "查询参数", dataType = "QrWeixinParam", paramType = "body") })
@PostMapping("getAllServiceByWeixinGroup4Wechat")
ResponseDto<?> getAllServiceByWeixinGroup4Wechat(@CookieValue("userInfo")String userInfo, @RequestBody QrWeixinParam qrWeixinParam)
throws BizException, PermissionException;
@ApiOperation(value = "根据关键词获取要回复的内容", httpMethod = "GET")
@RequestMapping(value = "getReplyKeyword", method = RequestMethod.GET)
ResponseDto<String> getReplyKeyword(@RequestParam String content, @RequestParam(value = "weixinGroupId", required = false) String weixinGroupId,
......
......@@ -4,20 +4,19 @@ import com.alibaba.fastjson.JSONObject;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.keywords.biz.BookKeywordBiz;
import com.pcloud.book.keywords.dto.ReplyKeywordDTO;
import com.pcloud.book.keywords.dto.ServiceResourceDTO;
import com.pcloud.book.keywords.facade.BookKeywordFacade;
import com.pcloud.book.keywords.vo.KeywordVO;
import com.pcloud.book.keywords.vo.ListKeywordParam;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.book.keywords.vo.SetKeywordVO;
import com.pcloud.book.keywords.vo.SetRankVO;
import com.pcloud.book.keywords.vo.UpdateKeywordVO;
import com.pcloud.book.keywords.vo.*;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.cookie.Cookie;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -27,6 +26,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import io.swagger.annotations.ApiOperation;
......@@ -116,6 +116,31 @@ public class BookKeywordFacadeImpl implements BookKeywordFacade {
return new ResponseDto<>(bookKeywordBiz.getKeywordStatistics(currentPage,numPerPage,bookGroupId,weixinGroupId));
}
@ApiOperation("获取某个群内关键词配置的所有资源")
@PostMapping("getAllServiceByWeixinGroup4Wechat")
@Override
public ResponseDto<?> getAllServiceByWeixinGroup4Wechat(@CookieValue("userInfo")String userInfo, @RequestBody QrWeixinParam qrWeixinParam)
throws BizException, PermissionException {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
Long sceneId = Cookie.getId(userInfo, Cookie._SCENE_ID);
Long bookGroupId = Cookie.getId(userInfo, Cookie.BOOK_GROUP_ID);
Long classifyId = Cookie.getId(userInfo, Cookie.CLASSIFY_ID);
Long qrcodeId = Cookie.getId(userInfo, Cookie.QRCODE_ID);
qrWeixinParam.setBookGroupId(bookGroupId);
qrWeixinParam.setSceneId(sceneId);
if (qrWeixinParam.getBookGroupId() != null && !qrWeixinParam.getBookGroupId().equals(0L)) {
List<ServiceResourceDTO> result1 = bookKeywordBiz.getServiceByWeixinGroup(qrWeixinParam, classifyId, qrcodeId);
return new ResponseDto<>(ListUtils.isEmpty(result1) ? new ArrayList<>() : result1);
}
if (qrWeixinParam.getSceneId() != null && !qrWeixinParam.getSceneId().equals(0L)) {
List<ServiceResourceDTO> result2 = bookKeywordBiz.getServiceByChannel(qrWeixinParam, wechatUserId);
return new ResponseDto<>(ListUtils.isEmpty(result2) ? new ArrayList<>() : result2);
}
return new ResponseDto<>(new ArrayList<>());
}
@Override
@RequestMapping(value = "getReplyKeyword", method = RequestMethod.GET)
public ResponseDto<String> getReplyKeyword(@RequestParam String content, @RequestParam(value = "weixinGroupId", required = false) String weixinGroupId,
......
package com.pcloud.book.keywords.vo;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/**
* @author 杨涛
* @description 参数
* @date 2019/7/18 10:48
*/
@ApiModel
public class QrWeixinParam implements Serializable {
@ApiModelProperty("社群ID")
private Long bookGroupId;
@ApiModelProperty("二维码ID")
private Long sceneId;
@ApiModelProperty("服务资源ID")
private Long serveId;
@ApiModelProperty("类型(商品或应用)")
private String typeCode;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getSceneId() {
return sceneId;
}
public void setSceneId(Long sceneId) {
this.sceneId = sceneId;
}
public Long getServeId() {
return serveId;
}
public void setServeId(Long serveId) {
this.serveId = serveId;
}
public String getTypeCode() {
return typeCode;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
@Override
public String toString() {
return "QrWeixinParam{" +
"bookGroupId=" + bookGroupId +
", sceneId=" + sceneId +
", serveId=" + serveId +
", typeCode='" + typeCode + '\'' +
'}';
}
}
......@@ -261,4 +261,22 @@
ORDER BY
bk.rank ASC,bk.id DESC
</select>
<select id="getServiceByWeixinGroup" parameterType="map" resultType="com.pcloud.book.keywords.dto.ServiceResourceDTO">
SELECT
t.channel_id as channelId,
t2.pic_url as coverImg,
t2.serve_id as fromId,
t2.serve_type as typeCode,
t2.link_url as url,
t2.keywords as keyword
FROM
book_keyword t
INNER JOIN keyword t2 on t.keyword_id=t2.id
WHERE
t.is_delete = 0
AND t2.is_delete = 0
AND t.book_group_id = #{bookGroupId}
AND t2.reply_type = 4
order by t.create_time desc
</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