Commit 3ea1b778 by 裴大威

feat add interface getChangeGroupQrCode

parent fff44a28
...@@ -23,6 +23,11 @@ import java.util.Map; ...@@ -23,6 +23,11 @@ import java.util.Map;
public interface GroupQrcodeBiz { public interface GroupQrcodeBiz {
/** /**
* 查询是否需要切群,若需要则返回新群,不需要则为空前端展示客服二维码
*/
String getChangeGroupQrCode(Long classifyId);
/**
* 测试替换群二维码,不发生产 * 测试替换群二维码,不发生产
*/ */
void updateGroupQrcode(UpdateGroupQrcodeRequestVO vo); void updateGroupQrcode(UpdateGroupQrcodeRequestVO vo);
......
...@@ -69,6 +69,7 @@ import java.util.Date; ...@@ -69,6 +69,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
...@@ -189,6 +190,64 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -189,6 +190,64 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
} }
@Override @Override
public String getChangeGroupQrCode(Long classifyId) {
log.info("[前端调用切群接口] getChangeGroupQrCode classifyId:{}", classifyId);
if (Objects.isNull(classifyId)) {
return StringUtil.EMPTY;
}
ClassifyVO classify = bookGroupClassifyBiz.getClassify(classifyId);
if (Objects.isNull(classify)) {
throw new BookBizException(BookBizException.ID_NOT_EXIST, "分类不存在");
}
List<ClassifyQrcodeVO> qrcodeByClassify = groupQrcodeDao.getQrcodeByClassifyId(classifyId);
if (CollectionUtils.isEmpty(qrcodeByClassify)) {
// 如果没有群则新增一个
String url = addWechatGroup(classifyId, null);
log.info("[前端调用切群接口] getChangeGroupQrCode 分类异常没有群 重新分配群classifyId:{} url:{}", classifyId, url);
return url;
}
// 获取使用中的群
List<ClassifyQrcodeVO> collect = qrcodeByClassify.stream().filter(p -> QrcodeStatusEnum.ON_USE.value.equals(p.getQrcodeState())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(collect)) {
// 如果没有使用中群则新增一个
String url = addWechatGroup(classifyId, null);
log.info("[前端调用切群接口] getChangeGroupQrCode 没有使用中的群 重新分配群classifyId:{} url:{}", classifyId, url);
return url;
}
if (collect.size() == 1) {
ClassifyQrcodeVO qrcodeVO = collect.get(0);
if (qrcodeVO.getUserNumber() < classify.getChangeNumber()) {
return qrcodeVO.getQrcodeUrl();
} else {
//将二维码修改为已满群状态
changeToOverNumber(qrcodeVO.getWeixinQrcodeId(), qrcodeVO.getId());
// 如果没有群则新增一个
String url = addWechatGroup(classifyId, null);
log.info("[前端调用切群接口] getChangeGroupQrCode 群超出切群人数了,但是没有切群 重新分配群classifyId:{} url:{}", classifyId, url);
return url;
}
}
String url = null;
for (ClassifyQrcodeVO vo : collect) {
if (vo.getUserNumber() >= classify.getChangeNumber()) {
//将二维码修改为已满群状态
changeToOverNumber(vo.getWeixinQrcodeId(), vo.getId());
log.info("[前端调用切群接口] getChangeGroupQrCode 处理超出了但是没有更新状态的群 vo:{}", vo);
}
if (vo.getUserNumber() < classify.getChangeNumber()) {
url = vo.getQrcodeUrl();
}
}
if (Objects.isNull(url)) {
// 如果没有群则新增一个
String qrcodeUrl = addWechatGroup(classifyId, null);
log.info("[前端调用切群接口] getChangeGroupQrCode 没有可用群 重新分配群classifyId:{} url:{}", classifyId, url);
return qrcodeUrl;
}
return url;
}
@Override
@ParamLog("updateGroupQrcode") @ParamLog("updateGroupQrcode")
public void updateGroupQrcode(UpdateGroupQrcodeRequestVO vo) { public void updateGroupQrcode(UpdateGroupQrcodeRequestVO vo) {
this.groupQrcodeDao.updateGroupQrcode(vo.getGroupQrcodeId(), vo.getQrcodeUrl(), vo.getUserId()); this.groupQrcodeDao.updateGroupQrcode(vo.getGroupQrcodeId(), vo.getQrcodeUrl(), vo.getUserId());
...@@ -513,7 +572,7 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -513,7 +572,7 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
*/ */
@ParamLog("重新分配一个群") @ParamLog("重新分配一个群")
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void addWechatGroup(Long classifyId, Long groupQrcodeId) { public String addWechatGroup(Long classifyId, Long groupQrcodeId) {
Integer generation = null; Integer generation = null;
ClassifyVO classifyVOOne = bookGroupClassifyBiz.getClassify(classifyId); ClassifyVO classifyVOOne = bookGroupClassifyBiz.getClassify(classifyId);
if (classifyVOOne != null && classifyVOOne.getBookGroupId() != null) { if (classifyVOOne != null && classifyVOOne.getBookGroupId() != null) {
...@@ -526,9 +585,13 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -526,9 +585,13 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
log.info("[重新分配一个群] : oneQrcode:{}", oneQrcode); log.info("[重新分配一个群] : oneQrcode:{}", oneQrcode);
if (oneQrcode != null) { if (oneQrcode != null) {
//将二维码改为已满群状态 //将二维码改为已满群状态
Integer number = groupQrcodeDao.changeQrcodeState(groupQrcodeId, QrcodeStatusEnum.OVER_NUMBER.value); Integer number = 0;
if (!Objects.isNull(groupQrcodeId)) {
number = groupQrcodeDao.changeQrcodeState(groupQrcodeId, QrcodeStatusEnum.OVER_NUMBER.value);
}
log.info("[重新分配一个群] : groupQrcodeDao.changeQrcodeState number:{}", number); log.info("[重新分配一个群] : groupQrcodeDao.changeQrcodeState number:{}", number);
if (number > 0){ // 当该分类不存在群的时候分配一个
if (number > 0 || null == groupQrcodeId){
//获取标签对应基本信息 //获取标签对应基本信息
GroupNameAndMaxSeqDTO groupNameAndMaxSeqDTO = bookGroupClassifyBiz.getGroupNameAndMaxSeq(classifyId); GroupNameAndMaxSeqDTO groupNameAndMaxSeqDTO = bookGroupClassifyBiz.getGroupNameAndMaxSeq(classifyId);
log.info("[重新分配一个群] : groupNameAndMaxSeqDTO:{}", groupNameAndMaxSeqDTO); log.info("[重新分配一个群] : groupNameAndMaxSeqDTO:{}", groupNameAndMaxSeqDTO);
...@@ -572,8 +635,10 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz { ...@@ -572,8 +635,10 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
String ip = Optional.ofNullable(groupVersion.get(wechatGroupId)).orElse(new BookWxQrcodeDTO()).getWechatGroupIp(); String ip = Optional.ofNullable(groupVersion.get(wechatGroupId)).orElse(new BookWxQrcodeDTO()).getWechatGroupIp();
SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), wechatGroupId, groupName, ip); SendWeixinRequestTools.changeGroupName(oneQrcode.getRobotWxId(), wechatGroupId, groupName, ip);
} }
return oneQrcode.getQrcodeUrl();
} }
} }
return StringUtil.EMPTY;
} }
@ParamLog("将二维码改为已满群") @ParamLog("将二维码改为已满群")
......
...@@ -241,4 +241,6 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> { ...@@ -241,4 +241,6 @@ public interface GroupQrcodeDao extends BaseDao<GroupQrcode> {
List<ClassifyQrcodeVO> getQrcodeByClassify(Long classifyId); List<ClassifyQrcodeVO> getQrcodeByClassify(Long classifyId);
List<ClassifyQrcodeVO> getQrcodeByClassifyId(Long classifyId);
} }
...@@ -204,6 +204,10 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou ...@@ -204,6 +204,10 @@ public class GroupQrcodeDaoImpl extends BaseDaoImpl<GroupQrcode> implements Grou
return this.getSqlSession().selectList(this.getStatement("getQrcodeByClassify"), classifyId); return this.getSqlSession().selectList(this.getStatement("getQrcodeByClassify"), classifyId);
} }
public List<ClassifyQrcodeVO> getQrcodeByClassifyId(Long classifyId) {
return this.getSqlSession().selectList(this.getStatement("getQrcodeByClassifyId"), classifyId);
}
@Override @Override
public List<Long> getIdsByBookId(Long bookId) { public List<Long> getIdsByBookId(Long bookId) {
return getSessionTemplate().selectList(getStatement("getIdsByBookId"), bookId); return getSessionTemplate().selectList(getStatement("getIdsByBookId"), bookId);
......
...@@ -67,6 +67,12 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade { ...@@ -67,6 +67,12 @@ public class GroupQrcodeFacadeImpl implements GroupQrcodeFacade {
return new ResponseDto<>(); return new ResponseDto<>();
} }
@GetMapping("getChangeGroupQrCode")
public ResponseDto<String> getChangeGroupQrCode(@RequestParam("classifyId") Long classifyId) {
String qrCodeUrl = groupQrcodeBiz.getChangeGroupQrCode(classifyId);
return new ResponseDto<>(qrCodeUrl);
}
@Override @Override
@PostMapping("listQrcodeByClassify") @PostMapping("listQrcodeByClassify")
public ResponseDto<PageBeanNew> listQrcodeByClassify(@RequestHeader("token") String token, @RequestBody ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO) { public ResponseDto<PageBeanNew> listQrcodeByClassify(@RequestHeader("token") String token, @RequestBody ListQrcodeByClassifyParamVO listQrcodeByClassifyParamVO) {
......
...@@ -46,6 +46,9 @@ public class ClassifyQrcodeVO implements Serializable { ...@@ -46,6 +46,9 @@ public class ClassifyQrcodeVO implements Serializable {
@ApiModelProperty("关键词识别次数") @ApiModelProperty("关键词识别次数")
private Integer keywordCount; private Integer keywordCount;
@ApiModelProperty(value = "二维码状态", hidden = true)
private Integer qrcodeState;
@JsonFormat( @JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss", pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8" timezone = "GMT+8"
...@@ -145,6 +148,14 @@ public class ClassifyQrcodeVO implements Serializable { ...@@ -145,6 +148,14 @@ public class ClassifyQrcodeVO implements Serializable {
this.createdTime = createdTime; this.createdTime = createdTime;
} }
public Integer getQrcodeState() {
return qrcodeState;
}
public void setQrcodeState(Integer qrcodeState) {
this.qrcodeState = qrcodeState;
}
@Override @Override
public String toString() { public String toString() {
return "ClassifyQrcodeVO{" + return "ClassifyQrcodeVO{" +
...@@ -158,6 +169,7 @@ public class ClassifyQrcodeVO implements Serializable { ...@@ -158,6 +169,7 @@ public class ClassifyQrcodeVO implements Serializable {
", weixinQrcodeId=" + weixinQrcodeId + ", weixinQrcodeId=" + weixinQrcodeId +
", weixinGroupId='" + weixinGroupId + '\'' + ", weixinGroupId='" + weixinGroupId + '\'' +
", keywordCount=" + keywordCount + ", keywordCount=" + keywordCount +
", qrcodeState=" + qrcodeState +
", createdTime=" + createdTime + ", createdTime=" + createdTime +
'}'; '}';
} }
......
...@@ -642,4 +642,10 @@ ...@@ -642,4 +642,10 @@
from book_group_qrcode where classify_id = #{classifyId} from book_group_qrcode where classify_id = #{classifyId}
</select> </select>
<select id="getQrcodeByClassifyId" parameterType="long" resultType="com.pcloud.book.group.vo.ClassifyQrcodeVO">
select id, classify_id as classifyId, group_name as groupName, user_number as userNumber, weixin_qrcode_id as weixinQrcodeId,
weixin_group_id weixinGroupId, create_time as createdTime, qrcode_state as qrcodeState, qrcode_url as qrcodeUrl
from book_group_qrcode where classify_id = #{classifyId} and is_delete = 0
</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