Commit f07f2f7a by 裴大威

Merge branch 'feat-1002123' into 'master'

其他码转个人码

See merge request rays/pcloud-book!288
parents ea28190a d5f374b5
......@@ -19,6 +19,8 @@ public class BookGroupKeywordResourceDTO extends BaseDto {
*/
private Long serveId;
private String serveUrl;
public String getServeType() {
return serveType;
}
......@@ -35,6 +37,14 @@ public class BookGroupKeywordResourceDTO extends BaseDto {
this.serveId = serveId;
}
public String getServeUrl() {
return serveUrl;
}
public void setServeUrl(String serveUrl) {
this.serveUrl = serveUrl;
}
@Override
public String toString() {
return "BookGroupKeywordResourceDTO{" +
......
package com.pcloud.book.group.dto;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @date: 2019年12月18日 10:35
* @Author: Zcy
* @Descprition 转换二维码
*/
@Data
public class ChangeQrCodeTypeDto implements Serializable {
@NotNull(message = "id")
private Long id;
@NotNull(message = "type")
private String type;
}
package com.pcloud.book.group.enums;
public enum ChangeOriginTypeEnum {
SCENE("SCENE_ID", "sceneId"),
BOOK_GROUP("BOOK_GROUP_ID", "bookGroupId");
private String type;
private String desc;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
ChangeOriginTypeEnum(String type, String desc) {
this.type = type;
this.desc = desc;
}
}
......@@ -330,4 +330,13 @@ public class QrcodeSceneConsr {
}
return bookIds;
}
//删除二维码
public void updateQrcodeToSelfRobotQrcode(Long sceneId, Long adviserBookId) {
try {
qrcodeSceneService.updateQrcodeToSelfRobotQrcode(sceneId, adviserBookId);
} catch (Exception e) {
LOGGER.error("删除二维码失败" + e.getMessage(), e);
}
}
}
......@@ -6,6 +6,7 @@ import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupKeywordResourceDTO;
import com.pcloud.book.group.dto.BookGroupStatisticsDTO;
import com.pcloud.book.group.dto.ChangeQrCodeTypeDto;
import com.pcloud.book.group.dto.ClassifyKeywordDTO;
import com.pcloud.book.group.dto.CountAndTimeDTO;
import com.pcloud.book.group.dto.GroupCipherDTO;
......@@ -658,4 +659,11 @@ public interface BookGroupBiz {
* @return
*/
Map<String,List<String>> mapUserScanBook(String altId, List<String> wxUserIdList);
/**
* 转换二维码
*/
Long changeQrCodeType(ChangeQrCodeTypeDto changeQrCodeTypeDto);
Long getChangeQrChangeTarget(Long originId, String originType);
}
......@@ -56,6 +56,7 @@ import com.pcloud.book.group.dto.BookGroupIdAndCountDTO;
import com.pcloud.book.group.dto.BookGroupKeywordResourceDTO;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.BookGroupStatisticsDTO;
import com.pcloud.book.group.dto.ChangeQrCodeTypeDto;
import com.pcloud.book.group.dto.ClassifyDTO;
import com.pcloud.book.group.dto.ClassifyKeywordDTO;
import com.pcloud.book.group.dto.ClickClassifyDTO;
......@@ -85,9 +86,11 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.entity.JoinGroupCipher;
import com.pcloud.book.group.entity.PushBookGroupUpdate;
import com.pcloud.book.group.entity.QrChangeRecord;
import com.pcloud.book.group.entity.TempletRelevance;
import com.pcloud.book.group.entity.WeixinQrcodeGeneration;
import com.pcloud.book.group.entity.WxUserWechatRelevance;
import com.pcloud.book.group.enums.ChangeOriginTypeEnum;
import com.pcloud.book.group.enums.CipherTypeEnum;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.group.enums.LargeTempletEnum;
......@@ -117,8 +120,11 @@ import com.pcloud.book.keywords.dto.KeywordDTO;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.book.util.common.ThreadPoolUtils;
import com.pcloud.channelcenter.base.constants.ChannelConstants;
import com.pcloud.channelcenter.qrcode.dto.GroupQrcodeVO;
import com.pcloud.channelcenter.qrcode.dto.QrcodeSceneDto;
import com.pcloud.channelcenter.wechat.dto.AccountSettingDto;
import com.pcloud.channelcenter.wechat.dto.MessageDto;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.core.constant.ProductTypeConstant;
import com.pcloud.common.core.constant.SystemCode;
......@@ -3725,6 +3731,116 @@ public class BookGroupBizImpl implements BookGroupBiz {
return randomCode;
}
@Override
@ParamLog
@Transactional(rollbackFor = Exception.class)
public Long changeQrCodeType(ChangeQrCodeTypeDto changeQrCodeTypeDto) {
Long id = changeQrCodeTypeDto.getId();
String type = changeQrCodeTypeDto.getType();
Long bookGroupId = null;
if (ChangeOriginTypeEnum.SCENE.getType().equals(type)) {
bookGroupId = changeRaysBook2SelfRobotQr(id);
} else if (ChangeOriginTypeEnum.BOOK_GROUP.getType().equals(type)) {
bookGroupId = changeSheQun2SelfRobotQr(id);
}
return bookGroupId;
}
@Override
public Long getChangeQrChangeTarget(Long originId, String originType) {
return bookGroupDao.getChangeQrChangeTarget(originId, originType);
}
/**
* 将现代纸书转换为个人自由码
*/
private Long changeRaysBook2SelfRobotQr(Long sceneId) {
QrcodeSceneDto qrcodeSceneDto = qrcodeSceneConsr.getById(sceneId);
if (null == sceneId) {
return null;
}
String qrCodeUrl = qrcodeSceneDto.getQrcodeUrl();
String qrcodeType = qrcodeSceneDto.getQrcodeType();
//先创建
BookGroup bookGroup = this.createBookGroupAfterCreateBook(qrcodeSceneDto.getAdviserBookId(), qrcodeSceneDto.getChannelPartyId(), qrcodeSceneDto.getCreatedByUserLogin(), 2, sceneId,
JoinGroupTypeEnum.ROBOT.getCode());
//公众号码才需要覆盖sceneId
bookGroup.setGroupQrcodeUrl(qrCodeUrl);
if (ChannelConstants.QrCodeType.WECHAT.getName().equals(qrcodeType)) {
bookGroup.setSceneId(sceneId);
}
//替换二维码
bookGroupDao.update(bookGroup);
//插入旧码下的资源
Long newBookGroupId = bookGroup.getId();
List<MessageDto> messages = qrcodeSceneDto.getMessages();
if (!ListUtils.isEmpty(messages)) {
List<BookGroupServe> list = new ArrayList<>();
messages.forEach(item -> {
BookGroupServe bookGroupServe = new BookGroupServe();
bookGroupServe.setBookGroupId(newBookGroupId);
bookGroupServe.setServeId(item.getFromId());
bookGroupServe.setServeType(item.getTypeCode());
bookGroupServe.setServeUrl(item.getUrl());
list.add(bookGroupServe);
});
batchUpdateBookGroupServe(qrcodeSceneDto.getAdviserId(), list);
bookGroupDao.updateIsSomeUpdate(newBookGroupId, true);
}
qrcodeSceneConsr.updateQrcodeToSelfRobotQrcode(sceneId, qrcodeSceneDto.getAdviserBookId());
//插入转换记录表
QrChangeRecord qrChangeRecord = QrChangeRecord.builder().oldSceneId(sceneId).newBookGroupId(newBookGroupId).build();
bookGroupDao.insertQrChangeRecord(qrChangeRecord);
return newBookGroupId;
}
/**
* 社群书换为个人码的自由码
*/
private Long changeSheQun2SelfRobotQr(Long oldBookGroupId) {
//拿到旧的社群码
BookGroupDTO bookInfo = bookGroupDao.getDTOById(oldBookGroupId);
if (null == bookInfo) {
return null;
}
Long sceneId = bookInfo.getSceneId();
//如果已经是个人码,不管是微信码还是自建码,都直接返回
if (JoinGroupTypeEnum.ROBOT.getCode().equals(bookInfo.getJoinGroupType())) {
return null;
}
//创建新的社群码
BookGroup bookGroup = this.createBookGroupAfterCreateBook(bookInfo.getBookId(), bookInfo.getChannelId(), bookInfo.getCreateUser(), 2, sceneId, JoinGroupTypeEnum.ROBOT.getCode());
//替换qrCodeUrl
bookGroup.setGroupQrcodeUrl(bookInfo.getGroupQrcodeUrl());
bookGroup.setSceneId(sceneId);
bookGroupDao.update(bookGroup);
Long newBookGroupId = bookGroup.getId();
//3.把旧码下的应用类关键词配置成资源
List<BookGroupKeywordResourceDTO> bookGroupResourceList = bookKeywordDao.getBookGroupResourceList(oldBookGroupId);
if (!ListUtils.isEmpty(bookGroupResourceList)) {
List<BookGroupServe> bookGroupServes = new ArrayList<>();
bookGroupResourceList.forEach(item -> {
BookGroupServe bookGroupServe = new BookGroupServe();
bookGroupServe.setBookGroupId(newBookGroupId);
bookGroupServe.setServeType(item.getServeType());
bookGroupServe.setServeUrl(item.getServeUrl());
bookGroupServe.setServeId(item.getServeId());
bookGroupServes.add(bookGroupServe);
});
batchUpdateBookGroupServe(bookInfo.getCreateUser(), bookGroupServes);
}
//删除旧数据
bookGroupDao.deleteByBookGroupId(oldBookGroupId);
//插入转换记录表
QrChangeRecord qrChangeRecord = QrChangeRecord.builder().oldBookGroupId(oldBookGroupId).newBookGroupId(newBookGroupId).build();
bookGroupDao.insertQrChangeRecord(qrChangeRecord);
if (sceneId != null) {
qrcodeSceneConsr.updateQrcodeToSelfRobotQrcode(sceneId, bookInfo.getBookId());
}
return newBookGroupId;
}
@ParamLog("生成随机码")
private String createRandomCode(){
//生成暗号规则:abcdefg,7位字符串
......
......@@ -10,6 +10,7 @@ import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.SelfBookGroupStDTO;
import com.pcloud.book.group.dto.TopAgentBookGroupDTO;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.QrChangeRecord;
import com.pcloud.book.group.vo.BookGroupAnalysisVO;
import com.pcloud.common.core.dao.BaseDao;
......@@ -274,4 +275,8 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
* 根据类型获取社群书id集合
*/
List<Long> getIdsByJoinGroupType(Integer joinGroupType);
void insertQrChangeRecord(QrChangeRecord qrChangeRecord);
Long getChangeQrChangeTarget(Long originId, String originType);
}
......@@ -8,6 +8,7 @@ import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.SelfBookGroupStDTO;
import com.pcloud.book.group.dto.TopAgentBookGroupDTO;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.entity.QrChangeRecord;
import com.pcloud.book.group.vo.BookGroupAnalysisVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
......@@ -304,4 +305,17 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
map.put("joinGroupType", joinGroupType);
return super.getSqlSession().selectList(getStatement("getIdsByJoinGroupType"),map);
}
@Override
public void insertQrChangeRecord(QrChangeRecord qrChangeRecord) {
getSessionTemplate().insert(getStatement("insertQrChangeRecord"), qrChangeRecord);
}
@Override
public Long getChangeQrChangeTarget(Long originId, String originType) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("originId", originId);
paramMap.put("originType", originType);
return getSessionTemplate().selectOne(getStatement("getChangeQrChangeTarget"), paramMap);
}
}
package com.pcloud.book.group.entity;
import java.io.Serializable;
import java.util.Date;
import lombok.Builder;
import lombok.Data;
/**
* @date: 2019年12月20日 14:25
* @Author: Zcy
* @Descprition
*/
@Data
@Builder
public class QrChangeRecord implements Serializable {
private Integer id;
private Long oldSceneId;
private Long oldBookGroupId;
private Long newBookGroupId;
private Date createTime;
}
package com.pcloud.book.group.facade;
import com.pcloud.book.group.dto.ChangeQrCodeTypeDto;
import com.pcloud.book.group.dto.SelfBookGroupStParamDTO;
import com.pcloud.book.group.dto.UserSelectParamDTO;
import com.pcloud.book.group.entity.BookGroup;
......@@ -593,4 +594,10 @@ public interface BookGroupFacade {
ResponseDto<?> getRandomCode(
@CookieValue("userInfo")String userInfo
) throws PermissionException;
@ApiOperation(value = "平台端-转换二维码到个人码", httpMethod = "POST")
ResponseDto<?> changeQrCodeType(String token, ChangeQrCodeTypeDto changeQrCodeTypeDto) throws PermissionException;
@ApiOperation(value = "查询转换二维码信息", httpMethod = "GET")
ResponseDto<?> getChangeQrChangeTarget(Long id, String type);
}
......@@ -3,6 +3,7 @@ package com.pcloud.book.group.facade.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.biz.BookGroupBiz;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.dto.ChangeQrCodeTypeDto;
import com.pcloud.book.group.dto.GroupStoreMyPayDto;
import com.pcloud.book.group.dto.SelfBookGroupStParamDTO;
import com.pcloud.book.group.dto.UserSelectParamDTO;
......@@ -38,6 +39,7 @@ import com.pcloud.wechatgroup.message.enums.IsSystem;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
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;
......@@ -925,4 +927,18 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
Long wechatUserId = Cookie.getId(userInfo, Cookie._WECHAT_USER_ID);
return new ResponseDto<>(bookGroupBiz.getRandomCode(wechatUserId));
}
@Override
@PostMapping("changeQrCodeType")
public ResponseDto<?> changeQrCodeType(@RequestHeader("token") String token, @RequestBody @Validated ChangeQrCodeTypeDto changeQrCodeTypeDto) throws PermissionException {
Map<String, Object> token4Redis = SessionUtil.getToken4Redis(token);
return new ResponseDto<>(bookGroupBiz.changeQrCodeType(changeQrCodeTypeDto));
}
@Override
@GetMapping("getChangeQrChangeTarget")
public ResponseDto<?> getChangeQrChangeTarget(@RequestParam("id") Long id, @RequestParam("type") String type) {
Long newBookGroupId = bookGroupBiz.getChangeQrChangeTarget(id, type);
return new ResponseDto<>(newBookGroupId);
}
}
......@@ -362,7 +362,7 @@
select
<include refid="Base_Column_List"/>
from book_group
where scene_id = #{_parameter}
where scene_id = #{_parameter} and is_delete = 0
</select>
<select id="isSpecialAgent" resultType="Boolean" parameterType="Long">
......@@ -802,4 +802,21 @@
and join_group_type=#{joinGroupType}
</if>
</select>
<insert id="insertQrChangeRecord" parameterType="com.pcloud.book.group.entity.QrChangeRecord">
insert into qr_change_record(old_scene_id, old_book_group_id, new_book_group_id, create_time)
values(#{oldSceneId}, #{oldBookGroupId}, #{newBookGroupId}, now())
</insert>
<select id="getChangeQrChangeTarget" parameterType="map" resultType="long">
select new_book_group_id from qr_change_record
where
<if test="originType == 'SCENE_ID'">
old_scene_id = #{originId}
</if>
<if test="originType == 'BOOK_GROUP_ID'">
old_book_group_id = #{originId}
</if>
limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -532,7 +532,7 @@
<select id="getBookGroupResourceList" parameterType="map" resultType="com.pcloud.book.group.dto.BookGroupKeywordResourceDTO">
SELECT
serve_id serveId,
serve_type serveType
serve_type serveType, link_url serveUrl
FROM
book_keyword b
JOIN keyword k ON b.keyword_id = k.id
......@@ -544,7 +544,7 @@
UNION
SELECT
serve_id serveId,
serve_type serveType
serve_type serveType, serve_url serveUrl
FROM
book_group_serve
WHERE
......
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