Commit 4c80928b by 郑永强

Merge branches 'master' and 'zhengyongqiang' of…

Merge branches 'master' and 'zhengyongqiang' of http://begitlab.chubanyun.me/rays/pcloud-book into zhengyongqiang
parents 98849a92 291d1d0c
package com.pcloud.book.group.dto;
import java.io.Serializable;
/**
* @author 戴兴
* @description TODO
* @date 2019/8/7 17:13
*/
public class PersonalQrcodeDTO implements Serializable {
private String newQrcodeUrl;
private String oldQrcodeUrl;
public String getNewQrcodeUrl() {
return newQrcodeUrl;
}
public void setNewQrcodeUrl(String newQrcodeUrl) {
this.newQrcodeUrl = newQrcodeUrl;
}
public String getOldQrcodeUrl() {
return oldQrcodeUrl;
}
public void setOldQrcodeUrl(String oldQrcodeUrl) {
this.oldQrcodeUrl = oldQrcodeUrl;
}
@Override
public String toString() {
return "PersonalQrcodeDTO{" +
"newQrcodeUrl='" + newQrcodeUrl + '\'' +
", oldQrcodeUrl='" + oldQrcodeUrl + '\'' +
'}';
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.pcloud.book.group.service;
import java.util.List;
import java.util.Map;
import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.GroupCipherDTO;
import com.pcloud.book.group.dto.GroupUseDTO;
import org.springframework.cloud.netflix.feign.FeignClient;
......@@ -51,6 +52,10 @@ public interface BookGroupService {
@RequestMapping(value = "getBaseInfoBySceneId",method = RequestMethod.GET)
ResponseEntity<ResponseDto<BookGroupDTO>> getBaseInfoBySceneId(@RequestParam("sceneId")Long sceneId) throws BizException;
@ApiOperation("更新个人二维码")
@RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST)
void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException;
@ApiOperation("获取暗号状态")
@GetMapping("/getCipherState")
ResponseEntity<ResponseDto<Integer>> getCipherState(@RequestParam("cipher")String cipher) throws BizException;
......@@ -66,4 +71,5 @@ public interface BookGroupService {
@ApiOperation("获取暗号基本信息")
@GetMapping("/getJoinGroupCipher")
ResponseEntity<ResponseDto<GroupCipherDTO>> getJoinGroupCipher(@RequestParam("cipher")String cipher) throws BizException;
}
......@@ -207,6 +207,13 @@ public interface BookGroupBiz {
BookGroupDTO getBaseInfoBySceneId(Long sceneId);
/**
* @description 更新个人二维码
* @author 戴兴
* @date 2019/8/7 16:30
*/
void updatePersonQrcode(PersonalQrcodeDTO personalQrcodeDTO);
/**
* @Author:lili
* @Desr:是否是特殊的出版社
* @Date:2019/5/28 11:14
......
......@@ -22,7 +22,7 @@ public interface WeixinQrcodeBiz {
* @Desr:从二维码获取一个二维码
* @Date:2019/4/17 16:17
*/
WeixinQrcodeDTO getOneQrcode();
WeixinQrcodeDTO getOneQrcode(Integer generation);
/**
* @Author:lili
......
......@@ -34,12 +34,7 @@ import com.pcloud.book.group.dao.AppClickRecordDao;
import com.pcloud.book.group.dao.AppTouchRecordDao;
import com.pcloud.book.group.dao.BookGroupClassifyDao;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.AppStatisticsDTO;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.BookGroupStatisticDTO;
import com.pcloud.book.group.dto.ClassifyKeywordDTO;
import com.pcloud.book.group.dto.GroupStoreMyPayDto;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.book.group.vo.*;
import com.pcloud.book.keywords.dao.BookKeywordDao;
......@@ -650,6 +645,15 @@ public class BookGroupBizImpl implements BookGroupBiz {
}
@Override
public void updatePersonQrcode(PersonalQrcodeDTO personalQrcodeDTO) {
if (personalQrcodeDTO == null || personalQrcodeDTO.getNewQrcodeUrl() == null ||
personalQrcodeDTO.getOldQrcodeUrl() == null){
throw new BookBizException(BookBizException.ERROR,"参数缺失");
}
bookGroupDao.updatePersonQrcode(personalQrcodeDTO);
}
@Override
@ParamLog("是否是特殊的出版社")
public Boolean isSpecialAgent(Long agentId) {
return bookGroupDao.isSpecialAgent(agentId);
......
......@@ -193,7 +193,11 @@ public class BookGroupClassifyBizImpl implements BookGroupClassifyBiz {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "群二维码数量不足,您可以明天再创建群。");
}
}
WeixinQrcodeDTO oneQrcode = weixinQrcodeBiz.getOneQrcode();
Integer generation = null;
if (new Integer(2).equals(qrcodeNameAndProId.getJoinGroupType())) {
generation = 3;
}
WeixinQrcodeDTO oneQrcode = weixinQrcodeBiz.getOneQrcode(generation);
if (oneQrcode == null) {
throw new BookBizException(BookBizException.PARAM_IS_NULL, "系统二维码数量不足,请联系客服人员补充二维码数量!");
}
......
......@@ -9,22 +9,10 @@ import com.pcloud.book.consumer.label.LabelConsr;
import com.pcloud.book.consumer.reader.ReaderConsr;
import com.pcloud.book.consumer.user.AdviserConsr;
import com.pcloud.book.consumer.wechatgroup.WechatGroupConsr;
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.WeixinQrcodeBiz;
import com.pcloud.book.group.biz.*;
import com.pcloud.book.group.constants.BookBusinessConstants;
import com.pcloud.book.group.dao.GroupQrcodeDao;
import com.pcloud.book.group.dto.AutoUpdateGroupNumDTO;
import com.pcloud.book.group.dto.BookWxQrcodeDTO;
import com.pcloud.book.group.dto.ChangeGroupNameDTO;
import com.pcloud.book.group.dto.GroupAndUserNumberDTO;
import com.pcloud.book.group.dto.GroupNameAndMaxSeqDTO;
import com.pcloud.book.group.dto.GroupQrcodeDTO;
import com.pcloud.book.group.dto.GroupQrcodeInfo4Advertising;
import com.pcloud.book.group.dto.GroupQrcodeInfoDTO;
import com.pcloud.book.group.dto.PushAddUserMessageDTO;
import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.dto.*;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.enums.QrcodeStatusEnum;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
......@@ -106,6 +94,8 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
private AdvertisingSpaceBiz advertisingSpaceBiz;
@Autowired
private LabelConsr labelConsr;
@Autowired
private BookGroupBiz bookGroupBiz;
/**
......@@ -483,7 +473,15 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
@ParamLog("重新分配一个群")
@Transactional(rollbackFor = Exception.class)
public void addWechatGroup(Long classifyId, Long groupQrcodeId) {
WeixinQrcodeDTO oneQrcode = weixinQrcodeBiz.getOneQrcode();
Integer generation = null;
ClassifyVO classifyVOOne = bookGroupClassifyBiz.getClassify(classifyId);
if (classifyVOOne != null && classifyVOOne.getBookGroupId() != null) {
QrcodeNameAndProIdDTO qrcodeNameAndProId = bookGroupBiz.getQrcodeNameAndProId(classifyVOOne.getBookGroupId());
if (qrcodeNameAndProId != null && new Integer(2).equals(qrcodeNameAndProId.getJoinGroupType())) {
generation = 3;
}
}
WeixinQrcodeDTO oneQrcode = weixinQrcodeBiz.getOneQrcode(generation);
log.info("[重新分配一个群] : oneQrcode:{}", oneQrcode);
if (oneQrcode != null) {
//将二维码改为已满群状态
......
......@@ -84,8 +84,8 @@ public class WeixinQrcodeBizImpl implements WeixinQrcodeBiz {
@Override
@ParamLog("从二维码库获取一个二维码")
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public WeixinQrcodeDTO getOneQrcode() {
WeixinQrcodeDTO qrcodeVO = weixinQrcodeDao.getOneWechatGroup();
public WeixinQrcodeDTO getOneQrcode(Integer generation) {
WeixinQrcodeDTO qrcodeVO = weixinQrcodeDao.getOneWechatGroup(generation);
if (qrcodeVO == null) {
return null;
}
......
......@@ -4,6 +4,7 @@ import java.util.List;
import java.util.Map;
import com.pcloud.book.group.dto.BookGroupDTO;
import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.QrcodeNameAndProIdDTO;
import com.pcloud.book.group.entity.BookGroup;
import com.pcloud.common.core.dao.BaseDao;
......@@ -120,6 +121,13 @@ public interface BookGroupDao extends BaseDao<BookGroup> {
Boolean isSpecialAgent(Long agentId);
/**
* @description 更新个人二维码
* @author 戴兴
* @date 2019/8/7 16:49
*/
void updatePersonQrcode(PersonalQrcodeDTO personalQrcodeDTO);
/**
* 获取社群书基本信息(包括书籍封面isbn号)
* @param paramMap
* @return
......
......@@ -24,7 +24,7 @@ public interface WeixinQrcodeDao extends BaseDao<WeixinQrcode> {
* @Desr:获取一个微信群
* @Date:2019/3/12 18:04
*/
WeixinQrcodeDTO getOneWechatGroup();
WeixinQrcodeDTO getOneWechatGroup(Integer generation);
/**
* @Author:lili
......
......@@ -3,6 +3,8 @@ package com.pcloud.book.group.dao.impl;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import org.springframework.stereotype.Repository;
import com.pcloud.book.group.dao.BookGroupDao;
import com.pcloud.book.group.dto.BookGroupDTO;
......@@ -124,6 +126,14 @@ public class BookGroupDaoImpl extends BaseDaoImpl<BookGroup> implements BookGrou
}
@Override
public void updatePersonQrcode(PersonalQrcodeDTO personalQrcodeDTO) {
Map<String,Object> map = new HashMap<>();
map.put("newQrcodeUrl",personalQrcodeDTO.getNewQrcodeUrl());
map.put("oldQrcodeUrl",personalQrcodeDTO.getOldQrcodeUrl());
this.getSqlSession().update(this.getStatement("updatePersonQrcode"), map);
}
@Override
public List<BookGroupDTO> getBookInfoByIdsWithBookClockInfoId(Map<String,Object> paramMap) {
return this.getSqlSession().selectList(this.getStatement("getBookInfoByIdsWithBookClockInfoId"), paramMap);
}
......
......@@ -25,8 +25,10 @@ import java.util.Map;
@Component("WeixinQrcodeDao")
public class WeixinQrcodeDaoImpl extends BaseDaoImpl<WeixinQrcode> implements WeixinQrcodeDao {
@Override
public WeixinQrcodeDTO getOneWechatGroup() {
return this.getSqlSession().selectOne(this.getStatement("getOneWechatGroup"));
public WeixinQrcodeDTO getOneWechatGroup(Integer generation) {
Map<String, Object> paramMap = new HashMap();
paramMap.put("generation", generation);
return this.getSqlSession().selectOne(this.getStatement("getOneWechatGroup"),paramMap);
}
@Override
......
......@@ -18,6 +18,11 @@ public class QrcodeNameAndProIdDTO {
*/
private Long productId;
/**
* 进群方式:1群二维码,2客服机器人
*/
private Integer joinGroupType;
public Long getBookGroupId() {
return bookGroupId;
}
......@@ -42,12 +47,21 @@ public class QrcodeNameAndProIdDTO {
this.productId = productId;
}
public Integer getJoinGroupType() {
return joinGroupType;
}
public void setJoinGroupType(Integer joinGroupType) {
this.joinGroupType = joinGroupType;
}
@Override
public String toString() {
return "QrcodeNameAndProIdDTO{" +
"bookGroupId=" + bookGroupId +
", groupQrcodeName='" + groupQrcodeName + '\'' +
", productId=" + productId +
", joinGroupType=" + joinGroupType +
'}';
}
}
......@@ -3,6 +3,8 @@ package com.pcloud.book.group.service.impl;
import java.util.List;
import java.util.Map;
import com.pcloud.book.group.dto.PersonalQrcodeDTO;
import com.pcloud.book.group.dto.GroupCipherDTO;
import com.pcloud.book.group.dto.GroupUseDTO;
import io.swagger.annotations.ApiOperation;
......@@ -85,6 +87,13 @@ public class BookGroupServiceImpl implements BookGroupService {
return ResponseHandleUtil.toResponse(bookGroupBiz.getBaseInfoBySceneId(sceneId));
}
@Override
@RequestMapping(value = "updatePersonQrcode",method = RequestMethod.POST)
public void updatePersonQrcode(@RequestBody PersonalQrcodeDTO personalQrcodeDTO) throws BizException {
bookGroupBiz.updatePersonQrcode(personalQrcodeDTO);
}
/**
* 获取暗号状态
*/
......
......@@ -88,7 +88,7 @@ public class WeixinQrcodeServiceImpl implements WeixinQrcodeService {
@Override
@GetMapping("getOneQrcode")
public ResponseEntity<ResponseDto<WeixinQrcodeDTO>> getOneQrcode() {
return ResponseHandleUtil.toResponse(weixinQrcodeBiz.getOneQrcode());
return ResponseHandleUtil.toResponse(weixinQrcodeBiz.getOneQrcode(null));
}
@Override
......
......@@ -128,7 +128,8 @@ public class BookGuideBizImpl implements BookGuideBiz {
if (agreeAddUserDTO.getFirst() != null && agreeAddUserDTO.getFirst()) {
// 如果是第一次就只发欢迎文案
SendTextMessageVO vo = new SendTextMessageVO();
vo.setContent("你好,我是本书智能小助手,请回复你的进群暗号,获取本书资源服务,以及入群链接如果忘了进群暗号,请重新扫描书上的二维码,点击入群即可获取");
// vo.setContent("你好,我是本书智能小助手,请回复你的进群暗号,获取本书资源服务,以及入群链接如果忘了进群暗号,请重新扫描书上的二维码,点击入群即可获取");
vo.setContent("你好,我是本书智能小助手。请输入关键词获取本书相应的资源服务。");
vo.setCode(SendMessageTypeEnum.SELF.getCode());
vo.setWxId(agreeAddUserDTO.getRobotWxId());
vo.setAltId(agreeAddUserDTO.getRobotWxId());
......@@ -136,15 +137,14 @@ public class BookGuideBizImpl implements BookGuideBiz {
vo.setIp(agreeAddUserDTO.getIp());
log.info("[同意加好友发送欢迎语] : {}", vo);
WxGroupSDK.sendTextMessage(vo);
} else {
// 如果不是第一次就发关键词
// 根据暗号获取分类id和bookGroupId推送关键词欢迎语
List<KeywordDTO> keywords = bookKeywordBiz.listFiveKeyword(dto.getClassifyId(), dto.getBookGroupId());
//发主打资源
sendMainKeyword(keywords,agreeAddUserDTO,dto,wxGroupId);
//发关键词列表
SendWeixinRequestTools.sendKeywordsInfo(keywords, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId(), agreeAddUserDTO.getIp());
}
// 如果不是第一次就发关键词
// 根据暗号获取分类id和bookGroupId推送关键词欢迎语
List<KeywordDTO> keywords = bookKeywordBiz.listFiveKeyword(dto.getClassifyId(), dto.getBookGroupId());
//发主打资源
sendMainKeyword(keywords,agreeAddUserDTO,dto,wxGroupId);
//发关键词列表
SendWeixinRequestTools.sendKeywordsInfo(keywords, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getUserWxId(), agreeAddUserDTO.getIp());
// 拉群
final Integer peopleCounts = WxGroupSDK.getPeopleCounts(wxGroupId, agreeAddUserDTO.getRobotWxId(), agreeAddUserDTO.getIp());
// 邀请好友进群有次数限制,目前测试为每天只能拉30-40人就操作频繁,所以在此加判断,超过30人或者群人数超过30人就发送邀请链接
......@@ -154,7 +154,7 @@ public class BookGuideBizImpl implements BookGuideBiz {
log.info("[同意加好友发送欢迎语] 拉群 没有找到群 bookGroupClassifyBiz.getGroupQrcode4ClassifyWechat JoinGroupCipherDTO :{}", dto);
return;
}
// 生产环境限制30,其它5和10
// 生产环境限制30,其它5和10,全部使用群链接
final boolean isPro = "pro".equalsIgnoreCase(BookProps.getSystemEnv());
if ((!StringUtil.isBlank(num) && Integer.parseInt(num) >= (isPro ? 30 : 5)) || peopleCounts >= (isPro ? 30 : 10)) {
SendGroupInviteVO sendGroupInviteVO = new SendGroupInviteVO();
......
......@@ -190,7 +190,7 @@ public class RiddleRecordBizImpl implements RiddleRecordBiz {
public void sendWeixinTextMessage(String wxId, String wxGroupId, String content, String ip, String wxUserId) {
SendTextMessageVO sendTextMessageVO = new SendTextMessageVO();
sendTextMessageVO.setAltId(wxId);
sendTextMessageVO.setGroupId(wxGroupId);
sendTextMessageVO.setWxGroupId(wxGroupId);
if (!StringUtil.isEmpty(wxUserId)) {
sendTextMessageVO.setAtId(wxUserId);
GroupUserDTO groupUser = wechatGroupConsr.getWxUserInfoByWxUserId(wxUserId);
......
......@@ -237,6 +237,7 @@
<select id="getQrcodeNameAndProId" resultType="QrcodeNameAndProIdDTO" parameterType="java.lang.Long">
select
group_qrcode_name groupQrcodeName,
join_group_type joinGroupType,
product_id productId
from book_group
where id = #{_parameter,jdbcType=BIGINT}
......@@ -299,6 +300,10 @@
where agent_id = #{_parameter}
</select>
<update id="updatePersonQrcode" parameterType="map">
update book_group set personal_qrcode_url = #{newQrcodeUrl} where personal_qrcode_url = #{oldQrcodeUrl}
</update>
<!--获取社群码基本信息(包括书籍信息,及BookClockInfoId)-->
<select id="getBookInfoByIdsWithBookClockInfoId" parameterType="map" resultMap="BookGroupDTO">
SELECT
......
......@@ -32,10 +32,16 @@
VALUES (#{qrcodeUrl,jdbcType=VARCHAR},#{weixinGroupId,jdbcType=VARCHAR}, #{robotId,jdbcType=BIGINT},#{robotWxId,jdbcType=VARCHAR},#{updateState},#{createUser}, NOW(),now(), #{generation})
</insert>
<select id="getOneWechatGroup" resultType = "WeixinQrcodeDTO" >
<select id="getOneWechatGroup" resultType = "WeixinQrcodeDTO" parameterType="map" >
SELECT id, qrcode_url qrcodeUrl, weixin_group_id weixinGroupId, robot_id robotId, robot_wx_id robotWxId
FROM weixin_qrcode
WHERE use_state = 0 AND update_state in (0,1,3) and weixin_group_id != ''
<if test="generation!=null">
and generation=#{generation}
</if>
<if test="generation==null">
and generation in (1,2)
</if>
LIMIT 1
</select>
......
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