From 2f13f59f023fba63aa993172d48c14bcaaafb233 Mon Sep 17 00:00:00 2001
From: liusheng <337615773@qq.com>
Date: 星期四, 16 五月 2024 13:53:34 +0800
Subject: [PATCH] 代码提交

---
 ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java    |  105 +++++++++++++-
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                        |   18 ++
 ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml       |    3 
 ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml     |    3 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingUserInfoVo.java            |   38 +++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java     |   20 ++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingDetpInfoVo.java            |   50 +++++++
 ruoyi-project/src/main/resources/mapper/project/ServiceDonatecompletioninfoMapper.xml  |    5 
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java     |   12 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java      |   24 +++
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java       |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java            |   14 ++
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java                  |    8 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java      |    3 
 ruoyi-project/src/main/resources/mapper/project/ServiceRelativesconfirmationMapper.xml |    5 
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java         |    3 
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java           |   60 +-------
 ruoyi-project/pom.xml                                                                  |    7 
 ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java             |   12 +
 ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java    |    3 
 20 files changed, 319 insertions(+), 77 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java
index 9bebbd1..9a3a4f5 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/DingTalkController.java
@@ -1,5 +1,7 @@
 package com.ruoyi.web.controller.project;
 
+import com.aliyun.dingtalkoauth2_1_0.models.GetSsoUserInfoResponseBody;
+import com.aliyun.tea.Validation;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.project.domain.vo.DingTalkReqVo;
@@ -11,10 +13,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.PropertySource;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 閽夐拤鎺ュ彛
@@ -55,5 +54,18 @@
         return error();
     }
 
+    /**
+     * 缁欓儴闂ㄤ笅鐨勭敤鎴蜂俊鎭祴dingUserId,骞惰褰曞埌sys_user琛ㄤ腑
+     *
+     * @param deptID
+     * @return
+     */
+    @ApiOperation("缁欓儴闂ㄤ笅鐨勭敤鎴蜂俊鎭祴dingUserId")
+    @GetMapping("/deptidList/{deptID}")
+    public AjaxResult deptidList(@PathVariable("deptID") Long deptID) {
+        dingTalkService.deptidList(deptID, 1);
+        return success();
+    }
+
 }
 
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 6328a4c..ba0c22b 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -1,12 +1,19 @@
 package com.ruoyi.web.controller.system;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
 
+import com.aliyun.dingtalkoauth2_1_0.models.GetSsoUserInfoResponseBody;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.model.LoginBodyByOpenID;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.project.service.DingTalkService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -39,6 +46,9 @@
     @Autowired
     private SysPermissionService permissionService;
 
+    @Autowired
+    private DingTalkService dingTalkService;
+
 
     /**
      * 寰俊OpenID鐧诲綍鏂规硶
@@ -55,7 +65,6 @@
         return ajax;
     }
 
-
     /**
      * 鐧诲綍鏂规硶
      *
@@ -67,8 +76,19 @@
     @PostMapping("/login")
     public AjaxResult login(@RequestBody LoginBody loginBody) {
         AjaxResult ajax = AjaxResult.success();
+//        dingTalkService.deptidList(1L, 1);
+        Map<String, Object> userIdMap = null;
+        if (StringUtils.isNotEmpty(loginBody.getAuthCode())) {
+            Map<String, Object> map = dingTalkService.noLogin(loginBody.getAuthCode());
+            userIdMap = (Map<String, Object>) map.get("result");
+        }
         // 鐢熸垚浠ょ墝
-        String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid(), loginBody.getOpenid());
+        String token = null;
+        if (!ObjectUtils.isEmpty(userIdMap)) {
+            token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid(), loginBody.getOpenid(), userIdMap.get("userid").toString());
+        } else {
+            token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), loginBody.getUuid(), loginBody.getOpenid(), null);
+        }
 
         ajax.put(Constants.TOKEN, token);
         return ajax;
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 26f7b38..8984cc4 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -153,10 +153,24 @@
      */
     private String errorTimes;
 
+
+    /**
+     * 閽夐拤userID
+     */
+    private String dingUserId;
+
     public SysUser() {
 
     }
 
+    public String getDingUserId() {
+        return dingUserId;
+    }
+
+    public void setDingUserId(String dingUserId) {
+        this.dingUserId = dingUserId;
+    }
+
     public int getErrorNums() {
         return errorNums;
     }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
index 961e53d..9058533 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
@@ -1,12 +1,14 @@
 package com.ruoyi.common.core.domain.model;
 
+import lombok.Data;
+
 /**
  * 鐢ㄦ埛鐧诲綍瀵硅薄
- * 
+ *
  * @author ruoyi
  */
-public class LoginBody
-{
+@Data
+public class LoginBody {
 
     /**
      * 寰俊OpenID
@@ -33,54 +35,10 @@
     private String uuid = "";
 
 
+    /**
+     * 鍏嶇櫥鎺堟潈鐮�
+     */
+    private String authCode;
 
 
-
-    public String getUsername()
-    {
-        return username;
-    }
-
-    public void setUsername(String username)
-    {
-        this.username = username;
-    }
-
-    public String getPassword()
-    {
-        return password;
-    }
-
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    public String getCode()
-    {
-        return code;
-    }
-
-    public void setCode(String code)
-    {
-        this.code = code;
-    }
-
-    public String getUuid()
-    {
-        return uuid;
-    }
-
-    public void setUuid(String uuid)
-    {
-        this.uuid = uuid;
-    }
-
-    public String getOpenid() {
-        return openid;
-    }
-
-    public void setOpenid(String openid) {
-        this.openid = openid;
-    }
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 6e79b6e..dcbdfd2 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -66,7 +66,17 @@
      * @param uuid     鍞竴鏍囪瘑
      * @return 缁撴灉
      */
-    public String login(String username, String password, String code, String uuid, String openId) {
+    public String login(String username, String password, String code, String uuid, String openId, String dingUserId) {
+        //鍏嶇櫥
+        if (StringUtils.isNotEmpty(dingUserId)) {
+            SysUser sysUser = sysUserMapper.selectUserByDingUserId(dingUserId);
+            LoginUser loginUser = new LoginUser();
+            loginUser.setUserId(sysUser.getUserId());
+            loginUser.setDeptId(sysUser.getDeptId());
+            loginUser.setUser(sysUser);
+            return tokenService.createToken(loginUser);
+        }
+
         SysUser sysUser = sysUserMapper.selectUserByUserName(username);
         if (sysUser.getErrorNums() >= 3) {
             //鏍¢獙澶辫触娆℃暟
diff --git a/ruoyi-project/pom.xml b/ruoyi-project/pom.xml
index 820fe03..5d89934 100644
--- a/ruoyi-project/pom.xml
+++ b/ruoyi-project/pom.xml
@@ -48,6 +48,11 @@
             <artifactId>fastjson2</artifactId>
             <version>2.0.25</version>
         </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dingtalk</artifactId>
+            <version>2.1.14</version>
+        </dependency>
     </dependencies>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingDetpInfoVo.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingDetpInfoVo.java
new file mode 100644
index 0000000..2ac55d9
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingDetpInfoVo.java
@@ -0,0 +1,50 @@
+package com.ruoyi.project.domain.vo;
+
+import com.ruoyi.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 閽夐拤娑堟伅鍙戦��
+ *
+ * @author ls
+ * @date 2023-07-14
+ */
+@Data
+@ApiModel(value = "DingDeptInfoVo", description = "閽夐拤閮ㄩ棬淇℃伅")
+public class DingDetpInfoVo {
+
+    /**
+     * 鏄惁鑷姩娣诲姞鐢ㄦ埛
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鎵嬫満鍙�")
+    private Boolean auto_add_user;
+
+    /**
+     * 鏄惁鍒涘缓閮ㄩ棬鍒嗙粍
+     */
+    @ApiModelProperty(value = "閮ㄩ棬ID")
+    private Boolean create_dept_group;
+
+    /**
+     * 閮ㄩ棬ID
+     */
+    @ApiModelProperty(value = "鍙戦�佹秷鎭殑鏍囬")
+    private Integer dept_id;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    @ApiModelProperty(value = "璺宠浆url")
+    private String name;
+
+    /**
+     * 鐖秈d
+     */
+    @ApiModelProperty(value = "璺宠浆url")
+    private String parent_id;
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingUserInfoVo.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingUserInfoVo.java
new file mode 100644
index 0000000..db6e0d9
--- /dev/null
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DingUserInfoVo.java
@@ -0,0 +1,38 @@
+package com.ruoyi.project.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 閽夐拤娑堟伅鍙戦��
+ *
+ * @author ls
+ * @date 2023-07-14
+ */
+@Data
+@ApiModel(value = "DingUserInfoVo", description = "閽夐拤鐢ㄦ埛淇℃伅")
+public class DingUserInfoVo {
+
+    /**
+     * 鐢ㄦ埛鎵嬫満鍙�
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛鎵嬫満鍙�")
+    private String mobile;
+
+    /**
+     * 鏄惁鍒涘缓閮ㄩ棬鍒嗙粍
+     */
+    @ApiModelProperty(value = "濮撳悕")
+    private String name;
+
+    /**
+     * 鐢ㄦ埛ID
+     */
+    @ApiModelProperty(value = "鐢ㄦ埛ID")
+    private String userid;
+
+
+    private String unionid;
+
+}
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java
index 5106455..2944fb8 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationCompletionVO.java
@@ -35,6 +35,9 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date reporttime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date donatetime;
     private Long dcid;
     private Long infoid;
     private String dcdonorno;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java
index 0a14c28..2c6153f 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/DonationWitnessVO.java
@@ -28,6 +28,9 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date reporttime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date donatetime;
     private Long dwid;
     private Long infoid;
     private String gainhospitalno;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java
index df6f97c..7beb664 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/MedicalEvaluationVO.java
@@ -33,6 +33,9 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date reporttime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date donatetime;
     private Long meid;
     private Long infoid;
     private String hospitalassesscontent;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java
index e210c1b..4ef4b85 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/domain/vo/RelativeConfirmationVO.java
@@ -42,6 +42,9 @@
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date reporttime;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date donatetime;
     private String donorno;
     private String treatmenthospitalno;
     private String treatmenthospitalname;
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java
index 02e099f..174068b 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/DingTalkService.java
@@ -1,6 +1,9 @@
 package com.ruoyi.project.service;
 
+import com.aliyun.dingtalkoauth2_1_0.models.GetSsoUserInfoResponseBody;
 import com.ruoyi.project.domain.vo.DingTalkReqVo;
+
+import java.util.Map;
 
 /**
  * 瀹f暀鍒嗙被Service鎺ュ彛
@@ -15,4 +18,13 @@
      * @param dingTalkReqVo
      */
     Boolean sendNotification(DingTalkReqVo dingTalkReqVo);
+
+    Map<String, Object> noLogin(String code);
+
+    /**
+     *
+     * @param deptID 閮ㄩ棬ID
+     * @param begin  棣栨寮�濮嬬姸鎬侊紝涓嶈兘绛変簬2
+     */
+    public void deptidList(Long deptID, Integer begin);
 }
diff --git a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
index 92ea7e4..99fb158 100644
--- a/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
+++ b/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/DingTalkServiceImpl.java
@@ -2,22 +2,25 @@
 
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.dingtalk.api.DefaultDingTalkClient;
 import com.dingtalk.api.DingTalkClient;
-import com.dingtalk.api.request.OapiGettokenRequest;
-import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
-import com.dingtalk.api.request.OapiUserListidRequest;
-import com.dingtalk.api.request.OapiV2UserGetbymobileRequest;
-import com.dingtalk.api.response.OapiGettokenResponse;
-import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
-import com.dingtalk.api.response.OapiUserListidResponse;
-import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
+import com.dingtalk.api.request.*;
+import com.dingtalk.api.response.*;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.http.HttpUtils;
+import com.ruoyi.project.domain.vo.DingDetpInfoVo;
 import com.ruoyi.project.domain.vo.DingTalkReqVo;
+import com.ruoyi.project.domain.vo.DingUserInfoVo;
 import com.ruoyi.project.service.DingTalkService;
+import com.ruoyi.system.mapper.SysUserMapper;
 import com.taobao.api.ApiException;
-import lombok.Data;
 import lombok.extern.log4j.Log4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -47,6 +50,9 @@
 
     @Value("${agentId}")
     private Long agentId;
+
+    @Autowired
+    private SysUserMapper sysUserMapper;
 
     @Override
     public Boolean sendNotification(DingTalkReqVo dingTalkReqVo) {
@@ -160,6 +166,86 @@
         return result;
     }
 
+    /**
+     * 鍏嶇櫥闄嗘帴鍙�
+     *
+     * @param authCode
+     * @return
+     */
+    public Map<String, Object> noLogin(String authCode) {
+        try {
+            String urlString = "https://oapi.dingtalk.com/topapi/v2/user/getuserinfo";
+            String params = "access_token=" + getAccessToken() + "&code=" + authCode;
+            String result = HttpUtils.sendPost(urlString, params);
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> map = objectMapper.readValue(result, Map.class);
+            return map;
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            new BaseException("鐧诲綍鍑哄紓甯镐簡锛岃鑱旂郴绠$悊鍛樺鐞�");
+        }
+        return null;
+    }
+
+    @Override
+    public void deptidList(Long deptID, Integer begin) {
+        try {
+            //鏍规嵁浼犺繃鏉ョ殑閮ㄩ棬ID锛屽幓鑾峰彇璇ラ儴闂ㄤ笅鐨勭敤鎴蜂俊鎭�
+            if (begin != 1) DingUserInfoList(deptID);
+            //鑾峰彇瀛愰儴闂ㄧ殑dept_id
+            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/department/listsub");
+            OapiV2DepartmentListsubRequest req = new OapiV2DepartmentListsubRequest();
+            req.setDeptId(deptID);
+            req.setLanguage("zh_CN");
+            OapiV2DepartmentListsubResponse rsp = client.execute(req, getAccessToken());
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class);
+            if (ObjectUtils.isNotEmpty(map)) {
+                List<Map<String, Object>> dingDetpInfoList = (List<Map<String, Object>>) map.get("result");
+                if (Integer.valueOf(map.get("errcode").toString()) == 0) {
+                    for (int i = 0; i < dingDetpInfoList.size(); i++) {
+                        Map<String, Object> map1 = dingDetpInfoList.get(i);
+                        deptidList(Long.valueOf(map1.get("dept_id").toString()), 2);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            new BaseException("鐧诲綍鍑哄紓甯镐簡锛岃鑱旂郴绠$悊鍛樺鐞�");
+        }
+    }
+
+    public void DingUserInfoList(Long deptId) {
+        DingTalkClient client = null;
+        try {
+            client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/list?access_token=" + getAccessToken());
+            OapiV2UserListRequest req = new OapiV2UserListRequest();
+            req.setDeptId(deptId);
+            req.setCursor(0L);
+            req.setSize(100L);
+            req.setLanguage("zh_CN");
+            OapiV2UserListResponse rsp = client.execute(req, "");
+            //鑾峰彇resp閲岀殑鐢ㄦ埛淇℃伅闆嗗悎
+            ObjectMapper objectMapper = new ObjectMapper();
+            Map<String, Object> map = objectMapper.readValue(rsp.getBody(), Map.class);
+            Map<String, Object> mapResult = (Map<String, Object>) map.get("result");
+            List<Map<String, Object>> userInfoMapList = (List<Map<String, Object>>) mapResult.get("list");
+            if (!CollectionUtils.isEmpty(userInfoMapList)) {
+                //鏍规嵁鎵嬫満鍙凤紝灏唘serID鍐欒繘瀵瑰簲鐨勫瓧娈典笂
+                for (Map<String, Object> objectMap : userInfoMapList) {
+                    SysUser sysUser = new SysUser();
+                    sysUser.setPhonenumber(objectMap.get("mobile").toString());
+                    sysUser.setDingUserId(objectMap.get("userid").toString());
+                    sysUserMapper.updateUser(sysUser);
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
 
     /**
      * 鑾峰彇 access_token
@@ -176,4 +262,5 @@
         OapiGettokenResponse response = client.execute(request);
         return response.getAccessToken();
     }
+
 }
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonatecompletioninfoMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatecompletioninfoMapper.xml
index c113b15..3ff21a4 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonatecompletioninfoMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonatecompletioninfoMapper.xml
@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.mapper.ServiceDonatecompletioninfoMapper">
-    
+
     <resultMap type="com.ruoyi.project.domain.ServiceDonatecompletioninfo" id="ServiceDonatecompletioninfoResult">
         <result property="id"    column="ID"    />
         <result property="infoid"    column="InfoID"    />
@@ -75,6 +75,7 @@
         `service_donatebaseinfo`.`create_by` AS `basecreateby`,
         `service_donatebaseinfo`.`workflow` AS `workflow`,
         `service_donatebaseinfo`.`termination_case` AS `terminationCase`,
+        `service_donatebaseinfo`.`donatetime` AS `donatetime`,
         `service_donatecompletioninfo`.`ID` AS `dcID`,
         `service_donatecompletioninfo`.`InfoID` AS `InfoID`,
         `service_donatecompletioninfo`.`DonorNo` AS `dcDonorNo`,
@@ -150,4 +151,4 @@
         where InfoID = #{infoid}
     </update>
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
index 3c78bbc..6071d8c 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceDonationwitnessMapper.xml
@@ -121,6 +121,7 @@
         `service_donatebaseinfo`.`create_by` AS `basecreateby`,
         `service_donatebaseinfo`.`workflow` AS `workflow`,
         `service_donatebaseinfo`.`termination_case` AS `terminationCase`,
+        `service_donatebaseinfo`.`donatetime` AS `donatetime`,
         `service_donationwitness`.`ID` AS `dwID`,
         `service_donationwitness`.`InfoID` AS `InfoID`,
         `service_donationwitness`.`DonorNo` AS `dwDonorNo`,
@@ -270,4 +271,4 @@
     </select>
 
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml
index d0b44d5..e2696ba 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceMedicalevaluationMapper.xml
@@ -71,6 +71,7 @@
         `service_donatebaseinfo`.`create_by` AS `basecreateby`,
         `service_donatebaseinfo`.`workflow` AS `workflow`,
         `service_donatebaseinfo`.`termination_case` AS `terminationCase`,
+        `service_donatebaseinfo`.`donatetime` AS `donatetime`,
         `service_medicalevaluation`.`ID` AS `meID`,
         `service_medicalevaluation`.`HospitalAssessContent` AS `HospitalAssessContent`,
         `service_medicalevaluation`.`HospitalAssessConclusion` AS `HospitalAssessConclusion`,
@@ -126,4 +127,4 @@
         where CoreTeamAssessTime >= #{starttime} and CoreTeamAssessTime &lt;= #{endtime}
     </select>
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ruoyi-project/src/main/resources/mapper/project/ServiceRelativesconfirmationMapper.xml b/ruoyi-project/src/main/resources/mapper/project/ServiceRelativesconfirmationMapper.xml
index 0211b64..9a6d0be 100644
--- a/ruoyi-project/src/main/resources/mapper/project/ServiceRelativesconfirmationMapper.xml
+++ b/ruoyi-project/src/main/resources/mapper/project/ServiceRelativesconfirmationMapper.xml
@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.mapper.ServiceRelativesconfirmationMapper">
-    
+
     <resultMap type="com.ruoyi.project.domain.ServiceRelativesconfirmation" id="ServiceRelativesconfirmationResult">
         <result property="id"    column="ID"    />
         <result property="infoid"    column="InfoID"    />
@@ -106,6 +106,7 @@
         `service_donatebaseinfo`.`create_by` AS `basecreateby`,
         `service_donatebaseinfo`.`workflow` AS `workflow`,
         `service_donatebaseinfo`.`termination_case` AS `terminationCase`,
+        `service_donatebaseinfo`.`donatetime` AS `donatetime`,
         `service_relativesconfirmation`.`ID` AS `rcID`,
         `service_relativesconfirmation`.`InfoID` AS `InfoID`,
         `service_relativesconfirmation`.`DonorNo` AS `rcDonroNo`,
@@ -183,4 +184,4 @@
         where SignDate >= #{starttime} and SignDate &lt;= #{endtime}
     </select>
 
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index 8c49d68..cb58f46 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -47,6 +47,14 @@
     public SysUser selectUserByUserName(String userName);
 
     /**
+     * 閫氳繃閽夐拤鐢ㄦ埛id
+     *
+     * @param dingUserId 鐢ㄦ埛鍚�
+     * @return 鐢ㄦ埛瀵硅薄淇℃伅
+     */
+    public SysUser selectUserByDingUserId(String dingUserId);
+
+    /**
      * 閫氳繃寰俊OpenID鏌ヨ鐢ㄦ埛
      *
      * @param openid 寰俊OpenID
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 1fc0b8f..b3030a9 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -27,6 +27,7 @@
         <result property="errorNums" column="error_nums"/>
         <result property="errorTimes" column="error_times"/>
         <result property="standardlevel" column="standardlevel"/>
+        <result property="dingUserId" column="ding_user_id"/>
         <association property="dept" column="dept_id" javaType="com.ruoyi.common.core.domain.entity.SysDept"
                      resultMap="deptResult"/>
         <collection property="roles" javaType="java.util.List" resultMap="RoleResult"/>
@@ -54,6 +55,7 @@
         select u.user_id,
                u.openid,
                u.dept_id,
+               u.ding_user_id,
                u.error_nums,
                u.error_times,
                u.user_name,
@@ -90,7 +92,8 @@
     </sql>
 
     <select id="selectUserList" parameterType="com.ruoyi.common.core.domain.entity.SysUser" resultMap="SysUserResult">
-        select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
+        select u.user_id,u.ding_user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber,
+        u.password, u.sex,
         u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.standardlevel,
         d.dept_name, d.leader from sys_user u
         left join sys_dept d on u.dept_id = d.dept_id
@@ -163,6 +166,10 @@
         <include refid="selectUserVo"/>
         where u.user_name = #{userName}
     </select>
+    <select id="selectUserByDingUserId" parameterType="String" resultMap="SysUserResult">
+        <include refid="selectUserVo"/>
+        where u.ding_user_id = #{dingUserId}
+    </select>
 
     <select id="selectUserByOpenID" parameterType="String" resultMap="SysUserResult">
         <include refid="selectUserVo"/>
@@ -211,6 +218,7 @@
         <if test="status != null and status != ''">status,</if>
         <if test="createBy != null and createBy != ''">create_by,</if>
         <if test="remark != null and remark != ''">remark,</if>
+        <if test="dingUserId != null and dingUserId != ''">ding_user_id,</if>
         create_time
         )values(
         <if test="userId != null and userId != ''">#{userId},</if>
@@ -225,6 +233,7 @@
         <if test="status != null and status != ''">#{status},</if>
         <if test="createBy != null and createBy != ''">#{createBy},</if>
         <if test="remark != null and remark != ''">#{remark},</if>
+        <if test="dingUserId != null and dingUserId != ''">#{dingUserId},</if>
         sysdate()
         )
     </insert>
@@ -247,9 +256,12 @@
             <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
             <if test="remark != null">remark = #{remark},</if>
             <if test="errorNums != null">error_nums = #{errorNums},</if>
+            <if test="dingUserId != null and dingUserId != ''">ding_user_id = #{dingUserId},</if>
             update_time = sysdate()
         </set>
-        where user_id = #{userId}
+        where del_flag=0
+        <if test="userId != null and userId != ''">and user_id = #{userId}</if>
+        <if test="phonenumber != null and phonenumber != ''">and phonenumber = #{phonenumber}</if>
     </update>
 
     <update id="updateUserStatus" parameterType="com.ruoyi.common.core.domain.entity.SysUser">
@@ -264,7 +276,7 @@
         where user_name = #{userName}
     </update>
 
-    <update id="resetUserPwd" parameterType="SysUser">
+    <update id="resetUserPwd" parameterType="com.ruoyi.common.core.domain.entity.SysUser">
         update sys_user
         set password = #{password}
         where user_name = #{userName}

--
Gitblit v1.9.3