Commit 10bf6083 by 阮思源

Merge branch 'feat-1002308-2' into 'master'

小号关键词关联

See merge request rays/pcloud-book!368
parents bcf7dd9b 3f819a7a
......@@ -64,10 +64,12 @@ import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordClassifyDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordReplyDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudNotKeywordDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao;
import com.pcloud.book.pcloudkeyword.entity.PcloudKeyword;
import com.pcloud.book.pcloudkeyword.entity.PcloudKeywordClassify;
import com.pcloud.book.pcloudkeyword.entity.PcloudKeywordReply;
import com.pcloud.book.pcloudkeyword.entity.PcloudNotKeyword;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.enums.KeywordTypeEnum;
import com.pcloud.book.pcloudkeyword.enums.MethodEnum;
import com.pcloud.book.pcloudkeyword.enums.RelevanceTypeEnum;
......@@ -208,6 +210,8 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
private PcloudNotKeywordDao pcloudNotKeywordDao;
@Autowired
private PcloudKeywordClassifyDao pcloudKeywordClassifyDao;
@Autowired
private PcloudRobotDao pcloudRobotDao;
/**
* 字符串切割长度
*/
......@@ -540,19 +544,12 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
this.sendKeywordMessageToGroup(sendTextDTO);
return;
}
//TODO 判断是否是平台端配置的小号,因为还没有上,先写死,关闭
Boolean isPcloudRobot=false;
if ("test".equalsIgnoreCase(envStr) && "wxid_zus32xb5ukjn22".equals(sendTextDTO.getWxId())){
isPcloudRobot = true;
}
if ("uat".equalsIgnoreCase(envStr) && "wxid_fadtd2q58njx12".equals(sendTextDTO.getWxId())){
isPcloudRobot = true;
}
if (isPcloudRobot){
sendPcloudKeyword(sendTextDTO);
//判断是否是平台端配置的小号,如果是,走平台端
PcloudRobot pcloudRobot = pcloudRobotDao.getByWxId(sendTextDTO.getWxId());
if (pcloudRobot!=null){
sendPcloudKeyword(sendTextDTO,pcloudRobot);
return;
}
if (SendMessageTypeEnum.SELF.getCode().equals(sendTextDTO.getCode())) {
// 小睿对话索要出版社信息
boolean _continue = replySelfKeywordTemplate(sendTextDTO);
......@@ -652,15 +649,15 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
@ParamLog("发送平台端小号的")
private void sendPcloudKeyword(SendTextDTO sendTextDTO) {
private void sendPcloudKeyword(SendTextDTO sendTextDTO,PcloudRobot pcloudRobot) {
String userWxId = sendTextDTO.getWechatUserId();
String ip = sendTextDTO.getIp();
Integer code = sendTextDTO.getCode();
String robotId = sendTextDTO.getWxId();
//TODO 获取小号对应的分类Id,个人号配置该没有,先写,后面改
Long pcloudClassifyId=1L;
Long pcloudClassifyId=pcloudRobot.getKeywordClassifyId();
PcloudKeywordClassify pcloudKeywordClassify = pcloudKeywordClassifyDao.getById(pcloudClassifyId);
if (null == pcloudKeywordClassify || !pcloudKeywordClassify.getOpen()){//分类未启用
log.info("查询小号关键词分类为空或未启用sendTextDTO="+sendTextDTO.toString()+"pcloudRobot="+pcloudRobot.toString());
return;
}
String content=sendTextDTO.getTextContent();
......@@ -673,6 +670,7 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
}
if (pcloudKeyword!=null){
//走关键词
log.info("查询平台端关键词"+pcloudKeyword.toString());
List<PcloudKeywordReply> replies = pcloudKeywordReplyDao.getByRelevance(RelevanceTypeEnum.KEYWORD.value, pcloudKeyword.getId());
if (MethodEnum.RANDOM.value.equals(pcloudKeyword.getMethod())){
int a= (int) Math.floor(Math.random()*replies.size());
......
......@@ -10,6 +10,8 @@ public interface PcloudRobotBiz {
void createPcloudRobot(PcloudRobot pcloudRobot);
void updatePcloudRobot(PcloudRobot pcloudRobot);
PageBeanNew<PcloudRobot> getPcloudRobotList(String nickName, Integer currentPage, Integer numPerPage);
void batchUpdatePcloudRobotWelcome(List<PcloudRobotWelcome> robotWelcomeList);
......@@ -18,4 +20,5 @@ public interface PcloudRobotBiz {
void sendWelcomeReply(String robotWxId, String userWxId, String ip);
void relateKeywordClassify(Long pcloudRobotId, Long keywordClassifyId);
}
......@@ -4,8 +4,10 @@ import com.pcloud.book.base.exception.BookBizException;
import com.pcloud.book.consumer.content.ResourceConsr;
import com.pcloud.book.keywords.enums.ReplyTypeEnum;
import com.pcloud.book.pcloudkeyword.biz.PcloudRobotBiz;
import com.pcloud.book.pcloudkeyword.dao.PcloudKeywordClassifyDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotDao;
import com.pcloud.book.pcloudkeyword.dao.PcloudRobotWelcomeDao;
import com.pcloud.book.pcloudkeyword.entity.PcloudKeywordClassify;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobot;
import com.pcloud.book.pcloudkeyword.entity.PcloudRobotWelcome;
import com.pcloud.book.pcloudkeyword.enums.WelcomeReplyTypeEnum;
......@@ -32,13 +34,28 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
private PcloudRobotWelcomeDao pcloudRobotWelcomeDao;
@Autowired
private ResourceConsr resourceConsr;
@Autowired
private PcloudKeywordClassifyDao pcloudKeywordClassifyDao;
@Override
@Transactional(rollbackFor = Exception.class)
public void createPcloudRobot(PcloudRobot pcloudRobot) {
pcloudRobotDao.insert(pcloudRobot);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updatePcloudRobot(PcloudRobot pcloudRobot) {
pcloudRobotDao.update(pcloudRobot);
List<PcloudRobotWelcome> robotWelcomeList = pcloudRobot.getRobotWelcomeList();
pcloudRobotWelcomeDao.deleteByPcloudRobotId(pcloudRobot.getId());
if (ListUtils.isEmpty(robotWelcomeList)){
return;
}
pcloudRobotWelcomeDao.batchInsert(robotWelcomeList);
}
@Override
@ParamLog
public PageBeanNew<PcloudRobot> getPcloudRobotList(String nickName, Integer currentPage, Integer numPerPage) {
if (currentPage == null || currentPage < 0 || numPerPage == null || numPerPage <= 0) {
......@@ -51,6 +68,10 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
List<PcloudRobotWelcome> robotWelcomeList = pcloudRobotWelcomeDao.getRobotWelcomeListByPcloudRobotId(pcloudRobot.getId());
fillRobotWelcome(robotWelcomeList);
pcloudRobot.setRobotWelcomeList(robotWelcomeList);
if(pcloudRobot.getKeywordClassifyId() != null) {
PcloudKeywordClassify pcloudKeywordClassify = pcloudKeywordClassifyDao.getById(pcloudRobot.getKeywordClassifyId());
pcloudRobot.setKeywordClassifyName(pcloudKeywordClassify == null ? "" : pcloudKeywordClassify.getKeywordClassify());
}
}
return pageBeanNew;
}
......@@ -119,6 +140,15 @@ public class PcloudRobotBizImpl implements PcloudRobotBiz {
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void relateKeywordClassify(Long pcloudRobotId, Long keywordClassifyId) {
PcloudRobot pcloudRobot = new PcloudRobot();
pcloudRobot.setId(pcloudRobotId);
pcloudRobot.setKeywordClassifyId(keywordClassifyId);
pcloudRobotDao.update(pcloudRobot);
}
@ParamLog("填充欢迎语回复")
private void fillRobotWelcome(List<PcloudRobotWelcome> robotWelcomeList) {
if(ListUtils.isEmpty(robotWelcomeList)){
......
......@@ -5,4 +5,6 @@ import com.pcloud.common.core.dao.BaseDao;
public interface PcloudRobotDao extends BaseDao<PcloudRobot> {
PcloudRobot getByWxId(String wxId);
}
......@@ -8,4 +8,8 @@ import org.springframework.stereotype.Component;
@Component("pcloudRobotDao")
public class PcloudRobotDaoImpl extends BaseDaoImpl<PcloudRobot> implements PcloudRobotDao {
@Override
public PcloudRobot getByWxId(String wxId) {
return super.getSqlSession().selectOne(getStatement("getByWxId"), wxId);
}
}
......@@ -23,6 +23,15 @@ public class PcloudRobot extends BaseEntity {
@ApiModelProperty("二维码url")
private String qrcodeUrl;
@ApiModelProperty("个人号类型")
private Integer robotType;
@ApiModelProperty("关键词分类ID")
private Long keywordClassifyId;
@ApiModelProperty("关键词分类名称")
private String keywordClassifyName;
@ApiModelProperty("状态:1 在线 2 离线")
private Integer state;
......
......@@ -34,6 +34,17 @@ public class PcloudRobotFacade {
return new ResponseDto<>();
}
@ApiOperation("修改全平台机器人")
@PostMapping("/updatePcloudRobot")
ResponseDto<?> updatePcloudRobot(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestBody @ApiParam("全平台个人号") PcloudRobot pcloudRobot
) throws BizException, PermissionException {
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
pcloudRobotBiz.updatePcloudRobot(pcloudRobot);
return new ResponseDto<>();
}
@ApiOperation("获取全平台个人号列表")
@GetMapping("/getPcloudRobotList")
ResponseDto<?> getPcloudRobotList(
......@@ -68,5 +79,16 @@ public class PcloudRobotFacade {
return new ResponseDto<>(pcloudRobotBiz.getPcloudRobot(id));
}
@ApiOperation("小号关联关键词分类")
@GetMapping("/relateKeywordClassify")
ResponseDto<?> relateKeywordClassify(
@RequestHeader("token") @ApiParam("token信息") String token,
@RequestParam(value = "pcloudRobotId", required = false) @ApiParam("平台小号ID") Long pcloudRobotId,
@RequestParam(value = "keywordClassifyId", required = false) @ApiParam("关键分类ID") Long keywordClassifyId
) throws BizException, PermissionException{
SessionUtil.getVlaue(token, SessionUtil.PARTY_ID);
pcloudRobotBiz.relateKeywordClassify(pcloudRobotId, keywordClassifyId);
return new ResponseDto<>();
}
}
......@@ -7,11 +7,13 @@
<result column="nick_name" property="nickName" jdbcType="VARCHAR" />
<result column="head" property="head" jdbcType="VARCHAR" />
<result column="qrcode_url" property="qrcodeUrl" jdbcType="VARCHAR" />
<result column="robot_type" jdbcType="INTEGER" property="robotType" />
<result column="keyword_classify_id" jdbcType="BIGINT" property="keywordClassifyId" />
<result column="state" property="state" jdbcType="INTEGER" />
</resultMap>
<sql id="Base_Column_List" >
id, wx_id, nick_name, head, qrcode_url, state
id, wx_id, nick_name, head, qrcode_url, robot_type, keyword_classify_id, state
</sql>
<insert id="insert" parameterType="PcloudRobot" useGeneratedKeys="true" keyProperty="id">
......@@ -20,6 +22,8 @@
nick_name,
head,
qrcode_url,
robot_type,
keyword_classify_id,
state
)
values (
......@@ -27,10 +31,40 @@
#{nickName,jdbcType=VARCHAR},
#{head,jdbcType=VARCHAR},
#{qrcodeUrl,jdbcType=VARCHAR},
#{robotType,jdbcType=INTEGER},
#{keywordClassifyId,jdbcType=BIGINT},
#{state,jdbcType=INTEGER}
)
</insert>
<update id="update" parameterType="PcloudRobot">
update pcloud_robot
<set>
<if test="wxId != null">
wx_id = #{wxId,jdbcType=VARCHAR},
</if>
<if test="nickName != null">
nick_name = #{nickName,jdbcType=VARCHAR},
</if>
<if test="head != null">
head = #{head,jdbcType=VARCHAR},
</if>
<if test="qrcodeUrl != null">
qrcode_url = #{qrcodeUrl,jdbcType=VARCHAR},
</if>
<if test="robotType != null">
robot_type = #{robotType,jdbcType=INTEGER},
</if>
<if test="keywordClassifyId != null">
keyword_classify_id = #{keywordClassifyId,jdbcType=BIGINT},
</if>
<if test="state != null">
state = #{state,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateState" parameterType="PcloudRobot">
update pcloud_robot set
state = #{state}
......@@ -76,4 +110,10 @@
limit 1
</select>
<select id="getByWxId" parameterType="string" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/>
from pcloud_robot where wx_id = #{wxId}
limit 1
</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