From 075f64ca2c669d7b9b798a930e80de85d2701d9b Mon Sep 17 00:00:00 2001 From: yangchen Date: Wed, 3 Apr 2024 20:07:09 +0800 Subject: [PATCH] =?UTF-8?q?REQ-2211:=20=E5=90=8C=E6=AD=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AEids=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/feign/DingDingAttendanceApi.java | 7 ++++++ .../client/req/ListUsersBySynIdsReq.java | 20 ++++++++++++++++ .../DingDingAttendanceController.java | 9 +++++++ .../DingDingAttendanceGroupService.java | 7 ++++++ .../DingDingAttendanceGroupServiceImpl.java | 24 +++++++++++++++++++ 5 files changed, 67 insertions(+) create mode 100644 riven-api/src/main/java/cn/axzo/riven/client/req/ListUsersBySynIdsReq.java diff --git a/riven-api/src/main/java/cn/axzo/riven/client/feign/DingDingAttendanceApi.java b/riven-api/src/main/java/cn/axzo/riven/client/feign/DingDingAttendanceApi.java index bf34a2b..fa09272 100644 --- a/riven-api/src/main/java/cn/axzo/riven/client/feign/DingDingAttendanceApi.java +++ b/riven-api/src/main/java/cn/axzo/riven/client/feign/DingDingAttendanceApi.java @@ -2,12 +2,16 @@ package cn.axzo.riven.client.feign; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.riven.client.req.CreateDingDingAttendanceGroupReq; +import cn.axzo.riven.client.req.ListUsersBySynIdsReq; import cn.axzo.riven.client.req.UpdateDingDingAttendanceGroupReq; import cn.axzo.riven.client.res.CreateDingDingAttendanceGroupRes; +import cn.axzo.riven.client.res.ThirdPartUserRes; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import java.util.List; + /** * @author yangchen@axzo.cn */ @@ -18,4 +22,7 @@ public interface DingDingAttendanceApi { @PostMapping("/api/dingDing/attendance/group/update") ApiResult attendanceGroupUpdate(@RequestBody UpdateDingDingAttendanceGroupReq req); + + @PostMapping("/api/dingDing/listUsersBySynIds") + ApiResult> listUsersBySynIds(@RequestBody ListUsersBySynIdsReq req); } diff --git a/riven-api/src/main/java/cn/axzo/riven/client/req/ListUsersBySynIdsReq.java b/riven-api/src/main/java/cn/axzo/riven/client/req/ListUsersBySynIdsReq.java new file mode 100644 index 0000000..a31766d --- /dev/null +++ b/riven-api/src/main/java/cn/axzo/riven/client/req/ListUsersBySynIdsReq.java @@ -0,0 +1,20 @@ +package cn.axzo.riven.client.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author yangchen@axzo.cn + */ +@Data +public class ListUsersBySynIdsReq { + /** + * 单位id + */ + private Long ouId; + /** + * 同步数据id + */ + private List synIds; +} diff --git a/riven-server/src/main/java/cn/axzo/riven/controller/DingDingAttendanceController.java b/riven-server/src/main/java/cn/axzo/riven/controller/DingDingAttendanceController.java index e0d180b..371e646 100644 --- a/riven-server/src/main/java/cn/axzo/riven/controller/DingDingAttendanceController.java +++ b/riven-server/src/main/java/cn/axzo/riven/controller/DingDingAttendanceController.java @@ -3,12 +3,16 @@ package cn.axzo.riven.controller; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.riven.client.feign.DingDingAttendanceApi; import cn.axzo.riven.client.req.CreateDingDingAttendanceGroupReq; +import cn.axzo.riven.client.req.ListUsersBySynIdsReq; import cn.axzo.riven.client.req.UpdateDingDingAttendanceGroupReq; import cn.axzo.riven.client.res.CreateDingDingAttendanceGroupRes; +import cn.axzo.riven.client.res.ThirdPartUserRes; import cn.axzo.riven.service.DingDingAttendanceGroupService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + /** * @author yangchen@axzo.cn */ @@ -28,4 +32,9 @@ public class DingDingAttendanceController implements DingDingAttendanceApi { dingDingAttendanceGroupService.attendanceGroupUpdate(req); return null; } + + @Override + public ApiResult> listUsersBySynIds(ListUsersBySynIdsReq req) { + return ApiResult.ok(dingDingAttendanceGroupService.listUsersBySynIds(req)); + } } diff --git a/riven-server/src/main/java/cn/axzo/riven/service/DingDingAttendanceGroupService.java b/riven-server/src/main/java/cn/axzo/riven/service/DingDingAttendanceGroupService.java index 6ab92d5..5f6c3a5 100644 --- a/riven-server/src/main/java/cn/axzo/riven/service/DingDingAttendanceGroupService.java +++ b/riven-server/src/main/java/cn/axzo/riven/service/DingDingAttendanceGroupService.java @@ -1,8 +1,13 @@ package cn.axzo.riven.service; +import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.riven.client.req.CreateDingDingAttendanceGroupReq; +import cn.axzo.riven.client.req.ListUsersBySynIdsReq; import cn.axzo.riven.client.req.UpdateDingDingAttendanceGroupReq; import cn.axzo.riven.client.res.CreateDingDingAttendanceGroupRes; +import cn.axzo.riven.client.res.ThirdPartUserRes; + +import java.util.List; /** * @author yangchen@axzo.cn @@ -11,4 +16,6 @@ public interface DingDingAttendanceGroupService { CreateDingDingAttendanceGroupRes attendanceGroupCreate(CreateDingDingAttendanceGroupReq req); void attendanceGroupUpdate(UpdateDingDingAttendanceGroupReq req); + + List listUsersBySynIds(ListUsersBySynIdsReq req); } diff --git a/riven-server/src/main/java/cn/axzo/riven/service/impl/DingDingAttendanceGroupServiceImpl.java b/riven-server/src/main/java/cn/axzo/riven/service/impl/DingDingAttendanceGroupServiceImpl.java index 01e465e..d148519 100644 --- a/riven-server/src/main/java/cn/axzo/riven/service/impl/DingDingAttendanceGroupServiceImpl.java +++ b/riven-server/src/main/java/cn/axzo/riven/service/impl/DingDingAttendanceGroupServiceImpl.java @@ -1,21 +1,29 @@ package cn.axzo.riven.service.impl; +import cn.axzo.basics.common.BeanMapper; +import cn.axzo.framework.data.mybatisplus.model.BaseEntity; import cn.axzo.framework.domain.web.code.BaseCode; import cn.axzo.riven.client.req.CreateDingDingAttendanceGroupReq; import cn.axzo.riven.client.req.DingDingPositionsReq; +import cn.axzo.riven.client.req.ListUsersBySynIdsReq; import cn.axzo.riven.client.req.UpdateDingDingAttendanceGroupReq; import cn.axzo.riven.client.res.CreateDingDingAttendanceGroupRes; +import cn.axzo.riven.client.res.ThirdPartUserRes; import cn.axzo.riven.common.util.Throws; import cn.axzo.riven.manger.DingDingNewSdkManger; import cn.axzo.riven.manger.DingDingOldSdkManger; import cn.axzo.riven.repository.entity.ThirdPartyCredential; +import cn.axzo.riven.repository.entity.ThirdPartyUser; import cn.axzo.riven.repository.service.ThirdPartyCredentialDao; +import cn.axzo.riven.repository.service.ThirdPartyUserDao; import cn.axzo.riven.service.DingDingAttendanceGroupService; +import cn.hutool.core.bean.BeanUtil; import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponseBody; import com.dingtalk.api.request.OapiAttendanceGroupAddRequest; import com.dingtalk.api.request.OapiAttendanceGroupModifyRequest; import com.dingtalk.api.response.OapiAttendanceGroupAddResponse; import com.google.common.collect.Lists; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -33,6 +41,8 @@ public class DingDingAttendanceGroupServiceImpl implements DingDingAttendanceGro private DingDingNewSdkManger dingDingNewSdkManger; @Autowired private DingDingOldSdkManger dingDingOldSdkManger; + @Autowired + private ThirdPartyUserDao thirdPartyUserDao; @Override public CreateDingDingAttendanceGroupRes attendanceGroupCreate(CreateDingDingAttendanceGroupReq req) { @@ -108,4 +118,18 @@ public class DingDingAttendanceGroupServiceImpl implements DingDingAttendanceGro dingDingOldSdkManger.attendanceGroupModify(accessToken.getAccessToken(), oapiAttendanceGroupModifyRequest); } + + @Override + public List listUsersBySynIds(ListUsersBySynIdsReq req) { + List list = thirdPartyUserDao + .lambdaQuery() + .in(BaseEntity::getId, req.getSynIds()) + .eq(ThirdPartyUser::getOuId, req.getOuId()) + .eq(ThirdPartyUser::getChannel, "DingTalk") + .list(); + if(CollectionUtils.isEmpty(list)) { + return new ArrayList<>(); + } + return BeanMapper.copyList(list, ThirdPartUserRes.class); + } }