浏览代码

fjnx 同步用户

zhulu 2 年之前
父节点
当前提交
c974a23993
共有 21 个文件被更改,包括 531 次插入217 次删除
  1. 23 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteUserService.java
  2. 13 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java
  3. 13 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteUserFallbackFactory.java
  4. 34 27
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/controller/FjnxSyncController.java
  5. 1 2
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/domain/FjnxOrg.java
  6. 113 0
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/domain/FjnxUser.java
  7. 2 2
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/mapper/FjnxOrgMapper.java
  8. 18 0
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/mapper/FjnxUserMapper.java
  9. 2 2
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/IFJNXOrgService.java
  10. 16 0
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/IFJNXUserService.java
  11. 4 4
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXOrgServiceImpl.java
  12. 184 172
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXSyncServiceImpl.java
  13. 20 0
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXUserServiceImpl.java
  14. 4 4
      soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXUserSyncServiceImpl.java
  15. 1 1
      soc-modules/soc-modules-sync/src/main/resources/mapper/FjnxOrgMapper.xml
  16. 7 0
      soc-modules/soc-modules-sync/src/main/resources/mapper/FjnxUserMapper.xml
  17. 27 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  18. 3 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java
  19. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java
  20. 12 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java
  21. 32 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 23 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteUserService.java

@@ -3,12 +3,14 @@ package com.xunmei.system.api;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
-import com.xunmei.system.api.domain.User;
+import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.factory.RemoteUserFallbackFactory;
 import com.xunmei.system.api.model.LoginUser;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * 用户服务
  * 
@@ -28,4 +30,24 @@ public interface RemoteUserService
     public R<LoginUser> getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
 
+    /**
+     * 通过用户名查询用户信息
+     *
+     * @param source 请求来源
+     * @return 结果
+     */
+    @PostMapping("/user/sync/list")
+    public R<List<SysUser>> getAllSyncUser(@RequestBody SysUser request, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+
+
+    /**
+     * 批量保存同步用户
+     * @param userList
+     * @param source userList
+     * @return
+     */
+    @PostMapping("/user/sync/batch")
+    public R<Boolean> batchSaveSyncUser(@RequestBody List<SysUser> userList, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
 }

+ 13 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -204,6 +204,19 @@ public class SysUser extends BaseEntity {
      */
     @ApiModelProperty(value = "是否锁定,0:未锁定.1:已锁定")
     private String locked;
+
+    /**
+     * 来源
+     */
+    @ApiModelProperty(value = "来源,0:系统添加.1:fjnx同步")
+    private Integer source;
+
+    /**
+     * 同步人员的编码
+     */
+    @ApiModelProperty(value = "同步人员的编码")
+    private String code;
+
     /** 机构对象 */
     @TableField(exist = false)
     private Org org;

+ 13 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteUserFallbackFactory.java

@@ -2,13 +2,15 @@ package com.xunmei.system.api.factory;
 
 import com.xunmei.common.core.domain.R;
 import com.xunmei.system.api.RemoteUserService;
-import com.xunmei.system.api.domain.User;
+import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.model.LoginUser;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * 用户服务降级处理
  * 
@@ -30,6 +32,16 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
             {
                 return R.fail("获取用户失败:" + throwable.getMessage());
             }
+
+            @Override
+            public R<List<SysUser>> getAllSyncUser(SysUser request, String source) {
+                return null;
+            }
+
+            @Override
+            public R<Boolean> batchSaveSyncUser(List<SysUser> userList, String source) {
+                return null;
+            }
         };
     }
 }

+ 34 - 27
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/controller/FjnxSyncController.java

@@ -19,7 +19,6 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.List;
 
 /**
  *
@@ -55,6 +54,36 @@ class FjnxSyncController {
         }
     }
 
+    @GetMapping("/user")
+    @ResponseBody
+    AjaxResult SyncUser() throws Exception {
+
+        try {
+            String resultMsg=ifjnxSyncService.SyncUserInfo();
+            if(StringUtil.isNullOrEmpty(resultMsg)){
+                return AjaxResult.success("同步成功");
+            }
+            else
+            {
+                return AjaxResult.error("同步失败:"+resultMsg);
+            }
+        } catch (Exception e) {
+            return AjaxResult.error("人员同步失败" + e.getMessage());
+        }
+    }
+
+    @GetMapping("/organduser")
+    @ResponseBody
+    AjaxResult SyncOrgAndUser(final MultipartFile file) throws IOException {
+
+        try {
+            ifjnxSyncService.SyncOrgAndUserInfo();
+            return AjaxResult.success("同步成功");
+        } catch (Exception e) {
+            return AjaxResult.error("机构人员同步失败" + e.getMessage());
+        }
+    }
+
 //    @GetMapping("/refresh/orgbusinesspath")
 //    @ResponseBody
 //    JsonResponse<String> refreshBusinesspath() throws IOException {
@@ -97,7 +126,7 @@ class FjnxSyncController {
      * @return
      * @throws IOException
      */
-    @GetMapping("/test/org")
+    @GetMapping("/mock/orgfileInfo")
     @ResponseBody
     AjaxResult SyncOrgTest() throws IOException {
         try {
@@ -126,7 +155,7 @@ class FjnxSyncController {
     }
 
     @ApiOperation(value = "模拟返回机构数据接口")
-    @GetMapping("/test/orgxmldata")
+    @GetMapping("/mock/orgxmldata")
     public void orgxmldata(HttpServletResponse response, HttpServletRequest request) {
         try {
             FileInputStream in = null;
@@ -166,7 +195,7 @@ class FjnxSyncController {
 
 
     @ApiOperation(value = "模拟返回机构数据接口")
-    @GetMapping("/test/userxmldata")
+    @GetMapping("/mock/userxmldata")
     public void userxmldata(HttpServletResponse response, HttpServletRequest request) {
         try {
             FileInputStream in = null;
@@ -204,27 +233,5 @@ class FjnxSyncController {
         }
     }
 
-//    @GetMapping("/user")
-//    @ResponseBody
-//    JsonResponse<String> SyncUser() throws Exception {
-//
-//        try {
-//            ifjnxSyncService.SyncUserInfo();
-//            return JsonResponse.success("同步成功");
-//        } catch (Exception e) {
-//            return JsonResponse.fail("人员同步失败" + e.getMessage());
-//        }
-//    }
-//
-//    @GetMapping("/organduser")
-//    @ResponseBody
-//    JsonResponse<String> SyncOrgAndUser(final MultipartFile file) throws IOException {
-//
-//        try {
-//            ifjnxSyncService.SyncOrgAndUserInfo();
-//            return JsonResponse.success("同步成功");
-//        } catch (Exception e) {
-//            return JsonResponse.fail("机构人员同步失败" + e.getMessage());
-//        }
-//    }
+
 }

+ 1 - 2
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/domain/OrgFjnx.java → soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/domain/FjnxOrg.java

@@ -1,6 +1,5 @@
 package com.xunmei.sync.domain;
 
-import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -24,7 +23,7 @@ import java.util.Date;
 @EqualsAndHashCode(callSuper = false)
 @TableName("t_fjnx_org")
 @ApiModel(value="同步FJNX机构保存对象", description="")
-public class OrgFjnx implements Serializable {
+public class FjnxOrg implements Serializable {
 
 //    private static final long serialVersionUID = 1L;
 //

+ 113 - 0
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/domain/FjnxUser.java

@@ -0,0 +1,113 @@
+package com.xunmei.sync.domain;
+
+import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import javax.xml.bind.annotation.XmlElement;
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_fjnx_user")
+@ApiModel(value="同步FJNX用户保存对象", description="")
+public class FjnxUser {
+
+
+    /**
+     * 人员ID
+     */
+    @TableId("user_id")
+    private String userId;
+
+    /**
+     * 人员名称
+     */
+    @TableField("user_name")
+    private String userName;
+
+    /**
+     * 登录名
+     */
+    @TableField("login_name")
+    private String loginName;
+
+    /**
+     * 用户状态
+     */
+    @TableField("user_status")
+    private String userStatus;
+
+    /**
+     * 手机号
+     */
+    @TableField("mobile")
+    private String mobile;
+
+    /**
+     * 邮件系统账号
+     */
+    @TableField("mail")
+    private String mail;
+
+    /**
+     * 证件类型
+     */
+    @TableField("cert_type")
+    private String certType;
+
+
+    /**
+     * 证件号码
+     */
+    @TableField("id_card")
+    private String idCard;
+
+
+    /**
+     * 性别
+     */
+    @TableField("sex")
+    private String sex;
+
+
+    /**
+     * 联系地址
+     */
+    @TableField("address")
+    private String address;
+
+
+    /**
+     * 更新时间
+     */
+    @TableField("update_time")
+    private String updateTime;
+
+    /**
+     * 所属机构代码
+     */
+    @TableField("dep_code")
+    private String depCode;
+
+    /**
+     * 法人机构号
+     */
+    @TableField("corpor_code")
+    private String corporCode;
+
+    /**
+     * 柜员号
+     */
+    @TableField("teller")
+    private String teller;
+
+    @ApiModelProperty(value = "最后同步时间")
+    @TableField("last_sync_time")
+    private Date lastSyncTime;
+}

+ 2 - 2
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/mapper/OrgFjnxMapper.java → soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/mapper/FjnxOrgMapper.java

@@ -1,7 +1,7 @@
 package com.xunmei.sync.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.xunmei.sync.domain.OrgFjnx;
+import com.xunmei.sync.domain.FjnxOrg;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -13,6 +13,6 @@ import org.apache.ibatis.annotations.Mapper;
  * @since 2023-06-05
  */
 @Mapper
-public interface OrgFjnxMapper extends BaseMapper<OrgFjnx> {
+public interface FjnxOrgMapper extends BaseMapper<FjnxOrg> {
 
 }

+ 18 - 0
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/mapper/FjnxUserMapper.java

@@ -0,0 +1,18 @@
+package com.xunmei.sync.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.sync.domain.FjnxUser;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhulu
+ * @since 2023-06-05
+ */
+@Mapper
+public interface FjnxUserMapper extends BaseMapper<FjnxUser> {
+
+}

+ 2 - 2
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/IOrgJinxService.java → soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/IFJNXOrgService.java

@@ -1,7 +1,7 @@
 package com.xunmei.sync.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.xunmei.sync.domain.OrgFjnx;
+import com.xunmei.sync.domain.FjnxOrg;
 
 /**
  * <p>
@@ -11,6 +11,6 @@ import com.xunmei.sync.domain.OrgFjnx;
  * @author zhulu
  * @since 2023-06-05
  */
-public interface IOrgJinxService extends IService<OrgFjnx> {
+public interface IFJNXOrgService extends IService<FjnxOrg> {
 
 }

+ 16 - 0
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/IFJNXUserService.java

@@ -0,0 +1,16 @@
+package com.xunmei.sync.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.sync.domain.FjnxUser;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhulu
+ * @since 2023-06-05
+ */
+public interface IFJNXUserService extends IService<FjnxUser> {
+
+}

+ 4 - 4
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/OrgJinxServiceImpl.java → soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXOrgServiceImpl.java

@@ -1,9 +1,9 @@
 package com.xunmei.sync.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.xunmei.sync.domain.OrgFjnx;
-import com.xunmei.sync.mapper.OrgFjnxMapper;
-import com.xunmei.sync.service.IOrgJinxService;
+import com.xunmei.sync.domain.FjnxOrg;
+import com.xunmei.sync.mapper.FjnxOrgMapper;
+import com.xunmei.sync.service.IFJNXOrgService;
 import org.springframework.stereotype.Service;
 
 /**
@@ -15,6 +15,6 @@ import org.springframework.stereotype.Service;
  * @since 2023-06-05
  */
 @Service
-public class OrgJinxServiceImpl extends ServiceImpl<OrgFjnxMapper, OrgFjnx> implements IOrgJinxService {
+public class FJNXOrgServiceImpl extends ServiceImpl<FjnxOrgMapper, FjnxOrg> implements IFJNXOrgService {
 
 }

+ 184 - 172
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXSyncServiceImpl.java

@@ -6,28 +6,31 @@ import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.utils.bean.BeanUtils;
 import com.xunmei.common.core.utils.snowId.IDHelper;
+import com.xunmei.sync.domain.FjnxOrg;
 import com.xunmei.sync.domain.FjnxOrgBusinessRelation;
-import com.xunmei.sync.domain.OrgFjnx;
+import com.xunmei.sync.domain.FjnxUser;
 import com.xunmei.sync.dto.fjnxsync.FJNXOrgDto;
+import com.xunmei.sync.dto.fjnxsync.FJNXUserDto;
 import com.xunmei.sync.dto.fjnxsync.FJNXXmlOrgDto;
+import com.xunmei.sync.dto.fjnxsync.FJNXXmlUserDto;
 import com.xunmei.sync.mapper.FjnxOrgBusinessRelationMapper;
-import com.xunmei.sync.service.IFJNXOrgSyncService;
-import com.xunmei.sync.service.IFJNXSyncService;
-import com.xunmei.sync.service.IFJNXUserSyncService;
-import com.xunmei.sync.service.IOrgJinxService;
+import com.xunmei.sync.service.*;
 import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.Org;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.domain.SysUser;
 import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
-import okhttp3.internal.Internal;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -45,89 +48,87 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
     IFJNXUserSyncService ifjnxUserSyncService;
 
     @Autowired
-    IOrgJinxService iOrgJinxService;
+    IFJNXOrgService ifjnxOrgService;
 
+    @Autowired
+    IFJNXUserService ifjnxUserService;
 
     @Autowired
     RemoteOrgService remoteOrgService;
 
+    @Autowired
+    RemoteUserService remoteUserService;
+
     @Resource
     FjnxOrgBusinessRelationMapper fjnxOrgBusinessRelationMapper;
 
-//    @Autowired
-//    OrgService orgService;
-//
-//    @Autowired
-//    private OrgRepository orgRepository;
-//
-//    @Autowired
-//    private UserRepository userRepository;
-//
-//    @Resource
-//    FjnxOrgBusinessRelationMapper orgBusinessRelationMapper;
-//
-//    @Resource
-//    private OrgExtendInfoMapper orgExtendInfoMapper;
-//
-//    @Autowired
-//    private OrgExtendInfoServiceImpl orgExtendInfoService;
-
-
     @Override
     public String SyncUserInfo() {
-//        FJNXXmlUserDto fjnxXmlUserDto = ifjnxUserSyncService.getUserInfoByFileInfo();
-//        if (fjnxXmlUserDto == null || ObjectUtil.isEmpty(fjnxXmlUserDto.getUserVos())) return "未获取到用户信息数据";
-//
-//        List<User> existUserList = userRepository.findAll();
-//        List<Org> existOrgList = orgRepository.findAll();
-//
-//        if (ObjectUtil.isEmpty(existUserList)) {
-//            userRepository.saveAll(FjnxUsersConvertToUsers(fjnxXmlUserDto.getUserVos(), existOrgList));
-//        } else {
-//            List<User> addList = new ArrayList<>();
-//            List<User> updateList = new ArrayList<>();
-//            List<User> deleteList = new ArrayList<>();
-//            List<String> fjnxUserCodeList = new ArrayList<>();
-//
-//            fjnxXmlUserDto.getUserVos().stream().forEach(fjnxUser -> {
-//                String orgCode = fjnxUser.getDepCode();
-//                if (!StringUtil.isNullOrEmpty(orgCode) && !StringUtil.isNullOrEmpty(fjnxUser.getUserId())) {
-//                    Optional<Org> optionalOrg = existOrgList.stream().filter(x -> orgCode.equals(x.getCode())).findFirst();
-//                    if (optionalOrg.isPresent()) {
-//                        Optional<User> optionalUser = existUserList.stream().filter(x -> fjnxUser.getUserId().equals(x.getCode())).findFirst();
-//                        if (optionalUser.isPresent()) {
-//                            updateList.add(FjnxUserConvertToUser(fjnxUser, optionalUser.get(), optionalOrg.get()));
-//                        } else {
-//                            addList.add(FjnxUserConvertToUser(fjnxUser, optionalOrg.get()));
-//                        }
-//                    } else {
-//                        log.error("同步人员【{}】所属机构编码【{}】在当前数据库中未找到,{}", fjnxUser.getUserId() + fjnxUser.getUserName(), fjnxUser.getDepCode(), fjnxUser);
-//                    }
-//                    fjnxUserCodeList.add(fjnxUser.getUserId());
-//                }
-//
-//            });
-//
-//            // 人员在本系统中存在 但是在统一运营门户中不存在
-//            deleteList = existUserList.stream().filter(entity -> !fjnxUserCodeList.contains(entity.getCode())).collect(Collectors.toList());
-//            deleteList.forEach(x -> x.setDeleted(true));
-//
-//            if (ObjectUtil.isNotEmpty(addList)) {
-//                userRepository.saveAll(addList);
-//            }
-//
-//            if (ObjectUtil.isNotEmpty(updateList)) {
-//                userRepository.saveAll(updateList);
-//            }
-//
-//            if (ObjectUtil.isNotEmpty(deleteList)) {
-//                userRepository.saveAll(deleteList);
-//            }
+        FJNXXmlUserDto fjnxXmlUserDto = ifjnxUserSyncService.getUserInfoByFileInfo();
+        if (fjnxXmlUserDto == null || ObjectUtil.isEmpty(fjnxXmlUserDto.getUserVos())) return "未获取到用户信息数据";
+
+        // 将同步到的用户数据线保存下来
+        List<FjnxUser> fjnxUserList = FjnxXmlUsersDtoConvertToFjnxUsers(fjnxXmlUserDto.getUserVos());
+        ifjnxUserService.saveOrUpdateBatch(fjnxUserList);
+
+        // 获取系统当前存在的用户信息
+        SysUser request = new SysUser();
+        request.setSource(1);
+        R<List<SysUser>> existUserResult = remoteUserService.getAllSyncUser(request,SecurityConstants.INNER);
+        if (existUserResult.getCode() != 200) {
+            return "remoteUserService.getAllSyncUser 调用失败:" + existUserResult.getMsg();
+        }
+        List<SysUser> existUserList = existUserResult.getData();
 
+        // 获取系统当前存在的机构信息
+        R<List<SysOrg>> existAllOrgResult = remoteOrgService.getAllOrg(SecurityConstants.INNER);
+        if (existAllOrgResult.getCode() != 200) {
+            return "remoteOrgService.getAllOrg 调用失败:" + existAllOrgResult.getMsg();
+        }
+        List<SysOrg> existOrgList = existAllOrgResult.getData();
 
-//        }
+        //将FJNXUser 转换为SysUser 并保存
+        if (ObjectUtil.isEmpty(existUserList)) {
+            final R<Boolean> booleanR = remoteUserService.batchSaveSyncUser(FjnxUsersConvertToUsers(fjnxXmlUserDto.getUserVos(), existOrgList), SecurityConstants.INNER);
+            if (booleanR != null && booleanR.getCode() != 200) {
+                log.error("调用远程服务接口remoteUserService.batchSaveSyncOrg 失败:{0}", booleanR.getMsg());
+                return "remoteUserService.batchSaveSyncUser 调用失败:" + booleanR.getMsg();
+            }
+            return null;
+        }
+        List<SysUser> addList = new ArrayList<>();
+        List<SysUser> updateList = new ArrayList<>();
+        List<SysUser> deleteList = new ArrayList<>();
+        List<String> fjnxUserCodeList = new ArrayList<>();
+
+        fjnxXmlUserDto.getUserVos().stream().forEach(fjnxUser -> {
+            String orgCode = fjnxUser.getDepCode();
+            if (!StringUtil.isNullOrEmpty(orgCode) && !StringUtil.isNullOrEmpty(fjnxUser.getUserId())) {
+                Optional<SysOrg> optionalOrg = existOrgList.stream().filter(x -> orgCode.equals(x.getCode())).findFirst();
+                if (optionalOrg.isPresent()) {
+                    Optional<SysUser> optionalUser = existUserList.stream().filter(x -> fjnxUser.getUserId().equals(x.getCode())).findFirst();
+                    if (optionalUser.isPresent()) {
+                        updateList.add(FjnxUserConvertToUser(fjnxUser, optionalUser.get(), optionalOrg.get()));
+                    } else {
+                        addList.add(FjnxUserConvertToUser(fjnxUser, optionalOrg.get()));
+                    }
+                } else {
+                    log.error("同步人员【{}】所属机构编码【{}】在当前数据库中未找到,{}", fjnxUser.getUserId() + fjnxUser.getUserName(), fjnxUser.getDepCode(), fjnxUser);
+                }
+                fjnxUserCodeList.add(fjnxUser.getUserId());
+            }
+        });
 
+        // 人员在本系统中存在 但是在统一运营门户中不存在
+        deleteList = existUserList.stream().filter(entity -> !fjnxUserCodeList.contains(entity.getCode())&& entity.getSource()==1).collect(Collectors.toList());
+        deleteList.forEach(x -> x.setDeleted(1L));
+        existUserList.addAll(addList);
 
+        final R<Boolean> booleanR = remoteUserService.batchSaveSyncUser(FjnxUsersConvertToUsers(fjnxXmlUserDto.getUserVos(), existOrgList), SecurityConstants.INNER);
+        if (booleanR != null && booleanR.getCode() != 200) {
+            log.error("调用远程服务接口remoteUserService.batchSaveSyncOrg 失败:{0}", booleanR.getMsg());
+            return "remoteUserService.batchSaveSyncUser 调用失败:" + booleanR.getMsg();
+        }
         return null;
     }
 
@@ -145,12 +146,12 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         if (fjnxXmlOrgDto == null || ObjectUtil.isEmpty(fjnxXmlOrgDto.getOrgVos())) return "未获取到机构信息数据";
 
 
-        List<OrgFjnx>  fjnxOrgList=ConvertXmlOrgDtoToOrgJinx(fjnxXmlOrgDto.getOrgVos());
-        iOrgJinxService.saveOrUpdateBatch(fjnxOrgList);
+        List<FjnxOrg> fjnxOrgList = ConvertXmlOrgDtoToOrgJinx(fjnxXmlOrgDto.getOrgVos());
+        ifjnxOrgService.saveOrUpdateBatch(fjnxOrgList);
 
 
         R<List<SysOrg>> existAllOrgResult = remoteOrgService.getAllOrg(SecurityConstants.INNER);
-        if(existAllOrgResult.getCode()!=200){
+        if (existAllOrgResult.getCode() != 200) {
             return existAllOrgResult.getMsg();
         }
         List<SysOrg> existOrgList = existAllOrgResult.getData();
@@ -162,9 +163,8 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
             List<SysOrg> rList = FjnxOrgsConvertToSysOrgs(fjnxOrgList);
             resetParentIdAndPath(rList);
             final R<Boolean> listR = remoteOrgService.batchSaveSyncOrg(rList, SecurityConstants.INNER);
-            if(listR.getCode()!=200)
-            {
-                log.error("调用远程服务接口remoteOrgService.batchSaveSyncOrg 失败:{0}",listR.getMsg());
+            if (listR != null && listR.getCode() != 200) {
+                log.error("调用远程服务接口remoteOrgService.batchSaveSyncOrg 失败:{0}", listR.getMsg());
                 return listR.getMsg();
             }
             return null;
@@ -177,21 +177,18 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         fjnxOrgList.stream().forEach(fjnxOrg -> {
             String fjnxorgCode = fjnxOrg.getOrgCode();
             if (!StringUtil.isNullOrEmpty(fjnxorgCode)) {
-                if(ObjectUtil.isNotEmpty(existOrgList)){
+                if (ObjectUtil.isNotEmpty(existOrgList)) {
                     Optional<SysOrg> optional = existOrgList.stream().filter(x -> fjnxOrg.getOrgCode().equals(x.getCode())).findFirst();
                     if (optional.isPresent()) {
                         updateList.add(FjnxOrgConvertToSysOrg(optional.get(), fjnxOrg));
-                    }else {
+                    } else {
                         addList.add(FjnxOrgConvertToSysOrg(fjnxOrg));
                     }
-                }
-                else {
+                } else {
                     addList.add(FjnxOrgConvertToSysOrg(fjnxOrg));
                 }
                 fjnxOrgCodeList.add(fjnxOrg.getOrgCode());
-            }
-            else
-            {
+            } else {
                 log.error("机构编码为空停止转换为系统机构,机构名称{0}", fjnxOrg.getOrgName());
             }
         });
@@ -205,9 +202,8 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         resetParentIdAndPath(existOrgList);
 
         final R<Boolean> listR = remoteOrgService.batchSaveSyncOrg(existOrgList, SecurityConstants.INNER);
-        if(ObjectUtil.isNotEmpty(listR) && listR.getCode()!=200)
-        {
-            log.error("调用远程服务接口remoteOrgService.batchSaveSyncOrg 失败:{0}",listR.getMsg());
+        if (ObjectUtil.isNotEmpty(listR) && listR.getCode() != 200) {
+            log.error("调用远程服务接口remoteOrgService.batchSaveSyncOrg 失败:{0}", listR.getMsg());
             return listR.getMsg();
         }
         return null;
@@ -254,7 +250,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
 
     public void resetParentIdAndPath(List<SysOrg> orgList) {
 
-        final List<SysOrg> collect = orgList.stream().filter(topOrg -> StringUtil.isNullOrEmpty(topOrg.getParentGuid()) && 0==topOrg.getDeleted()).collect(Collectors.toList());
+        final List<SysOrg> collect = orgList.stream().filter(topOrg -> StringUtil.isNullOrEmpty(topOrg.getParentGuid()) && 0 == topOrg.getDeleted()).collect(Collectors.toList());
         collect.stream().forEach(org -> {
             org.setParentId(-1L);
 //            org.setLevel(1);
@@ -267,14 +263,13 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
                 return;
             }
 
-            if(org.getDeleted().equals(1))
-            {
+            if (org.getDeleted().equals(1)) {
                 // 已删除
                 return;
             }
 
             if (!StringUtil.isNullOrEmpty(org.getParentGuid())) {
-                Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg ->!StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(org.getParentGuid())).findFirst();
+                Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(org.getParentGuid())).findFirst();
                 if (parentOrgOptional.isPresent()) {
                     org.setParentId(parentOrgOptional.get().getId());
                     if (StringUtil.isNullOrEmpty(parentOrgOptional.get().getPath())) {
@@ -296,7 +291,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
     }
 
     public void resetParentOrgPath(SysOrg parentOrg, List<SysOrg> childOrg, List<SysOrg> orgList) {
-        Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg ->!StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(parentOrg.getParentGuid())).findFirst();
+        Optional<SysOrg> parentOrgOptional = orgList.stream().filter(pOrg -> !StringUtil.isNullOrEmpty(pOrg.getGuid()) && pOrg.getGuid().equals(parentOrg.getParentGuid())).findFirst();
         if (parentOrgOptional.isPresent()) {
             parentOrg.setParentId(parentOrgOptional.get().getId());
             if (!StringUtil.isNullOrEmpty(parentOrgOptional.get().getPath())) {
@@ -361,7 +356,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
 //        return result;
 //    }
 
-    private SysOrg FjnxOrgConvertToOrg(OrgFjnx fjnxOrgDto) {
+    private SysOrg FjnxOrgConvertToOrg(FjnxOrg fjnxOrgDto) {
         SysOrg org = new SysOrg();
         org.setId(IDHelper.id());
         org.setName(fjnxOrgDto.getOrgName());
@@ -383,7 +378,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
 
     }
 
-    private List<SysOrg> FjnxOrgsConvertToSysOrgs(List<OrgFjnx> fjnxOrgList) {
+    private List<SysOrg> FjnxOrgsConvertToSysOrgs(List<FjnxOrg> fjnxOrgList) {
         List<SysOrg> result = new ArrayList<>();
         if (ObjectUtil.isNotEmpty(fjnxOrgList)) {
             fjnxOrgList.stream().forEach(x -> {
@@ -393,7 +388,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
         return result;
     }
 
-    private SysOrg FjnxOrgConvertToSysOrg(OrgFjnx fjnxOrgDto) {
+    private SysOrg FjnxOrgConvertToSysOrg(FjnxOrg fjnxOrgDto) {
         SysOrg org = new SysOrg();
         org.setId(IDHelper.id());
         org.setName(fjnxOrgDto.getOrgName());
@@ -471,7 +466,7 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
 
     }
 
-    private SysOrg FjnxOrgConvertToSysOrg(SysOrg org, OrgFjnx fjnxOrg) {
+    private SysOrg FjnxOrgConvertToSysOrg(SysOrg org, FjnxOrg fjnxOrg) {
         org.setName(fjnxOrg.getOrgName());
         org.setShortName(fjnxOrg.getShortName());
         org.setCode(fjnxOrg.getOrgCode());
@@ -490,88 +485,105 @@ public class FJNXSyncServiceImpl implements IFJNXSyncService {
 
     }
 
-//    private List<User> FjnxUsersConvertToUsers(List<FJNXUserDto> fjnxUserDtoList, List<Org> orgList) {
-//        List<User> result = new ArrayList<>();
-//        if (ObjectUtil.isNotEmpty(fjnxUserDtoList)) {
-//            fjnxUserDtoList.stream().forEach(x -> {
-//                Optional<Org> optionalOrg = orgList.stream().filter(org -> org.getCode().equals(x.getDepCode())).findFirst();
-//                if (optionalOrg.isPresent()) {
-//                    result.add(FjnxUserConvertToUser(x, optionalOrg.get()));
-//                } else {
-//                    log.error("同步人员【{}】所属机构编码【{}】在当前数据库中未找到,{}", x.getUserId() + x.getUserName(), x.getDepCode(), x);
-//                }
-//
-//            });
-//        }
-//        return result;
-//    }
-//
-//    private User FjnxUserConvertToUser(FJNXUserDto fjnxUserDto, Org org) {
-//        User user = new User();
-//        user.setCode(fjnxUserDto.getUserId());
-//        user.setName(fjnxUserDto.getUserName());
-//        user.setUsername(fjnxUserDto.getLoginName());
-//        user.setPhone(fjnxUserDto.getMobile());
-//        user.setGender(fjnxUserDto.getSex().equals("1") ? Gender.MAN : Gender.WOMAN);
-//        user.setCard(fjnxUserDto.getIdCard());
-//        user.setJobNumber(fjnxUserDto.getTeller());
-//        user.setApproveStatus(ApproveStatus.PASS);
-//        user.setUpdateTime(fjnxUserDto.getUpdateTime());
-//        user.setOrgId(org.getId());
-//        user.setOrgName(org.getName());
-//        user.setOrgPath(org.getPath());
-//        //0 禁用 1 启用已改密码 2 启用未改密码
-//        user.setIsLock(fjnxUserDto.getUserStatus().equals("0") ? true : false);
-//        // TODO 机构状态和机构类型转换
-//        //user.setIsLock(fjnxOrgDto.getUsableFlag());
-//        return user;
-//
-//    }
-//
-//    private User FjnxUserConvertToUser(FJNXUserDto fjnxUserDto, User user, Org org) {
-//        user.setCode(fjnxUserDto.getUserId());
-//        user.setName(fjnxUserDto.getUserName());
-//        user.setUsername(fjnxUserDto.getLoginName());
-//        user.setPhone(fjnxUserDto.getMobile());
-//        user.setGender(fjnxUserDto.getSex().equals("1") ? Gender.MAN : Gender.WOMAN);
-//        user.setCard(fjnxUserDto.getIdCard());
-//        user.setJobNumber(fjnxUserDto.getTeller());
+
+    private List<FjnxUser> FjnxXmlUsersDtoConvertToFjnxUsers(List<FJNXUserDto> fjnxUserDtoList) {
+        List<FjnxUser> result = new ArrayList<>();
+        Date syncDateTime = new Date();
+        if (ObjectUtil.isNotEmpty(fjnxUserDtoList)) {
+            fjnxUserDtoList.stream().forEach(userDto -> {
+
+                FjnxUser tempFjnxUser = new FjnxUser();
+                BeanUtils.copyBeanProp(tempFjnxUser, userDto);
+                tempFjnxUser.setLastSyncTime(syncDateTime);
+                result.add(tempFjnxUser);
+            });
+        }
+        return result;
+    }
+
+
+    private List<SysUser> FjnxUsersConvertToUsers(List<FJNXUserDto> fjnxUserDtoList, List<SysOrg> orgList) {
+        List<SysUser> result = new ArrayList<>();
+        if (ObjectUtil.isNotEmpty(fjnxUserDtoList)) {
+            fjnxUserDtoList.stream().forEach(x -> {
+                Optional<SysOrg> optionalOrg = orgList.stream().filter(org -> org.getCode().equals(x.getDepCode())).findFirst();
+                if (optionalOrg.isPresent()) {
+                    result.add(FjnxUserConvertToUser(x, optionalOrg.get()));
+                } else {
+                    log.error("同步人员【{}】所属机构编码【{}】在当前数据库中未找到,{}", x.getUserId() + x.getUserName(), x.getDepCode(), x);
+                }
+
+            });
+        }
+        return result;
+    }
+
+    private SysUser FjnxUserConvertToUser(FJNXUserDto fjnxUserDto, SysOrg org) {
+        SysUser user = new SysUser();
+        user.setCode(fjnxUserDto.getUserId());
+        user.setName(fjnxUserDto.getUserName());
+        user.setUsername(fjnxUserDto.getLoginName());
+        user.setPhone(fjnxUserDto.getMobile());
+        user.setGender(fjnxUserDto.getSex());
+        user.setCard(fjnxUserDto.getIdCard());
+        user.setJobNumber(fjnxUserDto.getTeller());
 //        user.setApproveStatus(ApproveStatus.PASS);
-//        user.setUpdateTime(fjnxUserDto.getUpdateTime());
-//        user.setOrgId(org.getId());
-//        user.setOrgName(org.getName());
-//        user.setOrgPath(org.getPath());
-//        //0 禁用 1 启用已改密码 2 启用未改密码
-//        user.setIsLock(fjnxUserDto.getUserStatus().equals("0") ? true : false);
-//        // TODO 机构状态和机构类型转换
-//        //user.setIsLock(fjnxOrgDto.getUsableFlag());
-//        return user;
-//
-//    }
+        user.setUpdateTime(fjnxUserDto.getUpdateTime());
+        user.setOrgId(org.getId());
+        user.setOrgName(org.getName());
+        user.setOrgPath(org.getPath());
+        //0 禁用 1 启用已改密码 2 启用未改密码
+        user.setIsLock(fjnxUserDto.getUserStatus());
+        user.setSource(1);
+        // TODO 机构状态和机构类型转换
+        //user.setIsLock(fjnxOrgDto.getUsableFlag());
+        return user;
+
+    }
+
+    private SysUser FjnxUserConvertToUser(FJNXUserDto fjnxUserDto, SysUser user, SysOrg org) {
+        user.setCode(fjnxUserDto.getUserId());
+        user.setName(fjnxUserDto.getUserName());
+        user.setUsername(fjnxUserDto.getLoginName());
+        user.setPhone(fjnxUserDto.getMobile());
+        user.setGender(fjnxUserDto.getSex());
+        user.setCard(fjnxUserDto.getIdCard());
+        user.setJobNumber(fjnxUserDto.getTeller());
+        user.setApproveStatus(1L);
+        user.setUpdateTime(fjnxUserDto.getUpdateTime());
+        user.setOrgId(org.getId());
+        user.setOrgName(org.getName());
+        user.setOrgPath(org.getPath());
+        //0 禁用 1 启用已改密码 2 启用未改密码
+        user.setIsLock(fjnxUserDto.getUserStatus());
+        // TODO 机构状态和机构类型转换
+        //user.setIsLock(fjnxOrgDto.getUsableFlag());
+        user.setSource(1);
+        return user;
 
-    private List<OrgFjnx> ConvertXmlOrgDtoToOrgJinx(List<FJNXOrgDto> list) {
+    }
+
+    private List<FjnxOrg> ConvertXmlOrgDtoToOrgJinx(List<FJNXOrgDto> list) {
         if (ObjectUtil.isEmpty(list)) {
-            return new ArrayList<OrgFjnx>();
+            return new ArrayList<FjnxOrg>();
         }
         List<FjnxOrgBusinessRelation> fjnxOrgBusinessRelationList = fjnxOrgBusinessRelationMapper.selectList(Wrappers.emptyWrapper());
-        final ArrayList<OrgFjnx> resultList = new ArrayList<>();
-        Date syncDateTime=new Date();
+        final ArrayList<FjnxOrg> resultList = new ArrayList<>();
+        Date syncDateTime = new Date();
         list.stream().forEach(item -> {
-            OrgFjnx tempOrg = new OrgFjnx();
+            FjnxOrg tempOrg = new FjnxOrg();
             BeanUtils.copyBeanProp(tempOrg, item);
 
             tempOrg.setLastSyncTime(syncDateTime);
             tempOrg.setBusinessParentCode(tempOrg.getOrgParent());
 
             Optional<FjnxOrgBusinessRelation> first = fjnxOrgBusinessRelationList.stream().filter(b -> b.getOrgCode().equals(item.getOrgCode())).findFirst();
-            if(first.isPresent())
-            {
-               if( list.stream().anyMatch(y->y.getOrgCode().equals(first.get().getBusinessParentCode()))){
-                   tempOrg.setBusinessParentCode(first.get().getBusinessParentCode());
-               }
-               else{
-                   log.error("设置fjnx业务父级机构失败,机构名称:{0},机构编码:{1},业务父级机构编码:{2}", item.getOrgName(),first.get().getOrgCode(), first.get().getBusinessParentCode());
-               }
+            if (first.isPresent()) {
+                if (list.stream().anyMatch(y -> y.getOrgCode().equals(first.get().getBusinessParentCode()))) {
+                    tempOrg.setBusinessParentCode(first.get().getBusinessParentCode());
+                } else {
+                    log.error("设置fjnx业务父级机构失败,机构名称:{0},机构编码:{1},业务父级机构编码:{2}", item.getOrgName(), first.get().getOrgCode(), first.get().getBusinessParentCode());
+                }
             }
             resultList.add(tempOrg);
         });

+ 20 - 0
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXUserServiceImpl.java

@@ -0,0 +1,20 @@
+package com.xunmei.sync.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.sync.domain.FjnxUser;
+import com.xunmei.sync.mapper.FjnxUserMapper;
+import com.xunmei.sync.service.IFJNXUserService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author zhulu
+ * @since 2023-06-05
+ */
+@Service
+public class FJNXUserServiceImpl extends ServiceImpl<FjnxUserMapper, FjnxUser> implements IFJNXUserService {
+
+}

+ 4 - 4
soc-modules/soc-modules-sync/src/main/java/com/xunmei/sync/service/impl/FJNXUserSyncServiceImpl.java

@@ -30,8 +30,8 @@ public class FJNXUserSyncServiceImpl implements IFJNXUserSyncService {
         final Map<String, Object> params = new HashMap<>();
         // TODO 放在数据库中,放在配置文件中如果不是多套需要修改多个配置文件,可以放在数据库中 获取一次后放入Redis缓存
         params.put("systemCode", 61303);
-        final JSONObject data = this.fjnxApi.get(HttpParamsGet.get("/sp-app-batch/api/syncout/userdirect", params));
-//        final JSONObject data = this.fjnxApi.get(HttpParamsGet.get("/api/fjnx/sync/test/org", params));
+//        final JSONObject data = this.fjnxApi.get(HttpParamsGet.get("/sp-app-batch/api/syncout/userdirect", params));
+        final JSONObject data = this.fjnxApi.get(HttpParamsGet.get("/api/fjnx/sync/mock/orgfileInfo", params));
         if (data == null) {
             return null;
         }
@@ -49,9 +49,9 @@ public class FJNXUserSyncServiceImpl implements IFJNXUserSyncService {
         params.put("fileName", syncResponseDto.getData().getFileName());
         params.put("fileId", syncResponseDto.getData().getFileId());
         params.put("storageType", "localdisk");
-        final String data= fjnxXmlApi.get(HttpParamsGet.get("/yusp-file/api/file/download", params));
+//        final String data= fjnxXmlApi.get(HttpParamsGet.get("/yusp-file/api/file/download", params));
 
-//        final String data= fjnxXmlApi.get(HttpParamsGet.get("/api/fjnx/sync/test/userxmldata", params));
+        final String data= fjnxXmlApi.get(HttpParamsGet.get("/api/fjnx/sync/mock/userxmldata", params));
 
         try {
             return FjnxXmlApi.convertXmlToJavaBean(data, FJNXXmlUserDto.class);

+ 1 - 1
soc-modules/soc-modules-sync/src/main/resources/mapper/OrgFjnxMapper.xml → soc-modules/soc-modules-sync/src/main/resources/mapper/FjnxOrgMapper.xml

@@ -2,6 +2,6 @@
 <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.xunmei.sync.domain.OrgFjnx">
+<mapper namespace="com.xunmei.sync.domain.FjnxOrg">
 
 </mapper>

+ 7 - 0
soc-modules/soc-modules-sync/src/main/resources/mapper/FjnxUserMapper.xml

@@ -0,0 +1,7 @@
+<?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="com.xunmei.sync.domain.FjnxUser">
+
+</mapper>

+ 27 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -16,6 +16,7 @@ import com.xunmei.system.api.domain.*;
 import com.xunmei.system.api.model.LoginUser;
 import com.xunmei.system.domain.SysUserRole;
 import com.xunmei.system.service.*;
+import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
@@ -312,4 +313,30 @@ private ISysUserInformationService sysUserInformationService;
         userService.insertUserAuth(userId, roleIds);
         return success();
     }
+
+    /**
+     * 获取用户列表
+     */
+    @InnerAuth
+    @PostMapping("/sync/list")
+    public R<List<SysUser>> syncUserList(@RequestBody SysUser user) {
+        try {
+            String a="";
+            return R.ok(userService.selectSyncUserList(user));
+        } catch (Exception e) {
+            return R.fail(e.getMessage());
+        }
+    }
+
+
+    /**
+     * 查询机构列表
+     */
+    @ApiOperation(value = "批量保存同步用户数据")
+    @InnerAuth
+    @PostMapping("/sync/batch")
+    public R<Boolean> batchSaveSyncSysOrgs(@RequestBody List<SysUser> sysUserList) {
+        return R.ok(userService.saveOrUpdateBatch(sysUserList));
+    }
+
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java

@@ -37,6 +37,9 @@ public interface SysUserMapper extends BaseMapper<SysUser>
      */
     public List<SysUser> selectUnallocatedList(SysUser user);
 
+    public List<SysUser> selectSyncUserList(SysUser user);
+
+
     /**
      * 通过用户名查询用户
      *

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java

@@ -23,6 +23,8 @@ public interface ISysUserService extends IService<SysUser>
      */
     public TableDataInfo selectUserList(SysUser user);
 
+    List<SysUser> selectSyncUserList(SysUser user);
+
     /**
      * 根据条件分页查询已分配用户角色列表
      * 

+ 12 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.UserConstants;
 import com.xunmei.common.core.exception.ServiceException;
-import com.xunmei.common.core.utils.SpringUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.utils.bean.BeanValidators;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -124,6 +123,18 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     /**
+     * 查询同步进来的用户信息
+     *
+     * @param user 用户信息
+     * @return 用户信息集合信息
+     */
+    @Override
+    public List<SysUser> selectSyncUserList(SysUser user)
+    {
+        return userMapper.selectSyncUserList(user);
+    }
+
+    /**
      * 根据条件分页查询已分配用户角色列表
      * 
      * @param user 用户信息

+ 32 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -26,6 +26,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <association property="dept"    column="dept_id" javaType="com.xunmei.system.api.domain.SysDept" resultMap="deptResult" />
         <collection  property="roles"   javaType="java.util.List"           resultMap="RoleResult" />
     </resultMap>
+
+<!--	<resultMap type="com.xunmei.system.api.domain.SysUser" id="SyncSysUserResult">-->
+<!--		<id     property="id"       column="id"      />-->
+<!--		<result property="username"     column="user_name"    />-->
+<!--		<result property="name"     column="name"    />-->
+<!--		<result property="email"        column="email"        />-->
+<!--		<result property="phonenumber"  column="phonenumber"  />-->
+<!--		<result property="sex"          column="sex"          />-->
+<!--		<result property="avatar"       column="avatar"       />-->
+<!--		<result property="password"     column="password"     />-->
+<!--		<result property="status"       column="status"       />-->
+<!--		<result property="delFlag"      column="del_flag"     />-->
+<!--		<result property="loginIp"      column="login_ip"     />-->
+<!--		<result property="loginDate"    column="login_date"   />-->
+<!--		<result property="createBy"     column="create_by"    />-->
+<!--		<result property="createTime"   column="create_time"  />-->
+<!--		<result property="updateBy"     column="update_by"    />-->
+<!--		<result property="updateTime"   column="update_time"  />-->
+
+<!--		<association property="dept"    column="dept_id" javaType="com.xunmei.system.api.domain.SysDept" resultMap="deptResult" />-->
+<!--		<collection  property="roles"   javaType="java.util.List"           resultMap="RoleResult" />-->
+<!--	</resultMap>-->
 	
     <resultMap id="deptResult" type="com.xunmei.system.api.domain.SysDept">
         <id     property="deptId"    column="dept_id"     />
@@ -119,6 +141,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<!-- 数据范围过滤 -->
 		${params.dataScope}
 	</select>
+
+	<select id="selectSyncUserList" parameterType="com.xunmei.system.api.domain.SysUser" resultType="com.xunmei.system.api.domain.SysUser">
+		select *
+		from sys_user u
+		<where>
+			<if test="source != null">
+				AND u.source =#{source}
+			</if>
+		</where>
+	</select>
 	
 	<select id="selectUserByUserName" parameterType="String" resultMap="SysUserResult">
 	    <include refid="selectUserVo"/>