Просмотр исходного кода

企微主体同步部门信息

ct 1 месяц назад
Родитель
Сommit
e7d1a01019

+ 6 - 2
fs-admin/src/main/java/com/fs/qw/controller/QwCompanyController.java

@@ -30,6 +30,8 @@ import com.fs.qw.service.IQwCompanyService;
 import com.fs.common.utils.poi.ExcelUtil;
 import com.fs.common.core.page.TableDataInfo;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
  * 企微主体Controller
  *
@@ -140,9 +142,11 @@ public class QwCompanyController extends BaseController
     @PreAuthorize("@ss.hasPermi('qw:qwCompany:remove')")
     @Log(title = "企微主体", businessType = BusinessType.DELETE, isStoreLog = true)
 	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
+    public AjaxResult remove(@PathVariable Long[] ids, HttpServletRequest request)
     {
-        return toAjax(qwCompanyService.deleteQwCompanyByIds(ids));
+        String tenantCode = request.getHeader("Tenant-Code");
+
+        return toAjax(qwCompanyService.deleteQwCompanyByIds(ids,tenantCode));
     }
 
     /**

+ 2 - 2
fs-service/src/main/java/com/fs/qw/service/IQwCompanyService.java

@@ -56,7 +56,7 @@ public interface IQwCompanyService
      * @param ids 需要删除的企微主体主键集合
      * @return 结果
      */
-    public int deleteQwCompanyByIds(Long[] ids);
+    public int deleteQwCompanyByIds(Long[] ids,String tenantCode);
 
     /**
      * 删除企微主体信息
@@ -64,7 +64,7 @@ public interface IQwCompanyService
      * @param id 企微主体主键
      * @return 结果
      */
-    public int deleteQwCompanyById(Long id);
+    public int deleteQwCompanyById(Long id,String tenantCode);
 
     List<QwOptionsVO> selectQwCompanyListOptionsVO(Long userId, Long deptId);
 

+ 66 - 4
fs-service/src/main/java/com/fs/qw/service/impl/QwCompanyServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.utils.DateUtils;
+import com.fs.common.utils.StringUtils;
 import com.fs.qw.domain.QwCompany;
 import com.fs.qw.mapper.QwCompanyMapper;
 import com.fs.qw.param.QwCompanyTenantSetParam;
@@ -119,8 +120,27 @@ public class QwCompanyServiceImpl implements IQwCompanyService
      * @return 结果
      */
     @Override
-    public int deleteQwCompanyByIds(Long[] ids)
+    public int deleteQwCompanyByIds(Long[] ids,String tenantCode)
     {
+        if (StringUtils.isNotBlank(tenantCode) && "undefined".equals(tenantCode)) {
+            if (ids != null){
+                for (Long id : ids) {
+                    QwCompany qwCompany = selectQwCompanyById(id);
+                    Long tenantId = qwCompany.getTenantId();
+                    if (tenantId != null){
+                        TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoById(tenantId.toString());
+                        if (tenantInfo != null) {
+                            try {
+                                deleteQwCompanyInTenantDatabase(tenantInfo, qwCompany);
+                            } catch (Exception e) {
+                                log.error("停用租户企微主体失败:{}",e.getMessage());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
         return qwCompanyMapper.deleteQwCompanyByIds(ids);
     }
 
@@ -131,8 +151,22 @@ public class QwCompanyServiceImpl implements IQwCompanyService
      * @return 结果
      */
     @Override
-    public int deleteQwCompanyById(Long id)
+    public int deleteQwCompanyById(Long id,String tenantCode)
     {
+        if (StringUtils.isNotBlank(tenantCode) && "undefined".equals(tenantCode)) {
+            QwCompany qwCompany = selectQwCompanyById(id);
+            Long tenantId = qwCompany.getTenantId();
+            if (tenantId != null){
+                TenantInfo tenantInfo = tenantInfoMapper.selectTenantInfoById(tenantId.toString());
+                if (tenantInfo != null) {
+                    try {
+                        deleteQwCompanyInTenantDatabase(tenantInfo, qwCompany);
+                    } catch (Exception e) {
+                        log.error("停用租户企微主体失败:{}",e.getMessage());
+                    }
+                }
+            }
+        }
         return qwCompanyMapper.deleteQwCompanyById(id);
     }
 
@@ -180,6 +214,35 @@ public class QwCompanyServiceImpl implements IQwCompanyService
         return R.ok();
     }
 
+    /**
+     * 在租户库中按 corpId 停用企微主体。
+     * 直接走 Mapper,避免复用 updateQwCompany 时用租户库主键覆盖按 corpId 缓存的 Redis。
+     */
+    private boolean deleteQwCompanyInTenantDatabase(TenantInfo tenantInfo, QwCompany masterCompany) {
+        if (!switchToTenantDataSource(tenantInfo)) {
+            return false;
+        }
+        boolean flag = false;
+        try {
+            String corpId = masterCompany.getCorpId();
+            QwCompany tenantRow = qwCompanyMapper.selectQwCompanyByCorpId(corpId);
+            if (tenantRow != null) {
+                tenantRow.setId(tenantRow.getId());
+                tenantRow.setStatus(0L);
+                tenantRow.setUpdateTime(DateUtils.getNowDate());
+                tenantRow.setUpdateBy("master");
+
+                qwCompanyMapper.updateQwCompany(tenantRow);
+            }
+            flag = true;
+        } catch (Exception e) {
+            log.error("同步 qw_company 到租户库失败 tenantId={}, corpId={}", tenantInfo.getId(), masterCompany.getCorpId(), e);
+        } finally {
+            clearTenantDataSourceType();
+        }
+        return flag;
+    }
+
     /**
      * 在租户库中按 corpId 同步企微主体:已存在则更新,否则新增。
      * 直接走 Mapper,避免复用 updateQwCompany 时用租户库主键覆盖按 corpId 缓存的 Redis。
@@ -192,9 +255,8 @@ public class QwCompanyServiceImpl implements IQwCompanyService
         try {
             String corpId = masterCompany.getCorpId();
             QwCompany tenantRow = qwCompanyMapper.selectQwCompanyByCorpId(corpId);
-            Long tenantPk = tenantInfo.getId();
             if (tenantRow != null) {
-                tenantRow.setId(tenantPk);
+                tenantRow.setId(tenantRow.getId());
                 tenantRow.setCorpId(masterCompany.getCorpId());
                 tenantRow.setCorpName(masterCompany.getCorpName());
                 tenantRow.setOpenSecret(masterCompany.getOpenSecret());

+ 1 - 1
fs-service/src/main/java/com/fs/qwApi/service/impl/QwApiServiceImpl.java

@@ -1576,7 +1576,7 @@ public class QwApiServiceImpl implements QwApiService {
         HttpClient httpClient = HttpClients.createDefault();
         try {
             URIBuilder builder = new URIBuilder(QwApiConfig.getDepartmentList);
-            builder.setParameter("access_token", getToken(corpId,bookSecret));
+            builder.setParameter("access_token", getToken(corpId,qwCompany.getPermanentCode()));
             URI uri = builder.build();
             HttpGet httpGet = new HttpGet(uri);
             HttpResponse response = httpClient.execute(httpGet);