Commit 6889c146 by 田超

Merge branch 'feat-zyj-1002945' into 'master'

1002945编辑端社群书普通群的创建和关联流程问题

See merge request rays/pcloud-book!757
parents 193b3d6a 105e06ac
......@@ -4,6 +4,7 @@
package com.pcloud.book.book.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
......@@ -669,6 +670,42 @@ public class BookDto extends BaseDto {
* 上下册标签id
*/
private Long volLabelId;
/**
* 是否独立活码群
*/
private Boolean singleGroup;
/**
* 关联群
*/
private Long relatedBookGroupId;
/**
* 关联群的社群码
*/
private BookGroupDTO relatedBookGroup;
public BookGroupDTO getRelatedBookGroup() {
return relatedBookGroup;
}
public void setRelatedBookGroup(BookGroupDTO relatedBookGroup) {
this.relatedBookGroup = relatedBookGroup;
}
public Long getRelatedBookGroupId() {
return relatedBookGroupId;
}
public void setRelatedBookGroupId(Long relatedBookGroupId) {
this.relatedBookGroupId = relatedBookGroupId;
}
public Boolean getSingleGroup() {
return singleGroup;
}
public void setSingleGroup(Boolean singleGroup) {
this.singleGroup = singleGroup;
}
/**
* 是否开启小睿流程
......
......@@ -75,4 +75,8 @@ public interface BookGroupClassifyService {
@ApiOperation("根据群分类id找群")
@GetMapping("getGroupQrcodeInfo4Classify")
ResponseEntity<ResponseDto<GroupQrcode4ClassifyDTO>> getGroupQrcodeInfo4Classify(@RequestParam("wechatUserId") Long wechatUserId,@RequestParam("classifyId") Long classifyId);
@ApiOperation("根据群分类id找群")
@GetMapping("getGroupQrcodeByClassify")
ResponseEntity<ResponseDto<GroupQrcode4ClassifyDTO>> getGroupQrcodeByClassify(@RequestParam("wechatUserId") Long wechatUserId,@RequestParam("classifyId") Long classifyId);
}
......@@ -147,21 +147,11 @@ public class AppletGroupSearchRecordBizImpl implements AppletGroupSearchRecordBi
@Override
public List<GroupActivity4AppletDTO> getTishBookSchoolList(Long bookGroupId) {
BookGroupDTO bookGroupDTO = bookGroupDao.getBookBaseInfoById(bookGroupId);
BookAdviserDto adviserDto = bookAdviserDao.getBase(bookGroupDTO.getBookId(), bookGroupDTO.getChannelId(), bookGroupDTO.getCreateUser());
BaseTempletClassify baseTempletClassify = new BaseTempletClassify();
if (adviserDto != null) {
baseTempletClassify.setFirstClassify(adviserDto.getTempletId());
baseTempletClassify.setSecondClassify(adviserDto.getSecondTempletId());
baseTempletClassify.setGradeLabelId(adviserDto.getGraLabelId());
baseTempletClassify.setSubjectLabelId(adviserDto.getSubLabelId());
baseTempletClassify.setVolLabelId(adviserDto.getVolLabelId());
rightsSettingBiz.setClassifyAndLabel(baseTempletClassify);
}
BookGroupDTO bookGroupDTO = bookGroupDao.getDTOById(bookGroupId);
List<GroupActivity4AppletDTO> tishBookSchoolList = new ArrayList<>();
//本书自带社群
if (JoinGroupTypeEnum.GROUP_QRCODE.getCode().equals(bookGroupDTO.getJoinGroupType())) {
List<GroupQrcodeDTO> groupQrcodeDTOS = groupQrcodeDao.getGroupQrcodeListByBookGroupId(bookGroupId);
List<GroupQrcodeDTO> groupQrcodeDTOS = groupQrcodeDao.listClassifyLatestGroupByBookGroup(bookGroupId);
if (!ListUtils.isEmpty(groupQrcodeDTOS)) {
for (GroupQrcodeDTO qrcodeDTO : groupQrcodeDTOS) {
GroupActivity4AppletDTO appletDTO = new GroupActivity4AppletDTO();
......@@ -174,10 +164,21 @@ public class AppletGroupSearchRecordBizImpl implements AppletGroupSearchRecordBi
}
}
}
//根据分类推荐相关
List<GroupActivity4AppletDTO> groupActivity4AppletDTOS = pcloudGroupActivityDao.getTishBookSchoolList(baseTempletClassify, 10);
if (!ListUtils.isEmpty(groupActivity4AppletDTOS)) {
tishBookSchoolList.addAll(groupActivity4AppletDTOS);
//本书关联社群
if (null != bookGroupDTO.getRelatedBookGroupId()){
Long relatedGroupId = bookGroupDTO.getRelatedBookGroupId();
List<GroupQrcodeDTO> qrcodeDTOS = groupQrcodeDao.listClassifyLatestGroupByBookGroup(relatedGroupId);
if (!ListUtils.isEmpty(qrcodeDTOS)) {
for (GroupQrcodeDTO qrcodeDTO : qrcodeDTOS) {
GroupActivity4AppletDTO appletDTO = new GroupActivity4AppletDTO();
BeanUtils.copyProperties(qrcodeDTO, appletDTO);
appletDTO.setName(qrcodeDTO.getGroupName());
appletDTO.setDesc(qrcodeDTO.getClassifyIntroduce());
appletDTO.setBookGroupId(bookGroupId);
appletDTO.setBookGroupQrcodeId(qrcodeDTO.getId());
tishBookSchoolList.add(appletDTO);
}
}
}
if (ListUtils.isEmpty(tishBookSchoolList)) {
return new ArrayList<>();
......
......@@ -856,4 +856,28 @@ public interface BookGroupBiz {
* * @param null
*/
void updateBookGroupOpenWeapp(Long bookGroupId, Boolean openWeapp);
/**
* 创建独立活码群社群码
* @author:zhuyajie
* @date:2020/5/28 11:36
* * @param null
*/
Long createSingleBookGroup(BookGroup bookGroup, Long adviserId);
/**
* 更新小睿关联社群书
* @author:zhuyajie
* @date:2020/5/29 19:21
* * @param null
*/
void updateRelatedBookGroup(Long bookGroupId, Long relatedBookGroupId);
/**
* 获取独立活码群社群码列表
* @author:zhuyajie
* @date:2020/6/1 12:43
* * @param null
*/
PageBeanNew<BookGroupDTO> listSingleBookGroup4Adviser(String name, Integer currentPage, Integer numPerPage, Long adviserId);
}
......@@ -269,4 +269,6 @@ public interface BookGroupClassifyBiz {
GroupQrcode4ClassifyVO getGroupQrcodeInfo4Heals(Long classifyId, Long wechatUserId);
List<GroupQrcode4ClassifyDTO> getQrcodeByClassifyId4Heals(Long classifyId);
GroupQrcode4ClassifyVO getGroupQrcodeByClassify(Long classifyId, Long wechatUserId);
}
......@@ -9,7 +9,9 @@ import com.pcloud.appcenter.app.dto.AppDto;
import com.pcloud.appcenter.base.dto.AppPriceCacheDTO;
import com.pcloud.appcenter.cache.service.AppPriceCacheService;
import com.pcloud.audioapp.audioLesson.service.AudioLessonService;
import com.pcloud.book.applet.biz.AppletGroupSearchRecordBiz;
import com.pcloud.book.applet.biz.AppletUserBookcaseBiz;
import com.pcloud.book.applet.entity.AppletGroupSearchRecord;
import com.pcloud.book.applet.entity.AppletUserBookcase;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.book.biz.BookBiz;
......@@ -398,6 +400,8 @@ public class BookGroupBizImpl implements BookGroupBiz {
private RightsSettingBiz rightsSettingBiz;
@Autowired
private AppletUserBookcaseBiz appletUserBookcaseBiz;
@Autowired
private AppletGroupSearchRecordBiz appletGroupSearchRecordBiz;
private static final ThreadPoolExecutor PLATFORM_STATISTICS_EXPORT_THREAD = new ThreadPoolExecutor(2, 2,
0, TimeUnit.SECONDS, new LinkedBlockingQueue<>(),
......@@ -838,6 +842,7 @@ public class BookGroupBizImpl implements BookGroupBiz {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "社群码前后类型不一致!!");
}
checkShortBookName(bookGroup);
Long productId = group.getProductId();
if (null == group.getProductId()) {
AddAppProductParamDTO addAppProductParamDTO = new AddAppProductParamDTO();
addAppProductParamDTO.setAppProCode(ProductTypeConstant.BOOK_GROUP);
......@@ -852,6 +857,7 @@ public class BookGroupBizImpl implements BookGroupBiz {
throw new BookBizException(BookBizException.DB_DML_FAIL, "操作失败!");
}
bookGroup.setProductId(product.getProductId());
productId = product.getProductId();
} else {
UpdateAppProductParamDTO updateAppProductParamDTO = new UpdateAppProductParamDTO();
updateAppProductParamDTO.setProductId(group.getProductId());
......@@ -860,6 +866,11 @@ public class BookGroupBizImpl implements BookGroupBiz {
ResponseHandleUtil.parseResponse(productService.postUpdateBookGroupProduct(updateAppProductParamDTO), Product.class);
}
bookGroupDao.update(bookGroup);
//上架
if (null != productId) {
Long channelId = bookGroup.getChannelId() == null ? group.getChannelId() : bookGroup.getChannelId();
productConsr.productAutoOnShelves(channelId, Arrays.asList(productId));
}
if (JoinGroupTypeEnum.AI_ROBOT.getCode().equals(bookGroup.getJoinGroupType())) {
this.updateFriendGuide(bookGroup.getId(), bookGroup.getFriendGuideList(), group.getCreateUser());
}
......@@ -995,11 +1006,22 @@ public class BookGroupBizImpl implements BookGroupBiz {
bookSet.setFreezeStatus(pageBean.getRecordList());
// 填充社群书数据
List<Long> bookGroupIds = new ArrayList<>();
pageBean.getRecordList().forEach(obj -> bookGroupIds.add(((BookDto) obj).getBookGroupId()));
List<Long> relatedGroupIds = new ArrayList<>();
pageBean.getRecordList().forEach(obj -> {
BookDto bookDto = (BookDto) obj;
bookGroupIds.add(bookDto.getBookGroupId());
if (null != bookDto.getRelatedBookGroupId()) {
relatedGroupIds.add(bookDto.getRelatedBookGroupId());
}
});
ResponseEntity<ResponseDto<Map<Long, BigDecimal>>> responseEntity = settlementService.getWXGroupIncomeByAdviser(bookGroupIds, adviserId);
Map<Long, BigDecimal> incomeMap = ResponseHandleUtil.parseMap(responseEntity, Long.class, BigDecimal.class);
Map<Long, BookGroupStatisticDTO> statisMap = bookGroupClassifyDao.getClassifyCountAbout(bookGroupIds);
Map<Long, Integer> scanMap = ResponseHandleUtil.parseMap(groupMemberService.getScanUserCountByGroup(bookGroupIds), Long.class, Integer.class);
Map<Long, BookGroupDTO> relatedBookGroupMap = new HashMap<>();
if (!ListUtils.isEmpty(relatedGroupIds)){
relatedBookGroupMap = bookGroupDao.mapDTOByIds(relatedGroupIds);
}
for (Object object : pageBean.getRecordList()) {
BookDto bookDto = (BookDto) object;
Long bookGroupId = bookDto.getBookGroupId();
......@@ -1031,6 +1053,11 @@ public class BookGroupBizImpl implements BookGroupBiz {
bookDto.setFriendsCount(friendsCount);
Boolean hasRobotKeyword = selfRobotKeywordBiz.hasKeyword(bookGroupId);
bookDto.setHasRobotKeyword(hasRobotKeyword);
if (!MapUtils.isEmpty(relatedBookGroupMap) && relatedBookGroupMap.containsKey(bookDto.getRelatedBookGroupId())) {
BookGroupDTO relatedBookGroup = relatedBookGroupMap.get(bookDto.getRelatedBookGroupId());
relatedBookGroup.setGroupQrcodeLink(bookGroupQrcodeDomain + "/" + bookDto.getRelatedBookGroupId());
bookDto.setRelatedBookGroup(relatedBookGroup);
}
}
return pageBean;
}
......@@ -4805,6 +4832,14 @@ public class BookGroupBizImpl implements BookGroupBiz {
appletUserBookcase.setBookId(bookGroupDTO.getBookId());
appletUserBookcase.setChannelId(bookGroupDTO.getChannelId());
appletUserBookcaseBiz.addUserBook(appletUserBookcase);
//社群书埋点
AppletGroupSearchRecord appletGroupSearchRecord = new AppletGroupSearchRecord();
appletGroupSearchRecord.setAdviserId(bookGroupDTO.getCreateUser());
appletGroupSearchRecord.setBookGroupId(bookAppletScene.getBookGroupId());
appletGroupSearchRecord.setBookId(bookGroupDTO.getBookId());
appletGroupSearchRecord.setChannelId(bookGroupDTO.getChannelId());
appletGroupSearchRecord.setWechatUserId(wechatUserId);
appletGroupSearchRecordBiz.insert(appletGroupSearchRecord);
} else if (bookAppletScene.getSceneId() != null) {
QrcodeSceneDto byId = qrcodeSceneConsr.getById(bookAppletScene.getSceneId());
dto.setBookId(byId.getAdviserBookId());
......@@ -5011,4 +5046,28 @@ public class BookGroupBizImpl implements BookGroupBiz {
bookGroupDao.updateBookGroupOpenWeapp(bookGroupId, openWeapp);
}
@Override
public Long createSingleBookGroup(BookGroup bookGroup, Long adviserId) {
BookGroup bookGroupNew = this.createBookGroupAfterCreateBook(0L, 0L, adviserId, 2, null,
JoinGroupTypeEnum.GROUP_QRCODE.getCode());
bookGroup.setId(bookGroupNew.getId());
bookGroup.setSingleGroup(true);
this.updateBookGroup(bookGroup);
return bookGroupNew.getId();
}
@Override
public void updateRelatedBookGroup(Long bookGroupId, Long relatedBookGroupId) {
bookGroupDao.updateRelatedBookGroup(bookGroupId,relatedBookGroupId);
}
@Override
public PageBeanNew<BookGroupDTO> listSingleBookGroup4Adviser(String name, Integer currentPage, Integer numPerPage, Long adviserId) {
Map<String, Object> map = new HashMap<>();
map.put("adviserId", adviserId);
map.put("name", name);
PageBeanNew<BookGroupDTO> pageBeanNew = bookGroupDao.listPageNew(new PageParam(currentPage, numPerPage), map, "listSingleBookGroup4Adviser");
return pageBeanNew;
}
}
......@@ -1320,4 +1320,40 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
List<GroupQrcode4ClassifyDTO> list=bookGroupClassifyDao.getQrcodeByClassifyId4Heals(classifyId, classify.getChangeNumber());
return list;
}
@Override
public GroupQrcode4ClassifyVO getGroupQrcodeByClassify(Long classifyId, Long wechatUserId) {
//获取分类基本信息
ClassifyVO classify = bookGroupClassifyDao.getClassify(classifyId);
if (classify == null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "社群码不存在,请刷新后重试");
}
//获取用户是否分配过二维码
GroupQrcode4ClassifyVO groupQrcode4ClassifyVO = bookQrcodeUserDao.getUserQrcode(classifyId, wechatUserId);
if (groupQrcode4ClassifyVO == null) {
//获取分类对应的二维码
groupQrcode4ClassifyVO = bookGroupClassifyDao.getClassifyQrcode(classifyId, classify.getChangeNumber());
if (groupQrcode4ClassifyVO == null) {
groupQrcode4ClassifyVO = new GroupQrcode4ClassifyVO();
groupQrcode4ClassifyVO.setClassifyId(classifyId);
} else {
BookQrcodeUser bookQrcodeUser = new BookQrcodeUser();
bookQrcodeUser.setClassifyId(classifyId);
bookQrcodeUser.setGroupQrcodeId(groupQrcode4ClassifyVO.getGroupQrcodeId());
bookQrcodeUser.setWechatUserId(wechatUserId);
bookQrcodeUser.setCreateUser(wechatUserId);
bookQrcodeUser.setFromType(QrcodeUsedEnum.RAYS.value);
try {
bookQrcodeUserDao.insert(bookQrcodeUser);
} catch (DataIntegrityViolationException e) {
LOGGER.error("已存在该用户!");
}
}
}
String spareQr = getSpareQr(classify.getBookGroupId());
groupQrcode4ClassifyVO.setSpareQr(spareQr);
groupQrcode4ClassifyVO.setClassify(classify.getClassify());
return groupQrcode4ClassifyVO;
}
}
......@@ -322,4 +322,19 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
* 1V1社群书是否开启小睿流程
*/
void updateBookGroupOpenWeapp(Long bookGroupId, Boolean openWeapp);
/**
* 更新小睿关联社群书
* @author:zhuyajie
* @date:2020/5/29 19:21
* * @param null
*/
void updateRelatedBookGroup(Long bookGroupId, Long relatedBookGroupId);
/**
* 社群书信息
* @author:zhuyajie
* @date:2020/5/29 19:43
* * @param null
*/
Map<Long,BookGroupDTO> mapDTOByIds(List<Long> ids);
}
......@@ -303,4 +303,11 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
*/
List<GroupQrcodeDTO> getGroupQrcodeListByBookGroupId(Long bookGroupId);
/**
* 查社群码下群(每个分类取最近建的群)
* @author:zhuyajie
* @date:2020/6/8 16:45
* * @param null
*/
List<GroupQrcodeDTO> listClassifyLatestGroupByBookGroup(Long bookGroupId);
}
......@@ -396,4 +396,19 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
map.put("openWeapp", openWeapp);
getSessionTemplate().update(getStatement("updateBookGroupOpenWeapp"), map);
}
@Override
public void updateRelatedBookGroup(Long bookGroupId, Long relatedBookGroupId) {
Map<String,Object> map = new HashMap<>();
map.put("relatedBookGroupId", relatedBookGroupId);
map.put("id", bookGroupId);
getSessionTemplate().update(getStatement("updateRelatedBookGroup"),map);
}
@Override
public Map<Long, BookGroupDTO> mapDTOByIds(List<Long> ids) {
Map<String,Object> map = new HashMap<>();
map.put("list",ids);
return getSessionTemplate().selectMap(getStatement("mapDTOByIds"),map,"id");
}
}
package com.pcloud.book.group.dao.impl;
import com.google.common.collect.Maps;
import com.pcloud.book.advertising.dto.GroupTagDTO;
import com.pcloud.book.advertising.dto.WeixinClassifyInfoDTO;
import com.pcloud.book.group.dao.GroupQrcodeDao;
......@@ -17,6 +18,7 @@ import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.ListGroupQrcodeResponseVO;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
......@@ -306,4 +308,9 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
return getSessionTemplate().selectList(getStatement("getGroupQrcodeListByBookGroupId"), bookGroupId);
}
@Override
public List<GroupQrcodeDTO> listClassifyLatestGroupByBookGroup(Long bookGroupId) {
return getSessionTemplate().selectList(getStatement("listClassifyLatestGroupByBookGroup"), bookGroupId);
}
}
......@@ -270,6 +270,43 @@ public class BookGroupDTO extends BaseDto {
* 小程序url
*/
private String appletUrl;
/**
* 是否独立活码群
*/
private Boolean singleGroup;
/**
* 关联群
*/
private Long relatedBookGroupId;
/**
* 社群码链接
*/
private String groupQrcodeLink;
public String getGroupQrcodeLink() {
return groupQrcodeLink;
}
public void setGroupQrcodeLink(String groupQrcodeLink) {
this.groupQrcodeLink = groupQrcodeLink;
}
public Long getRelatedBookGroupId() {
return relatedBookGroupId;
}
public void setRelatedBookGroupId(Long relatedBookGroupId) {
this.relatedBookGroupId = relatedBookGroupId;
}
public Boolean getSingleGroup() {
return singleGroup;
}
public void setSingleGroup(Boolean singleGroup) {
this.singleGroup = singleGroup;
}
/**
* 是否开启小睿流程
......
......@@ -155,7 +155,14 @@ public class BookGroup extends BaseEntity {
* 书籍简称
*/
private String shortBookName;
/**
* 是否独立活码群
*/
private Boolean singleGroup;
/**
* 关联群
*/
private Long relatedBookGroupId;
/**
* 好友引导语
*/
......@@ -165,6 +172,21 @@ public class BookGroup extends BaseEntity {
*/
private Boolean openWeapp;
public Long getRelatedBookGroupId() {
return relatedBookGroupId;
}
public void setRelatedBookGroupId(Long relatedBookGroupId) {
this.relatedBookGroupId = relatedBookGroupId;
}
public Boolean getSingleGroup() {
return singleGroup;
}
public void setSingleGroup(Boolean singleGroup) {
this.singleGroup = singleGroup;
}
public Boolean getOpenWeapp() {
return openWeapp;
......@@ -430,7 +452,6 @@ public class BookGroup extends BaseEntity {
", belongSpecialAgent=" + belongSpecialAgent +
", shortBookName='" + shortBookName + '\'' +
", friendGuideList=" + friendGuideList +
", openWeapp=" + openWeapp +
'}';
}
}
\ No newline at end of file
......@@ -725,4 +725,28 @@ public interface BookGroupFacade {
@GetMapping("updateBookGroupOpenWeapp")
ResponseDto<?> updateBookGroupOpenWeapp(
@RequestHeader("token") String token, @RequestParam("bookGroupId") Long bookGroupId, @RequestParam("openWeapp") Boolean openWeapp);
@ApiOperation("创建独立活码群社群码")
@PostMapping("createSingleBookGroup")
ResponseDto<Long> createSingleBookGroup(@RequestHeader("token") String token, @RequestBody @ApiParam BookGroup bookGroup);
@ApiOperation("更新小睿关联社群书")
@GetMapping("updateRelatedBookGroup")
ResponseDto<?> updateRelatedBookGroup(@RequestHeader("token") String token,
@RequestParam("bookGroupId") Long bookGroupId, @RequestParam(value = "relatedBookGroupId",required = false) Long relatedBookGroupId);
@ApiOperation(value = "获取独立活码群社群码列表(编辑)", httpMethod = "GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "token", value = "token", dataType = "string", paramType = "header"),
@ApiImplicitParam(name = "name", value = "书籍名称", dataType = "string", paramType = "query"),
@ApiImplicitParam(name = "currentPage", value = "当前页", dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "numPerPage", value = "每页条数", dataType = "Integer", paramType = "query")
})
@GetMapping("listSingleBookGroup4Adviser")
ResponseDto<?> listSingleBookGroup4Adviser(@RequestHeader("token") String token,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = true) Integer currentPage,
@RequestParam(value = "numPerPage", required = true) Integer numPerPage)
throws BizException, PermissionException;
}
......@@ -3,7 +3,6 @@ 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.constant.BookBusinessConstants;
import com.pcloud.book.group.dto.BookAppletSceneDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.ChangeQrCodeTypeDto;
......@@ -16,10 +15,8 @@ import com.pcloud.book.group.entity.BookGroupServe;
import com.pcloud.book.group.entity.WxWechatUserCorrelation;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.group.facade.BookGroupFacade;
import com.pcloud.book.group.tools.BookExcelReader;
import com.pcloud.book.group.vo.BookGroupAnalysisParam;
import com.pcloud.book.group.vo.BookGroupAnalysisVO;
import com.pcloud.book.group.vo.ExcelDataVO;
import com.pcloud.book.group.vo.FriendsVO;
import com.pcloud.book.group.vo.GroupIncomeStaticParamVO;
import com.pcloud.book.group.vo.GroupScanTrendParamVO;
......@@ -34,25 +31,19 @@ import com.pcloud.book.group.vo.WxGroupStatisticVO;
import com.pcloud.book.keywords.vo.ListKeywordVO;
import com.pcloud.common.core.constant.SystemCode;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.entity.UploadResultInfo;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.page.PageBean;
import com.pcloud.common.page.PageBeanNew;
import com.pcloud.common.page.PageParam;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.DateUtils;
import com.pcloud.common.utils.QrcodeUtils;
import com.pcloud.common.utils.SessionUtil;
import com.pcloud.common.utils.aliyun.OssUtils;
import com.pcloud.common.utils.cookie.Cookie;
import com.pcloud.common.utils.httpclient.UrlUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.pcloud.wechatgroup.base.exception.WechatGroupBizException;
import com.pcloud.wechatgroup.message.enums.IsSystem;
import org.codehaus.jackson.JsonParseException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -65,14 +56,11 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.hutool.core.util.ZipUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.SneakyThrows;
......@@ -152,6 +140,9 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
if (null == bookId || null == channelId) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "参数有误!");
}
if (bookId.equals(0L)){
return new ResponseDto<>();
}
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(bookGroupBiz.getBookGroupInfoByBookId(bookId, channelId, adviserId, addType, sceneId, joinGroupType));
}
......@@ -1196,4 +1187,32 @@ public class BookGroupFacadeImpl implements BookGroupFacade {
bookGroupBiz.updateBookGroupOpenWeapp(bookGroupId,openWeapp);
return new ResponseDto<>();
}
@Override
@PostMapping("createSingleBookGroup")
public ResponseDto<Long> createSingleBookGroup(@RequestHeader("token") String token, @RequestBody @ApiParam BookGroup bookGroup){
Long adviserId = (Long) SessionUtil.getVlaue(token,SessionUtil.PARTY_ID);
return new ResponseDto<>(bookGroupBiz.createSingleBookGroup(bookGroup,adviserId));
}
@Override
@GetMapping("updateRelatedBookGroup")
public ResponseDto<?> updateRelatedBookGroup(@RequestHeader("token") String token,
@RequestParam("bookGroupId") Long bookGroupId, @RequestParam(value = "relatedBookGroupId",required = false) Long relatedBookGroupId) {
SessionUtil.getToken4Redis(token);
bookGroupBiz.updateRelatedBookGroup(bookGroupId, relatedBookGroupId);
return new ResponseDto<>();
}
@Override
@GetMapping("listSingleBookGroup4Adviser")
public ResponseDto<?> listSingleBookGroup4Adviser(@RequestHeader("token") String token,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "currentPage", required = true) Integer currentPage,
@RequestParam(value = "numPerPage", required = true) Integer numPerPage)
throws BizException, PermissionException {
Long adviserId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
PageBeanNew<BookGroupDTO> pageBeanNew = bookGroupBiz.listSingleBookGroup4Adviser(name, currentPage, numPerPage, adviserId);
return new ResponseDto<>(pageBeanNew);
}
}
......@@ -128,4 +128,15 @@ public class BookGroupClassifyServiceImpl implements BookGroupClassifyService {
}
return ResponseHandleUtil.toResponse(groupQrcode4ClassifyDTO);
}
@Override
@GetMapping("getGroupQrcodeByClassify")
public ResponseEntity<ResponseDto<GroupQrcode4ClassifyDTO>> getGroupQrcodeByClassify(@RequestParam("wechatUserId") Long wechatUserId,@RequestParam("classifyId") Long classifyId){
GroupQrcode4ClassifyVO groupQrcode4ClassifyVO = bookGroupClassifyBiz.getGroupQrcodeByClassify(classifyId, wechatUserId);
GroupQrcode4ClassifyDTO groupQrcode4ClassifyDTO=new GroupQrcode4ClassifyDTO();
if(null!=groupQrcode4ClassifyVO){
BeanUtils.copyProperties(groupQrcode4ClassifyVO,groupQrcode4ClassifyDTO);
}
return ResponseHandleUtil.toResponse(groupQrcode4ClassifyDTO);
}
}
......@@ -478,7 +478,7 @@
IF(ISNULL(BF.BOOK_FUND_ID),0,1) IS_FUND_SUPPORT,A.TEMPLET_ID, if(G.ID IS NULL, A.LAST_MODIFIED_DATE, G.UPDATE_TIME) LAST_MODIFIED_DATE,
A.BOOK_ADVISER_ID,I.BOOK_STATUS, CONCAT('BK',A.BOOK_ID) uniqueNumber, if(G.ID IS NULL, 0, 1) isBookGroup, A.IS_PRINT isPrint,
G.id BOOK_GROUP_ID, G.group_qrcode_url groupQrcodeUrl,G.group_qrcode_name groupQrcodeName,
G.join_group_type,a.is_open_robot_process
G.join_group_type,a.is_open_robot_process,G.single_group singleGroup, G.related_book_group_id relatedBookGroupId
FROM
BOOK_ADVISER A
INNER JOIN BOOK B ON A.BOOK_ID = B.BOOK_ID AND A.ADVISER_ID = #{adviserId} AND A.IS_DELETE = 0 AND B.IS_DELETE = 0
......@@ -596,7 +596,7 @@
WHEN 2 THEN bgs.id
WHEN 3 THEN srk.id
WHEN 4 THEN bgs.id
else null END,0)=0,0,1)as has_serve, A.IS_PRINT isPrint, G.open_weapp openWeapp
else null END,0)=0,0,1)as has_serve, A.IS_PRINT isPrint, G.open_weapp openWeapp, G.single_group singleGroup, G.related_book_group_id relatedBookGroupId
FROM
book_group G
LEFT JOIN BOOK_ADVISER A ON G.BOOK_ID = A.BOOK_ID AND G.CHANNEL_ID = A.CHANNEL_ID AND G.CREATE_USER = A.ADVISER_ID
......
......@@ -81,6 +81,7 @@
book_group_classify
where
book_group_id = #{_parameter,jdbcType=BIGINT}
AND is_delete = 0
</select>
......@@ -345,8 +346,11 @@
book_group_classify c
JOIN book_group_qrcode q ON c.id = q.classify_id
JOIN book_group g ON c.book_group_id = g.id
JOIN book b ON c.book_id = b.BOOK_ID
LEFT JOIN book b ON c.book_id = b.BOOK_ID
WHERE q.weixin_group_id = #{_parameter}
AND c.is_delete = 0
AND g.is_delete = 0
AND q.is_delete = 0
LIMIT 1
</select>
......@@ -427,11 +431,10 @@
FROM book_group_classify c
INNER JOIN book_group_qrcode g ON c.id = g.classify_id
LEFT JOIN BOOK_GROUP bg on bg.id = c.book_group_id
LEFT JOIN book b ON c.book_id = b.book_id
LEFT JOIN book b ON c.book_id = b.book_id AND b.is_delete = 0
WHERE c.is_delete = 0
AND g.is_delete = 0
AND bg.is_delete = 0
AND b.is_delete = 0
AND c.create_user = #{adviserId}
<if test="bookIds != null">
AND c.book_id IN
......@@ -443,6 +446,7 @@
AND (
book_name LIKE CONCAT('%', #{name},'%')
OR c.classify LIKE CONCAT('%', #{name},'%')
OR bg.group_qrcode_name LIKE CONCAT('%', #{name},'%')
)
</if>
<if test="proLabelId!=null">
......@@ -474,12 +478,11 @@
FROM book_group_classify c
INNER JOIN book_group_qrcode g ON c.id = g.classify_id
LEFT JOIN BOOK_GROUP bg on bg.id = c.book_group_id
LEFT JOIN book b ON c.book_id = b.book_id
LEFT JOIN book b ON c.book_id = b.book_id AND b.is_delete = 0
LEFT JOIN weixin_clock_group_classify wc ON c.id = wc.book_group_classify_id
WHERE c.is_delete = 0
AND g.is_delete = 0
AND bg.is_delete = 0
AND b.is_delete = 0
AND wc.weixin_clock_group_classify_id is null
AND c.create_user = #{adviserId}
<if test="bookIds != null">
......@@ -948,10 +951,9 @@
c.has_open_learning_report hasOpenLearningReport
FROM book_group_classify c
LEFT JOIN BOOK_GROUP bg on bg.id = c.book_group_id
LEFT JOIN book b ON c.book_id = b.book_id
LEFT JOIN book b ON c.book_id = b.book_id AND b.is_delete = 0
WHERE c.is_delete = 0
AND bg.is_delete = 0
AND b.is_delete = 0
AND c.create_user = #{partyId}
<if test="keyword != null">
AND (
......
......@@ -31,6 +31,8 @@
<result column="belong_special_agent" property="belongSpecialAgent" jdbcType="BOOLEAN"/>
<result column="short_book_name" property="shortBookName" jdbcType="VARCHAR"/>
<result column="open_weapp" property="openWeapp" jdbcType="BOOLEAN"/>
<result column="single_group" property="singleGroup" jdbcType="BOOLEAN"/>
<result column="related_book_group_id" property="relatedBookGroupId" jdbcType="BIGINT"/>
</resultMap>
<resultMap id="BookGroupDTO" type="com.pcloud.book.group.dto.BookGroupDTO">
......@@ -67,6 +69,8 @@
<result column="belong_special_agent" property="belongSpecialAgent" jdbcType="BOOLEAN"/>
<result column="short_book_name" property="shortBookName" jdbcType="VARCHAR"/>
<result column="open_weapp" property="openWeapp" jdbcType="BOOLEAN"/>
<result column="single_group" property="singleGroup" jdbcType="BOOLEAN"/>
<result column="related_book_group_id" property="relatedBookGroupId" jdbcType="BIGINT"/>
</resultMap>
<sql id="Base_Column_List">
......@@ -75,7 +79,7 @@
create_time,
update_time, is_delete, is_show_book_name,join_group_type,add_friend_guide,customer_service_name,
is_invite_group,book_group_cipher, last_push_update_time, is_some_update, agent_id, belong_special_agent,
short_book_name, open_weapp
short_book_name, open_weapp, single_group, related_book_group_id
</sql>
<select id="getById" resultMap="BaseResultMap" parameterType="java.lang.Long">
......@@ -312,6 +316,9 @@
<if test="shortBookName != null">
short_book_name = #{shortBookName},
</if>
<if test="singleGroup !=null">
single_group = #{singleGroup},
</if>
</set>
where id = #{id,jdbcType=BIGINT}
</update>
......@@ -984,6 +991,41 @@
and is_delete=0
</select>
<update id="updateRelatedBookGroup" parameterType="map">
update book_group
set related_book_group_id = #{relatedBookGroupId}
where id = #{id}
</update>
<select id="mapDTOByIds" resultMap="BookGroupDTO" parameterType="map">
select
<include refid="Base_Column_List"/>
from book_group
where id in
<foreach collection="list" open="(" close=")" item="item" separator=",">
${item}
</foreach>
</select>
<select id="listSingleBookGroup4Adviser" resultType="com.pcloud.book.group.dto.BookGroupDTO" parameterType="map">
SELECT
id,
group_qrcode_name groupQrcodeName,
group_qrcode_url groupQrcodeUrl,
create_time createTime
FROM
book_group
WHERE
is_delete = 0
AND join_group_type = 1
AND single_group = 1
AND create_user = #{adviserId}
<if test="name != null">
AND group_qrcode_name LIKE CONCAT('%', #{name}, '%')
</if>
ORDER BY create_time DESC, id DESC
</select>
<update id="updateBookGroupOpenWeapp" parameterType="map">
UPDATE book_group
SET open_weapp = #{openWeapp}
......
......@@ -591,10 +591,9 @@
book_group_qrcode q
LEFT JOIN book_group_classify c ON q.classify_id = c.id
LEFT JOIN book_group g ON c.book_group_id = g.id
LEFT JOIN book b ON g.book_id = b.BOOK_ID
LEFT JOIN book b ON g.book_id = b.BOOK_ID AND b.IS_DELETE = 0
WHERE
q.create_user = #{partyId}
AND b.IS_DELETE = 0
AND g.is_delete = 0
AND c.is_delete = 0
AND q.is_delete = 0
......@@ -876,4 +875,36 @@
</if>
</select>
<select id="listClassifyLatestGroupByBookGroup" parameterType="long" resultType="com.pcloud.book.group.dto.GroupQrcodeDTO">
SELECT
r.id id,
r.classify_id classifyId,
r.weixin_group_id weixinGroupId,
r.group_name groupName,
r.user_number userNumber,
f.classify classify,
r.qrcode_url qrcodeUrl,
f.classify_introduce classifyIntroduce,
f.book_group_id bookGroupId
FROM
book_group_qrcode r
LEFT JOIN book_group_classify f ON r.classify_id = f.id
WHERE
r.id IN (
SELECT
MAX(q.id)
FROM
book_group_classify c
LEFT JOIN book_group_qrcode q ON c.id = q.classify_id
WHERE
c.book_group_id = #{bookGroupId}
AND c.is_delete = 0
AND q.is_delete = 0
GROUP BY
c.id
)
ORDER BY
f.rank ASC, f.id ASC
</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