添加好友代码
parent
8bf63db6cb
commit
ef95d08200
@ -0,0 +1,12 @@
|
||||
package com.baiye.constant;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/12
|
||||
*/
|
||||
public class GroupConstant {
|
||||
/**
|
||||
* 群标识
|
||||
*/
|
||||
public static final String CHAT_ROOM_FLAG = "@chatroom";
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
package com.baiye.modules.scrm.controller;
|
||||
|
||||
import com.baiye.modules.scrm.service.WeChatLabelService;
|
||||
import com.baiye.result.R;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/2
|
||||
*/
|
||||
|
||||
@Tag(name = "微信好友标签")
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping(value = "/wechat/label")
|
||||
@AllArgsConstructor
|
||||
public class WeChatLabelController {
|
||||
|
||||
private final WeChatLabelService weChatLabelService;
|
||||
|
||||
|
||||
@PostMapping("/find")
|
||||
@Operation(summary = "查询标签")
|
||||
public R<Map<String, Object>> getClueRecordPage(@RequestBody List<String> wxIds) {
|
||||
return R.ok(weChatLabelService.findPersonByWeChatId(wxIds));
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
package com.baiye.modules.scrm.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/12
|
||||
*/
|
||||
@Data
|
||||
public class ContractDTO implements Serializable {
|
||||
private Integer verifyFlag;
|
||||
|
||||
private Integer msgType;
|
||||
|
||||
private Integer chatroomVersion;
|
||||
|
||||
private String city;
|
||||
|
||||
private String nickName;
|
||||
|
||||
private Integer sex;
|
||||
|
||||
private Integer contactType;
|
||||
|
||||
private String remark;
|
||||
|
||||
private Integer type;
|
||||
|
||||
private String userName;
|
||||
|
||||
private String smallHeadImgUrl;
|
||||
|
||||
private String province;
|
||||
|
||||
private String alias;
|
||||
|
||||
private String bigHeadImgUrl;
|
||||
|
||||
private String chatRoomOwner;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.baiye.modules.scrm.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/12
|
||||
*/
|
||||
@Data
|
||||
public class OtherInformationDTO implements Serializable {
|
||||
|
||||
private String pit;
|
||||
|
||||
private Integer msgId;
|
||||
|
||||
private Boolean manual;
|
||||
|
||||
private String content;
|
||||
|
||||
private String msgKey;
|
||||
|
||||
private Integer status;
|
||||
|
||||
private String mainWxId;
|
||||
|
||||
private Integer msgType;
|
||||
|
||||
private Integer newMsgId;
|
||||
|
||||
private Integer imgStatus;
|
||||
|
||||
private Integer delayMill;
|
||||
|
||||
private String toUserName;
|
||||
|
||||
private String fromUserName;
|
||||
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.baiye.modules.scrm.dto;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/13
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
public class SaveAddFriendDTO {
|
||||
|
||||
/**
|
||||
* 小号
|
||||
*/
|
||||
private List<String> trumpetWechatList;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 任务id
|
||||
*/
|
||||
private Long taskId;
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.baiye.modules.scrm.entity;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.alias.TableAlias;
|
||||
import com.baiye.validation.group.UpdateGroup;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/4/2
|
||||
*/
|
||||
@Data
|
||||
@TableAlias("ar")
|
||||
@TableName("tb_active_friend_record")
|
||||
@Schema(title = "主动添加好友记录")
|
||||
public class ActiveAddFriedRecord implements Serializable {
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
@Schema(title = "ID")
|
||||
@NotNull(message = "ID不能为空", groups = { UpdateGroup.class })
|
||||
private Long id;
|
||||
|
||||
@Schema(title = "机器人微信ID")
|
||||
private String robotWxId;
|
||||
|
||||
@Schema(title = "添加好友方式")
|
||||
private Integer type;
|
||||
|
||||
@Schema(title = "省")
|
||||
private String province;
|
||||
|
||||
@Schema(title = "城市")
|
||||
private String city;
|
||||
|
||||
@Schema(title = "昵称")
|
||||
private String nickName;
|
||||
|
||||
@Schema(title = "性别")
|
||||
private Integer sex;
|
||||
|
||||
@Schema(title = "通过时间")
|
||||
private Long addAcceptTime;
|
||||
|
||||
|
||||
@Schema(title = "签名")
|
||||
private String signature;
|
||||
|
||||
@Schema(title = "头像")
|
||||
private String bigHeadImgUrl;
|
||||
|
||||
@Schema(title = "userId")
|
||||
private Long userId;
|
||||
|
||||
@Schema(title = "用户名")
|
||||
private String userName;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package com.baiye.modules.scrm.mapper;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.mapper.ExtendMapper;
|
||||
import com.baiye.modules.scrm.entity.ActiveAddFriedRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2024-5-31
|
||||
*/
|
||||
@Mapper
|
||||
public interface ActiveAddFriendRecordMapper extends ExtendMapper<ActiveAddFriedRecord> {
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.baiye.modules.scrm.service;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.service.ExtendService;
|
||||
import com.baiye.modules.scrm.entity.ActiveAddFriedRecord;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date 2024-5-31
|
||||
*/
|
||||
public interface ActiveAddFriendService extends ExtendService<ActiveAddFriedRecord> {
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.baiye.modules.scrm.service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/11
|
||||
*/
|
||||
public interface WeChatLabelService {
|
||||
|
||||
/**
|
||||
* 微信ID查找标签
|
||||
*
|
||||
* @param wxIds
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> findPersonByWeChatId(List<String> wxIds);
|
||||
|
||||
/**
|
||||
* 修改好友标签
|
||||
*
|
||||
* @param wechatFlagList
|
||||
* @param toUserName
|
||||
* @param fromUserName
|
||||
* @return
|
||||
*/
|
||||
Boolean modifyLabel(List<String> wechatFlagList, String toUserName, String fromUserName);
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.baiye.modules.scrm.service.impl;
|
||||
|
||||
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
||||
import com.baiye.modules.scrm.entity.ActiveAddFriedRecord;
|
||||
import com.baiye.modules.scrm.mapper.ActiveAddFriendRecordMapper;
|
||||
import com.baiye.modules.scrm.service.ActiveAddFriendService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/2
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ActiveAddFriendRecordServiceImpl extends ExtendServiceImpl<ActiveAddFriendRecordMapper, ActiveAddFriedRecord> implements ActiveAddFriendService {
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
package com.baiye.modules.scrm.service.impl;
|
||||
|
||||
import cn.hutool.core.text.StrPool;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baiye.constant.url.WeChatPersonRequest;
|
||||
import com.baiye.modules.scrm.service.WeChatLabelService;
|
||||
import com.baiye.result.WeChatResponse;
|
||||
import com.baiye.system.properties.WeChatProperties;
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/11
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WeChatLabelServiceImpl implements WeChatLabelService {
|
||||
|
||||
private final WeChatProperties weChatProperties;
|
||||
|
||||
|
||||
@Override
|
||||
public Map<String, Object> findPersonByWeChatId(List<String> wxIds) {
|
||||
|
||||
HashMap<String, Object> hashMap = Maps.newHashMap();
|
||||
for (String wxId : wxIds) {
|
||||
String globalSetting = HttpUtil.post
|
||||
(weChatProperties.getRequestUrl().concat
|
||||
(WeChatPersonRequest.QUERY_WECHAT_LABEL.concat(wxId)), Maps.newHashMap());
|
||||
if (StringUtils.isNotBlank(globalSetting)) {
|
||||
WeChatResponse weChatResponse = JSONUtil.toBean(globalSetting, WeChatResponse.class);
|
||||
hashMap.put(wxId, JSONUtil.toJsonStr(weChatResponse.getData()));
|
||||
}
|
||||
}
|
||||
return hashMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean modifyLabel(List<String> wechatFlagList, String toUserName, String fromUserName) {
|
||||
String join = Joiner.on(StrPool.COMMA).skipNulls().join(wechatFlagList);
|
||||
Map<String, Object> map = ImmutableMap.of("wechat", toUserName, "wxId", fromUserName, "labelId", join);
|
||||
String modifyWechatLabel = HttpUtil.post
|
||||
(weChatProperties.getRequestUrl().concat
|
||||
(WeChatPersonRequest.MODIFY_WECHAT_LABEL), map);
|
||||
if (StringUtils.isNotBlank(modifyWechatLabel)) {
|
||||
WeChatResponse weChatResponse = JSONUtil.toBean(modifyWechatLabel, WeChatResponse.class);
|
||||
if (weChatResponse.getStatus() == HttpStatus.HTTP_OK) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.baiye.modules.scrm.mapper.AddFriendMapper">
|
||||
|
||||
<sql id="Base_Alias_Column_List">
|
||||
af.id,
|
||||
af.task_id,
|
||||
af.user_id,
|
||||
af.greet,
|
||||
af.label_ids,
|
||||
af.trumpet_wechat,
|
||||
af.target_wechat,
|
||||
af.add_status,
|
||||
af.create_time,
|
||||
af.update_time
|
||||
</sql>
|
||||
<select id="selectListByTaskId" resultType="com.baiye.modules.scrm.entity.AddFriend">
|
||||
SELECT
|
||||
<include refid="Base_Alias_Column_List"/>
|
||||
FROM
|
||||
tb_add_friend af
|
||||
where task_id = #{taskId,jdbcType=VARCHAR} and add_status = #{taskStatus,jdbcType=INTEGER} limit #{addFriendNum,jdbcType=INTEGER}
|
||||
</select>
|
||||
</mapper>
|
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.baiye.modules.scrm.mapper.WeChatGroupMemberMapper">
|
||||
|
||||
<select id="queryMemberWechatIdByWxId" resultType="com.baiye.modules.scrm.vo.GroupVO">
|
||||
SELECT
|
||||
g.id as groupId,
|
||||
g.chat_room_nick AS nickName,
|
||||
g.chat_room_owner,
|
||||
g.chat_room_id AS userName,
|
||||
g.chat_room_icon
|
||||
FROM
|
||||
tb_wechat_group g,
|
||||
tb_wechat_group_member m
|
||||
WHERE
|
||||
m.chat_room_id = g.chat_room_id
|
||||
AND m.wechat_id = #{wxId,jdbcType=VARCHAR}
|
||||
</select>
|
||||
</mapper>
|
@ -0,0 +1,59 @@
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import com.baiye.AdminApplication;
|
||||
import com.baiye.common.job.handler.ElasticJobHandler;
|
||||
import com.baiye.constant.DefaultNumberConstants;
|
||||
import com.baiye.modules.scrm.dto.WeChatAddFriendDTO;
|
||||
import com.baiye.modules.scrm.mapper.AddFriendMapper;
|
||||
import com.baiye.modules.scrm.service.WeChatService;
|
||||
import com.baiye.schedule.handler.AddFriendJob;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2022/9/16
|
||||
*/
|
||||
@Slf4j
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = AdminApplication.class,
|
||||
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||
public class AddFriendTest {
|
||||
|
||||
@Resource
|
||||
private AddFriendMapper addFriendMapper;
|
||||
|
||||
@Resource
|
||||
WeChatService weChatService;
|
||||
|
||||
@Resource
|
||||
ElasticJobHandler elasticJobHandler;
|
||||
|
||||
@Resource
|
||||
AddFriendJob addFriendJob;
|
||||
|
||||
@Test
|
||||
public void getSetting() {
|
||||
WeChatAddFriendDTO build = WeChatAddFriendDTO.builder().wechat
|
||||
("wxid_mhm4bqgb9gpg21").helloContent("111").tagetWxId("13586541001").type(0).build();
|
||||
weChatService.addFriend(build);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addJob() {
|
||||
// 创建任务
|
||||
elasticJobHandler.addJob("测试任务", "0 0/10-30 9-17 * * ?",
|
||||
DefaultNumberConstants.ONE_NUMBER, addFriendJob, "1l", CharSequenceUtil.EMPTY);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.baiye.listener.AddFileFriendDataListener;
|
||||
import com.baiye.modules.scrm.service.AddFriendService;
|
||||
import com.baiye.modules.scrm.vo.FileAddFriendVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/13
|
||||
*/
|
||||
@Slf4j
|
||||
@SpringBootTest
|
||||
public class FileTest {
|
||||
|
||||
|
||||
private AddFriendService addFriendService;
|
||||
@Test
|
||||
public void fileTest(){
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.baiye.constant.url;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/12
|
||||
*/
|
||||
public interface WeChatSendMessageRequest {
|
||||
/**
|
||||
* 发送文本消息
|
||||
*/
|
||||
String SEND_TEXT_MESSAGE = "/wechat/v1/sendtext";
|
||||
|
||||
|
||||
/**
|
||||
* 发送图片消息
|
||||
*/
|
||||
String SEND_PICTURE_MESSAGE = "/wechat/v1/sendurlpic";
|
||||
|
||||
|
||||
/**
|
||||
* 发送小程序
|
||||
*/
|
||||
String SEND_APPLET_MESSAGE = "/wechat/v1/sendAppMsg";
|
||||
|
||||
/**
|
||||
* 发送视频
|
||||
*/
|
||||
String SEND_VIDEO_MESSAGE = "/wechat/v1/sendVideo";
|
||||
|
||||
|
||||
/**
|
||||
* 撤回消息
|
||||
*/
|
||||
String CANCEL_MESSAGE = "/wechat/v1/revokeMsg";
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.baiye.result;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import com.sun.xml.internal.ws.developer.Serialization;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Enzo
|
||||
* @date : 2024/6/14
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
public abstract class BaseResponse implements Serializable {
|
||||
|
||||
|
||||
@SerializedName("msg")
|
||||
private String msg;
|
||||
|
||||
@SerializedName("wxId")
|
||||
private String wxId;
|
||||
|
||||
@SerializedName("status")
|
||||
private Integer status;
|
||||
|
||||
@SerializedName("success")
|
||||
private Boolean success;
|
||||
}
|
Loading…
Reference in New Issue