Commit 2ff201a5 by 田超

Merge branch 'feature/1004042' into 'master'

feat: [1004042] 编辑创建RAYS码主流程优化

See merge request rays/pcloud-book!1108
parents 77336bf3 23df98c4
......@@ -9,17 +9,17 @@ package com.pcloud.book.group.enums;
public enum QrcodeJumpType {
/**
* 进小程序-书僮小睿
* 进小程序-书僮小睿 /t-3/
*/
APPLET_XIAORUI(1, "书僮小睿"),
/**
* 进小程序-书晓
* 进小程序-书晓 /t-4/
*/
APPLET_SHUXIAO(2, "书晓"),
/**
* 进h5-书僮小睿小程序码/跳转按钮
* 进h5-书僮小睿小程序码/跳转按钮 /t-5/
*/
H5_XIAORUI(3, "书僮小睿小程序码/跳转按钮"),
......@@ -28,13 +28,17 @@ public enum QrcodeJumpType {
*/
H5_ENTERPRISE_WECHAT(4,"企业微信活码"),
/**
* 进h5-出版社公众号二维码
* 进h5-出版社公众号二维码 /t-6/
*/
H5_OFFICIAL_ACCOUNTS(5,"出版社公众号二维码"),
/**
* 进h5-自定义链接
*/
H5_SELF_URL(6,"自定义链接");
H5_SELF_URL(6,"自定义链接"),
/**
* 进h5-资源页 /t-7/
*/
H5_RESOURCE(7,"资源页");
private final Integer code;
......
......@@ -9,6 +9,7 @@ import com.pcloud.book.group.dto.BackgroundGroupQrcodeDTO;
import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupClassifyDTO;
import com.pcloud.book.group.dto.BookGroupCountDTO;
import com.pcloud.book.group.dto.BookGroupCreateDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupKeywordResourceDTO;
import com.pcloud.book.group.dto.BookGroupSceneDTO;
......@@ -1008,4 +1009,20 @@ public interface BookGroupBiz {
BackgroundGroupQrcodeDTO getBackgroundGroupQr(BackgroundGroupQrcodeDTO backgroundGroupQrcodeDTO);
List<BookServeDTO> getBookAndBookGroupServeIdsFive(Long adviserId, Long bookId, Long channelId);
/**
* 书刊创建RAYS码-支持1对多
* @author:zhuyajie
* @date:2020/12/14 10:20
* * @param null
*/
BookGroup createBookGroup(BookGroupCreateDTO bookGroupCreateDTO);
/**
* 获取社群码下配的资源
* @author:zhuyajie
* @date:2020/12/16 17:55
* * @param null
*/
List<BookServeDTO> getServeListByBookGroupId(Long bookGroupId, Long channelId);
}
......@@ -82,6 +82,7 @@ import com.pcloud.book.group.dto.BackgroundGroupQrcodeDTO;
import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupClassifyDTO;
import com.pcloud.book.group.dto.BookGroupCountDTO;
import com.pcloud.book.group.dto.BookGroupCreateDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupIdAndCountDTO;
import com.pcloud.book.group.dto.BookGroupKeywordResourceDTO;
......@@ -660,9 +661,18 @@ public class BookGroupBizImpl implements BookGroupBiz {
bookDto.setBookName(null != bookDto.getBookName() ? StringUtil.addBracket(bookDto.getBookName()) : null);
bookGroupDTO.setBookInfo(bookDto);
}
//好友引导语
List<BookGroupFriendGuide> friendGuides = this.getFriendGuideList(bookGroupDTO.getId());
if (!ListUtils.isEmpty(friendGuides)) {
bookGroupDTO.setFriendGuideList(friendGuides);
}
//设置样式
GroupQrcodeStyle groupQrcodeStyle = groupQrcodeStyleDao.getQrcodeStyleByBookGroupId(bookGroupDTO.getId());
bookGroupDTO.setGroupQrcodeStyle(groupQrcodeStyle);
return bookGroupDTO;
}
public BookGroupDTO getBookInfo( Long bookGroupId ) throws BizException {
BookGroupDTO bookGroupDTO = bookGroupDao.getBookInfo(bookGroupId);
return bookGroupDTO;
......@@ -876,9 +886,12 @@ public class BookGroupBizImpl implements BookGroupBiz {
} else if (QrcodeJumpType.H5_XIAORUI.getCode().equals(jumpType)) {
//进h5-书僮小睿小程序码/跳转按钮
url = bookGroupQrcodeDomain + "/t-5/" + agentId + "/" + bookGroupId;
} else if (QrcodeJumpType.H5_OFFICIAL_ACCOUNTS.getCode().equals(jumpType)){
} else if (QrcodeJumpType.H5_OFFICIAL_ACCOUNTS.getCode().equals(jumpType)) {
//进h5-出版社公众号二维码
url = bookGroupQrcodeDomain + "/t-6/" + agentId + "/" + bookGroupId;
} else if (QrcodeJumpType.H5_RESOURCE.getCode().equals(jumpType)) {
//进h5-资源页
url = bookGroupQrcodeDomain + "/t-7/" + agentId + "/" + bookGroupId;
} else {
//小睿码t-3
url = bookGroupQrcodeDomain + "/t-3/" + agentId + "/" + bookGroupId;
......@@ -952,7 +965,9 @@ public class BookGroupBizImpl implements BookGroupBiz {
|| StringUtil.isEmpty(bookGroup.getShortBookName()))) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "参数有误!");
}
if (JoinGroupTypeEnum.AI_ROBOT.getCode().equals(bookGroup.getJoinGroupType())) {
checkShortBookName(bookGroup);
}
if (bookGroup.getGroupQrcodeName().contains("#")) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "名称不能包含#!");
}
......@@ -963,10 +978,6 @@ public class BookGroupBizImpl implements BookGroupBiz {
if (!bookGroup.getJoinGroupType().equals(group.getJoinGroupType())) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "社群码前后类型不一致!!");
}
if (JoinGroupTypeEnum.ROBOT.getCode().equals(bookGroup.getJoinGroupType())
|| JoinGroupTypeEnum.AI_ROBOT.getCode().equals(bookGroup.getJoinGroupType())) {
checkShortBookName(bookGroup);
}
if (JoinGroupTypeEnum.AI_ROBOT.getCode().equals(bookGroup.getJoinGroupType())) {
this.updateFriendGuide(bookGroup.getId(), bookGroup.getFriendGuideList(), group.getCreateUser());
}
......@@ -1232,9 +1243,12 @@ public class BookGroupBizImpl implements BookGroupBiz {
} else {
bookDto.setTotalIncome(BigDecimal.ZERO);
}
if (JoinGroupTypeEnum.ROBOT.getCode().equals(bookDto.getJoinGroupType())
|| JoinGroupTypeEnum.AI_ROBOT.getCode().equals(bookDto.getJoinGroupType())){
//好友数量
Integer friendsCount = bookGroupCipherUserDao.getFriendsCountByBookGroup(bookGroupId);
bookDto.setFriendsCount(friendsCount);
}
Boolean hasRobotKeyword = selfRobotKeywordBiz.hasKeyword(bookGroupId);
bookDto.setHasRobotKeyword(hasRobotKeyword);
if (!MapUtils.isEmpty(relatedBookGroupMap) && relatedBookGroupMap.containsKey(bookDto.getRelatedBookGroupId())) {
......@@ -5292,7 +5306,6 @@ public class BookGroupBizImpl implements BookGroupBiz {
private List<BookServeDTO> getBookServes( Long adviserId, Long bookId, Long channelId ) {
List<BookServeDTO> serveDTOList = new ArrayList<>();
BookGroupDTO bookGroupDTO = bookGroupDao.getDTOByBookId(bookId, channelId, adviserId);
List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>();
AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(channelId);
......@@ -5329,9 +5342,8 @@ public class BookGroupBizImpl implements BookGroupBiz {
}
}
}
if (null != bookGroupDTO) {//有社群书
//社群书配置资源
List<BookGroupServe> bookGroupServes = bookGroupServeDao.getListByBookGroupId(bookGroupDTO.getId());
List<BookGroupServe> bookGroupServes = bookGroupServeDao.getServeListByBook(bookId, channelId, adviserId);
if (!ListUtils.isEmpty(bookGroupServes)) {
for (BookGroupServe bookGroupServe : bookGroupServes) {
BookServeDTO bookServeDTO = new BookServeDTO();
......@@ -5351,7 +5363,6 @@ public class BookGroupBizImpl implements BookGroupBiz {
}
}
}
}
return serveDTOList;
}
......@@ -5899,16 +5910,14 @@ public class BookGroupBizImpl implements BookGroupBiz {
@Override
public List<BookServeDTO> getBookAndBookGroupServeIds4Price(Long adviserId, Long bookId, Long channelId) {
List<BookServeDTO> serveDTOList = new ArrayList<>();
BookGroupDTO bookGroupDTO = bookGroupDao.getDTOByBookId4Price(bookId, channelId, adviserId);
List<Long> appIds = new ArrayList<>();
List<Long> productIds = new ArrayList<>();
AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(channelId);
if (null == accountSettingDto){
return new ArrayList<>();
}
if (null != bookGroupDTO) {//有社群书
//社群书配置资源
List<BookGroupServe> bookGroupServes = bookGroupServeDao.getListByBookGroupId(bookGroupDTO.getId());
List<BookGroupServe> bookGroupServes = bookGroupServeDao.getServeListByBook(bookId, channelId, adviserId);
if (!ListUtils.isEmpty(bookGroupServes)) {
for (BookGroupServe bookGroupServe : bookGroupServes) {
BookServeDTO bookServeDTO = new BookServeDTO();
......@@ -5925,7 +5934,6 @@ public class BookGroupBizImpl implements BookGroupBiz {
}
}
}
}
//设置应用名称与价格
setAppPrice(serveDTOList);
//现代纸书二维码配置资源
......@@ -6189,4 +6197,44 @@ public class BookGroupBizImpl implements BookGroupBiz {
backgroundGroupQrcodeDTO.setBackgroundQrUrl(qrcode);
return backgroundGroupQrcodeDTO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public BookGroup createBookGroup(BookGroupCreateDTO bookGroupCreateDTO) {
Long bookId = bookGroupCreateDTO.getBookId();
Long channelId = bookGroupCreateDTO.getChannelId();
Long adviserId = bookGroupCreateDTO.getAdviserId();
Integer joinGroupType = bookGroupCreateDTO.getJoinGroupType();
Integer jumpType = bookGroupCreateDTO.getJumpType();
if (JoinGroupTypeEnum.XIAORUI.getCode().equals(joinGroupType) && null == jumpType){
throw new BookBizException(BookBizException.PARAM_IS_NULL,"缺少跳转类型");
}
BookGroup bookGroup = this.createBookGroupAfterCreateBook(bookId,channelId,adviserId,null, null,joinGroupType,jumpType,bookGroupCreateDTO.getJumpUrl());
bookGroupCreateDTO.setId(bookGroup.getId());
this.updateBookGroup(bookGroupCreateDTO);
return bookGroup;
}
@Override
public List<BookServeDTO> getServeListByBookGroupId(Long bookGroupId, Long channelId) {
List<BookServeDTO> serveDTOList = new ArrayList<>();
AccountSettingDto accountSettingDto = qrcodeSceneConsr.getWechatInfo(channelId);
if (null == accountSettingDto){
return new ArrayList<>();
}
List<BookGroupServe> bookGroupServes = bookGroupServeDao.getListByBookGroupId(bookGroupId);
if (!ListUtils.isEmpty(bookGroupServes)) {
for (BookGroupServe bookGroupServe : bookGroupServes) {
BookServeDTO bookServeDTO = new BookServeDTO();
BeanUtils.copyProperties(bookGroupServe, bookServeDTO);
String url = SendWeixinRequestTools.splitUrl(accountSettingDto, bookGroupServe.getServeUrl());
bookServeDTO.setUrl(url);
bookServeDTO.setTypeCode(bookServeDTO.getServeType());
bookServeDTO.setFromType(bookGroupServe.getTypeCode());
bookServeDTO.setFromTypeName(bookGroupServe.getFromType());
serveDTOList.add(bookServeDTO);
}
}
return serveDTOList;
}
}
......@@ -80,4 +80,11 @@ public interface BookGroupServeDao extends BaseDao<BookGroupServe> {
*/
Map<String, BookGroupServeCountDTO> mapBookGroupQrcodeServeCount(List<Long> adviserIds, List<Long> bookIds, List<Long> channelIds, Integer joinGroupType);
/**
* 根据书刊查社群书配置资源
* @author:zhuyajie
* @date:2020/12/14 16:31
* * @param null
*/
List<BookGroupServe> getServeListByBook(Long bookId, Long channelId, Long adviserId);
}
......@@ -151,4 +151,13 @@ public class BookGroupServeDaoImpl extends BaseDaoImpl<BookGroupServe> implement
return getSessionTemplate().selectMap(getStatement("mapBookGroupQrcodeServeCount"), map, "bookChannelAdviserId");
}
}
@Override
public List<BookGroupServe> getServeListByBook(Long bookId, Long channelId, Long adviserId) {
Map<String,Object> map = new HashMap<>();
map.put("adviserId", adviserId);
map.put("bookId", bookId);
map.put("channelId", channelId);
return getSessionTemplate().selectList(getStatement("getServeListByBook"), map);
}
}
package com.pcloud.book.group.dto;
import com.pcloud.book.group.entity.BookGroup;
import javax.validation.constraints.NotNull;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @ClassName com.pcloud.book.group.dto.BookGroupCreateDTO
* @Author zhuyajie
* @Description 社群码创建
* @Date 2020/12/14 10:10
* @Version 1.0
**/
@Data
public class BookGroupCreateDTO extends BookGroup {
@NotNull
@ApiModelProperty("书刊id")
private Long bookId;
@NotNull
@ApiModelProperty("渠道id")
private Long channelId;
@ApiModelProperty("编辑id")
private Long adviserId;
@NotNull
@ApiModelProperty("社群码类型(普通群、1v1、小睿码)")
private Integer joinGroupType;
@ApiModelProperty("小睿码跳转类型")
private Integer jumpType;
@ApiModelProperty("小睿码自定义跳转链接")
private String jumpUrl;
}
......@@ -2,6 +2,7 @@ package com.pcloud.book.group.facade;
import com.pcloud.book.book.dto.MapResourceTotalCountDTO;
import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupCreateDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ChangeQrCodeTypeDto;
import com.pcloud.book.group.dto.SelfBookGroupStParamDTO;
......@@ -33,6 +34,7 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.codehaus.jackson.JsonParseException;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -811,4 +813,8 @@ public interface BookGroupFacade {
@ApiOperation("根据社群书id获取公众号二维码信息(H5跳公众号流程)")
@GetMapping("getSceneQrcodeByBookGroupId")
ResponseDto<?> getSceneQrcodeByBookGroupId(@RequestParam("bookGroupId") Long bookGroupId);
@ApiOperation("书刊创建RAYS码-支持1对多")
@PostMapping("createBookGroup")
ResponseDto<?> createBookGroup(@RequestHeader("token") String token, @RequestBody @Validated BookGroupCreateDTO bookGroupCreateDTO);
}
......@@ -7,6 +7,7 @@ import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BackgroundGroupQrcodeDTO;
import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupCreateDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ChangeQrCodeTypeDto;
import com.pcloud.book.group.dto.GroupStoreMyPayDto;
......@@ -1091,6 +1092,7 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
return new ResponseDto<>(null == pageBean ? new PageBeanNew<>() : pageBean);
}
@Override
@ApiOperation("获取1v1关联社群书列表")
@RequestMapping(value = "getAssocBookGroupByAppInfo", method = RequestMethod.GET)
public ResponseDto<PageBeanNew<BookGroupDTO>> getAssocBookGroupByAppInfo(
......@@ -1340,4 +1342,12 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
public ResponseDto<?> getSceneQrcodeByBookGroupId(@RequestParam("bookGroupId") Long bookGroupId){
return new ResponseDto<>(bookGroupBiz.getSceneQrcodeByBookGroupId(bookGroupId));
}
@Override
@PostMapping("createBookGroup")
public ResponseDto<?> createBookGroup(@RequestHeader("token") String token, @RequestBody @Validated BookGroupCreateDTO bookGroupCreateDTO){
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
bookGroupCreateDTO.setAdviserId(adviserId);
return new ResponseDto<>(bookGroupBiz.createBookGroup(bookGroupCreateDTO));
}
}
......@@ -55,6 +55,8 @@ import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookServeDTO;
import com.pcloud.book.group.enums.AppAndProductTypeEnum;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.group.enums.QrcodeJumpType;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.push.dao.PersonalAppletsDao;
......@@ -1866,7 +1868,18 @@ public class RightsSettingBizImpl implements RightsSettingBiz {
qrcodeMessage4WechatVO.setBookCoverImg(bookDto.getCoverImg());
qrcodeMessage4WechatVO.setReaderInfo(Lists.newArrayList());
List<WechatMessageVO> messages = new ArrayList<>();
List<BookServeDTO> bookServeVOS = bookGroupBiz.getBookAndBookGroupServeIds(adviserId, bookId, channelId);
List<BookServeDTO> bookServeVOS;
if (JoinGroupTypeEnum.XIAORUI.getCode().equals(bookGroupDTO.getJoinGroupType())
&& QrcodeJumpType.H5_RESOURCE.getCode().equals(bookGroupDTO.getJumpType())){
//获取该码下配的资源
bookServeVOS = bookGroupBiz.getServeListByBookGroupId(bookGroupId, channelId);
} else {
//获取本书资源
bookServeVOS = bookGroupBiz.getBookAndBookGroupServeIds(adviserId, bookId, channelId);
}
if (ListUtils.isEmpty(bookServeVOS)) {
return qrcodeMessage4WechatVO;
}
//填充作品应用
bookGroupBiz.fillBookServe(bookServeVOS);
if (ListUtils.isEmpty(bookServeVOS)) {
......
......@@ -81,6 +81,7 @@
LEFT JOIN book_group d ON d.BOOK_ID = a.BOOK_ID and d.create_user=c.adviser_id and d.channel_id=c.channel_id AND d.IS_DELETE = 0
LEFT JOIN rights_setting r ON c.rights_setting_id = r.id AND d.join_group_type=4 and r.show_state = 1 and r.rights_setting_type = 2
WHERE c.wechat_user_id=#{wechatUserId}
GROUP BY c.book_id,a.ADVISER_ID,c.channel_id
ORDER BY c.create_time DESC, d.id desc
</select>
......
......@@ -612,9 +612,8 @@
FROM
BOOK_ADVISER A
INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND B.IS_DELETE = 0
LEFT JOIN book_group G on G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID AND G.IS_DELETE = 0
WHERE
A.ADVISER_ID = #{adviserId} AND A.IS_DELETE = 0 AND G.ID IS NULL
A.ADVISER_ID = #{adviserId} AND A.IS_DELETE = 0
<if test="name != null">
AND
(B.BOOK_NAME LIKE CONCAT('%', #{name}, '%') OR B.ISBN LIKE CONCAT(#{name},'%') OR CONCAT('BK',A.BOOK_ID) = #{name})
......
......@@ -261,4 +261,29 @@
</foreach>
GROUP BY bg.book_id,bg.create_user,bg.channel_id
</select>
<select id="getServeListByBook" parameterType="map" resultMap="BaseResultMap">
SELECT
s.id,
s.serve_id,
s.serve_type,
s.serve_url,
s.short_url,
s.book_group_id,
s.create_user,
s.create_time,
s.type_code
FROM
book_group_serve s
LEFT JOIN book_group g ON s.book_group_id = g.id
WHERE
g.book_id = #{bookId}
AND g.channel_id = #{channelId}
AND g.create_user = #{adviserId}
GROUP BY
s.serve_id
ORDER BY
s.id
</select>
</mapper>
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