bug
This commit is contained in:
1 parent
dc6c24eb48
commit
81c7b2e8d9
43 files changed
+415
-105
No files matched your search
@@ -86,12 +86,26 @@
|
||||
<artifactId>yudao-spring-boot-starter-biz-ip</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 文字、图片风险认证 -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>green20220302</artifactId>
|
||||
<version>3.0.1</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 人脸识别 -->
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>cloudauth20190307</artifactId>
|
||||
<version>2.1.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.aliyun</groupId>
|
||||
<artifactId>credentials-java</artifactId>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
+9
-9
@@ -1,7 +1,7 @@
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
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.friend.ChatAddFriendReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.sensitive.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.*;
|
||||
@@ -17,22 +17,22 @@ public interface ChatApi {
|
||||
/**
|
||||
* 聊天用户登录
|
||||
*/
|
||||
ChatLoginRespVo login(@Valid ChatLoginReqVO dto);
|
||||
ChatLoginRespVO login(@Valid ChatLoginReqVO dto);
|
||||
|
||||
/**
|
||||
* 创建或者更新聊天用户
|
||||
*/
|
||||
boolean createOrUpdate(@Valid ChatCreateOrUpdateUserReqVo dto);
|
||||
boolean createOrUpdate(@Valid ChatCreateOrUpdateUserReqVO dto);
|
||||
|
||||
/**
|
||||
* 根据userId查询用户详情
|
||||
*/
|
||||
ChatGetUserByUserIdRespVo getUserByUserId(@Valid ChatGetUserByUserIdReqVo dto);
|
||||
ChatGetUserByUserIdRespVO getUserByUserId(@Valid ChatGetUserByUserIdReqVO dto);
|
||||
|
||||
/**
|
||||
* 添加好友
|
||||
*/
|
||||
boolean addFriend(@Valid ChatAddFriendReqVo dto);
|
||||
boolean addFriend(@Valid ChatAddFriendReqVO dto);
|
||||
|
||||
/* *************************************** end 用户相关 end *************************************** */
|
||||
|
||||
@@ -41,17 +41,17 @@ public interface ChatApi {
|
||||
/**
|
||||
* 敏感词分页
|
||||
*/
|
||||
ChatTableRespVO<ChatSensitiveRespVO> sensitivePage(ChatSensitiveReqVo dto);
|
||||
ChatTableRespVO<ChatSensitiveRespVO> sensitivePage(ChatSensitiveReqVO dto);
|
||||
|
||||
/**
|
||||
* 敏感词详情
|
||||
*/
|
||||
ChatSensitiveRespVO sensitiveGetInfo(ChatSensitiveInfoReqVo dto);
|
||||
ChatSensitiveRespVO sensitiveGetInfo(ChatSensitiveInfoReqVO dto);
|
||||
|
||||
/**
|
||||
* 创建或者更新敏感词
|
||||
*/
|
||||
boolean sensitiveCreateOrUpdate(ChatSensitiveSaveReqVo dto);
|
||||
boolean sensitiveCreateOrUpdate(ChatSensitiveSaveReqVO dto);
|
||||
|
||||
/**
|
||||
* 删除敏感词
|
||||
@@ -85,7 +85,7 @@ public interface ChatApi {
|
||||
/**
|
||||
* 私聊消息发送消息的统计
|
||||
*/
|
||||
List<ChatPrivateTotalMessageTotalResVo> privateTotal(ChatPrivateTotalMessageTotalReqVo dto);
|
||||
List<ChatPrivateTotalMessageTotalResVO> privateTotal(ChatPrivateTotalMessageTotalReqVO dto);
|
||||
|
||||
/* *************************************** end 私聊 end *************************************** */
|
||||
|
||||
|
||||
+26
-26
@@ -5,9 +5,9 @@ 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.chat.ChatBaseRespVo;
|
||||
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.friend.ChatAddFriendReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.sensitive.*;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.*;
|
||||
@@ -33,7 +33,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 聊天用户登录
|
||||
*/
|
||||
@Override
|
||||
public ChatLoginRespVo login(ChatLoginReqVO dto) {
|
||||
public ChatLoginRespVO login(ChatLoginReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.USER_LOGIN);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -43,12 +43,12 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("聊天用户登录,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("聊天用户登录,返回错误");
|
||||
return null;
|
||||
}
|
||||
ChatLoginRespVo vo = JSONUtil.toBean(baseRes.getData(), ChatLoginRespVo.class);
|
||||
ChatLoginRespVO vo = JSONUtil.toBean(baseRes.getData(), ChatLoginRespVO.class);
|
||||
if (ObjectUtil.isEmpty(vo)) {
|
||||
log.error("聊天用户登录,返回json解析错误");
|
||||
return null;
|
||||
@@ -65,7 +65,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 创建或者更新聊天用户
|
||||
*/
|
||||
@Override
|
||||
public boolean createOrUpdate(ChatCreateOrUpdateUserReqVo dto) {
|
||||
public boolean createOrUpdate(ChatCreateOrUpdateUserReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.USER_SAVE_OR_UPDATE);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -75,7 +75,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("创建或者更新聊天用户,res为空");
|
||||
return false;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("创建或者更新聊天用户,返回错误");
|
||||
return false;
|
||||
@@ -92,7 +92,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 根据userId查询用户详情
|
||||
*/
|
||||
@Override
|
||||
public ChatGetUserByUserIdRespVo getUserByUserId(ChatGetUserByUserIdReqVo dto) {
|
||||
public ChatGetUserByUserIdRespVO getUserByUserId(ChatGetUserByUserIdReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.USER_GET);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -102,12 +102,12 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("根据userId查询用户详情,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("根据userId查询用户详情,返回错误");
|
||||
return null;
|
||||
}
|
||||
ChatGetUserByUserIdRespVo vo = JSONUtil.toBean(baseRes.getData(), ChatGetUserByUserIdRespVo.class);
|
||||
ChatGetUserByUserIdRespVO vo = JSONUtil.toBean(baseRes.getData(), ChatGetUserByUserIdRespVO.class);
|
||||
if (ObjectUtil.isEmpty(vo)) {
|
||||
log.error("根据userId查询用户详情,返回json解析错误");
|
||||
return null;
|
||||
@@ -124,7 +124,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 添加好友
|
||||
*/
|
||||
@Override
|
||||
public boolean addFriend(ChatAddFriendReqVo dto) {
|
||||
public boolean addFriend(ChatAddFriendReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.FRIEND_ADD);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -134,7 +134,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("添加好友,res为空");
|
||||
return false;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("添加好友,返回错误");
|
||||
return false;
|
||||
@@ -155,7 +155,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 敏感词分页
|
||||
*/
|
||||
@Override
|
||||
public ChatTableRespVO<ChatSensitiveRespVO> sensitivePage(ChatSensitiveReqVo dto) {
|
||||
public ChatTableRespVO<ChatSensitiveRespVO> sensitivePage(ChatSensitiveReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.SENSITIVE_PAGE);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -165,7 +165,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("敏感词分页,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("敏感词分页,返回错误");
|
||||
return null;
|
||||
@@ -192,7 +192,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 敏感词详情
|
||||
*/
|
||||
@Override
|
||||
public ChatSensitiveRespVO sensitiveGetInfo(ChatSensitiveInfoReqVo dto) {
|
||||
public ChatSensitiveRespVO sensitiveGetInfo(ChatSensitiveInfoReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.SENSITIVE_INFO);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -202,7 +202,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("敏感词详情,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("敏感词详情,返回错误");
|
||||
return null;
|
||||
@@ -224,7 +224,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 创建或者更新敏感词
|
||||
*/
|
||||
@Override
|
||||
public boolean sensitiveCreateOrUpdate(ChatSensitiveSaveReqVo dto) {
|
||||
public boolean sensitiveCreateOrUpdate(ChatSensitiveSaveReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.SENSITIVE_CREATE_OR_UPDATE);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -234,7 +234,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("创建或者更新敏感词,res为空");
|
||||
return false;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("创建或者更新敏感词,返回错误");
|
||||
return false;
|
||||
@@ -265,7 +265,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("删除敏感词,res为空");
|
||||
return false;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("删除敏感词,返回错误");
|
||||
return false;
|
||||
@@ -301,7 +301,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("发私聊送消息,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("发私聊送消息,返回错误");
|
||||
return null;
|
||||
@@ -333,7 +333,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("私聊消息分页,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("私聊消息分页,返回错误");
|
||||
return null;
|
||||
@@ -370,7 +370,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("私聊消息详情,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("私聊消息详情,返回错误");
|
||||
return null;
|
||||
@@ -402,7 +402,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("私聊消息统计,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("私聊消息统计,返回错误");
|
||||
return null;
|
||||
@@ -424,7 +424,7 @@ public class ChatApiImpl implements ChatApi {
|
||||
* 私聊消息发送消息的统计
|
||||
*/
|
||||
@Override
|
||||
public List<ChatPrivateTotalMessageTotalResVo> privateTotal(ChatPrivateTotalMessageTotalReqVo dto) {
|
||||
public List<ChatPrivateTotalMessageTotalResVO> privateTotal(ChatPrivateTotalMessageTotalReqVO dto) {
|
||||
ChatApiTool.API api = setApiConfig(ChatApiTool.PRIVATE_MSG_TOTAL);
|
||||
try {
|
||||
String body = JSONUtil.toJsonStr(dto);
|
||||
@@ -434,12 +434,12 @@ public class ChatApiImpl implements ChatApi {
|
||||
log.error("私聊消息发送消息的统计,res为空");
|
||||
return null;
|
||||
}
|
||||
ChatBaseRespVo baseRes = JSONUtil.toBean(res, ChatBaseRespVo.class);
|
||||
ChatBaseRespVO baseRes = JSONUtil.toBean(res, ChatBaseRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("私聊消息发送消息的统计,返回错误");
|
||||
return null;
|
||||
}
|
||||
List<ChatPrivateTotalMessageTotalResVo> vo = JSONUtil.toList(baseRes.getData(), ChatPrivateTotalMessageTotalResVo.class);
|
||||
List<ChatPrivateTotalMessageTotalResVO> vo = JSONUtil.toList(baseRes.getData(), ChatPrivateTotalMessageTotalResVO.class);
|
||||
if (ObjectUtil.isEmpty(vo)) {
|
||||
log.error("私聊消息发送消息的统计,返回json解析错误");
|
||||
return null;
|
||||
|
||||
+1
-2
@@ -1,7 +1,6 @@
|
||||
package cn.iocoder.yudao.module.member.service.thirdauth;
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
import cn.iocoder.yudao.module.member.api.thirdauth.ThirdAuthVo;
|
||||
import com.aliyun.green20220302.models.ImageBatchModerationResponseBody;
|
||||
|
||||
/**
|
||||
* @author liusiyang_dxm
|
||||
+6
-1
@@ -1,8 +1,9 @@
|
||||
package cn.iocoder.yudao.module.member.service.thirdauth;
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.iocoder.yudao.module.member.api.thirdauth.ThirdAuthVo;
|
||||
import cn.iocoder.yudao.module.member.framework.web.config.ThirdAlConfig;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.aliyun.green20220302.Client;
|
||||
import com.aliyun.green20220302.models.*;
|
||||
@@ -12,6 +13,7 @@ import com.aliyun.teautil.models.RuntimeOptions;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.*;
|
||||
|
||||
@@ -23,6 +25,9 @@ import java.util.*;
|
||||
@Slf4j
|
||||
public class ThirdAuthServiceImpl implements ThirdAuthService {
|
||||
|
||||
@Resource
|
||||
private ThirdAlConfig thirdAlConfig;
|
||||
|
||||
private volatile Client clientInstance;
|
||||
|
||||
private final List<String> successRiskLevelList = new ArrayList<String>() {{
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFaceVerifyReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFaceVerifyResVO;
|
||||
|
||||
public interface ThirdFaceVerifyService {
|
||||
|
||||
/**
|
||||
* 人脸识别
|
||||
*/
|
||||
ThirdFaceVerifyResVO faceVerify(ThirdFaceVerifyReqVO dto);
|
||||
|
||||
/**
|
||||
* 人脸识别回调
|
||||
*/
|
||||
String callback(String code);
|
||||
|
||||
}
|
||||
+109
@@ -0,0 +1,109 @@
|
||||
package cn.iocoder.yudao.module.member.client.service;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFaceVerifyReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.thirdfaceverify.ThirdFaceVerifyResVO;
|
||||
import cn.iocoder.yudao.module.member.framework.web.config.ThirdAlConfig;
|
||||
import com.aliyun.cloudauth20190307.models.InitFaceVerifyRequest;
|
||||
import com.aliyun.cloudauth20190307.models.InitFaceVerifyResponse;
|
||||
import com.aliyun.cloudauth20190307.Client;
|
||||
import com.aliyun.cloudauth20190307.models.InitFaceVerifyResponseBody;
|
||||
import com.aliyun.teaopenapi.models.Config;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.aliyun.teautil.models.RuntimeOptions;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 第三方人脸识别认证
|
||||
*/
|
||||
@Service
|
||||
@Valid
|
||||
@Slf4j
|
||||
public class ThirdFaceVerifyServiceImpl implements ThirdFaceVerifyService {
|
||||
|
||||
@Resource
|
||||
private ThirdAlConfig thirdAlConfig;
|
||||
|
||||
private static final com.aliyun.credentials.Client credentialClient = new com.aliyun.credentials.Client();
|
||||
|
||||
/**
|
||||
* 人脸识别
|
||||
*/
|
||||
@Override
|
||||
public ThirdFaceVerifyResVO faceVerify(ThirdFaceVerifyReqVO dto) {
|
||||
InitFaceVerifyRequest request = new InitFaceVerifyRequest();
|
||||
request.setSceneId(1000016045L);
|
||||
request.setProductCode("PV_FV");
|
||||
request.setModel("MOVE_ACTION");
|
||||
// 参数
|
||||
request.setOuterOrderNo(dto.getCode());
|
||||
request.setUserId(String.valueOf(dto.getFaceVerifyUserId()));
|
||||
request.setMetaInfo(dto.getMetaInfoJson());
|
||||
request.setFaceContrastPictureUrl(dto.getFaceVerifyUrl());
|
||||
// 配置
|
||||
request.setCallbackToken(thirdAlConfig.getFaceVerifyCallbackToken());
|
||||
request.setCallbackUrl(thirdAlConfig.getFaceVerifyCallbackUrl());
|
||||
|
||||
InitFaceVerifyResponse response = initFaceVerifyAutoRoute(request);
|
||||
if (ObjectUtil.isEmpty(response)) {
|
||||
log.error("|人脸识别|,第三方接口无响应");
|
||||
return null;
|
||||
}
|
||||
InitFaceVerifyResponseBody body = response.getBody();
|
||||
InitFaceVerifyResponseBody.InitFaceVerifyResponseBodyResultObject resultObject = body.getResultObject();
|
||||
|
||||
ThirdFaceVerifyResVO result = new ThirdFaceVerifyResVO();
|
||||
result.setCertifyId(resultObject.getCertifyId());
|
||||
result.setCertifyUrl(resultObject.getCertifyUrl());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 人脸识别回调
|
||||
*/
|
||||
@Override
|
||||
public String callback(String code) {
|
||||
return "";
|
||||
}
|
||||
|
||||
private InitFaceVerifyResponse initFaceVerifyAutoRoute(InitFaceVerifyRequest request) {
|
||||
List<String> endpoints = Arrays.asList("cloudauth.cn-shanghai.aliyuncs.com", "cloudauth.cn-beijing.aliyuncs.com");
|
||||
InitFaceVerifyResponse lastResponse = null;
|
||||
for (String endpoint : endpoints) {
|
||||
try {
|
||||
lastResponse = initFaceVerify(endpoint, request);
|
||||
if (ObjectUtil.isEmpty(lastResponse)) return null;
|
||||
if (ObjectUtil.equals(lastResponse.getStatusCode(), 500)) {
|
||||
continue;
|
||||
}
|
||||
InitFaceVerifyResponseBody body = lastResponse.getBody();
|
||||
if (ObjectUtil.equals(body.getCode(), "500")) {
|
||||
continue;
|
||||
}
|
||||
return lastResponse;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("|人脸识别|,意外的错误:{}", e.getMessage());
|
||||
}
|
||||
}
|
||||
return lastResponse;
|
||||
}
|
||||
|
||||
private InitFaceVerifyResponse initFaceVerify(String endpoint, InitFaceVerifyRequest request) throws Exception {
|
||||
Config config = new Config();
|
||||
config.setCredential(credentialClient);
|
||||
config.setEndpoint(endpoint);
|
||||
config.setAccessKeyId(thirdAlConfig.getAccessKeyId());
|
||||
config.setAccessKeySecret(thirdAlConfig.getAccessKeySecret());
|
||||
Client client = new Client(config);
|
||||
RuntimeOptions runtime = new RuntimeOptions();
|
||||
runtime.readTimeout = 10_000;
|
||||
runtime.connectTimeout = 10_000;
|
||||
return client.initFaceVerifyWithOptions(request, runtime);
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -1,14 +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;
|
||||
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);
|
||||
TxMapGeocoderRespVO geocoder(TxMapGeocoderReqVO dto);
|
||||
|
||||
}
|
||||
+6
-6
@@ -7,9 +7,9 @@ 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.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.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;
|
||||
@@ -31,7 +31,7 @@ public class TxMapApiImpl implements TxMapApi {
|
||||
* 地址逆向解析
|
||||
*/
|
||||
@Override
|
||||
public TxMapGeocoderRespVo geocoder(TxMapGeocoderReqVo dto) {
|
||||
public TxMapGeocoderRespVO geocoder(TxMapGeocoderReqVO dto) {
|
||||
dto.setKey(txMapProperties.getAppKey());
|
||||
TxMapApiTool.API api = setApiConfig(TxMapApiTool.GEOCODER);
|
||||
try {
|
||||
@@ -41,7 +41,7 @@ public class TxMapApiImpl implements TxMapApi {
|
||||
log.error("地址逆向解析,res为空");
|
||||
return null;
|
||||
}
|
||||
TxMapRespVo baseRes = JSONUtil.toBean(res, TxMapRespVo.class);
|
||||
TxMapRespVO baseRes = JSONUtil.toBean(res, TxMapRespVO.class);
|
||||
if (ObjectUtil.isEmpty(baseRes) || !baseRes.isSuccess()) {
|
||||
log.error("地址逆向解析,返回错误");
|
||||
return null;
|
||||
@@ -50,7 +50,7 @@ public class TxMapApiImpl implements TxMapApi {
|
||||
log.error("地址逆向解析,res.result为空");
|
||||
return null;
|
||||
}
|
||||
return JSONUtil.toBean(baseRes.getResult(), TxMapGeocoderRespVo.class);
|
||||
return JSONUtil.toBean(baseRes.getResult(), TxMapGeocoderRespVO.class);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("地址逆向解析,意外的错误", e);
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjUtil;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ChatBaseRespVo {
|
||||
public class ChatBaseRespVO {
|
||||
|
||||
private Integer code;
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@Schema(description = "chat添加好友req")
|
||||
public class ChatAddFriendReqVo {
|
||||
public class ChatAddFriendReqVO {
|
||||
|
||||
@NotNull(message = "用户id不存在")
|
||||
@Schema(description = "用户id")
|
||||
+1
-3
@@ -2,10 +2,8 @@ package cn.iocoder.yudao.module.member.client.vo.chat.privatemsg;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class ChatPrivateTotalMessageTotalReqVo {
|
||||
public class ChatPrivateTotalMessageTotalReqVO {
|
||||
|
||||
/**
|
||||
* 发送人id
|
||||
+1
-1
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.client.vo.chat.privatemsg;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ChatPrivateTotalMessageTotalResVo {
|
||||
public class ChatPrivateTotalMessageTotalResVO {
|
||||
|
||||
/**
|
||||
* 发送者id
|
||||
+1
-1
@@ -5,7 +5,7 @@ import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(description = "third敏感词详情DTO")
|
||||
public class ChatSensitiveInfoReqVo {
|
||||
public class ChatSensitiveInfoReqVO {
|
||||
|
||||
@Schema(description = "敏感词id")
|
||||
private Long sensitiveId;
|
||||
+1
-1
@@ -7,7 +7,7 @@ import java.util.Date;
|
||||
|
||||
@Data
|
||||
@Schema(description = "third敏感词DTO")
|
||||
public class ChatSensitiveReqVo {
|
||||
public class ChatSensitiveReqVO {
|
||||
|
||||
@Schema(description = "分页大小")
|
||||
private Integer pageSize;
|
||||
+1
-1
@@ -7,7 +7,7 @@ import javax.validation.constraints.NotEmpty;
|
||||
|
||||
@Data
|
||||
@Schema(description = "third新增或修改DTO")
|
||||
public class ChatSensitiveSaveReqVo {
|
||||
public class ChatSensitiveSaveReqVO {
|
||||
|
||||
@Schema(description = "id")
|
||||
private Long id;
|
||||
+1
-1
@@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@Schema(description = "chat用户注册req")
|
||||
public class ChatCreateOrUpdateUserReqVo {
|
||||
public class ChatCreateOrUpdateUserReqVO {
|
||||
|
||||
@NotNull(message = "用户id不可为空")
|
||||
@Schema(description = "用户id")
|
||||
+1
-1
@@ -7,7 +7,7 @@ import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@Schema(description = "chat根据userId查询用户详情")
|
||||
public class ChatGetUserByUserIdReqVo {
|
||||
public class ChatGetUserByUserIdReqVO {
|
||||
|
||||
@NotNull(message = "用户id不能为空")
|
||||
@Schema(description = "用户id")
|
||||
+1
-1
@@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@Schema(description = "chat根据userId查询用户详情resp")
|
||||
public class ChatGetUserByUserIdRespVo {
|
||||
public class ChatGetUserByUserIdRespVO {
|
||||
|
||||
@NotNull(message = "用户id不能为空")
|
||||
@Schema(description = "id")
|
||||
+1
-1
@@ -5,7 +5,7 @@ import lombok.Data;
|
||||
|
||||
@Data
|
||||
@Schema(description = "chat用户登录resp")
|
||||
public class ChatLoginRespVo {
|
||||
public class ChatLoginRespVO {
|
||||
|
||||
@Schema(description = "每次请求都必须在header中携带accessToken")
|
||||
private String accessToken;
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.thirdfaceverify;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 阿里云人脸认证req
|
||||
*/
|
||||
@Data
|
||||
public class ThirdFaceVerifyReqVO {
|
||||
|
||||
/**
|
||||
* 认证订单code(唯一)
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 人脸认证图片地址
|
||||
*/
|
||||
private String faceVerifyUrl;
|
||||
|
||||
/**
|
||||
* 认证用户id
|
||||
*/
|
||||
private Long faceVerifyUserId;
|
||||
|
||||
/**
|
||||
* MetaInfo环境参数,客户端传入
|
||||
*/
|
||||
private String metaInfoJson;
|
||||
|
||||
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package cn.iocoder.yudao.module.member.client.vo.thirdfaceverify;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 阿里云人脸认证res
|
||||
*/
|
||||
@Data
|
||||
public class ThirdFaceVerifyResVO {
|
||||
|
||||
private String certifyId;
|
||||
|
||||
private String certifyUrl;
|
||||
|
||||
}
|
||||
+1
-1
@@ -6,7 +6,7 @@ import lombok.Data;
|
||||
* 腾讯地图响应体
|
||||
*/
|
||||
@Data
|
||||
public class TxMapRespVo {
|
||||
public class TxMapRespVO {
|
||||
|
||||
private Integer status;
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TxMapGeocoderReqVo {
|
||||
public class TxMapGeocoderReqVO {
|
||||
|
||||
/**
|
||||
* 开发密钥(Key)
|
||||
+1
-1
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.member.client.vo.txmap.geocoder;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class TxMapGeocoderRespVo {
|
||||
public class TxMapGeocoderRespVO {
|
||||
|
||||
/**
|
||||
* 以行政区划+道路+门牌号等信息组成的标准格式化地址
|
||||
+3
-3
@@ -29,7 +29,7 @@ public class ChatSensitiveController {
|
||||
|
||||
@PostMapping("/page")
|
||||
@Operation(summary = "查询敏感词列表", description = "查询敏感词列表")
|
||||
public CommonResult<PageResult<ChatSensitiveRespVO>> page(@Valid @RequestBody ChatSensitiveReqVo dto) {
|
||||
public CommonResult<PageResult<ChatSensitiveRespVO>> page(@Valid @RequestBody ChatSensitiveReqVO dto) {
|
||||
ChatTableRespVO<ChatSensitiveRespVO> vo = chatApi.sensitivePage(dto);
|
||||
|
||||
PageResult pageResult = new PageResult();
|
||||
@@ -44,7 +44,7 @@ public class ChatSensitiveController {
|
||||
@GetMapping("/getById")
|
||||
@Operation(summary = "获取敏感词详细信息", description = "获取敏感词详细信息")
|
||||
public CommonResult<ChatSensitiveRespVO> getInfo(@RequestParam("id") Long id) {
|
||||
ChatSensitiveInfoReqVo dto = new ChatSensitiveInfoReqVo();
|
||||
ChatSensitiveInfoReqVO dto = new ChatSensitiveInfoReqVO();
|
||||
dto.setSensitiveId(id);
|
||||
ChatSensitiveRespVO vo = chatApi.sensitiveGetInfo(dto);
|
||||
return success(vo);
|
||||
@@ -52,7 +52,7 @@ public class ChatSensitiveController {
|
||||
|
||||
@PostMapping("/createOrUpdate")
|
||||
@Operation(summary = "创建或者更新敏感词", description = "创建或者更新敏感词")
|
||||
public CommonResult<Boolean> createOrUpdate(@Valid @RequestBody ChatSensitiveSaveReqVo dto) {
|
||||
public CommonResult<Boolean> createOrUpdate(@Valid @RequestBody ChatSensitiveSaveReqVO dto) {
|
||||
return success(chatApi.sensitiveCreateOrUpdate(dto));
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -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.chat.friend.ChatAddFriendReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.friend.ChatAddFriendReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.ChatPrivateMessageSendReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.ChatPrivateMessageSendResVO;
|
||||
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
|
||||
@@ -43,12 +43,12 @@ public class AppChatController {
|
||||
public CommonResult<Boolean> createFeedback(@RequestParam("friendUserId") Long friendUserId) {
|
||||
Long currentUserId = getLoginUserId();
|
||||
// 相互添加一下好友
|
||||
ChatAddFriendReqVo self = new ChatAddFriendReqVo();
|
||||
ChatAddFriendReqVO self = new ChatAddFriendReqVO();
|
||||
self.setUserId(currentUserId);
|
||||
self.setTargetUserId(friendUserId);
|
||||
chatApi.addFriend(self);
|
||||
|
||||
ChatAddFriendReqVo target = new ChatAddFriendReqVo();
|
||||
ChatAddFriendReqVO target = new ChatAddFriendReqVO();
|
||||
target.setUserId(friendUserId);
|
||||
target.setTargetUserId(currentUserId);
|
||||
chatApi.addFriend(target);
|
||||
|
||||
+6
@@ -107,6 +107,12 @@ public class AppRecentController {
|
||||
return success(recentService.evaluatePage(dto));
|
||||
}
|
||||
|
||||
@PostMapping("/evaluate-detail")
|
||||
@Operation(summary = "我的评价总分数详情")
|
||||
public CommonResult<AppEvaluateDetailResVo> evaluateDetail() {
|
||||
return success(recentService.evaluateDetail(getLoginUserId()));
|
||||
}
|
||||
|
||||
@GetMapping("/getById")
|
||||
@Operation(summary = "根据id查询用户信息")
|
||||
public CommonResult<RecentPageResVo> getUserInfoById(@RequestParam("id") Long id) {
|
||||
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
package cn.iocoder.yudao.module.member.controller.app.recent.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 评价详情
|
||||
*/
|
||||
@Data
|
||||
public class AppEvaluateDetailResVo {
|
||||
|
||||
/**
|
||||
* 身材评分
|
||||
*/
|
||||
private Integer scoreSc = 0;
|
||||
|
||||
/**
|
||||
* 耐心评分
|
||||
*/
|
||||
private Integer scoreNx = 0;
|
||||
|
||||
/**
|
||||
* 爽快评分
|
||||
*/
|
||||
private Integer scoreSk = 0;
|
||||
|
||||
/**
|
||||
* 有趣评分
|
||||
*/
|
||||
private Integer scoreYq = 0;
|
||||
|
||||
/**
|
||||
* 综合评分
|
||||
*/
|
||||
private Integer avgScore = 0;
|
||||
|
||||
/**
|
||||
* 评价数量
|
||||
*/
|
||||
private Integer evaluateCount = 0;
|
||||
}
|
||||
+1
@@ -17,6 +17,7 @@ public interface PhotoMapper extends BaseMapperX<PhotoDO> {
|
||||
|
||||
default PageResult<PhotoDO> selectPage(PhotoPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<PhotoDO>()
|
||||
.eqIfPresent(PhotoDO::getMemberId, reqVO.getMemberId())
|
||||
.eqIfPresent(PhotoDO::getBizType, reqVO.getBizType())
|
||||
.eqIfPresent(PhotoDO::getAddress, reqVO.getAddress())
|
||||
.eqIfPresent(PhotoDO::getTagJson, reqVO.getTagJson())
|
||||
|
||||
+3
@@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationPageRe
|
||||
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.OperationTotalGroupRecentRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.RecentPageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppEvaluateDetailResVo;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.recent.OperationDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.recent.RecentDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
@@ -47,4 +48,6 @@ public interface OperationMapper extends BaseMapperX<OperationDO> {
|
||||
List<OperationTotalGroupRecentRespVO> totalGroupRecent(@Param("dto") OperationPageReqVO dto);
|
||||
|
||||
OperationTotalGroupRecentRespVO totalGroupRecentByUser(@Param("userId") Long userId);
|
||||
|
||||
AppEvaluateDetailResVo evaluateDetail(@Param("userId") Long userid);
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
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("al-config")
|
||||
@Data
|
||||
public class ThirdAlConfig {
|
||||
|
||||
/**
|
||||
* 阿里云 AccessKeyId
|
||||
*/
|
||||
private String accessKeyId;
|
||||
|
||||
/**
|
||||
* 阿里云 AccessKeySecret
|
||||
*/
|
||||
private String accessKeySecret;
|
||||
|
||||
/**
|
||||
* 阿里云人脸识别回调地址
|
||||
*/
|
||||
private String faceVerifyCallbackUrl;
|
||||
|
||||
/**
|
||||
* 阿里云人脸识别回调token
|
||||
*/
|
||||
private String faceVerifyCallbackToken;
|
||||
|
||||
}
|
||||
+3
-3
@@ -10,7 +10,7 @@ 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.chat.user.ChatLoginReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.ChatLoginRespVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.user.ChatLoginRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.user.vo.MemberUserUpdateReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.auth.vo.*;
|
||||
import cn.iocoder.yudao.module.member.convert.auth.AuthConvert;
|
||||
@@ -247,7 +247,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
||||
ChatLoginReqVO loginObj = new ChatLoginReqVO();
|
||||
loginObj.setTerminal(1);
|
||||
loginObj.setUserId(user.getId());
|
||||
ChatLoginRespVo login = chatApi.login(loginObj);
|
||||
ChatLoginRespVO login = chatApi.login(loginObj);
|
||||
if (ObjectUtil.isNotEmpty(login)) {
|
||||
serviceToken.setChatToken(BeanUtils.toBean(login, AppAuthLoginRespVO.ChatToken.class));
|
||||
}
|
||||
@@ -268,7 +268,7 @@ public class MemberAuthServiceImpl implements MemberAuthService {
|
||||
ChatLoginReqVO loginObj = new ChatLoginReqVO();
|
||||
loginObj.setTerminal(1);
|
||||
loginObj.setUserId(user.getId());
|
||||
ChatLoginRespVo login = chatApi.login(loginObj);
|
||||
ChatLoginRespVO login = chatApi.login(loginObj);
|
||||
if (ObjectUtil.isNotEmpty(login)) {
|
||||
serviceToken.setChatToken(BeanUtils.toBean(login, AppAuthLoginRespVO.ChatToken.class));
|
||||
}
|
||||
|
||||
+4
-5
@@ -3,8 +3,8 @@ 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.client.vo.txmap.geocoder.TxMapGeocoderReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.txmap.geocoder.TxMapGeocoderRespVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.user.MemberUserMapper;
|
||||
import cn.iocoder.yudao.module.member.enums.MemberErrorCode;
|
||||
@@ -22,7 +22,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.location.LocationMapper;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@@ -48,9 +47,9 @@ public class LocationServiceImpl implements LocationService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createLocation(LocationSaveReqVO dto) {
|
||||
if (!ObjectUtil.isAllNotEmpty(dto.getProvince(), dto.getCity(), dto.getDistrict())) {
|
||||
TxMapGeocoderRespVo geocoder = txMapApi.geocoder(TxMapGeocoderReqVo.builder().location(dto.getLat() + "," + dto.getLon()).build());
|
||||
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();
|
||||
TxMapGeocoderRespVO.AddressComponent addressComponent = geocoder.getAddress_component();
|
||||
dto.setProvince(addressComponent.getProvince());
|
||||
dto.setCity(addressComponent.getCity());
|
||||
dto.setDistrict(addressComponent.getDistrict());
|
||||
|
||||
+5
-13
@@ -3,13 +3,9 @@ package cn.iocoder.yudao.module.member.service.opentype;
|
||||
import cn.hutool.core.date.DatePattern;
|
||||
import cn.hutool.core.date.LocalDateTimeUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.ChatTableRespVO;
|
||||
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.privatemsg.ChatPrivateTotalMessageTotalReqVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateTotalMessageTotalResVo;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateTotalMessageTotalReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateTotalMessageTotalResVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.opentype.vo.AppPayOpenReqType;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.config.MemberConfigDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeUserDO;
|
||||
@@ -35,11 +31,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.opentype.OpenTypeMapper;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
@@ -194,21 +186,21 @@ public class OpenTypeServiceImpl implements OpenTypeService {
|
||||
LocalDateTime startDate = now.withHour(0).withMinute(0).withSecond(0);
|
||||
LocalDateTime endDate = now.withHour(23).withMinute(59).withSecond(59);
|
||||
|
||||
ChatPrivateTotalMessageTotalReqVo dto = new ChatPrivateTotalMessageTotalReqVo();
|
||||
ChatPrivateTotalMessageTotalReqVO dto = new ChatPrivateTotalMessageTotalReqVO();
|
||||
dto.setSendId(sendId);
|
||||
dto.setTimeRange(new String[]{
|
||||
LocalDateTimeUtil.format(startDate, DatePattern.NORM_DATETIME_PATTERN),
|
||||
LocalDateTimeUtil.format(endDate, DatePattern.NORM_DATETIME_PATTERN),
|
||||
});
|
||||
try {
|
||||
List<ChatPrivateTotalMessageTotalResVo> msgList = chatApi.privateTotal(dto);
|
||||
List<ChatPrivateTotalMessageTotalResVO> msgList = chatApi.privateTotal(dto);
|
||||
if (ObjectUtil.isEmpty(msgList)) return true;
|
||||
// 普通用户聊天人数是否超过上限
|
||||
if (msgList.size() > defaultChatUserCout) {
|
||||
throw exception(MemberErrorCode.CHAT_USER_COUNT_EXCEED);
|
||||
}
|
||||
// 聊天人数已经超过限制
|
||||
ChatPrivateTotalMessageTotalResVo targetCount = msgList.stream().filter(item -> ObjectUtil.equals(item.getSendId(), sendId) && ObjectUtil.equals(item.getReceiveId(), receiveId)).findFirst().orElse(null);
|
||||
ChatPrivateTotalMessageTotalResVO targetCount = msgList.stream().filter(item -> ObjectUtil.equals(item.getSendId(), sendId) && ObjectUtil.equals(item.getReceiveId(), receiveId)).findFirst().orElse(null);
|
||||
if (ObjectUtil.isEmpty(targetCount)) return true;
|
||||
if (targetCount.getMessageTotal() > defaultChatUserMsgCout) {
|
||||
throw exception(MemberErrorCode.CHAT_MSG_COUNT_EXCEED);
|
||||
|
||||
+1
-3
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.member.dal.dataobject.user.MemberUserDO;
|
||||
import cn.iocoder.yudao.module.member.enums.MemberErrorCode;
|
||||
import cn.iocoder.yudao.module.member.enums.photo.PhotoBizTypeEnum;
|
||||
import cn.iocoder.yudao.module.member.enums.photo.PhotoResourceTypeEnum;
|
||||
import cn.iocoder.yudao.module.member.service.thirdauth.ThirdAuthService;
|
||||
import cn.iocoder.yudao.module.member.client.service.ThirdAuthService;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -24,8 +24,6 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.photo.PhotoMapper;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
/**
|
||||
|
||||
+7
-4
@@ -5,10 +5,7 @@ import java.util.concurrent.ExecutionException;
|
||||
import javax.validation.*;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.recent.vo.*;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentOperateReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentQuickPageVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentViewRecordReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.recent.RecentDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
@@ -86,6 +83,11 @@ public interface RecentService {
|
||||
*/
|
||||
PageResult<OperationRespVO> evaluatePage(@Valid AppRecentLikeReqVo dto);
|
||||
|
||||
/**
|
||||
* 我的评价总分数详情
|
||||
*/
|
||||
AppEvaluateDetailResVo evaluateDetail(Long userId);
|
||||
|
||||
/**
|
||||
* 查询朋友圈用户
|
||||
*/
|
||||
@@ -95,4 +97,5 @@ public interface RecentService {
|
||||
* 朋友圈我喜欢的、喜欢我的等总数统计
|
||||
*/
|
||||
OperationTotalGroupRecentRespVO total(Long userId);
|
||||
|
||||
}
|
||||
+17
-1
@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.number.NumberUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.member.api.thirdauth.ThirdAuthVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppEvaluateDetailResVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentLikeReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentOperateReqVo;
|
||||
import cn.iocoder.yudao.module.member.controller.app.recent.vo.AppRecentQuickPageVO;
|
||||
@@ -21,7 +22,7 @@ import cn.iocoder.yudao.module.member.enums.MemberRecentOperateEnum;
|
||||
import cn.iocoder.yudao.module.member.enums.MemberRecentSceneEnum;
|
||||
import cn.iocoder.yudao.module.member.enums.tag.MemberRecentTagEnum;
|
||||
import cn.iocoder.yudao.module.member.service.location.LocationService;
|
||||
import cn.iocoder.yudao.module.member.service.thirdauth.ThirdAuthService;
|
||||
import cn.iocoder.yudao.module.member.client.service.ThirdAuthService;
|
||||
import cn.iocoder.yudao.module.member.service.user.MemberUserService;
|
||||
import cn.iocoder.yudao.module.system.enums.common.SexEnum;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
@@ -42,6 +43,8 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.member.dal.mysql.recent.RecentMapper;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -415,6 +418,19 @@ public class RecentServiceImpl implements RecentService {
|
||||
return new PageResult<>(resultList, pageList.getTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的评价总分数详情
|
||||
*/
|
||||
@Override
|
||||
public AppEvaluateDetailResVo evaluateDetail(Long userid) {
|
||||
AppEvaluateDetailResVo total = operationMapper.evaluateDetail(userid);
|
||||
if (ObjectUtil.isEmpty(total)) return new AppEvaluateDetailResVo();
|
||||
int allTotal = total.getScoreSc() + total.getScoreNx() + total.getScoreSk() + total.getScoreYq();
|
||||
int avgScore = new BigDecimal(allTotal).divide(BigDecimal.valueOf(4), 0, RoundingMode.HALF_UP).intValue();
|
||||
total.setAvgScore(avgScore);
|
||||
return total;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询朋友圈用户
|
||||
*/
|
||||
|
||||
+2
-3
@@ -9,9 +9,8 @@ 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.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.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.*;
|
||||
@@ -378,7 +377,7 @@ public class MemberUserServiceImpl implements MemberUserService {
|
||||
if (ObjectUtil.isEmpty(memberUser)) {
|
||||
return false;
|
||||
}
|
||||
ChatCreateOrUpdateUserReqVo chatUser = new ChatCreateOrUpdateUserReqVo();
|
||||
ChatCreateOrUpdateUserReqVO chatUser = new ChatCreateOrUpdateUserReqVO();
|
||||
chatUser.setUserId(memberUser.getId());
|
||||
chatUser.setUserName(memberUser.getNickname());
|
||||
chatUser.setPhone(memberUser.getMobile());
|
||||
|
||||
+10
-1
@@ -1,7 +1,6 @@
|
||||
<?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="cn.iocoder.yudao.module.member.dal.mysql.recent.OperationMapper">
|
||||
|
||||
<sql id="selectA">
|
||||
a.deleted = 0
|
||||
<if test="dto.memberRecentId != null">
|
||||
@@ -58,4 +57,14 @@
|
||||
and a.operator_member_id != a.member_id
|
||||
</select>
|
||||
|
||||
<select id="evaluateDetail"
|
||||
resultType="cn.iocoder.yudao.module.member.controller.app.recent.vo.AppEvaluateDetailResVo">
|
||||
select a.score_sc, a.score_nx, a.score_sk, score_yq, count(0) as evaluateCount
|
||||
from member_operation a
|
||||
where a.deleted = 0
|
||||
and a.biz_type = '7'
|
||||
and a.member_id = #{userId}
|
||||
and a.operator_member_id != a.member_id
|
||||
group by a.member_id
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -236,4 +236,10 @@ chat:
|
||||
tx-map:
|
||||
base-url: https://apis.map.qq.com
|
||||
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
|
||||
al-config:
|
||||
access-key-id: LTAI5tJ7sSxB96XaY9T3Vq3D
|
||||
access-key-secret: EVXWFTS2SB6UkjUVFLhTDBfIvIXgI3
|
||||
face-verify-callback-url: https://rj4jv5rwqs.by.takin.cc
|
||||
face-verify-callback-token: uVuYOzoiQBWPp4A5kPgTddZlKWoSQlzc
|
||||
@@ -258,4 +258,10 @@ chat:
|
||||
tx-map:
|
||||
base-url: https://apis.map.qq.com
|
||||
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
|
||||
al-config:
|
||||
access-key-id: LTAI5tJ7sSxB96XaY9T3Vq3D
|
||||
access-key-secret: EVXWFTS2SB6UkjUVFLhTDBfIvIXgI3
|
||||
face-verify-callback-url: https://rj4jv5rwqs.by.takin.cc
|
||||
face-verify-callback-token: uVuYOzoiQBWPp4A5kPgTddZlKWoSQlzc
|
||||
@@ -248,4 +248,10 @@ chat:
|
||||
tx-map:
|
||||
base-url: https://apis.map.qq.com
|
||||
app-key: GGCBZ-SVPWT-IO6XL-LHZ3I-YPMBS-O6B6D
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
app-secret: uYWt4DalxHgFnk6d9ul2KLdPVM1ABD9m
|
||||
|
||||
al-config:
|
||||
access-key-id: LTAI5tJ7sSxB96XaY9T3Vq3D
|
||||
access-key-secret: EVXWFTS2SB6UkjUVFLhTDBfIvIXgI3
|
||||
face-verify-callback-url: https://rj4jv5rwqs.by.takin.cc
|
||||
face-verify-callback-token: uVuYOzoiQBWPp4A5kPgTddZlKWoSQlzc
|
||||
Reference in new issue
Block a user