Commit b964d0fb authored by 王淑君's avatar 王淑君

添加同步人员

parent 5dfa95e4
...@@ -45,6 +45,15 @@ ...@@ -45,6 +45,15 @@
<dependencies> <dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--feign调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--okhttp--> <!--okhttp-->
<dependency> <dependency>
<groupId>com.squareup.okhttp3</groupId> <groupId>com.squareup.okhttp3</groupId>
......
...@@ -16,7 +16,7 @@ public interface BLabelRepository extends BaseMapper<BLabel> { ...@@ -16,7 +16,7 @@ public interface BLabelRepository extends BaseMapper<BLabel> {
" and corp_id = #{corpId}" + " and corp_id = #{corpId}" +
"<if test=\"lName!=null and lName != ''\"> and l_name like CONCAT('%',#{lName},'%') </if>" + "<if test=\"lName!=null and lName != ''\"> and l_name like CONCAT('%',#{lName},'%') </if>" +
"</script>") "order by create_date desc </script>")
@ResultMap(value = "BaseResultMap") @ResultMap(value = "BaseResultMap")
List<BLabel> queryBlabels(@Param("lName") String lName,@Param("corpId")String corpId); List<BLabel> queryBlabels(@Param("lName") String lName,@Param("corpId")String corpId);
......
package org.rcisoft.business.synchronizationtime.controller;
/*固定导入*/
import org.rcisoft.common.controller.PaginationController;
import org.springframework.web.bind.annotation.*;
import org.rcisoft.business.synchronizationtime.entity.SynchronizationTime;
/**
* Created by on 2019-10-10 20:04:19.
*/
@RestController
@RequestMapping("synchronizationtime")
public class SynchronizationTimeController extends PaginationController<SynchronizationTime> {
}
package org.rcisoft.business.synchronizationtime.dao;
import org.apache.ibatis.annotations.Param;
import org.rcisoft.core.base.BaseMapper;
import org.rcisoft.business.synchronizationtime.entity.SynchronizationTime;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created with on 2019-10-10 20:04:19.
*/
@Repository
public interface SynchronizationTimeRepository extends BaseMapper<SynchronizationTime> {
/**
* 分页查询 synchronizationTime
*
*/
@Select("<script>select * from synchronization_time where 1=1 "
+ "<if test=\"delFlag !=null and delFlag != '' \">and del_flag = #{delFlag} </if> "
+ "<if test=\"flag !=null and flag != '' \">and flag = #{flag} </if> "
+ "</script>")
@ResultMap(value = "BaseResultMap" )
List<SynchronizationTime> querySynchronizationTimes(SynchronizationTime synchronizationTime);
@Select("<script>select * from synchronization_time where 1=1 and business_id = #{id}"
+ "</script>")
@ResultMap(value = "BaseResultMap" )
SynchronizationTime getById(@Param("id") String id);
}
package org.rcisoft.business.synchronizationtime.entity;
import lombok.*;
import javax.persistence.*;
import java.util.Date;
/**
* Created with on 2019-10-10 20:04:19.
*/
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "synchronization_time")
public class SynchronizationTime {
private String businessId;
private Date synchronizationTime;
}
<?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="org.rcisoft.business.synchronizationtime.dao.SynchronizationTimeRepository">
<resultMap id="BaseResultMap" type="org.rcisoft.business.synchronizationtime.entity.SynchronizationTime">
<id column="id" jdbcType="VARCHAR" property="id"/>
<result column="synchronization_time" jdbcType="TIMESTAMP" property="synchronizationTime"/>
</resultMap>
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
package org.rcisoft.business.synchronizationtime.service;
import org.rcisoft.business.synchronizationtime.entity.SynchronizationTime;
import org.rcisoft.core.model.PersistModel;
import org.rcisoft.core.aop.PageUtil;
import java.util.List;
/**
* Created by on 2019-10-10 20:04:19.
*/
public interface SynchronizationTimeService {
/**
* 保存
* @param synchronizationTime
* @return
*/
PersistModel save(SynchronizationTime synchronizationTime);
/**
* 修改
* @param synchronizationTime
* @return
*/
PersistModel merge(SynchronizationTime synchronizationTime);
/**
* 根据id查询
* @param id
* @return
*/
SynchronizationTime findById(String id);
/**
* 根据id查询
* @param id
* @return
*/
SynchronizationTime getById(String id);
}
package org.rcisoft.business.synchronizationtime.service.impl;
import org.rcisoft.business.synchronizationtime.dao.SynchronizationTimeRepository;
import org.rcisoft.core.model.PersistModel;
import org.rcisoft.business.synchronizationtime.entity.SynchronizationTime;
import org.rcisoft.business.synchronizationtime.service.SynchronizationTimeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import lombok.extern.slf4j.Slf4j;
/**
* Created by on 2019-10-10 20:04:19.
*/
@Service
@Transactional(readOnly = true,propagation = Propagation.NOT_SUPPORTED)
@Slf4j
public class SynchronizationTimeServiceImpl implements SynchronizationTimeService {
@Autowired
SynchronizationTimeRepository synchronizationTimeRepository;
/**
* 保存 synchronizationTime
* @param synchronizationTime
* @return
*/
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
@Override
public PersistModel save(SynchronizationTime synchronizationTime){
//增加操作
int line = synchronizationTimeRepository.insertSelective(synchronizationTime);
return new PersistModel(line);
}
/**
* 修改 synchronizationTime
* @param synchronizationTime
* @return
*/
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
@Override
public PersistModel merge(SynchronizationTime synchronizationTime){
int line = synchronizationTimeRepository.updateByPrimaryKeySelective(synchronizationTime);
return new PersistModel(line);
}
/**
* 根据id查询 synchronizationTime
* @param id
* @return
*/
public SynchronizationTime findById(String id){
return synchronizationTimeRepository.selectByPrimaryKey(id);
}
@Override
public SynchronizationTime getById(String id) {
return synchronizationTimeRepository.getById(id);
}
}
...@@ -13,6 +13,17 @@ import java.util.List; ...@@ -13,6 +13,17 @@ import java.util.List;
@FeignClient(value = "ZX-CONTACT") @FeignClient(value = "ZX-CONTACT")
public interface ContactFeignClient { public interface ContactFeignClient {
/**
* 根据corpId获取所有用户
* @return
*/
@RequestMapping(value = "/user/getUsersByUpdateTime",method = RequestMethod.GET)
Ret<List<GetAllRspDTO>> getUsersByUpdateTime(@RequestParam("corpId") String corpId,
@RequestParam("updateTime") String updateTime,
@RequestParam("zxClientType") String zxClientType,
@RequestParam("zxAccountId") Long zxAccountId);
/** /**
* 根据userId获取用户信息 * 根据userId获取用户信息
* @return * @return
......
...@@ -6,6 +6,8 @@ import lombok.Getter; ...@@ -6,6 +6,8 @@ import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
import java.util.Date;
@Getter @Getter
@Setter @Setter
@ApiModel("所有用户返回值") @ApiModel("所有用户返回值")
...@@ -28,4 +30,16 @@ public class GetAllRspDTO { ...@@ -28,4 +30,16 @@ public class GetAllRspDTO {
private String accountId; private String accountId;
private String id; private String id;
@ApiModelProperty(value = "手机号", position = 4)
private String mobile;
@ApiModelProperty(value = "邮箱", position = 4)
private String email;
@ApiModelProperty(value = "在职状态 1.离职0.在职", position = 4)
private String isDel;
@ApiModelProperty(value = "入职时间", position = 4)
private Date createAt;
} }
package org.rcisoft.common.util.outClient; package org.rcisoft.common.util.outClient;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -59,6 +60,31 @@ public class MTCotactApiRequestClient { ...@@ -59,6 +60,31 @@ public class MTCotactApiRequestClient {
return null; return null;
} }
/**
* 根据企业Id获取所有用户信息
*
* @return
*/
public List<GetAllRspDTO> accountGetMyInfoList(String corpId,String updateTime) {
login();
Map<String, String> queries = new HashMap<>(2);
queries.put("corpId", corpId);
queries.put("updateTime", updateTime);
Map<String, String> headerParams = new HashMap<>(2);
headerParams.put("clientType", "app");
headerParams.put("Authorization", "Bearer " + ACCESS_TOKEN);
String json = okHttpUtil.get(api + "contact/v1/user/getUsersByUpdateTime", queries, headerParams);
if(StrUtil.isNotEmpty(json)) {
return JSON.parseObject(json, new TypeReference<Ret<List<GetAllRspDTO>>>() {
}).getData();
}
return null;
// return contactFeignClient.getUsersByUpdateTime(corpId,updateTime,zxClientType,zxAccountId).getData();
}
/** /**
* 根据用户id获取用户信息 * 根据用户id获取用户信息
* *
......
...@@ -37,7 +37,7 @@ public class CurUserAspect { ...@@ -37,7 +37,7 @@ public class CurUserAspect {
if(null == model) if(null == model)
throw new ServiceException(ResultExceptionEnum.USER_NO_AUTHEN); throw new ServiceException(ResultExceptionEnum.USER_NO_AUTHEN);
//免登 不拦截 //免登 不拦截
if(methodSignature.getName().equals("loginByCode") || methodSignature.getName().equals("refreshToken")) if(methodSignature.getName().equals("loginByCode") || methodSignature.getName().equals("refreshToken") || methodSignature.getName().equals("synchronizedUsers"))
return; return;
CurUser curUser = (CurUser) model; CurUser curUser = (CurUser) model;
//非法权限 //非法权限
......
...@@ -4,9 +4,14 @@ import io.swagger.annotations.Api; ...@@ -4,9 +4,14 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.rcisoft.business.synchronizationtime.entity.SynchronizationTime;
import org.rcisoft.business.synchronizationtime.service.SynchronizationTimeService;
import org.rcisoft.common.component.Global; import org.rcisoft.common.component.Global;
import org.rcisoft.common.controller.PaginationController; import org.rcisoft.common.controller.PaginationController;
import org.rcisoft.common.model.GridModel; import org.rcisoft.common.model.GridModel;
import org.rcisoft.common.util.feignDto.GetAllRspDTO;
import org.rcisoft.common.util.feignDto.MTUserInfoRspDTO;
import org.rcisoft.common.util.outClient.MTCotactApiRequestClient;
import org.rcisoft.core.constant.MessageConstant; import org.rcisoft.core.constant.MessageConstant;
import org.rcisoft.core.exception.ServiceException; import org.rcisoft.core.exception.ServiceException;
import org.rcisoft.core.model.PersistModel; import org.rcisoft.core.model.PersistModel;
...@@ -22,13 +27,17 @@ import org.rcisoft.sys.user.service.SysUserService; ...@@ -22,13 +27,17 @@ import org.rcisoft.sys.user.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.expression.spel.ast.Assign; import org.springframework.expression.spel.ast.Assign;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import javax.validation.Valid; import javax.validation.Valid;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
...@@ -41,6 +50,67 @@ public class SysUserController extends PaginationController<SysUser> { ...@@ -41,6 +50,67 @@ public class SysUserController extends PaginationController<SysUser> {
@Autowired @Autowired
private SysUserService userServiceImpl; private SysUserService userServiceImpl;
@Autowired
private SynchronizationTimeService synchronizationTimeServiceImpl;
@Autowired
MTCotactApiRequestClient mtCotactApiRequestClient;
/**
* 同步人员
* @param
* @return
*/
@GetMapping("/user/gets")
@ApiOperation(value = "|personnels|同步人员", notes = "同步人员信息")
public Result synchronizedUsers(@RequestParam String corpId){
// public Result<List<MTUserInfoRspDTO>> synchronizedUsers(@RequestParam String corpId){
SynchronizationTime synchronizationTime = synchronizationTimeServiceImpl.getById("1");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //调用智信接口根据更新时间查询所有人员
if (null == synchronizationTime){
synchronizationTime = new SynchronizationTime();
synchronizationTime.setBusinessId("1");
synchronizationTime.setSynchronizationTime(new Date(1999,01,01,0,0,0));
synchronizationTimeServiceImpl.save(synchronizationTime);
}
String updateTime = df.format(synchronizationTime.getSynchronizationTime());
List<GetAllRspDTO> userGetRspDTOList = mtCotactApiRequestClient.accountGetMyInfoList(corpId,updateTime);
List<SysUser> personnelsList = new ArrayList<>();
int line = 0;
if (null !=userGetRspDTOList) {
for (GetAllRspDTO userInfo : userGetRspDTOList) {
SysUser personnels = new SysUser();
personnels.setCorpId(corpId);
personnels.setBusinessId(userInfo.getId()); //id
personnels.setName(userInfo.getName()); //姓名
personnels.setHeadPic(userInfo.getAvatar()); //头像
personnels.setPhone(userInfo.getMobile()); // 手机号
personnels.setDelFlag(userInfo.getIsDel()); //智信状态
// personnels.setAge(0);
// personnels.setGender(0);
personnels.setAccountId(userInfo.getAccountId());
personnelsList.add(personnels);
}
line = userServiceImpl.insertOrUpdateList(personnelsList);
}
if (line > 0){
// 同步成功后,更新同步时间
synchronizationTime.setSynchronizationTime(new Date());
synchronizationTimeServiceImpl.merge(synchronizationTime);
return Result.builder(new PersistModel(line),
MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR,
"同步成功");
}else {
return Result.builder(new PersistModel(line),
MessageConstant.MESSAGE_ALERT_SUCCESS,
MessageConstant.MESSAGE_ALERT_ERROR,
"没有任何更新内容");
}
}
@Autowired @Autowired
private Global global; private Global global;
......
...@@ -45,6 +45,7 @@ public class SysUser extends IdEntity<SysUser> { ...@@ -45,6 +45,7 @@ public class SysUser extends IdEntity<SysUser> {
private String phone; // 电话 private String phone; // 电话
private String sex; private String sex;
private String headPic; //头像 private String headPic; //头像
private String accountId;
private String gitLabId; //gitLab账号id private String gitLabId; //gitLab账号id
private String gitLabUsername; //gitLab账号 private String gitLabUsername; //gitLab账号
private String gitLabImpressionToken; //gitLab账号模拟令牌 private String gitLabImpressionToken; //gitLab账号模拟令牌
......
...@@ -36,4 +36,6 @@ public interface SysUserService { ...@@ -36,4 +36,6 @@ public interface SysUserService {
List<QueryMenuResDTO> queryMenusById(String corpId, String id, String modelId); List<QueryMenuResDTO> queryMenusById(String corpId, String id, String modelId);
Map<String,Object> queryAllDepart(); Map<String,Object> queryAllDepart();
int insertOrUpdateList(List<SysUser> sysUserList);
} }
...@@ -21,10 +21,7 @@ import org.springframework.stereotype.Service; ...@@ -21,10 +21,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
...@@ -186,4 +183,25 @@ public class SysUserServiceImpl implements SysUserService { ...@@ -186,4 +183,25 @@ public class SysUserServiceImpl implements SysUserService {
Map maps = (Map)JSON.parse(str); Map maps = (Map)JSON.parse(str);
return maps; return maps;
} }
@Override
public int insertOrUpdateList(List<SysUser> sysUserList) {
int line = 0;
if (null!=sysUserList && sysUserList.size()>0){
for (SysUser sysUser : sysUserList) {
SysUser user = sysUserMapper.selectOne(sysUser);
if (null != user && StringUtils.isNotEmpty(sysUser.getBusinessId())){
sysUser.setUpdateDate(new Date());
sysUserMapper.updateByPrimaryKeySelective(sysUser);
line++;
}else {
sysUser.setCreateDate(new Date());
sysUser.setUpdateDate(new Date());
sysUserMapper.insertSelective(sysUser);
line++;
}
}
}
return line;
}
} }
...@@ -86,12 +86,15 @@ libreoffice: ...@@ -86,12 +86,15 @@ libreoffice:
ip: 192.168.1.125 ip: 192.168.1.125
port: 10188 port: 10188
mt: mt:
api: http://221.239.114.20:6789/api/ api: http://192.168.5.41/api/
eureka: eureka:
instance: instance:
hostname: localhost hostname: localhost
prefer-ip-address: true
client: client:
register-with-eureka: false register-with-eureka: false
fetch-registry: false fetch-registry: false
\ No newline at end of file service-url:
defaultZone=http://zx:zgiot@192:168:5:40:7001/eureka/:
\ No newline at end of file
<?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="org.rcisoft.business.synchronizationtime.dao.SynchronizationTimeRepository">
<resultMap id="BaseResultMap" type="org.rcisoft.business.synchronizationtime.entity.SynchronizationTime">
<id column="business_id" jdbcType="VARCHAR" property="businessId"/>
<result column="synchronization_time" jdbcType="TIMESTAMP" property="synchronizationTime"/>
</resultMap>
<!--<cache type="${corePackag!}.util.RedisCache"/>-->
</mapper>
\ No newline at end of file
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<result column="name" jdbcType="VARCHAR" property="name" /> <result column="name" jdbcType="VARCHAR" property="name" />
<result column="password" jdbcType="VARCHAR" property="password" /> <result column="password" jdbcType="VARCHAR" property="password" />
<result column="head_pic" jdbcType="VARCHAR" property="headPic" /> <result column="head_pic" jdbcType="VARCHAR" property="headPic" />
<result column="account_id" jdbcType="VARCHAR" property="accountId" />
<!--<result column="email" jdbcType="VARCHAR" property="email" /> <!--<result column="email" jdbcType="VARCHAR" property="email" />
<result column="phone" jdbcType="VARCHAR" property="phone" />--> <result column="phone" jdbcType="VARCHAR" property="phone" />-->
<!--dataEntity--> <!--dataEntity-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment