feat:地址解析、用户朋友圈tag
This commit is contained in:
1 parent
2e1fd182aa
commit
9e7f58bf0d
38 files changed
+414
-71
No files matched your search
@@ -144,10 +144,10 @@ CREATE TABLE `member_location`
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户位置记录';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for member_tag
|
||||
-- Table structure for member_recent_tag
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `member_tag`;
|
||||
CREATE TABLE `member_tag`
|
||||
DROP TABLE IF EXISTS `member_recent_tag`;
|
||||
CREATE TABLE `member_recent_tag`
|
||||
(
|
||||
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户tagid',
|
||||
`member_id` bigint NOT NULL COMMENT '人员id',
|
||||
@@ -160,7 +160,7 @@ CREATE TABLE `member_tag`
|
||||
`deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除',
|
||||
`tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '用户tag';
|
||||
) ENGINE = InnoDB AUTO_INCREMENT = 32 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin COMMENT = '朋友圈用户tag';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for member_open_type
|
||||
|
||||
+8
-8
@@ -1,13 +1,13 @@
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
import cn.iocoder.yudao.module.member.client.vo.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.friend.ChatAddFriendReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageCountReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageInfoReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.sensitive.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.user.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.friend.ChatAddFriendReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageCountReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageInfoReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.sensitive.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
+9
-9
@@ -5,15 +5,15 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.iocoder.yudao.module.member.client.tool.ChatApiTool;
|
||||
import cn.iocoder.yudao.module.member.client.vo.ChatBaseRespVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.friend.ChatAddFriendReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageCountReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageInfoReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.sensitive.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.user.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.ChatBaseRespVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.friend.ChatAddFriendReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageCountReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageInfoReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.sensitive.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.*;
|
||||
import cn.iocoder.yudao.module.member.framework.web.config.ChatProperties;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.geocoder.TxMapGeocoderReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.geocoder.TxMapGeocoderRespVo;
|
||||
|
||||
public interface TxMapApi {
|
||||
|
||||
/**
|
||||
* 地址逆向解析
|
||||
*/
|
||||
TxMapGeocoderRespVo geocoder(TxMapGeocoderReqVo dto);
|
||||
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.iocoder.yudao.module.member.client.tool.TxMapApiTool;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.ChatBaseRespVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.TxMapRespVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.geocoder.TxMapGeocoderReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.geocoder.TxMapGeocoderRespVo;
|
||||
import cn.iocoder.yudao.module.member.framework.web.config.TxMapProperties;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class TxMapApiImpl implements TxMapApi {
|
||||
|
||||
@Resource
|
||||
private TxMapProperties txMapProperties;
|
||||
|
||||
/**
|
||||
* 地址逆向解析
|
||||
*/
|
||||
@Override
|
||||
public TxMapGeocoderRespVo geocoder(TxMapGeocoderReqVo dto) {
|
||||
dto.setKey(txMapProperties.getAppKey());
|
||||
TxMapApiTool.API api = setApiConfig(TxMapApiTool.GEOCODER);
|
||||
try {
|
||||
String res = HttpRequest.get(api.getFullPath() + apiCountersignParams(api, BeanUtil.beanToMap(dto))).execute().body();
|
||||
log.debug("地址逆向解析,res:{}", res);
|
||||
if (ObjectUtil.isEmpty(res)) {
|
||||
log.error("地址逆向解析,res为空");
|
||||
return null;
|
||||
}
|
||||
TxMapRespVo baseRes = JSONUtil.toBean(res, TxMapRespVo.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("地址逆向解析,返回错误");
|
||||
return null;
|
||||
}
|
||||
if (ObjectUtil.isEmpty(baseRes.getResult())) {
|
||||
log.error("地址逆向解析,res.result为空");
|
||||
return null;
|
||||
}
|
||||
return JSONUtil.toBean(baseRes.getResult(), TxMapGeocoderRespVo.class);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("地址逆向解析,意外的错误", e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private TxMapApiTool.API setApiConfig(TxMapApiTool.API api) {
|
||||
if (ObjectUtil.isNotEmpty(api)) {
|
||||
api.setHost(txMapProperties.getBaseUrl());
|
||||
}
|
||||
api.init();
|
||||
return api;
|
||||
}
|
||||
|
||||
/**
|
||||
* 接口加签
|
||||
*/
|
||||
private String apiCountersignParams(TxMapApiTool.API api, Map<String, Object> params) {
|
||||
try {
|
||||
TreeMap<String, Object> treeMap = new TreeMap<>(params);
|
||||
|
||||
api.setParamsMap(treeMap);
|
||||
String paramsMap = api.getParamsString();
|
||||
|
||||
String signStr = String.format("%s%s%s", api.getUrl(), paramsMap, txMapProperties.getAppSecret());
|
||||
|
||||
params.put("sig", DigestUtils.md5Hex(URLUtil.decode(signStr)).toLowerCase());
|
||||
|
||||
StringBuilder query = new StringBuilder();
|
||||
for (Map.Entry<String, Object> entry : params.entrySet()) {
|
||||
if (ObjectUtil.isNotEmpty(entry.getValue())) {
|
||||
if (ObjectUtil.isNotEmpty(query)) query.append("&");
|
||||
query.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8.name())).append("=").append(URLEncoder.encode(String.valueOf(entry.getValue()), StandardCharsets.UTF_8.name()));
|
||||
}
|
||||
}
|
||||
return "?" + query;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("|接口加签|,意外的错误", e);
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+65
@@ -0,0 +1,65 @@
|
||||
package cn.iocoder.yudao.module.member.client.tool;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.springframework.http.HttpMethod;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 腾讯地图工具类
|
||||
*/
|
||||
public class TxMapApiTool {
|
||||
|
||||
|
||||
public static final TxMapApiTool.API GEOCODER = TxMapApiTool.API.builder().summary("逆地址解析(坐标位置描述)").url("/ws/geocoder/v1").method(HttpMethod.GET).build();
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
static public class API {
|
||||
|
||||
private String summary;
|
||||
|
||||
private String host;
|
||||
|
||||
private String url;
|
||||
|
||||
private String fullPath;
|
||||
|
||||
private HttpMethod method;
|
||||
|
||||
private Map<String, Object> paramsMap;
|
||||
|
||||
public String getParamsString() throws UnsupportedEncodingException {
|
||||
if (ObjectUtil.isEmpty(this.paramsMap)) return "";
|
||||
StringBuilder query = new StringBuilder();
|
||||
for (Map.Entry<String, Object> entry : paramsMap.entrySet()) {
|
||||
if (ObjectUtil.isNotEmpty(entry.getValue())) {
|
||||
if (ObjectUtil.isNotEmpty(query)) query.append("&");
|
||||
query.append(URLEncoder.encode(entry.getKey(), StandardCharsets.UTF_8.name())).append("=").append(URLEncoder.encode(String.valueOf(entry.getValue()), StandardCharsets.UTF_8.name()));
|
||||
}
|
||||
}
|
||||
return "?" + query;
|
||||
}
|
||||
|
||||
public TxMapApiTool.API setParamsMap(Map<String, Object> paramsMap) {
|
||||
this.paramsMap = paramsMap;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String init() {
|
||||
String apiPath = host + url;
|
||||
fullPath = apiPath;
|
||||
return apiPath;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat;
|
||||
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat;
|
||||
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.friend;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.friend;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.privatemsg;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.privatemsg;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.privatemsg;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.privatemsg;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.privatemsg;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.privatemsg;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.privatemsg;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.privatemsg;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.sensitive;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.sensitive;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.sensitive;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.sensitive;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.sensitive;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.sensitive;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.sensitive;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.sensitive;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.sensitive;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.sensitive;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.user;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.user;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.user;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.user;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.user;
|
||||
package cn.iocoder.yudao.module.member.client.vo.chat.user;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.txmap.geocoder;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TxMapGeocoderReqVo {
|
||||
|
||||
/**
|
||||
* 开发密钥(Key)
|
||||
*/
|
||||
private String key;
|
||||
|
||||
/**
|
||||
* 经纬度(GCJ02坐标系),格式:location=lat<纬度>,lng<经度>location=39.984154,116.307490
|
||||
*/
|
||||
private String location;
|
||||
|
||||
private String radius;
|
||||
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.txmap.geocoder;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TxMapGeocoderRespVo {
|
||||
|
||||
/**
|
||||
* 以行政区划+道路+门牌号等信息组成的标准格式化地址
|
||||
*/
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 结合知名地点形成的描述性地址,更具人性化特点
|
||||
*/
|
||||
private FormattedAddresses formatted_addresses;
|
||||
|
||||
/**
|
||||
* 地址部件,address不满足需求时可自行拼接
|
||||
*/
|
||||
private AddressComponent address_component;
|
||||
|
||||
/**
|
||||
* 结合知名地点形成的描述性地址,更具人性化特点
|
||||
*/
|
||||
@Data
|
||||
static public class FormattedAddresses {
|
||||
|
||||
/**
|
||||
* 推荐使用的地址描述,描述精确性较高
|
||||
*/
|
||||
private String recommend;
|
||||
|
||||
/**
|
||||
* 粗略位置描述
|
||||
*/
|
||||
private String rough;
|
||||
|
||||
/**
|
||||
* 基于附近关键地点(POI)的精确地址
|
||||
*/
|
||||
private String standard_address;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 地址部件,address不满足需求时可自行拼接
|
||||
*/
|
||||
@Data
|
||||
static public class AddressComponent {
|
||||
|
||||
/**
|
||||
* 国家
|
||||
*/
|
||||
private String nation;
|
||||
|
||||
/**
|
||||
* 省
|
||||
*/
|
||||
private String province;
|
||||
|
||||
/**
|
||||
* 市,如果当前城市为省直辖县级区划,city与district字段均会返回此城市
|
||||
* 注:省直辖县级区划adcode第3和第4位分别为9、0,如济源市adcode为419001
|
||||
*/
|
||||
private String city;
|
||||
|
||||
/**
|
||||
* 区,可能为空字串
|
||||
*/
|
||||
private String district;
|
||||
|
||||
/**
|
||||
* 道路,可能为空字串
|
||||
*/
|
||||
private String street;
|
||||
|
||||
/**
|
||||
* 门牌,可能为空字串
|
||||
*/
|
||||
private String street_number;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+6
-6
@@ -4,12 +4,12 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageCountReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageInfoReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.privatemsg.ChatPrivateMessageRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.sensitive.ChatSensitiveRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageCountReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageInfoReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateMessageRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.sensitive.ChatSensitiveRespVO;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
+2
-3
@@ -4,9 +4,8 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.sensitive.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.user.ChatCreateOrUpdateUserReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.ChatTableRespVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.sensitive.*;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.member.controller.app.chat;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.friend.ChatAddFriendReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.friend.ChatAddFriendReqVo;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
+1
@@ -26,6 +26,7 @@ public class MemberTagDO extends BaseDO {
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 标签名称
|
||||
*/
|
||||
|
||||
+4
-4
@@ -5,17 +5,17 @@ import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* 用户tag DO
|
||||
* 朋友圈用户tag DO
|
||||
*/
|
||||
@TableName("member_tag")
|
||||
@KeySequence("member_tag_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@TableName("member_recent_tag")
|
||||
@KeySequence("member_recent_tag_seq")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class MemberTagDO extends BaseDO {
|
||||
public class MemberRecentTagDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 用户tagid
|
||||
+4
-3
@@ -1,13 +1,14 @@
|
||||
package cn.iocoder.yudao.module.member.dal.mysql.user;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberTagDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberRecentTagDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 用户tag Mapper
|
||||
* 朋友圈用户tag Mapper
|
||||
*/
|
||||
@Mapper
|
||||
public interface MemberTagMapper extends BaseMapperX<MemberTagDO> {
|
||||
public interface MemberRecentTagMapper extends BaseMapperX<MemberRecentTagDO> {
|
||||
|
||||
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package cn.iocoder.yudao.module.member.framework.web.config;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
@ConfigurationProperties("tx-map")
|
||||
@Data
|
||||
public class TxMapProperties {
|
||||
|
||||
private String baseUrl;
|
||||
|
||||
private String appKey;
|
||||
|
||||
private String appSecret;
|
||||
|
||||
}
|
||||
+2
-2
@@ -9,8 +9,8 @@ import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.user.ChatLoginReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.user.ChatLoginRespVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.ChatLoginReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.ChatLoginRespVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.auth.vo.*;
|
||||
import cn.iocoder.yudao.module.member.convert.auth.AuthConvert;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
|
||||
+19
-3
@@ -1,6 +1,10 @@
|
||||
package cn.iocoder.yudao.module.member.service.location;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.member.client.service.TxMapApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.geocoder.TxMapGeocoderReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.geocoder.TxMapGeocoderRespVo;
|
||||
import cn.iocoder.yudao.module.member.enums.MemberErrorCode;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -15,7 +19,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.location.LocationMapper;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
@@ -31,10 +34,23 @@ public class LocationServiceImpl implements LocationService {
|
||||
@Resource
|
||||
private LocationMapper locationMapper;
|
||||
|
||||
@Resource
|
||||
private TxMapApi txMapApi;
|
||||
|
||||
@Override
|
||||
public Long createLocation(LocationSaveReqVO createReqVO) {
|
||||
public Long createLocation(LocationSaveReqVO dto) {
|
||||
if (!ObjectUtil.isAllEmpty(dto.getProvince(), dto.getCity(), dto.getDistrict())) {
|
||||
TxMapGeocoderRespVo geocoder = txMapApi.geocoder(TxMapGeocoderReqVo.builder().location(dto.getLat() + "," + dto.getLon()).build());
|
||||
if (ObjectUtil.isNotEmpty(geocoder) && ObjectUtil.isNotEmpty(geocoder.getAddress_component())) {
|
||||
TxMapGeocoderRespVo.AddressComponent addressComponent = geocoder.getAddress_component();
|
||||
dto.setProvince(addressComponent.getProvince());
|
||||
dto.setCity(addressComponent.getCity());
|
||||
dto.setDistrict(addressComponent.getDistrict());
|
||||
dto.setAddress(addressComponent.getStreet());
|
||||
}
|
||||
}
|
||||
// 插入
|
||||
LocationDO location = BeanUtils.toBean(createReqVO, LocationDO.class);
|
||||
LocationDO location = BeanUtils.toBean(dto, LocationDO.class);
|
||||
locationMapper.insert(location);
|
||||
// 返回
|
||||
return location.getId();
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.common.enums.UserTypeEnum;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.user.ChatCreateOrUpdateUserReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.ChatCreateOrUpdateUserReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.user.vo.*;
|
||||
|
||||
@@ -230,4 +230,9 @@ pf4j:
|
||||
chat:
|
||||
base-url: http://127.0.0.1:8888
|
||||
app-key: 4H2HkBLygMsxaQKO
|
||||
app-secret: JIizm84av3TK5xaQdsng7X5mqLPjbeQ0
|
||||
app-secret: JIizm84av3TK5xaQdsng7X5mqLPjbeQ0
|
||||
|
||||
tx-map:
|
||||
base-url: https://apis.map.qq.com
|
||||
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
@@ -252,4 +252,9 @@ pf4j:
|
||||
chat:
|
||||
base-url: http://127.0.0.1:8888
|
||||
app-key: 4H2HkBLygMsxaQKO
|
||||
app-secret: JIizm84av3TK5xaQdsng7X5mqLPjbeQ0
|
||||
app-secret: JIizm84av3TK5xaQdsng7X5mqLPjbeQ0
|
||||
|
||||
tx-map:
|
||||
base-url: https://apis.map.qq.com
|
||||
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
@@ -167,12 +167,12 @@ debug: false
|
||||
--- #################### 微信公众号、小程序相关配置 ####################
|
||||
wx:
|
||||
mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
|
||||
# app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
|
||||
# secret: 5abee519483bc9f8cb37ce280e814bd0
|
||||
# app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
|
||||
# secret: 5abee519483bc9f8cb37ce280e814bd0
|
||||
app-id: wx5fb544743d0a860f
|
||||
secret: 6bed0b5b798db383af35e1ec54026d85
|
||||
# app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
|
||||
# secret: bd4f9fab889591b62aeac0d7b8d8b4a0
|
||||
# app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
|
||||
# secret: bd4f9fab889591b62aeac0d7b8d8b4a0
|
||||
# 存储配置,解决 AccessToken 的跨节点的共享
|
||||
config-storage:
|
||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||
@@ -181,10 +181,10 @@ wx:
|
||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
|
||||
# secret: 333ae72f41552af1e998fe1f54e1584a
|
||||
# appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
|
||||
# secret: 6f270509224a7ae1296bbf1c8cb97aed
|
||||
# appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
|
||||
# secret: 4a1a04e07f6a4a0751b39c3064a92c8b
|
||||
# appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
|
||||
# secret: 6f270509224a7ae1296bbf1c8cb97aed
|
||||
# appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
|
||||
# secret: 4a1a04e07f6a4a0751b39c3064a92c8b
|
||||
appid: wx48555e58acd79c3d # 测试号(puhui 提供的)
|
||||
secret: f0f5fd485bac7f377af6f5ca97636dd4
|
||||
config-storage:
|
||||
@@ -239,3 +239,12 @@ justauth:
|
||||
prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE::
|
||||
timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟
|
||||
|
||||
chat:
|
||||
base-url: http://127.0.0.1:8888
|
||||
app-key: 4H2HkBLygMsxaQKO
|
||||
app-secret: JIizm84av3TK5xaQdsng7X5mqLPjbeQ0
|
||||
|
||||
tx-map:
|
||||
base-url: https://apis.map.qq.com
|
||||
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
Reference in new issue
Block a user