Commit b4527795 by 阮思源

群公告

parent 3228346a
...@@ -153,6 +153,14 @@ public class BookApplication { ...@@ -153,6 +153,14 @@ public class BookApplication {
return RabbitMQFactory.bindingExchange(pushAddUserMessage(), MQTopicProducer.PUSH_ADD_USER_MESSAGE); return RabbitMQFactory.bindingExchange(pushAddUserMessage(), MQTopicProducer.PUSH_ADD_USER_MESSAGE);
} }
@Bean
public Queue updateWXGroupNameQueue() {
return RabbitMQFactory.queueBuilder(MQTopicConumer.UPDATE_WXGROUP_NAME);
}
@Bean
public Binding updateWXGroupNameBind() {
return RabbitMQFactory.bindingExchange(updateWXGroupNameQueue(), MQTopicProducer.UPDATE_WXGROUP_NAME);
}
} }
...@@ -134,4 +134,27 @@ public class WechatGroupConsr { ...@@ -134,4 +134,27 @@ public class WechatGroupConsr {
} }
return null; return null;
} }
/**
* 根据群号获取群主微信号
*/
public String getMasterIdByGroupId(String groupId) throws BizException {
LOGGER.info("【根据群号获取群主微信号,<START>.[groupId]=" + groupId + "]");
String masterId = null;
if (groupId == null) {
return null;
}
try {
masterId = ResponseHandleUtil.parseResponse(groupMemberService.getMasterIdByGroupId(groupId), String.class);
return masterId;
} catch (BizException e) {
LOGGER.warn("根据群号获取群主微信号失败:" + e.getMessage(), e);
throw new BizException(e.getCode(), e.getMessage());
} catch (Exception e) {
LOGGER.error("根据群号获取群主微信号.[getMasterIdByGroupId]:" + e.getMessage(), e);
throw new BookBizException(BookBizException.INVOKE_RES_ERROR, "服务内部错误,请稍后重试");
} finally {
LOGGER.info("【根据群号获取群主微信号,<END>--masterId=" + masterId);
}
}
} }
package com.pcloud.book.group.biz;
import com.pcloud.book.group.entity.GroupAnnouncement;
public interface GroupAnnouncementBiz {
/**
* 新增群公告
* @param groupAnnouncement
* @return
*/
Long createGroupAnnouncement(GroupAnnouncement groupAnnouncement);
/**
* 修改群公告
* @param groupAnnouncement
*/
void updateGroupAnnouncement(GroupAnnouncement groupAnnouncement);
/**
* 获取群公告
* @param classifyId
* @param bookGroupId
* @return
*/
GroupAnnouncement getGroupAnnouncement(Long classifyId, Long bookGroupId);
/**
* 按群设施群公告
* @param bookGroupId
* @param classifyId
* @param weixinGroupId
*/
void setAnForGroup(Long bookGroupId, Long classifyId, String weixinGroupId);
}
...@@ -10,10 +10,7 @@ import com.pcloud.book.consumer.resource.ProductConsr; ...@@ -10,10 +10,7 @@ import com.pcloud.book.consumer.resource.ProductConsr;
import com.pcloud.book.consumer.settlement.SettlementConsr; import com.pcloud.book.consumer.settlement.SettlementConsr;
import com.pcloud.book.consumer.trade.TradeConsr; import com.pcloud.book.consumer.trade.TradeConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.BookGroupBiz; import com.pcloud.book.group.biz.*;
import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.biz.WeixinQrcodeBiz;
import com.pcloud.book.group.dao.BookClassifyBuyRecordDao; import com.pcloud.book.group.dao.BookClassifyBuyRecordDao;
import com.pcloud.book.group.dao.BookGroupClassifyDao; import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookQrcodeUserDao; import com.pcloud.book.group.dao.BookQrcodeUserDao;
...@@ -121,6 +118,8 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -121,6 +118,8 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
private MessageConsr messageConsr; private MessageConsr messageConsr;
@Autowired @Autowired
private TradeConsr tradeConsr; private TradeConsr tradeConsr;
@Autowired
private GroupAnnouncementBiz groupAnnouncementBiz;
@Override @Override
@ParamLog("新增分类") @ParamLog("新增分类")
...@@ -161,6 +160,8 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz { ...@@ -161,6 +160,8 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
groupQrcode.setClassifyId(bookGroupClassify.getId()); groupQrcode.setClassifyId(bookGroupClassify.getId());
groupQrcode.setQrcodeHeadUrl(readerConsr.getNineHeadUrl()); groupQrcode.setQrcodeHeadUrl(readerConsr.getNineHeadUrl());
groupQrcodeBiz.insert(groupQrcode); groupQrcodeBiz.insert(groupQrcode);
//获取该社群书下是否有群公告
groupAnnouncementBiz.setAnForGroup(addClassifyVO.getBookGroupId(), null, oneQrcode.getWeixinGroupId());
//新增一个规格 //新增一个规格
Long specId = addSpecification(bookGroupClassify.getPrice(), qrcodeNameAndProId.getProductId(), addClassifyVO.getChannelId(), bookGroupClassify.getClassify()); Long specId = addSpecification(bookGroupClassify.getPrice(), qrcodeNameAndProId.getProductId(), addClassifyVO.getChannelId(), bookGroupClassify.getClassify());
bookGroupClassify.setProductSpecId(specId); bookGroupClassify.setProductSpecId(specId);
......
package com.pcloud.book.group.biz.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.GroupAnnouncementBiz;
import com.pcloud.book.group.dao.GroupAnnouncementDao;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dao.WeixinQrcodeDao;
import com.pcloud.book.group.entity.GroupAnnouncement;
import com.pcloud.book.group.entity.WeixinQrcode;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.utils.ListUtils;
import com.pcloud.common.utils.string.StringUtil;
import com.sdk.wxgroup.GroupInfoVO;
import com.sdk.wxgroup.ModifyNoticeVO;
import com.sdk.wxgroup.WxGroupSDK;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/24 16:27
**/
@Component("groupAnnouncementBiz")
public class GroupAnnouncementBizImpl implements GroupAnnouncementBiz {
private static final Logger LOGGER = LoggerFactory.getLogger(GroupAnnouncementBiz.class);
@Autowired
private GroupAnnouncementDao groupAnnouncementDao;
@Autowired
private GroupQrcodeDao groupQrcodeDao;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@Autowired
private WeixinQrcodeDao weixinQrcodeDao;
@ParamLog("新增群公告")
@Transactional(rollbackFor = Exception.class)
@Override
public Long createGroupAnnouncement(GroupAnnouncement groupAnnouncement) {
if (StringUtil.isEmpty(groupAnnouncement.getAnnouncementContent())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "公告内容不能为空!");
}
if (groupAnnouncement.getBookGroupId() == null && groupAnnouncement.getBookGroupClassifyId() == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "社群书id和分类id不能同时为空!");
}
Long bookGroupId = groupAnnouncement.getBookGroupId();
Long classifyId = groupAnnouncement.getBookGroupClassifyId();
//新增之前判断是否重复添加
if (bookGroupId != null && groupAnnouncementDao.getByGroupBookId(bookGroupId) != null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "该社群码下已有公告,请勿重复添加!");
}
if (classifyId != null && groupAnnouncementDao.getByClassifyId(classifyId) != null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "该群分类下已有公告,请勿重复添加!");
}
//新增群发
groupAnnouncementDao.insert(groupAnnouncement);
String content = groupAnnouncement.getAnnouncementContent();
List<String> wechatGroupIds = new ArrayList<>();
//根据书群发
if (bookGroupId != null && classifyId == null) {
//根据书查询群id集合
wechatGroupIds = groupQrcodeDao.getWeixinGroupIdsByBookGroupId(bookGroupId);
}
//根据分类群发
if (bookGroupId == null && classifyId != null) {
//根据分类查询群id集合
wechatGroupIds = groupQrcodeDao.getWeixinGroupIdsByClassifyId(classifyId);
}
dealAnnouncement(wechatGroupIds, content);
return groupAnnouncement.getId();
}
@ParamLog("修改群公告")
@Transactional(rollbackFor = Exception.class)
@Override
public void updateGroupAnnouncement(GroupAnnouncement groupAnnouncement) {
if (StringUtil.isEmpty(groupAnnouncement.getAnnouncementContent())) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "公告内容不能为空!");
}
if (groupAnnouncement.getId() == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "公告id不能为空!");
}
GroupAnnouncement groupAnnouncementOld = groupAnnouncementDao.getById(groupAnnouncement.getId());
if (groupAnnouncementOld == null) {
throw new BookBizException(BookBizException.PARAM_IS_ERROR, "该公告不存在!");
}
Long bookGroupId = groupAnnouncementOld.getBookGroupId();
Long classifyId = groupAnnouncementOld.getBookGroupClassifyId();
String content = groupAnnouncement.getAnnouncementContent();
//如果群公告一样就不修改
if (groupAnnouncement.getAnnouncementContent().equals(groupAnnouncementOld.getAnnouncementContent())){
return;
}
groupAnnouncementDao.updateContentById(content, groupAnnouncement.getId());
List<String> wechatGroupIds = new ArrayList<>();
//如果是按照分类修改,则直接修改
if (bookGroupId == null && classifyId != null) {
//根据分类查询群id集合
wechatGroupIds = groupQrcodeDao.getWeixinGroupIdsByClassifyId(classifyId);
}
//如果是按照社群书修改,则判断下该社群书下的分类是否已经创建了群公告,如果有,则不修改这部分分类下的群公告
if (bookGroupId != null && classifyId == null) {
//根据书查询群id集合
wechatGroupIds = groupQrcodeDao.getWeixinGroupIdsByBookGroupId(bookGroupId);
if (!ListUtils.isEmpty(wechatGroupIds)) {
//根据社群码id获取已经设置过公告的微信群id集合
List<String> hasAnnWechatGroupIds = groupAnnouncementDao.getHasAnnGroupIdsByBookGroupId(bookGroupId);
if (!ListUtils.isEmpty(hasAnnWechatGroupIds)) {
wechatGroupIds.removeAll(hasAnnWechatGroupIds);
}
}
}
dealAnnouncement(wechatGroupIds, content);
}
@Override
public GroupAnnouncement getGroupAnnouncement(Long classifyId, Long bookGroupId) {
if (classifyId==null&&bookGroupId==null){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"社群码id和群分类id不能同时为空!");
}
GroupAnnouncement groupAnnouncement = null;
if (bookGroupId!=null){
groupAnnouncement=groupAnnouncementDao.getByGroupBookId(bookGroupId);
}
if (classifyId!=null){
groupAnnouncement=groupAnnouncementDao.getByClassifyId(classifyId);
}
if (groupAnnouncement == null) {
groupAnnouncement = new GroupAnnouncement();
}
return groupAnnouncement;
}
/**
* 按照微信群设置群公告
*
* @param bookGroupId
* @param classifyId
* @param weixinGroupId
*/
@ParamLog("按照微信群设置群公告")
@Override
public void setAnForGroup(Long bookGroupId, Long classifyId, String weixinGroupId) {
if (bookGroupId == null && classifyId == null) {
return;
}
GroupAnnouncement groupAnnouncement = null;
if (classifyId != null) {
groupAnnouncement = groupAnnouncementDao.getByClassifyId(classifyId);
}
if (groupAnnouncement == null) {
groupAnnouncement = groupAnnouncementDao.getByGroupBookId(bookGroupId);
}
if (groupAnnouncement != null) {
List<String> wechatGroupIds = new ArrayList<>();
wechatGroupIds.add(weixinGroupId);
dealAnnouncement(wechatGroupIds, groupAnnouncement.getAnnouncementContent());
}
}
/**
* 设置群公告
*/
private void dealAnnouncement(List<String> wechatGroupIds, String content) {
if (!ListUtils.isEmpty(wechatGroupIds)) {
//循环设置群公告
for (String wechatGroupId : wechatGroupIds) {
ModifyNoticeVO modifyNoticeVO = new ModifyNoticeVO();
modifyNoticeVO.setContent(content);
modifyNoticeVO.setWxGroupId(wechatGroupId);
// 调内部接口获取群主微信号
WeixinQrcode weixinQrcode = weixinQrcodeDao.getByGroupId(wechatGroupId);
LOGGER.info("开始拿群信息wechatGroupId"+wechatGroupId+"robotId="+weixinQrcode.getRobotWxId());
GroupInfoVO groupInfoVO = WxGroupSDK.getGroupInfo(wechatGroupId, weixinQrcode.getRobotWxId());
LOGGER.info("结束拿群信息"+groupInfoVO.toString());
if (groupInfoVO == null) {
continue;
}
modifyNoticeVO.setMasterId(groupInfoVO.getGroupOwner());
//设置群公告
LOGGER.info("设置群公告开始"+modifyNoticeVO.toString());
WxGroupSDK.modifyNotice(modifyNoticeVO);
LOGGER.info("设置群公告结束"+modifyNoticeVO.toString());
}
}
}
}
...@@ -4,6 +4,7 @@ import com.pcloud.book.base.exception.BookBizException; ...@@ -4,6 +4,7 @@ import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.reader.ReaderConsr; import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr; import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.biz.BookGroupClassifyBiz; import com.pcloud.book.group.biz.BookGroupClassifyBiz;
import com.pcloud.book.group.biz.GroupAnnouncementBiz;
import com.pcloud.book.group.biz.GroupQrcodeBiz; import com.pcloud.book.group.biz.GroupQrcodeBiz;
import com.pcloud.book.group.biz.WeixinQrcodeBiz; import com.pcloud.book.group.biz.WeixinQrcodeBiz;
import com.pcloud.book.group.dao.GroupQrcodeDao; import com.pcloud.book.group.dao.GroupQrcodeDao;
...@@ -21,7 +22,6 @@ import com.pcloud.book.group.vo.ClassifyQrcodeVO; ...@@ -21,7 +22,6 @@ import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.ClassifyVO; import com.pcloud.book.group.vo.ClassifyVO;
import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO; import com.pcloud.book.group.vo.GroupQrcodeBaseInfoVO;
import com.pcloud.book.group.vo.ListQrcodeByClassifyParamVO; import com.pcloud.book.group.vo.ListQrcodeByClassifyParamVO;
import com.pcloud.book.keywords.biz.BookGuideBiz;
import com.pcloud.book.keywords.dao.BookKeywordRecordDao; import com.pcloud.book.keywords.dao.BookKeywordRecordDao;
import com.pcloud.book.keywords.dto.KeywordUserCountDTO; import com.pcloud.book.keywords.dto.KeywordUserCountDTO;
import com.pcloud.book.mq.producer.BookMQProducer; import com.pcloud.book.mq.producer.BookMQProducer;
...@@ -63,6 +63,8 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -63,6 +63,8 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
private BookKeywordRecordDao bookKeywordRecordDao; private BookKeywordRecordDao bookKeywordRecordDao;
@Autowired @Autowired
private ReaderConsr readerConsr; private ReaderConsr readerConsr;
@Autowired
private GroupAnnouncementBiz groupAnnouncementBiz;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -258,6 +260,9 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -258,6 +260,9 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
groupQrcode.setGroupName(groupName); groupQrcode.setGroupName(groupName);
groupQrcode.setClassifyId(classifyId); groupQrcode.setClassifyId(classifyId);
this.insert(groupQrcode); this.insert(groupQrcode);
//获取该社群书下是否有群公告
ClassifyVO classifyVO = bookGroupClassifyBiz.getClassify(classifyId);
groupAnnouncementBiz.setAnForGroup(classifyVO.getBookGroupId(), classifyId, oneQrcode.getWeixinGroupId());
//String robotId = wechatGroupConsr.getRobotIdByGroupId(oneQrcode.getWeixinGroupId()); //String robotId = wechatGroupConsr.getRobotIdByGroupId(oneQrcode.getWeixinGroupId());
SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), oneQrcode.getWeixinGroupId(), groupName); SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), oneQrcode.getWeixinGroupId(), groupName);
} }
......
package com.pcloud.book.group.dao;
import com.pcloud.book.group.entity.GroupAnnouncement;
import com.pcloud.common.core.dao.BaseDao;
import java.util.List;
public interface GroupAnnouncementDao extends BaseDao<GroupAnnouncement> {
/**
* 更新公告内容
* @param content
* @param id
*/
void updateContentById(String content, Long id);
/**
* 根据社群码id获取已经设置过公告的微信群id集合
* @param bookGroupId
* @return
*/
List<String> getHasAnnGroupIdsByBookGroupId(Long bookGroupId);
/**
* 根据社群码id获取
* @param bookGroupId
* @return
*/
GroupAnnouncement getByGroupBookId(Long bookGroupId);
/**
* 根据分类id获取
* @param classifyId
* @return
*/
GroupAnnouncement getByClassifyId(Long classifyId);
}
...@@ -108,4 +108,25 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> { ...@@ -108,4 +108,25 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
* @Date:2019/5/7 18:14 * @Date:2019/5/7 18:14
*/ */
ChangeGroupNameDTO getUpdateGroupNameParam(Long id); ChangeGroupNameDTO getUpdateGroupNameParam(Long id);
/**
* 根据社群书二维码id查询群id集合
* @param bookGroupId
* @return
*/
List<String> getWeixinGroupIdsByBookGroupId(Long bookGroupId);
/**
* 根据群分类id查询群id集合
* @param classifyId
* @return
*/
List<String> getWeixinGroupIdsByClassifyId(Long classifyId);
/**
* 根据群号查询
* @param wechatGroupId
* @return
*/
GroupQrcode getGroupQrcodeByGroupId(String wechatGroupId);
} }
...@@ -128,4 +128,11 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> { ...@@ -128,4 +128,11 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> {
* @Date:2019/5/13 14:35 * @Date:2019/5/13 14:35
*/ */
void updateState(Long weixinQrcodeId, Integer updateState); void updateState(Long weixinQrcodeId, Integer updateState);
/**
* 获取群信息
* @param wechatGroupId
* @return
*/
WeixinQrcode getByGroupId(String wechatGroupId);
} }
package com.pcloud.book.group.dao.impl;
import com.pcloud.book.group.dao.GroupAnnouncementDao;
import com.pcloud.book.group.entity.GroupAnnouncement;
import com.pcloud.common.core.dao.BaseDaoImpl;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/24 16:06
**/
@Component("groupAnnouncementDao")
public class GroupAnnouncementDaoImpl extends BaseDaoImpl<GroupAnnouncement> implements GroupAnnouncementDao {
@Override
public void updateContentById(String content, Long id) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("content", content);
paramMap.put("id", id);
this.getSqlSession().update(this.getStatement("updateContentById"), paramMap);
}
@Override
public List<String> getHasAnnGroupIdsByBookGroupId(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("getHasAnnGroupIdsByBookGroupId"), bookGroupId);
}
@Override
public GroupAnnouncement getByGroupBookId(Long bookGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getByGroupBookId"), bookGroupId);
}
@Override
public GroupAnnouncement getByClassifyId(Long classifyId) {
return this.getSqlSession().selectOne(this.getStatement("getByClassifyId"), classifyId);
}
}
...@@ -104,4 +104,20 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou ...@@ -104,4 +104,20 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
public ChangeGroupNameDTO getUpdateGroupNameParam(Long id) { public ChangeGroupNameDTO getUpdateGroupNameParam(Long id) {
return this.getSqlSession().selectOne(this.getStatement("getUpdateGroupNameParam"), id); return this.getSqlSession().selectOne(this.getStatement("getUpdateGroupNameParam"), id);
} }
@Override
public List<String> getWeixinGroupIdsByBookGroupId(Long bookGroupId) {
return this.getSqlSession().selectList(this.getStatement("getWeixinGroupIdsByBookGroupId"), bookGroupId);
}
@Override
public List<String> getWeixinGroupIdsByClassifyId(Long classifyId) {
return this.getSqlSession().selectList(this.getStatement("getWeixinGroupIdsByClassifyId"), classifyId);
}
@Override
public GroupQrcode getGroupQrcodeByGroupId(String wechatGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getGroupQrcodeByGroupId"), wechatGroupId);
}
} }
...@@ -121,4 +121,9 @@ public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements We ...@@ -121,4 +121,9 @@ public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements We
paramMap.put("weixinQrcodeId", weixinQrcodeId); paramMap.put("weixinQrcodeId", weixinQrcodeId);
this.getSqlSession().update(this.getStatement("updateState"), paramMap); this.getSqlSession().update(this.getStatement("updateState"), paramMap);
} }
@Override
public WeixinQrcode getByGroupId(String wechatGroupId) {
return this.getSqlSession().selectOne(this.getStatement("getByGroupId"), wechatGroupId);
}
} }
package com.pcloud.book.group.entity;
import com.pcloud.common.entity.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
/**
* @Description 群公告
* @Author ruansiyuan
* @Date 2019/5/24 15:13
**/
public class GroupAnnouncement extends BaseEntity {
private static final long serialVersionUID = -2226196406799320902L;
@ApiModelProperty("社群书id")
private Long bookGroupId;
@ApiModelProperty("群分类id")
private Long bookGroupClassifyId;
@ApiModelProperty("群公告内容")
private String announcementContent;
@ApiModelProperty("创建人")
private Long createUser;
@ApiModelProperty("更新人")
private Long updateUser;
public Long getBookGroupId() {
return bookGroupId;
}
public void setBookGroupId(Long bookGroupId) {
this.bookGroupId = bookGroupId;
}
public Long getBookGroupClassifyId() {
return bookGroupClassifyId;
}
public void setBookGroupClassifyId(Long bookGroupClassifyId) {
this.bookGroupClassifyId = bookGroupClassifyId;
}
public String getAnnouncementContent() {
return announcementContent;
}
public void setAnnouncementContent(String announcementContent) {
this.announcementContent = announcementContent;
}
public Long getCreateUser() {
return createUser;
}
public void setCreateUser(Long createUser) {
this.createUser = createUser;
}
public Long getUpdateUser() {
return updateUser;
}
public void setUpdateUser(Long updateUser) {
this.updateUser = updateUser;
}
@Override
public String toString() {
return "GroupAnnouncement{" +
", bookGroupId=" + bookGroupId +
", bookGroupClassifyId=" + bookGroupClassifyId +
", announcementContent='" + announcementContent + '\'' +
", createUser=" + createUser +
", updateUser=" + updateUser +
"} " + super.toString();
}
}
package com.pcloud.book.group.facade;
import com.pcloud.book.group.entity.GroupAnnouncement;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
@Api(description = "群公告")
public interface GroupAnnouncementFacade {
@ApiOperation("新增群公告")
@PostMapping("createGroupAnnouncement")
ResponseDto<?> createGroupAnnouncement(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestBody @ApiParam("群公告实体") GroupAnnouncement groupAnnouncement
) throws BizException, PermissionException;
@ApiOperation("修改群公告")
@PostMapping("updateGroupAnnouncement")
ResponseDto<?> updateGroupAnnouncement(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestBody @ApiParam("群公告实体") GroupAnnouncement groupAnnouncement
) throws BizException, PermissionException;
@ApiOperation("获取群公告")
@GetMapping("getGroupAnnouncement")
ResponseDto<?> getGroupAnnouncement(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestParam(value = "classifyId",required = false) @ApiParam("分类id") Long classifyId,
@RequestParam(value = "bookGroupId",required = false) @ApiParam("社群码id") Long bookGroupId
) throws BizException, PermissionException;
}
package com.pcloud.book.group.facade.impl;
import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.group.biz.GroupAnnouncementBiz;
import com.pcloud.book.group.entity.GroupAnnouncement;
import com.pcloud.book.group.facade.GroupAnnouncementFacade;
import com.pcloud.common.dto.ResponseDto;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.common.permission.PermissionException;
import com.pcloud.common.utils.SessionUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @Description
* @Author ruansiyuan
* @Date 2019/5/24 16:29
**/
@RestController("groupAnnouncementFacade")
@RequestMapping("groupAnnouncement")
public class GroupAnnouncementFacadeImpl implements GroupAnnouncementFacade {
@Autowired
private GroupAnnouncementBiz groupAnnouncementBiz;
@ApiOperation("新增群公告")
@PostMapping("createGroupAnnouncement")
@Override
public ResponseDto<?> createGroupAnnouncement(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestBody @ApiParam("群公告实体") GroupAnnouncement groupAnnouncement
) throws BizException, PermissionException {
Long partyId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if (groupAnnouncement==null){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"群公告实体不能为空!");
}
groupAnnouncement.setCreateUser(partyId);
groupAnnouncement.setUpdateUser(partyId);
return new ResponseDto<>(groupAnnouncementBiz.createGroupAnnouncement(groupAnnouncement));
}
@ApiOperation("修改群公告")
@PostMapping("updateGroupAnnouncement")
@Override
public ResponseDto<?> updateGroupAnnouncement(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestBody @ApiParam("群公告实体") GroupAnnouncement groupAnnouncement
) throws BizException, PermissionException {
Long partyId = (Long) SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
if (groupAnnouncement==null){
throw new BookBizException(BookBizException.PARAM_IS_ERROR,"群公告实体不能为空!");
}
groupAnnouncement.setUpdateUser(partyId);
groupAnnouncementBiz.updateGroupAnnouncement(groupAnnouncement);
return new ResponseDto<>();
}
@ApiOperation("获取群公告")
@GetMapping("getGroupAnnouncement")
@Override
public ResponseDto<?> getGroupAnnouncement(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestParam(value = "classifyId",required = false) @ApiParam("分类id") Long classifyId,
@RequestParam(value = "bookGroupId",required = false) @ApiParam("社群码id") Long bookGroupId
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
return new ResponseDto<>(groupAnnouncementBiz.getGroupAnnouncement(classifyId,bookGroupId));
}
}
...@@ -50,4 +50,9 @@ public class MQTopicConumer { ...@@ -50,4 +50,9 @@ public class MQTopicConumer {
*/ */
public static final String PUSH_ADD_USER_MESSAGE = PREFIX + MQTopicProducer.PUSH_ADD_USER_MESSAGE; public static final String PUSH_ADD_USER_MESSAGE = PREFIX + MQTopicProducer.PUSH_ADD_USER_MESSAGE;
/**
* 修改微信群名称
*/
public static final String UPDATE_WXGROUP_NAME = PREFIX + MQTopicProducer.UPDATE_WXGROUP_NAME;
} }
package com.pcloud.book.mq.topic;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.mq.config.MQTopicConumer;
import com.pcloud.common.core.aspect.ParamLog;
import com.pcloud.common.exceptions.BizException;
import com.pcloud.wechatgroup.message.dto.GroupNameDTO;
import com.sdk.wxgroup.ChangeNameVO;
import com.sdk.wxgroup.SendTextMessageVO;
import com.sdk.wxgroup.WxGroupSDK;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = MQTopicConumer.UPDATE_WXGROUP_NAME)
public class UpdateWXGroupNameListener {
private static final Logger LOGGER = LoggerFactory.getLogger(UpdateWXGroupNameListener.class);
@Autowired
private GroupQrcodeDao groupQrcodeDao;
@Autowired
private WechatGroupConsr wechatGroupConsr;
@ParamLog("接收修改群名称topic")
@RabbitHandler
public void onMessage(GroupNameDTO groupNameDTO) throws BizException {
try {
String wechatGroupId = groupNameDTO.getWechatGroupId();
if (groupNameDTO == null || wechatGroupId == null
|| groupNameDTO.getNewGroupName() == null || groupNameDTO.getNickName() == null)
return;
GroupQrcode groupQrcode = groupQrcodeDao.getGroupQrcodeByGroupId(wechatGroupId);
if (groupQrcode == null) {
LOGGER.info("没有找到该群" + wechatGroupId);
return;
}
if (!groupNameDTO.getNewGroupName().equals(groupQrcode.getGroupName())) {
ChangeNameVO changeNameVO = new ChangeNameVO();
changeNameVO.setName(groupQrcode.getGroupName());
changeNameVO.setWxGroupId(wechatGroupId);
String altId = wechatGroupConsr.getRobotIdByGroupId(wechatGroupId);
changeNameVO.setAltId(altId);
WxGroupSDK.changeGroupName(changeNameVO);
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setContent("@"+groupNameDTO.getNickName()+",为方便群友入群分享好的助学方法,请不要随意修改群名。如再修改,会将您移出群聊。谢谢配合。");
sendTextMessageVO.setAltId(altId);
sendTextMessageVO.setGroupId(wechatGroupId);
WxGroupSDK.sendTextMessage(sendTextMessageVO);
}
} catch (Exception e) {
LOGGER.error("接收修改群名称失败" + e.getMessage(), e);
}
}
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.pcloud.book.group.dao.impl.GroupAnnouncementDaoImpl">
<resultMap id="BaseResultMap" type="com.pcloud.book.group.entity.GroupAnnouncement">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="book_group_id" property="bookGroupId" jdbcType="BIGINT"/>
<result column="book_group_classify_id" property="bookGroupClassifyId" jdbcType="BIGINT"/>
<result column="announcement_content" property="announcementContent" jdbcType="VARCHAR"/>
<result column="create_user" property="createUser" jdbcType="BIGINT"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="update_user" property="updateUser" jdbcType="BIGINT"/>
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List">
id,book_group_id,book_group_classify_id,announcement_content,create_user,create_time,update_user,update_time
</sql>
<insert id="insert" parameterType="com.pcloud.book.group.entity.GroupAnnouncement" useGeneratedKeys="true"
keyProperty="id">
INSERT INTO group_announcement
<trim prefix="(" suffix=")" suffixOverrides=",">
book_group_id,
book_group_classify_id,
announcement_content,
create_user,
create_time,
update_user,
update_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#{bookGroupId,jdbcType=BIGINT},
#{bookGroupClassifyId,jdbcType=BIGINT},
#{announcementContent,jdbcType=VARCHAR},
#{createUser,jdbcType=BIGINT},
now(),
#{updateUser,jdbcType=BIGINT},
NOW(),
</trim>
</insert>
<!--根据id查询-->
<select id="getById" parameterType="Long" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from group_announcement where id=#{id}
</select>
<!--更新群公告内容-->
<update id="updateContentById" parameterType="map">
update group_announcement set
announcement_content=#{content},
update_time=now()
where id=#{id}
</update>
<!--根据社群码id获取已经设置过公告的微信群id集合-->
<select id="getHasAnnGroupIdsByBookGroupId" parameterType="Long" resultType="String">
SELECT
t2.weixin_group_id
FROM
group_announcement t
INNER JOIN book_group_classify t1 ON t.book_group_classify_id = t1.id
INNER JOIN book_group_qrcode t2 ON t1.id = t2.classify_id
WHERE
t1.book_group_id = #{bookGroupId}
</select>
<!--根据社群码id获取-->
<select id="getByGroupBookId" parameterType="Long" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from group_announcement
where book_group_id=#{bookGroupId}
</select>
<!--根据群分类id获取-->
<select id="getByClassifyId" parameterType="Long" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from group_announcement
where book_group_classify_id=#{classifyId}
</select>
</mapper>
\ No newline at end of file
...@@ -248,4 +248,31 @@ ...@@ -248,4 +248,31 @@
AND c.book_id = b.BOOK_ID AND c.book_id = b.BOOK_ID
AND q.id = #{qrcodeId} AND q.id = #{qrcodeId}
</select> </select>
<!--根据社群书二维码id查询群id集合-->
<select id="getWeixinGroupIdsByBookGroupId" parameterType="Long" resultType="String">
SELECT
DISTINCT t.weixin_group_id
FROM
book_group_qrcode t
INNER JOIN book_group_classify t1 ON t.classify_id = t1.id
WHERE
t1.book_group_id = #{bookGroupId}
</select>
<!--根据群分类id查询群id集合-->
<select id="getWeixinGroupIdsByClassifyId" parameterType="Long" resultType="String">
SELECT
DISTINCT t.weixin_group_id
FROM
book_group_qrcode t
WHERE
classify_id = #{classifyId}
</select>
<!--根据群号查询-->
<select id="getGroupQrcodeByGroupId" parameterType="String" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from book_group_qrcode
where is_delete=0 and weixin_group_id=#{wechatGroupId} limit 1
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -213,4 +213,10 @@ ...@@ -213,4 +213,10 @@
WHERE ID = #{weixinQrcodeId} WHERE ID = #{weixinQrcodeId}
</update> </update>
<select id="getByGroupId" parameterType="String" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from weixin_qrcode where
weixin_group_id = #{wechatGroupId}
limit 1
</select>
</mapper> </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