Commit bcfed5b5 by 阳浪

配置信息

parent def59a6d
...@@ -41,7 +41,7 @@ public enum InternationalEnums { ...@@ -41,7 +41,7 @@ public enum InternationalEnums {
SALTCONTROLLER3("SaltController3","用户名禁止明文传输"), SALTCONTROLLER3("SaltController3","用户名禁止明文传输"),
SALTCONTROLLER4("SaltController4","传递的appId有误"), SALTCONTROLLER4("SaltController4","传递的appId有误"),
SALTCONTROLLER5("SaltController5","传递的盐和加密用户名中的盐不一致"), SALTCONTROLLER5("SaltController5","传递的盐和加密用户名中的盐不一致"),
SALTCONTROLLER6("SaltController6","学习平台暂无本账户信息,请联系管理员!"), SALTCONTROLLER6("SaltController6","智慧党建暂无本账户信息,请联系管理员!"),
SALTCONTROLLER7("SaltController7","加密失败!"), SALTCONTROLLER7("SaltController7","加密失败!"),
SALTCONTROLLER8("SaltController8","解密失败!"), SALTCONTROLLER8("SaltController8","解密失败!"),
SALTCONTROLLER9("SaltController9","更新失败,无效的AppId"), SALTCONTROLLER9("SaltController9","更新失败,无效的AppId"),
......
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
package com.yizhi.core.application.log; package com.yizhi.core.application.log;
import com.yizhi.core.application.event.LogEvent; import com.yizhi.core.application.event.LogEvent;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
...@@ -16,11 +14,12 @@ import org.springframework.stereotype.Component; ...@@ -16,11 +14,12 @@ import org.springframework.stereotype.Component;
@Component @Component
public class LogEventPublisher{ public class LogEventPublisher{
@Autowired /*@Autowired
RabbitTemplate rabbitTemplate; RabbitTemplate rabbitTemplate;*/
public <T> void publish(LogEvent<T> event) { public <T> void publish(LogEvent<T> event) {
rabbitTemplate.convertAndSend(event.getQueue(),event.getData());
//rabbitTemplate.convertAndSend(event.getQueue(),event.getData());
} }
} }
...@@ -17,8 +17,6 @@ import com.yizhi.core.application.operatelog.source.Version; ...@@ -17,8 +17,6 @@ import com.yizhi.core.application.operatelog.source.Version;
import com.yizhi.core.application.log.OperateLog; import com.yizhi.core.application.log.OperateLog;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.method.HandlerMethod; import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
...@@ -27,9 +25,9 @@ import com.yizhi.util.application.constant.QueueConstant; ...@@ -27,9 +25,9 @@ import com.yizhi.util.application.constant.QueueConstant;
import com.yizhi.util.application.json.JsonUtil; import com.yizhi.util.application.json.JsonUtil;
public class OperationLogInteceptor implements HandlerInterceptor { public class OperationLogInteceptor implements HandlerInterceptor {
/*
@Autowired @Autowired
private AmqpTemplate rabbitTemplate; private AmqpTemplate rabbitTemplate;*/
private Logger logger = LoggerFactory.getLogger(getClass()); private Logger logger = LoggerFactory.getLogger(getClass());
...@@ -86,7 +84,7 @@ public class OperationLogInteceptor implements HandlerInterceptor { ...@@ -86,7 +84,7 @@ public class OperationLogInteceptor implements HandlerInterceptor {
} }
// 获取操作系统和浏览器信息 // 获取操作系统和浏览器信息
setBrowserAndOS(request, operateLog); setBrowserAndOS(request, operateLog);
rabbitTemplate.convertAndSend(QueueConstant.OPERATE_LOG_QUEUE, operateLog); //rabbitTemplate.convertAndSend(QueueConstant.OPERATE_LOG_QUEUE, operateLog);
logger.info("operate log ======", operateLog); logger.info("operate log ======", operateLog);
} }
} catch (Exception el) { } catch (Exception el) {
......
...@@ -4,8 +4,6 @@ ...@@ -4,8 +4,6 @@
package com.yizhi.core.application.publish; package com.yizhi.core.application.publish;
import com.yizhi.core.application.event.EventWrapper; import com.yizhi.core.application.event.EventWrapper;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
...@@ -17,12 +15,13 @@ import org.springframework.stereotype.Component; ...@@ -17,12 +15,13 @@ import org.springframework.stereotype.Component;
@Component @Component
public class CloudEventPublisher { public class CloudEventPublisher {
@Autowired //@Autowired
RabbitTemplate rabbitTemplate; //RabbitTemplate rabbitTemplate;
public <T> void publish(String queue, EventWrapper<T> event) { public <T> void publish(String queue, EventWrapper<T> event) {
rabbitTemplate.convertAndSend(queue,event);
//rabbitTemplate.convertAndSend(queue,event);
} }
} }
\ No newline at end of file
...@@ -23,7 +23,6 @@ import io.jsonwebtoken.Claims; ...@@ -23,7 +23,6 @@ import io.jsonwebtoken.Claims;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
......
...@@ -9,7 +9,6 @@ import com.yizhi.logging.dto.RequestLogDTO; ...@@ -9,7 +9,6 @@ import com.yizhi.logging.dto.RequestLogDTO;
import com.yizhi.util.application.constant.GlobalConstant; import com.yizhi.util.application.constant.GlobalConstant;
import com.yizhi.util.application.constant.QueueConstant; import com.yizhi.util.application.constant.QueueConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -42,9 +41,9 @@ public class LogPostFilter extends BaseZuulFilter { ...@@ -42,9 +41,9 @@ public class LogPostFilter extends BaseZuulFilter {
@Value("${gateway.logSwitch:false}") @Value("${gateway.logSwitch:false}")
private Boolean logSwitch; private Boolean logSwitch;
/*
@Autowired @Autowired
private RabbitTemplate rabbitTemplate; private RabbitTemplate rabbitTemplate;*/
@Override @Override
public boolean shouldFilter() { public boolean shouldFilter() {
...@@ -110,7 +109,7 @@ public class LogPostFilter extends BaseZuulFilter { ...@@ -110,7 +109,7 @@ public class LogPostFilter extends BaseZuulFilter {
.terminalType(getUserAgent(request.getHeader("User-Agent"))) .terminalType(getUserAgent(request.getHeader("User-Agent")))
.build(); .build();
rabbitTemplate.convertAndSend(QueueConstant.REQUEST_LOG_QUEUE, requestLogDTO); //rabbitTemplate.convertAndSend(QueueConstant.REQUEST_LOG_QUEUE, requestLogDTO);
return null; return null;
} }
......
package com.yizhi.application.filter; package com.yizhi.application.filter;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.charset.Charset;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import com.yizhi.core.application.cache.CacheNamespace;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.util.StreamUtils;
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.context.RequestContext;
import org.springframework.util.StringUtils;
/** /**
* @ClassName LogPostFilter * @ClassName LogPostFilter
......
server.port=8090 server.port=8090
spring.application.name=gateWay spring.application.name=gateWay
ACTIVE=${spring.profiles.active} ACTIVE=${spring.profiles.active}
spring.profiles.active=wmy4 spring.profiles.active=prod
# nacos # nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active} spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name} spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.1.9:8848 spring.cloud.nacos.config.server-addr=10.23.1.183:8848
\ No newline at end of file \ No newline at end of file
...@@ -4,12 +4,13 @@ import com.yizhi.core.application.log.LogQueue; ...@@ -4,12 +4,13 @@ import com.yizhi.core.application.log.LogQueue;
import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.Queue;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication @SpringBootApplication(exclude = {RabbitAutoConfiguration.class})
@EnableDiscoveryClient @EnableDiscoveryClient
@ComponentScan(basePackages = {"com.yizhi"}) @ComponentScan(basePackages = {"com.yizhi"})
public class LogApplication { public class LogApplication {
......
server.port=35000 server.port=35000
spring.application.name=log spring.application.name=log
ACTIVE=${spring.profiles.active} ACTIVE=${spring.profiles.active}
spring.profiles.active=wmy401 spring.profiles.active=prod
# nacos # nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active} spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name} spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.1.7:3333 spring.cloud.nacos.config.server-addr=10.23.1.183:8848
\ No newline at end of file \ No newline at end of file
...@@ -32,21 +32,6 @@ ...@@ -32,21 +32,6 @@
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-jdbc</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.apache.velocity</groupId>-->
<!-- <artifactId>velocity-engine-core</artifactId>-->
<!-- <version>2.0</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId> <artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>1.0.5</version> <version>1.0.5</version>
</dependency> </dependency>
......
...@@ -58,7 +58,7 @@ public class MybatisCodeGenerator { ...@@ -58,7 +58,7 @@ public class MybatisCodeGenerator {
return super.processTypeConvert(fieldType); return super.processTypeConvert(fieldType);
} }
}); });
dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root"); dsc.setUsername("root");
dsc.setPassword("fulan@321#$"); dsc.setPassword("fulan@321#$");
dsc.setUrl("jdbc:mysql://192.168.0.150:3306/cloud_message?characterEncoding=utf8"); dsc.setUrl("jdbc:mysql://192.168.0.150:3306/cloud_message?characterEncoding=utf8");
......
...@@ -13,7 +13,7 @@ import java.util.List; ...@@ -13,7 +13,7 @@ import java.util.List;
@Data @Data
public class OutsideUserSyncVO { public class OutsideUserSyncVO {
@ApiModelProperty(value = "接入方的应用唯一标识(对接时学习平台会生成提供到给对方)") @ApiModelProperty(value = "接入方的应用唯一标识(对接时智慧党建会生成提供到给对方)")
private String appId; private String appId;
@ApiModelProperty(value = "接入的用户信息") @ApiModelProperty(value = "接入的用户信息")
......
...@@ -20,10 +20,10 @@ public class SaltAccountVO { ...@@ -20,10 +20,10 @@ public class SaltAccountVO {
@ApiModelProperty ("盐") @ApiModelProperty ("盐")
private String salt; private String salt;
@ApiModelProperty ("学习平台提供给第三方的appId") @ApiModelProperty ("智慧党建提供给第三方的appId")
private String appId; private String appId;
@ApiModelProperty ("用户名验证方式:null或0=不验证用户名;1=第三方使用学习平台的加密规则验证用户名;2=学习平台使用第三方的加密规则验证用户名") @ApiModelProperty ("用户名验证方式:null或0=不验证用户名;1=第三方使用智慧党建的加密规则验证用户名;2=智慧党建使用第三方的加密规则验证用户名")
private Integer type; private Integer type;
@ApiModelProperty ("终端类型:1=安卓,0=IOS,3=微信,4=PC") @ApiModelProperty ("终端类型:1=安卓,0=IOS,3=微信,4=PC")
......
...@@ -12,7 +12,7 @@ import lombok.Data; ...@@ -12,7 +12,7 @@ import lombok.Data;
public class SaltPlusAccountVO { public class SaltPlusAccountVO {
@ApiModelProperty ("学习平台提供给第三方的appId") @ApiModelProperty ("智慧党建提供给第三方的appId")
private String appId; private String appId;
@ApiModelProperty ("加密的账号名称(md5nm)") @ApiModelProperty ("加密的账号名称(md5nm)")
...@@ -24,7 +24,7 @@ public class SaltPlusAccountVO { ...@@ -24,7 +24,7 @@ public class SaltPlusAccountVO {
@ApiModelProperty ("盐") @ApiModelProperty ("盐")
private String salt; private String salt;
@ApiModelProperty ("用户名验证方式:null或0=不验证用户名;1=第三方使用学习平台的加密规则验证用户名;2=学习平台使用第三方的加密规则验证用户名") @ApiModelProperty ("用户名验证方式:null或0=不验证用户名;1=第三方使用智慧党建的加密规则验证用户名;2=智慧党建使用第三方的加密规则验证用户名")
private Integer type; private Integer type;
@ApiModelProperty ("提供的一次性校验值,访问后立即失效") @ApiModelProperty ("提供的一次性校验值,访问后立即失效")
......
...@@ -115,4 +115,8 @@ ...@@ -115,4 +115,8 @@
</plugins> </plugins>
</build> </build>
<properties>
<!-- 跳过测试 -->
<skipTests>true</skipTests>
</properties>
</project> </project>
\ No newline at end of file
package com.yizhi.system.application; import feign.RequestInterceptor;import feign.RequestTemplate;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.hystrix.EnableHystrix;import org.springframework.cloud.openfeign.EnableFeignClients;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.core.env.Environment;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.Enumeration; @EnableHystrix@SpringBootApplication@EnableDiscoveryClient@EnableFeignClients(basePackages = "com.yizhi")@EnableAsync@ComponentScan(basePackages = {"com.yizhi"})public class SystemApplication { private static final Logger logger = LoggerFactory.getLogger(SystemApplication.class); public static void main(String[] args) throws UnknownHostException { Environment env = SpringApplication.run(SystemApplication.class, args).getEnvironment(); String port = env.getProperty("server.port", "8080"); logger.info( "Access URLs:\n----------------------------------------------------------\n\t" + "Local: \t\thttp://127.0.0.1:{}\n\t" + "External: \thttp://{}:{}\n----------------------------------------------------------", port, InetAddress.getLocalHost().getHostAddress(), port); } @Bean //帮助调其他服务时,能取到上下文里面的信息 public RequestInterceptor headerInterceptor() { return new RequestInterceptor() { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); if (attributes != null) { HttpServletRequest request = attributes.getRequest(); Enumeration<String> headerNames = request.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); String values = request.getHeader(name); requestTemplate.header(name, values); } } } } }; } } package com.yizhi.system.application; import feign.RequestInterceptor;import feign.RequestTemplate;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.netflix.hystrix.EnableHystrix;import org.springframework.cloud.openfeign.EnableFeignClients;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.core.env.Environment;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.Enumeration; @EnableHystrix@SpringBootApplication(exclude = {RabbitAutoConfiguration.class})@EnableDiscoveryClient@EnableFeignClients(basePackages = "com.yizhi")@EnableAsync@ComponentScan(basePackages = {"com.yizhi"})public class SystemApplication { private static final Logger logger = LoggerFactory.getLogger(SystemApplication.class); public static void main(String[] args) throws UnknownHostException { Environment env = SpringApplication.run(SystemApplication.class, args).getEnvironment(); String port = env.getProperty("server.port", "8080"); logger.info( "Access URLs:\n----------------------------------------------------------\n\t" + "Local: \t\thttp://10.23.1.183:{}\n\t" + "External: \thttp://{}:{}\n----------------------------------------------------------", port, InetAddress.getLocalHost().getHostAddress(), port); } @Bean //帮助调其他服务时,能取到上下文里面的信息 public RequestInterceptor headerInterceptor() { return new RequestInterceptor() { @Override public void apply(RequestTemplate requestTemplate) { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder .getRequestAttributes(); if (attributes != null) { HttpServletRequest request = attributes.getRequest(); Enumeration<String> headerNames = request.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); String values = request.getHeader(name); requestTemplate.header(name, values); } } } } }; } }
\ No newline at end of file \ No newline at end of file
......
...@@ -5,7 +5,7 @@ package com.yizhi.system.application.constant; ...@@ -5,7 +5,7 @@ package com.yizhi.system.application.constant;
*/ */
public interface CommunityParams { public interface CommunityParams {
final static String GET_TOKEN_LOCATION = "http://127.0.0.1:8301"; final static String GET_TOKEN_LOCATION = "http://10.23.1.183:8301";
final static String GET_TOKEN_URL = "/auth/oauth/token"; final static String GET_TOKEN_URL = "/auth/oauth/token";
final static String SYMBOL_1 = "?"; final static String SYMBOL_1 = "?";
final static String SYMBOL_2 = "="; final static String SYMBOL_2 = "=";
......
...@@ -7,7 +7,7 @@ public enum OutsideUserMsg { ...@@ -7,7 +7,7 @@ public enum OutsideUserMsg {
TOKEN_INVALID("19011","令牌无效!"), TOKEN_INVALID("19011","令牌无效!"),
USER_IS_NULL("19010","用户名为空!"), USER_IS_NULL("19010","用户名为空!"),
USER_STATUS_EXISTS("19009","同步的用户必须指定状态!"), USER_STATUS_EXISTS("19009","同步的用户必须指定状态!"),
USER_NOT_EXISTS("19008","学习平台暂无本账户信息,请联系管理员!"), USER_NOT_EXISTS("19008","智慧党建暂无本账户信息,请联系管理员!"),
USER_INFO_DECRYP_ERROR("19007","包含用户信息解密失败"), USER_INFO_DECRYP_ERROR("19007","包含用户信息解密失败"),
USER_ORG_NAME_IS_EMPTY("19006","包含用户组织信息为空的用户"), USER_ORG_NAME_IS_EMPTY("19006","包含用户组织信息为空的用户"),
USER_FULL_NAME_IS_EMPTY("19005","包含用户昵称为空的用户"), USER_FULL_NAME_IS_EMPTY("19005","包含用户昵称为空的用户"),
......
...@@ -20,14 +20,10 @@ import com.yizhi.system.application.vo.SaltPlusAccountVO; ...@@ -20,14 +20,10 @@ import com.yizhi.system.application.vo.SaltPlusAccountVO;
import com.yizhi.system.application.vo.UpdateAccountReqVO; import com.yizhi.system.application.vo.UpdateAccountReqVO;
import com.yizhi.system.application.vo.UpdateAccountVO; import com.yizhi.system.application.vo.UpdateAccountVO;
import com.yizhi.system.application.vo.domain.Account; import com.yizhi.system.application.vo.domain.Account;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -64,6 +60,8 @@ import com.yizhi.util.application.json.JsonUtil; ...@@ -64,6 +60,8 @@ import com.yizhi.util.application.json.JsonUtil;
import com.yizhi.util.application.regex.RegexUtil; import com.yizhi.util.application.regex.RegexUtil;
import com.yizhi.wechat.application.utils.HttpClientUtils; import com.yizhi.wechat.application.utils.HttpClientUtils;
import javax.annotation.Resource;
/** /**
* 第三方用户数据同步接口 * 第三方用户数据同步接口
* *
...@@ -84,12 +82,12 @@ public class SaltController { ...@@ -84,12 +82,12 @@ public class SaltController {
final Integer NO_VALIDATION = 0; final Integer NO_VALIDATION = 0;
/** /**
* 第三方使用学习平台的加密规则验证用户名 * 第三方使用智慧党建的加密规则验证用户名
*/ */
final Integer SALT_VALIDATION = 1; final Integer SALT_VALIDATION = 1;
/** /**
* 学习平台使用第三方的加密规则验证用户名 * 智慧党建使用第三方的加密规则验证用户名
*/ */
final Integer OTHER_VALIDATION = 2; final Integer OTHER_VALIDATION = 2;
...@@ -114,14 +112,14 @@ public class SaltController { ...@@ -114,14 +112,14 @@ public class SaltController {
@Autowired @Autowired
IdGenerator idGenerator; IdGenerator idGenerator;
@Autowired @Resource
AccountMapper accountMapper; AccountMapper accountMapper;
@Autowired @Autowired
OrganizationIndexService organizationIndexService; OrganizationIndexService organizationIndexService;
@Autowired /* @Autowired
RabbitTemplate rabbitTemplate; RabbitTemplate rabbitTemplate;*/
@Autowired @Autowired
LogEventPublisher publisher; LogEventPublisher publisher;
...@@ -326,7 +324,7 @@ public class SaltController { ...@@ -326,7 +324,7 @@ public class SaltController {
if (StringUtils.isEmpty(nameString)) { if (StringUtils.isEmpty(nameString)) {
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER1.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER1.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER1.getName()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER1.getName());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -353,7 +351,7 @@ public class SaltController { ...@@ -353,7 +351,7 @@ public class SaltController {
if (System.currentTimeMillis() > expireTime.getTime()) { if (System.currentTimeMillis() > expireTime.getTime()) {
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER2.getName()+appId)); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER2.getName()+appId));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER2.getName()+appId); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER2.getName()+appId);
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -368,7 +366,7 @@ public class SaltController { ...@@ -368,7 +366,7 @@ public class SaltController {
if(selectOne.getRsaState().equals(0)){ if(selectOne.getRsaState().equals(0)){
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER3.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER3.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER3.getName()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER3.getName());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -381,7 +379,7 @@ public class SaltController { ...@@ -381,7 +379,7 @@ public class SaltController {
} else { } else {
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER4.getName()+appId)); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER4.getName()+appId));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER4.getName()+appId); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER4.getName()+appId);
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -396,7 +394,7 @@ public class SaltController { ...@@ -396,7 +394,7 @@ public class SaltController {
if (null == decryptName) { if (null == decryptName) {
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER5.getName()+saltAccountVO.getSalt())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER5.getName()+saltAccountVO.getSalt()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp,InternationalEnums.SALTCONTROLLER5.getName()+saltAccountVO.getSalt()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp,InternationalEnums.SALTCONTROLLER5.getName()+saltAccountVO.getSalt());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -417,7 +415,7 @@ public class SaltController { ...@@ -417,7 +415,7 @@ public class SaltController {
if (null == user) { if (null == user) {
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER6.getName()+nameString)); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER6.getName()+nameString));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER6.getName()+nameString); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER6.getName()+nameString);
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -451,7 +449,7 @@ public class SaltController { ...@@ -451,7 +449,7 @@ public class SaltController {
} else { } else {
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId,Constants.MSG_NOT_SITE_ACCESS_AUTH.getName()+user.getName())); failEvents.add(new TaskLogDetailEvent(taskId,Constants.MSG_NOT_SITE_ACCESS_AUTH.getName()+user.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, Constants.MSG_NOT_SITE_ACCESS_AUTH.getName()+user.getName()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, Constants.MSG_NOT_SITE_ACCESS_AUTH.getName()+user.getName());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -465,7 +463,7 @@ public class SaltController { ...@@ -465,7 +463,7 @@ public class SaltController {
e.printStackTrace(); e.printStackTrace();
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER7.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER7.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER7.getName()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER7.getName());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -479,7 +477,7 @@ public class SaltController { ...@@ -479,7 +477,7 @@ public class SaltController {
e.printStackTrace(); e.printStackTrace();
publisher.publish(event); publisher.publish(event);
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER8.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER8.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER8.getName()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER8.getName());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -544,7 +542,7 @@ public class SaltController { ...@@ -544,7 +542,7 @@ public class SaltController {
String appId = updateAccountReqVO.getAppId(); String appId = updateAccountReqVO.getAppId();
if (null == appId) { if (null == appId) {
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER9.getName()+appId)); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER9.getName()+appId));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER9.getName()+appId); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER9.getName()+appId);
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -566,7 +564,7 @@ public class SaltController { ...@@ -566,7 +564,7 @@ public class SaltController {
if (System.currentTimeMillis() > expireTime.getTime()) { if (System.currentTimeMillis() > expireTime.getTime()) {
String error = InternationalEnums.SALTCONTROLLER10.getName(); String error = InternationalEnums.SALTCONTROLLER10.getName();
failEvents.add(new TaskLogDetailEvent(taskId, error)); failEvents.add(new TaskLogDetailEvent(taskId, error));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER10.getName()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER10.getName());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -978,7 +976,7 @@ public class SaltController { ...@@ -978,7 +976,7 @@ public class SaltController {
//错误的信息发送给任务详情表 //错误的信息发送给任务详情表
if (CollectionUtils.isNotEmpty(failEvents)) { if (CollectionUtils.isNotEmpty(failEvents)) {
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
} }
TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "批量更新用户成功",""); TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "批量更新用户成功","");
LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent); LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent);
...@@ -1019,7 +1017,7 @@ public class SaltController { ...@@ -1019,7 +1017,7 @@ public class SaltController {
String appId = updateAccountReqVO.getAppId(); String appId = updateAccountReqVO.getAppId();
if (null == appId) { if (null == appId) {
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER49.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER49.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER49.getName()+appId); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER49.getName()+appId);
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -1039,7 +1037,7 @@ public class SaltController { ...@@ -1039,7 +1037,7 @@ public class SaltController {
if (System.currentTimeMillis() > expireTime.getTime()) { if (System.currentTimeMillis() > expireTime.getTime()) {
String error = InternationalEnums.SALTCONTROLLER50.getName(); String error = InternationalEnums.SALTCONTROLLER50.getName();
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER50.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER50.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER50.getName()); TaskLogEvent failLogEvent = TaskLogEvent.fail(taskContextTemp, InternationalEnums.SALTCONTROLLER50.getName());
LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent); LogEvent<TaskLogEvent> faileEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, failLogEvent);
publisher.publish(faileEvent); publisher.publish(faileEvent);
...@@ -1439,7 +1437,7 @@ public class SaltController { ...@@ -1439,7 +1437,7 @@ public class SaltController {
//错误的信息发送给任务详情表 //错误的信息发送给任务详情表
if (CollectionUtils.isNotEmpty(failEvents)) { if (CollectionUtils.isNotEmpty(failEvents)) {
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
} }
TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "批量新增用户成功",""); TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "批量新增用户成功","");
LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent); LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent);
...@@ -1478,7 +1476,7 @@ public class SaltController { ...@@ -1478,7 +1476,7 @@ public class SaltController {
String appId = updateAccountReqVO.getAppId(); String appId = updateAccountReqVO.getAppId();
if (null == appId) { if (null == appId) {
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER59.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER59.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
return Response.fail(InternationalEnums.SALTCONTROLLER59.getName()); return Response.fail(InternationalEnums.SALTCONTROLLER59.getName());
} }
// 查询companyId // 查询companyId
...@@ -1495,7 +1493,7 @@ public class SaltController { ...@@ -1495,7 +1493,7 @@ public class SaltController {
if (System.currentTimeMillis() > expireTime.getTime()) { if (System.currentTimeMillis() > expireTime.getTime()) {
String error = InternationalEnums.SALTCONTROLLER60.getName(); String error = InternationalEnums.SALTCONTROLLER60.getName();
failEvents.add(new TaskLogDetailEvent(taskId, error)); failEvents.add(new TaskLogDetailEvent(taskId, error));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
return Response.fail(error); return Response.fail(error);
} }
com.yizhi.system.application.domain.Account account = new com.yizhi.system.application.domain.Account(); com.yizhi.system.application.domain.Account account = new com.yizhi.system.application.domain.Account();
...@@ -1579,7 +1577,7 @@ public class SaltController { ...@@ -1579,7 +1577,7 @@ public class SaltController {
} }
if (CollectionUtils.isNotEmpty(failEvents)) { if (CollectionUtils.isNotEmpty(failEvents)) {
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
} }
TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "批量禁用用户成功",""); TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "批量禁用用户成功","");
LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent); LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent);
...@@ -1622,7 +1620,7 @@ public class SaltController { ...@@ -1622,7 +1620,7 @@ public class SaltController {
String appId = updateAccountReqVO.getAppId(); String appId = updateAccountReqVO.getAppId();
if (null == appId) { if (null == appId) {
failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER64.getName())); failEvents.add(new TaskLogDetailEvent(taskId, InternationalEnums.SALTCONTROLLER64.getName()));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
return Response.fail(InternationalEnums.SALTCONTROLLER64.getName()); return Response.fail(InternationalEnums.SALTCONTROLLER64.getName());
} }
// 查询companyId // 查询companyId
...@@ -1639,7 +1637,7 @@ public class SaltController { ...@@ -1639,7 +1637,7 @@ public class SaltController {
if (System.currentTimeMillis() > expireTime.getTime()) { if (System.currentTimeMillis() > expireTime.getTime()) {
String error =InternationalEnums.SALTCONTROLLER65.getName(); String error =InternationalEnums.SALTCONTROLLER65.getName();
failEvents.add(new TaskLogDetailEvent(taskId, error)); failEvents.add(new TaskLogDetailEvent(taskId, error));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
return Response.fail(error); return Response.fail(error);
} }
com.yizhi.system.application.domain.Account account = new com.yizhi.system.application.domain.Account(); com.yizhi.system.application.domain.Account account = new com.yizhi.system.application.domain.Account();
...@@ -1723,7 +1721,7 @@ public class SaltController { ...@@ -1723,7 +1721,7 @@ public class SaltController {
} }
if (CollectionUtils.isNotEmpty(failEvents)) { if (CollectionUtils.isNotEmpty(failEvents)) {
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
} }
TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "查询用户成功",""); TaskLogEvent successLogEvent = TaskLogEvent.success(taskContextTemp, "查询用户成功","");
LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent); LogEvent<TaskLogEvent> successEvent = new LogEvent<>(LogQueue.TASK_LOG_QUEUE, successLogEvent);
......
package com.yizhi.system.application.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import com.yizhi.application.orm.id.IdGenerator;import com.yizhi.application.orm.util.QueryUtil;import com.yizhi.core.application.cache.RedisCache;import com.yizhi.core.application.context.RequestContext;import com.yizhi.core.application.exception.BizException;import com.yizhi.core.application.log.LogQueue;import com.yizhi.core.application.log.TaskLogDetailEvent;import com.yizhi.system.application.constant.AccountExportConditionConstant;import com.yizhi.system.application.constant.AuthzConstant;import com.yizhi.system.application.constant.ImpAccountError;import com.yizhi.system.application.domain.Account;import com.yizhi.system.application.domain.Company;import com.yizhi.system.application.domain.Organization;import com.yizhi.system.application.mapper.*;import com.yizhi.system.application.model.AccountImpModel;import com.yizhi.system.application.model.ImportModel;import com.yizhi.system.application.service.*;import com.yizhi.system.application.service.using.OrganizationCacheService;import com.yizhi.system.application.service.using.OrganizationIndexService;import com.yizhi.util.application.constant.ReturnCode;import com.yizhi.util.application.date.DateUtil;import com.yizhi.util.application.encrypt.ShaEncrypt;import com.yizhi.util.application.regex.RegexUtil;import com.yizhi.wechat.application.feign.WeiXinClient;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.lang3.ArrayUtils;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.rabbit.core.RabbitTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional; import java.util.*;import java.util.stream.Collectors; @Service@Transactional(rollbackFor = Exception.class)public class AccountImportServiceImpl extends ServiceImpl<AccountMapper, Account> implements IAccountImportService { private static final Logger logger = LoggerFactory.getLogger(AccountImportServiceImpl.class); @Autowired AccountMapper accountMapper; @Autowired AuthzAccountRoleMapper accountRoleMapper; @Autowired AuthzRoleMapper roleMapper; @Autowired IOrganizationService orgService; @Autowired SiteMapper siteMapper; @Autowired CompanyMapper companyMapper; @Autowired IdGenerator idGenerator; @Autowired AuthorityService authorityService; @Autowired AccountEnableLogMapper logMapper; @Autowired AuthzGroupMemberMapper memberMapper; @Autowired IAuthzUserGroupService groupService; @Autowired OrganizationMapper organizationMapper; @Autowired private IOrganizationService organizationService; @Autowired private AuthzGroupMemberMapper groupMemberMapper; @Autowired private OrganizationIndexService organizationIndexService; @Autowired private OrganizationCacheService organizationCacheService; @Autowired private AuthService authService; @Autowired RabbitTemplate rabbitTemplate; @Autowired RedisCache redisCache; @Autowired private ISmsSendRecordService smsSendRecordService; @Autowired private WeiXinClient weiXinClient; @Override public List<AccountImpModel> importAccount(ImportModel importModel, RequestContext context) { List<AccountImpModel> models = importModel.getData(); // 获取企业的id Long companyId = context.getCompanyId(); logger.info("当前用户的企业的companyId:" + companyId); // 获取当前企业的用户name 的列表 List<String> names = accountMapper.selectNamesByCompanyId(companyId); logger.info("names size:" + names.size()); names = names.parallelStream().map(name -> { return name.toLowerCase(); }).collect(Collectors.toList()); logger.info("names lowCase:" + names.size()); Long taskId = importModel.getTaskId(); if (CollectionUtils.isNotEmpty(models)) { List<TaskLogDetailEvent> failEvents = new ArrayList<TaskLogDetailEvent>(); // 根组织 Organization rootOrg = new Organization(); rootOrg.setParentId(0L); rootOrg.setDeleted(Boolean.valueOf(false)); rootOrg.setCompanyId(context.getCompanyId()); EntityWrapper<Organization> rootOrgEw = new EntityWrapper(rootOrg); rootOrgEw.like("code", AuthzConstant.DEFAULT_COMPANY_ORG_ROOT_CODE_SUFFIX); rootOrg = rootOrg.selectOne(rootOrgEw); if (null == rootOrg) { failEvents.add(new TaskLogDetailEvent(taskId, "!!!查找根组织错误:未成功查询到根组织!!!")); rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); return models; } List<Account> accounts = new ArrayList<Account>(); // 文件中的用户名集合 List<String> accountNamesInFile = new ArrayList<String>(); List<String> newAaccountNamesInFile = new ArrayList<>(); // 初始化文件中的手机号集合 List<String> accountMobileInFile = new ArrayList<String>(); // 初始化组织id Long orgId = null; List<Map<String, Long>> tempList = new ArrayList<Map<String, Long>>(); // 存放已添加的节点数据 Map<String, Map<String, Long>> orgMap = new HashMap<String, Map<String, Long>>(); Map<String, Long> childOrgMap = new HashMap<String, Long>(); Map<Long, String> parentIdLayerMap = new HashMap<>(); //判断是否有新节点产生 boolean isNewNode = false; boolean clearFlag = false; Long parentId; List<Account> updateAccountList = new ArrayList<Account>(); // 初始化解绑集合 List<Long> accountIds = new ArrayList<Long>(8); for (int j = 0; j < models.size(); j++) { AccountImpModel model = models.get(j); int i = j + 2; // 获取操作栏位的信息 String operation = model.getOperation(); boolean unBindUserFlag = false; if (StringUtils.isNotEmpty(operation)) { unBindUserFlag = AccountExportConditionConstant.UNBIND_USER.equals(operation.trim()); } // 判断操作是否解绑 if (!unBindUserFlag) { parentId = rootOrg.getId(); isNewNode = false; childOrgMap = new HashMap<String, Long>(); //检查用组织不能为空 // if (StringUtils.isEmpty(operation.trim())) { if (StringUtils.isEmpty(model.getFullOrgName() != null ? model.getFullOrgName().trim() : model.getFullOrgName())) { model.setResult(ImpAccountError.ORG_CODE_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.ORG_CODE_EMPTY)); continue; } // } // add 2018-7-17 10:00:14 String[] orgNameArray = model.getFullOrgName().trim().split("\\+"); // 子组织名不能和跟组织相同 add 2019年4月2日 int step = j + 2; if (useArrayUtils(orgNameArray, rootOrg.getName())) { model.setResult(ImpAccountError.ORGANIZATION_REPEAT); failEvents.add(new TaskLogDetailEvent(taskId, "第" + step + "行:" + ImpAccountError.ORGANIZATION_REPEAT)); continue; } orgNameArray = checkOrgImportCode(orgNameArray, rootOrg.getName().trim()); List<Organization> organizationList = new ArrayList<Organization>(); Date sysDate = new Date(); Organization midOrg = null; String newOrgCode = null; // 组织列表的新增 for (int k = 0; k < orgNameArray.length; k++) { Long id = null; if (!isNewNode && !orgMap.isEmpty()) { if (orgMap.size() > 0 && orgMap.get(orgNameArray[0]) != null) { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k)); if (parentId != null) { if (k == 0) { parentId = rootOrg.getId(); } else { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k - 1)); } orgId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k)); if (k > 0) { if (k == 1) { logger.info("已存在组织:" + orgNameArray[k] + "_" + k + " 本节点ID:" + orgMap.get(orgNameArray[0]).get(orgNameArray[k] + k) + " 父节点ID:" + parentId + "组织ID:" + orgId); } else { logger.info("已存在组织:" + orgNameArray[k] + "_" + k + " 本节点ID:" + orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k)) + " 父节点ID:" + parentId + "组织ID:" + orgId); } } continue; } } } if (k == 0) { parentId = rootOrg.getId(); } else { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k - 1)); logger.info("parentId:" + parentId); } midOrg = getOrg(orgNameArray[k], parentId); if (midOrg != null) { logger.info("已经存在导入组织的名称:" + k + "-层级-" + midOrg.getEnName()); logger.info("已经存在导入组织id:" + k + "-层级-" + midOrg.getId()); parentId = midOrg.getId(); orgId = parentId; isNewNode = false; if (k == 0) { childOrgMap.put(getAllParentName(orgNameArray, k), orgId); orgMap.put(orgNameArray[0], childOrgMap); midOrg.setParentIdLayer(rootOrg.getId() + Organization.PARENT_ID_LAYER_SEPARATOR + midOrg.getId()); parentIdLayerMap.put(midOrg.getId(), midOrg.getParentIdLayer()); } else { childOrgMap.put(getAllParentName(orgNameArray, k), orgId); childOrgMap.putAll(orgMap.get(orgNameArray[0])); orgMap.put(orgNameArray[0], childOrgMap); midOrg.setParentIdLayer(parentIdLayerMap.get(midOrg.getParentId()) + Organization.PARENT_ID_LAYER_SEPARATOR + midOrg.getId()); parentIdLayerMap.put(midOrg.getId(), midOrg.getParentIdLayer()); } continue; } else { Organization organization = new Organization(); id = idGenerator.generate(); logger.info("公司id:" + context.getCompanyId()); organization.setCompanyId(context.getCompanyId()); // 生成组织编码 // 获取redis中的编码值编码 String orgCode = redisCache.get(context.getCompanyCode()) + ""; if (orgCode != null && !"".equals(orgCode) && !"null".equals(orgCode)) { // 新的组织编码 newOrgCode = (Integer.valueOf(orgCode) + 1) + ""; // 放到缓存中 redisCache.set(context.getCompanyCode(), newOrgCode); } else { newOrgCode = "1"; redisCache.set(context.getCompanyCode(), newOrgCode); } String orgNum = ""; switch (newOrgCode.length()) { case 1: orgNum = "000" + newOrgCode; break; case 2: orgNum = "00" + newOrgCode; break; case 3: orgNum = "0" + newOrgCode; break; default: orgNum = newOrgCode; } organization.setCode(context.getCompanyCode() + orgNum); organization.setId(id); organization.setName(orgNameArray[k].trim()); // 设置rootId organization.setRootId(rootOrg.getId()); if (organization.getName().equals("理赔")) { int uu = 0; logger.info("理赔"); } if (k == 0) { organization.setParentId(rootOrg.getId()); organization.setParentIdLayer(rootOrg.getId() + Organization.PARENT_ID_LAYER_SEPARATOR + organization.getId()); parentIdLayerMap.put(organization.getId(), organization.getParentIdLayer()); } else { if (k > 0) { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k - 1)); logger.info("父级parentId:" + parentId); } organization.setParentId(parentId); organization.setParentIdLayer(parentIdLayerMap.get(organization.getParentId()) + Organization.PARENT_ID_LAYER_SEPARATOR + organization.getId()); parentIdLayerMap.put(organization.getId(), organization.getParentIdLayer()); } organization.setLayer(k + 1); organization.setCreateTime(sysDate); organization.setCreateByName(context.getAccountName()); organization.setCompanyId(context.getCompanyId()); organizationList.add(organization); parentId = id; orgId = id; logger.info("组织的id:" + orgId); } //有新节点产生,那么它下面的子节点全部是新增加 isNewNode = true; if (k == 0) { childOrgMap.put(getAllParentName(orgNameArray, k), id); orgMap.put(orgNameArray[0], childOrgMap); } else { childOrgMap.put(getAllParentName(orgNameArray, k), id); childOrgMap.putAll(orgMap.get(orgNameArray[0])); orgMap.put(orgNameArray[0], childOrgMap); } logger.info("添加新组织:" + orgNameArray[k] + "_" + k + ":" + id); } // 组织列表新增完成 if (organizationList != null && organizationList.size() > 0) { // 批量新增组织 orgService.insertBatch(organizationList); logger.info("organization add complete!"); clearFlag = true; } // 获取用户名 String name = model.getName(); logger.info("当前 current_name:" + name); String workNum = model.getWorknum(); //检查用户名不能为空 if (StringUtils.isEmpty(name)) { model.setResult(ImpAccountError.NAME_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EMPTY)); continue; } // 转为小写 name = name.trim().toLowerCase(); // 获取用户名密码 String password = model.getPassword() != null ? model.getPassword().trim() : null; if (StringUtils.isEmpty(operation)) { //检查密码不能为空 if (StringUtils.isEmpty(password)) { model.setResult(ImpAccountError.PASSWORD_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PASSWORD_EMPTY)); continue; } //检查密码是否合法 if (!RegexUtil.checkAccountPassword(password.trim())) { model.setResult(ImpAccountError.PASSWORD_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PASSWORD_FORMAT_ERROR)); continue; } } //检查名称是否合法 if (StringUtils.isNotEmpty(name)) { if (!RegexUtil.checkAccountName(name.trim())) { model.setResult(ImpAccountError.NAME_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_FORMAT_ERROR)); continue; } } //检查手机是否合法 String phone = model.getMobile(); if (StringUtils.isNotEmpty(phone)) { if (!RegexUtil.checkMobile(phone.trim())) { model.setResult(ImpAccountError.PHONE_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PHONE_FORMAT_ERROR)); continue; } } //检查邮箱是否合法 String email = model.getEmail(); if (StringUtils.isNotEmpty(email.trim())) { if (!RegexUtil.checkEmail(email.trim())) { model.setResult(ImpAccountError.EMAIL_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.EMAIL_FORMAT_ERROR)); continue; } } //判断备注 add by ly 2019-4-4 11:28:18 String remarkFirst = model.getRemarkFirst(); logger.info("remarkFirst的值是:" + remarkFirst); if (StringUtils.isNotEmpty(remarkFirst)) { if (!RegexUtil.isSuccessRemark(remarkFirst.trim())) { model.setResult(ImpAccountError.REMARK_REQUIRED); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_REQUIRED)); continue; } if ((remarkFirst.trim()).length() > 50) { model.setResult(ImpAccountError.REMARK_LENGTH); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_LENGTH)); continue; } } String remarkSecond = model.getRemarkSecond(); if (StringUtils.isNotEmpty(remarkSecond)) { if (!RegexUtil.isSuccessRemark(remarkSecond.trim())) { model.setResult(ImpAccountError.REMARK_REQUIRED); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_REQUIRED)); continue; } if ((remarkSecond.trim()).length() > 50) { model.setResult(ImpAccountError.REMARK_LENGTH); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_LENGTH)); continue; } } String remarkThird = model.getRemarkThird(); if (StringUtils.isNotEmpty(remarkThird)) { if (!RegexUtil.isSuccessRemark(remarkThird.trim())) { model.setResult(ImpAccountError.REMARK_REQUIRED); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_REQUIRED)); continue; } if ((remarkThird.trim()).length() > 50) { model.setResult(ImpAccountError.REMARK_LENGTH); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_LENGTH)); continue; } } // 判断导入用户 2019-2-28 List<String> mobileList = accountMapper.selectMobilesByCompanyId(companyId); String newName = ""; if (StringUtils.isEmpty(operation)) { // 检查文件中是否有重名 if (accountNamesInFile.contains(name.toLowerCase())) { model.setResult(ImpAccountError.NAME_EXIST_IN_FILE); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EXIST_IN_FILE)); continue; } accountNamesInFile.add(name.toLowerCase()); //检查名称是否重复 // modified by shengchenglong,不区分大小写 if (names.contains(name.toLowerCase())) { model.setResult(ImpAccountError.NAME_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EXIST)); continue; } names.add(name.toLowerCase()); // 新增用户 //检查手机号是否重复 if (StringUtils.isNotEmpty(phone)) { if (accountMapper.countExistMobile(0L, context.getCompanyId(), phone.trim()) > 0) { model.setResult(ImpAccountError.MOBILE_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MOBILE_EXIST)); continue; } mobileList.add(phone); } } else { if (AccountExportConditionConstant.UPDATE_NAME.equals(operation.trim())) { logger.info("name" + name); logger.info("" + names); if (!names.contains(name)) { model.setResult(ImpAccountError.MODIFY_NAME_NOT_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MODIFY_NAME_NOT_EXIST)); continue; } Account userInfo = new Account(); userInfo.setName(model.getName().trim()); userInfo.setCompanyId(companyId); Account account = this.selectOne(QueryUtil.condition(userInfo)); if (!StringUtils.isNotEmpty(account.getMobile())) { if (StringUtils.isNotEmpty(phone)) { if (!phone.equals(account.getMobile())) { if (mobileList.contains(phone)) { model.setResult(ImpAccountError.MOBILE_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MOBILE_EXIST)); continue; } } } } newName = model.getNewName().trim(); if (StringUtils.isNotEmpty(newName)) { logger.info("当前的新名称:" + newName); boolean flag = RegexUtil.checkAccountName(newName.trim()); logger.info("校验的结果:" + flag); // 校验新用户名的格式 if (!RegexUtil.checkAccountName(newName.trim())) { model.setResult(ImpAccountError.NEW_NAME_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NEW_NAME_FORMAT_ERROR)); continue; } newName = newName.toLowerCase(); // 检查文件中是否有重名 if (newAaccountNamesInFile.contains(newName)) { model.setResult(ImpAccountError.NEW_NAME_EXIST_IN_FILE); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NEW_NAME_EXIST_IN_FILE)); continue; } newAaccountNamesInFile.add(model.getNewName()); //检查名称是否和数据库中的名称重复 if (names.contains(model.getNewName())) { model.setResult(ImpAccountError.NAME_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EXIST)); continue; } names.add(name); } } } // 判断文件中手机号是否重复 if (StringUtils.isNotEmpty(phone)) { if (accountMobileInFile.contains(phone)) { model.setResult(ImpAccountError.MOBILE_EXIST_IN_FILE); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MOBILE_EXIST_IN_FILE)); continue; } } accountMobileInFile.add(phone); String fullName = model.getFullName(); if (StringUtils.isNotEmpty(fullName)) { if ((fullName.trim()).length() > 20) { model.setResult(ImpAccountError.FULLNAME_LENGTH_LONG); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.FULLNAME_LENGTH_LONG)); continue; } mobileList.add(phone); } String enable = model.getEnabled(); Boolean enabled = null; if (StringUtils.isNotEmpty(enable)) { if ("1".equals(enable)) { enabled = Boolean.TRUE; } else if ("0".equals(enable)) { enabled = Boolean.FALSE; } } //查询账号过期类型 Integer expiredType = 0; String validDate = model.getValidDate(); Date startDate = null; Date endDate = null; Date expiredTime = null; Integer validDays = 0; try { if (org.apache.commons.lang3.StringUtils.EMPTY.equals(org.apache.commons.lang3.StringUtils.trimToEmpty(validDate))) { expiredType = 1; } else { if (validDate.indexOf("-") != -1) { String[] dateArr = validDate.split("-"); if (dateArr.length < 2) { model.setResult(ImpAccountError.VALIDDATE_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.VALIDDATE_FORMAT_ERROR)); continue; } else { expiredType = 2; startDate = DateUtil.parseShort(dateArr[0]); endDate = DateUtil.parseShort(dateArr[1]); } } else { expiredType = 3; validDays = Integer.parseInt(validDate); Calendar cal = Calendar.getInstance(); //根据有效天数计算账号过期时间 cal.add(Calendar.DATE, validDays); expiredTime = cal.getTime(); } } } catch (Exception e) { model.setResult(ImpAccountError.VALIDDATE_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.VALIDDATE_FORMAT_ERROR)); continue; } Account account = new Account(); account.setId(idGenerator.generate()); account.setName(name.trim()); account.setCompanyId(companyId); account.setEmail(email); account.setMobile(phone); account.setTelephone(phone); account.setWorkNum(workNum); account.setExpiredType(expiredType); account.setStartTime(startDate); account.setEndTime(endDate); account.setExpiredTime(expiredTime); account.setValidDays(validDays); account.setOrgId(orgId); logger.info("导入用户的用户组织id"); account.setFullName(model.getFullName()); account.setPosition(model.getPosition()); account.setCreateById(importModel.getAccountId()); account.setCreateByName(importModel.getAccountName()); account.setCreateTime(new Date()); // add by ly 2019-4-4 11:13:27 account.setRemarkFirst(model.getRemarkFirst()); account.setRemarkSecond(model.getRemarkSecond()); account.setRemarkThird(model.getRemarkThird()); // 判断导入用户还是新增用户 logger.info("当前导入操作:" + operation.trim()); if (StringUtils.isEmpty(operation)) { // 新增用户 account.setPassword(ShaEncrypt.encryptNewPassword(password)); accounts.add(account); } else { if (AccountExportConditionConstant.UPDATE_NAME.equals(operation.trim())) { try { // 获取用户信息 Account updateAccount = new Account(); updateAccount.setName(name); updateAccount.setCompanyId(companyId); // 获取当前的用户的信息 updateAccount = this.selectOne(QueryUtil.condition(updateAccount)); logger.info("返回用户:" + updateAccount); // 密码校验 if (StringUtils.isNotEmpty(password)) { //检查密码是否合法 if (!RegexUtil.checkAccountPassword(password.trim())) { model.setResult(ImpAccountError.PASSWORD_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PASSWORD_FORMAT_ERROR)); continue; } account.setPassword(ShaEncrypt.encryptNewPassword(password)); } //更新部门校验部门为空,不修改 if (StringUtils.isEmpty(model.getFullOrgName() != null ? model.getFullOrgName().trim() : model.getFullOrgName())) { account.setOrgId(updateAccount.getOrgId()); } if (updateAccount != null) { logger.info("用户id:" + updateAccount.getId()); if (enabled != null) { account.setEnabled(enabled); if (enabled) { account.setEnabledTime(new Date()); } } account.setId(updateAccount.getId()); // 可修改用户的名 add 2019年7月25日11:28:26 by lingye String new_name = StringUtils.isNotEmpty(newName) ? newName : name; account.setName(new_name); } account.setCreateTime(null); account.setUpdateTime(new Date()); updateAccountList.add(account); } catch (Exception e) { logger.info("更新异常{}", e); } } } // 解绑用户 } else if (unBindUserFlag) { String name = model.getName(); logger.info("解绑的用户名:" + name); if (StringUtils.isEmpty(name)) { model.setResult(ImpAccountError.NAME_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EMPTY)); continue; } if (!names.contains(name)) { model.setResult(ImpAccountError.UNBIND_NAME_NOT_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.UNBIND_NAME_NOT_EXIST)); continue; } Account userInfo = new Account(); userInfo.setName(model.getName().trim()); userInfo.setCompanyId(companyId); Account account = this.selectOne(QueryUtil.condition(userInfo)); if (account == null) { model.setResult(ImpAccountError.UNBIND_NAME_NOT_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.UNBIND_NAME_NOT_EXIST)); continue; } accountIds.add(account.getId()); } } if (CollectionUtils.isNotEmpty(accountIds)) { // 解绑用户 Boolean unbindUserResult = weiXinClient.unbindUser(accountIds); if (CollectionUtils.isNotEmpty(failEvents)) { rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); } return models; } if (CollectionUtils.isNotEmpty(accounts)) { if (!this.insertBatch(accounts)) { throw new BizException(ReturnCode.SAVE_FAIL.getCode(), ReturnCode.SAVE_FAIL.getMsg()); } clearFlag = true; } // 更新用户信息 if (CollectionUtils.isNotEmpty(updateAccountList)) { if (!this.updateBatchById(updateAccountList)) { throw new BizException(ReturnCode.UPDATE_FAIL.getCode(), ReturnCode.UPDATE_FAIL.getMsg()); } clearFlag = true; } if (clearFlag) { Company company = companyMapper.selectById(companyId); if (company!=null){ // 计算左右索引 organizationIndexService.addInitTask(companyId); } } //错误的信息发送给任务详情表 if (CollectionUtils.isNotEmpty(failEvents)) { rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); } return models; } else { throw new BizException(ReturnCode.RESOURCE_NOT_FOUND.getCode(), ReturnCode.RESOURCE_NOT_FOUND.getMsg()); } } /** * 获取当前节点的所有父亲节点 * * @param orgNameArray * @param curIndex * @return */ private String getAllParentName(String[] orgNameArray, int curIndex) { String name = ""; for (int i = 0; i < curIndex + 1; i++) { name += orgNameArray[i]; } return name + curIndex; } /** * 数组包含 * * @param arr * @param targetValue * @return */ public boolean useArrayUtils(String[] arr, String targetValue) { return ArrayUtils.contains(arr, targetValue); } /** * 去除跟组织 * * @param fullOrgName * @param rootName * @return */ private String[] checkOrgImportCode(String[] fullOrgName, String rootName) { if (fullOrgName[0].equals(rootName)) { return Arrays.copyOfRange(fullOrgName, 1, fullOrgName.length); } return fullOrgName; } /** * 查询组织 * * @param name * @param parentId * @return */ public Organization getOrg(String name, Long parentId) { Organization org = new Organization(); org.setName(name.trim()); org.setParentId(parentId); org.setDeleted(false); return orgService.selectOne(QueryUtil.condition(org)); } } package com.yizhi.system.application.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper;import com.baomidou.mybatisplus.service.impl.ServiceImpl;import com.yizhi.application.orm.id.IdGenerator;import com.yizhi.application.orm.util.QueryUtil;import com.yizhi.core.application.cache.RedisCache;import com.yizhi.core.application.context.RequestContext;import com.yizhi.core.application.exception.BizException;import com.yizhi.core.application.log.LogQueue;import com.yizhi.core.application.log.TaskLogDetailEvent;import com.yizhi.system.application.constant.AccountExportConditionConstant;import com.yizhi.system.application.constant.AuthzConstant;import com.yizhi.system.application.constant.ImpAccountError;import com.yizhi.system.application.domain.Account;import com.yizhi.system.application.domain.Company;import com.yizhi.system.application.domain.Organization;import com.yizhi.system.application.mapper.*;import com.yizhi.system.application.model.AccountImpModel;import com.yizhi.system.application.model.ImportModel;import com.yizhi.system.application.service.*;import com.yizhi.system.application.service.using.OrganizationCacheService;import com.yizhi.system.application.service.using.OrganizationIndexService;import com.yizhi.util.application.constant.ReturnCode;import com.yizhi.util.application.date.DateUtil;import com.yizhi.util.application.encrypt.ShaEncrypt;import com.yizhi.util.application.regex.RegexUtil;import com.yizhi.wechat.application.feign.WeiXinClient;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.lang3.ArrayUtils;import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional; import java.util.*;import java.util.stream.Collectors; @Service@Transactional(rollbackFor = Exception.class)public class AccountImportServiceImpl extends ServiceImpl<AccountMapper, Account> implements IAccountImportService { private static final Logger logger = LoggerFactory.getLogger(AccountImportServiceImpl.class); @Autowired AccountMapper accountMapper; @Autowired AuthzAccountRoleMapper accountRoleMapper; @Autowired AuthzRoleMapper roleMapper; @Autowired IOrganizationService orgService; @Autowired SiteMapper siteMapper; @Autowired CompanyMapper companyMapper; @Autowired IdGenerator idGenerator; @Autowired AuthorityService authorityService; @Autowired AccountEnableLogMapper logMapper; @Autowired AuthzGroupMemberMapper memberMapper; @Autowired IAuthzUserGroupService groupService; @Autowired OrganizationMapper organizationMapper; @Autowired private IOrganizationService organizationService; @Autowired private AuthzGroupMemberMapper groupMemberMapper; @Autowired private OrganizationIndexService organizationIndexService; @Autowired private OrganizationCacheService organizationCacheService; @Autowired private AuthService authService; /*@Autowired RabbitTemplate rabbitTemplate;*/ @Autowired RedisCache redisCache; @Autowired private ISmsSendRecordService smsSendRecordService; @Autowired private WeiXinClient weiXinClient; @Override public List<AccountImpModel> importAccount(ImportModel importModel, RequestContext context) { List<AccountImpModel> models = importModel.getData(); // 获取企业的id Long companyId = context.getCompanyId(); logger.info("当前用户的企业的companyId:" + companyId); // 获取当前企业的用户name 的列表 List<String> names = accountMapper.selectNamesByCompanyId(companyId); logger.info("names size:" + names.size()); names = names.parallelStream().map(name -> { return name.toLowerCase(); }).collect(Collectors.toList()); logger.info("names lowCase:" + names.size()); Long taskId = importModel.getTaskId(); if (CollectionUtils.isNotEmpty(models)) { List<TaskLogDetailEvent> failEvents = new ArrayList<TaskLogDetailEvent>(); // 根组织 Organization rootOrg = new Organization(); rootOrg.setParentId(0L); rootOrg.setDeleted(Boolean.valueOf(false)); rootOrg.setCompanyId(context.getCompanyId()); EntityWrapper<Organization> rootOrgEw = new EntityWrapper(rootOrg); rootOrgEw.like("code", AuthzConstant.DEFAULT_COMPANY_ORG_ROOT_CODE_SUFFIX); rootOrg = rootOrg.selectOne(rootOrgEw); if (null == rootOrg) { failEvents.add(new TaskLogDetailEvent(taskId, "!!!查找根组织错误:未成功查询到根组织!!!")); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); return models; } List<Account> accounts = new ArrayList<Account>(); // 文件中的用户名集合 List<String> accountNamesInFile = new ArrayList<String>(); List<String> newAaccountNamesInFile = new ArrayList<>(); // 初始化文件中的手机号集合 List<String> accountMobileInFile = new ArrayList<String>(); // 初始化组织id Long orgId = null; List<Map<String, Long>> tempList = new ArrayList<Map<String, Long>>(); // 存放已添加的节点数据 Map<String, Map<String, Long>> orgMap = new HashMap<String, Map<String, Long>>(); Map<String, Long> childOrgMap = new HashMap<String, Long>(); Map<Long, String> parentIdLayerMap = new HashMap<>(); //判断是否有新节点产生 boolean isNewNode = false; boolean clearFlag = false; Long parentId; List<Account> updateAccountList = new ArrayList<Account>(); // 初始化解绑集合 List<Long> accountIds = new ArrayList<Long>(8); for (int j = 0; j < models.size(); j++) { AccountImpModel model = models.get(j); int i = j + 2; // 获取操作栏位的信息 String operation = model.getOperation(); boolean unBindUserFlag = false; if (StringUtils.isNotEmpty(operation)) { unBindUserFlag = AccountExportConditionConstant.UNBIND_USER.equals(operation.trim()); } // 判断操作是否解绑 if (!unBindUserFlag) { parentId = rootOrg.getId(); isNewNode = false; childOrgMap = new HashMap<String, Long>(); //检查用组织不能为空 // if (StringUtils.isEmpty(operation.trim())) { if (StringUtils.isEmpty(model.getFullOrgName() != null ? model.getFullOrgName().trim() : model.getFullOrgName())) { model.setResult(ImpAccountError.ORG_CODE_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.ORG_CODE_EMPTY)); continue; } // } // add 2018-7-17 10:00:14 String[] orgNameArray = model.getFullOrgName().trim().split("\\+"); // 子组织名不能和跟组织相同 add 2019年4月2日 int step = j + 2; if (useArrayUtils(orgNameArray, rootOrg.getName())) { model.setResult(ImpAccountError.ORGANIZATION_REPEAT); failEvents.add(new TaskLogDetailEvent(taskId, "第" + step + "行:" + ImpAccountError.ORGANIZATION_REPEAT)); continue; } orgNameArray = checkOrgImportCode(orgNameArray, rootOrg.getName().trim()); List<Organization> organizationList = new ArrayList<Organization>(); Date sysDate = new Date(); Organization midOrg = null; String newOrgCode = null; // 组织列表的新增 for (int k = 0; k < orgNameArray.length; k++) { Long id = null; if (!isNewNode && !orgMap.isEmpty()) { if (orgMap.size() > 0 && orgMap.get(orgNameArray[0]) != null) { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k)); if (parentId != null) { if (k == 0) { parentId = rootOrg.getId(); } else { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k - 1)); } orgId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k)); if (k > 0) { if (k == 1) { logger.info("已存在组织:" + orgNameArray[k] + "_" + k + " 本节点ID:" + orgMap.get(orgNameArray[0]).get(orgNameArray[k] + k) + " 父节点ID:" + parentId + "组织ID:" + orgId); } else { logger.info("已存在组织:" + orgNameArray[k] + "_" + k + " 本节点ID:" + orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k)) + " 父节点ID:" + parentId + "组织ID:" + orgId); } } continue; } } } if (k == 0) { parentId = rootOrg.getId(); } else { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k - 1)); logger.info("parentId:" + parentId); } midOrg = getOrg(orgNameArray[k], parentId); if (midOrg != null) { logger.info("已经存在导入组织的名称:" + k + "-层级-" + midOrg.getEnName()); logger.info("已经存在导入组织id:" + k + "-层级-" + midOrg.getId()); parentId = midOrg.getId(); orgId = parentId; isNewNode = false; if (k == 0) { childOrgMap.put(getAllParentName(orgNameArray, k), orgId); orgMap.put(orgNameArray[0], childOrgMap); midOrg.setParentIdLayer(rootOrg.getId() + Organization.PARENT_ID_LAYER_SEPARATOR + midOrg.getId()); parentIdLayerMap.put(midOrg.getId(), midOrg.getParentIdLayer()); } else { childOrgMap.put(getAllParentName(orgNameArray, k), orgId); childOrgMap.putAll(orgMap.get(orgNameArray[0])); orgMap.put(orgNameArray[0], childOrgMap); midOrg.setParentIdLayer(parentIdLayerMap.get(midOrg.getParentId()) + Organization.PARENT_ID_LAYER_SEPARATOR + midOrg.getId()); parentIdLayerMap.put(midOrg.getId(), midOrg.getParentIdLayer()); } continue; } else { Organization organization = new Organization(); id = idGenerator.generate(); logger.info("公司id:" + context.getCompanyId()); organization.setCompanyId(context.getCompanyId()); // 生成组织编码 // 获取redis中的编码值编码 String orgCode = redisCache.get(context.getCompanyCode()) + ""; if (orgCode != null && !"".equals(orgCode) && !"null".equals(orgCode)) { // 新的组织编码 newOrgCode = (Integer.valueOf(orgCode) + 1) + ""; // 放到缓存中 redisCache.set(context.getCompanyCode(), newOrgCode); } else { newOrgCode = "1"; redisCache.set(context.getCompanyCode(), newOrgCode); } String orgNum = ""; switch (newOrgCode.length()) { case 1: orgNum = "000" + newOrgCode; break; case 2: orgNum = "00" + newOrgCode; break; case 3: orgNum = "0" + newOrgCode; break; default: orgNum = newOrgCode; } organization.setCode(context.getCompanyCode() + orgNum); organization.setId(id); organization.setName(orgNameArray[k].trim()); // 设置rootId organization.setRootId(rootOrg.getId()); if (organization.getName().equals("理赔")) { int uu = 0; logger.info("理赔"); } if (k == 0) { organization.setParentId(rootOrg.getId()); organization.setParentIdLayer(rootOrg.getId() + Organization.PARENT_ID_LAYER_SEPARATOR + organization.getId()); parentIdLayerMap.put(organization.getId(), organization.getParentIdLayer()); } else { if (k > 0) { parentId = orgMap.get(orgNameArray[0]).get(getAllParentName(orgNameArray, k - 1)); logger.info("父级parentId:" + parentId); } organization.setParentId(parentId); organization.setParentIdLayer(parentIdLayerMap.get(organization.getParentId()) + Organization.PARENT_ID_LAYER_SEPARATOR + organization.getId()); parentIdLayerMap.put(organization.getId(), organization.getParentIdLayer()); } organization.setLayer(k + 1); organization.setCreateTime(sysDate); organization.setCreateByName(context.getAccountName()); organization.setCompanyId(context.getCompanyId()); organizationList.add(organization); parentId = id; orgId = id; logger.info("组织的id:" + orgId); } //有新节点产生,那么它下面的子节点全部是新增加 isNewNode = true; if (k == 0) { childOrgMap.put(getAllParentName(orgNameArray, k), id); orgMap.put(orgNameArray[0], childOrgMap); } else { childOrgMap.put(getAllParentName(orgNameArray, k), id); childOrgMap.putAll(orgMap.get(orgNameArray[0])); orgMap.put(orgNameArray[0], childOrgMap); } logger.info("添加新组织:" + orgNameArray[k] + "_" + k + ":" + id); } // 组织列表新增完成 if (organizationList != null && organizationList.size() > 0) { // 批量新增组织 orgService.insertBatch(organizationList); logger.info("organization add complete!"); clearFlag = true; } // 获取用户名 String name = model.getName(); logger.info("当前 current_name:" + name); String workNum = model.getWorknum(); //检查用户名不能为空 if (StringUtils.isEmpty(name)) { model.setResult(ImpAccountError.NAME_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EMPTY)); continue; } // 转为小写 name = name.trim().toLowerCase(); // 获取用户名密码 String password = model.getPassword() != null ? model.getPassword().trim() : null; if (StringUtils.isEmpty(operation)) { //检查密码不能为空 if (StringUtils.isEmpty(password)) { model.setResult(ImpAccountError.PASSWORD_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PASSWORD_EMPTY)); continue; } //检查密码是否合法 if (!RegexUtil.checkAccountPassword(password.trim())) { model.setResult(ImpAccountError.PASSWORD_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PASSWORD_FORMAT_ERROR)); continue; } } //检查名称是否合法 if (StringUtils.isNotEmpty(name)) { if (!RegexUtil.checkAccountName(name.trim())) { model.setResult(ImpAccountError.NAME_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_FORMAT_ERROR)); continue; } } //检查手机是否合法 String phone = model.getMobile(); if (StringUtils.isNotEmpty(phone)) { if (!RegexUtil.checkMobile(phone.trim())) { model.setResult(ImpAccountError.PHONE_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PHONE_FORMAT_ERROR)); continue; } } //检查邮箱是否合法 String email = model.getEmail(); if (StringUtils.isNotEmpty(email.trim())) { if (!RegexUtil.checkEmail(email.trim())) { model.setResult(ImpAccountError.EMAIL_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.EMAIL_FORMAT_ERROR)); continue; } } //判断备注 add by ly 2019-4-4 11:28:18 String remarkFirst = model.getRemarkFirst(); logger.info("remarkFirst的值是:" + remarkFirst); if (StringUtils.isNotEmpty(remarkFirst)) { if (!RegexUtil.isSuccessRemark(remarkFirst.trim())) { model.setResult(ImpAccountError.REMARK_REQUIRED); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_REQUIRED)); continue; } if ((remarkFirst.trim()).length() > 50) { model.setResult(ImpAccountError.REMARK_LENGTH); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_LENGTH)); continue; } } String remarkSecond = model.getRemarkSecond(); if (StringUtils.isNotEmpty(remarkSecond)) { if (!RegexUtil.isSuccessRemark(remarkSecond.trim())) { model.setResult(ImpAccountError.REMARK_REQUIRED); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_REQUIRED)); continue; } if ((remarkSecond.trim()).length() > 50) { model.setResult(ImpAccountError.REMARK_LENGTH); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_LENGTH)); continue; } } String remarkThird = model.getRemarkThird(); if (StringUtils.isNotEmpty(remarkThird)) { if (!RegexUtil.isSuccessRemark(remarkThird.trim())) { model.setResult(ImpAccountError.REMARK_REQUIRED); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_REQUIRED)); continue; } if ((remarkThird.trim()).length() > 50) { model.setResult(ImpAccountError.REMARK_LENGTH); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.REMARK_LENGTH)); continue; } } // 判断导入用户 2019-2-28 List<String> mobileList = accountMapper.selectMobilesByCompanyId(companyId); String newName = ""; if (StringUtils.isEmpty(operation)) { // 检查文件中是否有重名 if (accountNamesInFile.contains(name.toLowerCase())) { model.setResult(ImpAccountError.NAME_EXIST_IN_FILE); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EXIST_IN_FILE)); continue; } accountNamesInFile.add(name.toLowerCase()); //检查名称是否重复 // modified by shengchenglong,不区分大小写 if (names.contains(name.toLowerCase())) { model.setResult(ImpAccountError.NAME_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EXIST)); continue; } names.add(name.toLowerCase()); // 新增用户 //检查手机号是否重复 if (StringUtils.isNotEmpty(phone)) { if (accountMapper.countExistMobile(0L, context.getCompanyId(), phone.trim()) > 0) { model.setResult(ImpAccountError.MOBILE_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MOBILE_EXIST)); continue; } mobileList.add(phone); } } else { if (AccountExportConditionConstant.UPDATE_NAME.equals(operation.trim())) { logger.info("name" + name); logger.info("" + names); if (!names.contains(name)) { model.setResult(ImpAccountError.MODIFY_NAME_NOT_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MODIFY_NAME_NOT_EXIST)); continue; } Account userInfo = new Account(); userInfo.setName(model.getName().trim()); userInfo.setCompanyId(companyId); Account account = this.selectOne(QueryUtil.condition(userInfo)); if (!StringUtils.isNotEmpty(account.getMobile())) { if (StringUtils.isNotEmpty(phone)) { if (!phone.equals(account.getMobile())) { if (mobileList.contains(phone)) { model.setResult(ImpAccountError.MOBILE_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MOBILE_EXIST)); continue; } } } } newName = model.getNewName().trim(); if (StringUtils.isNotEmpty(newName)) { logger.info("当前的新名称:" + newName); boolean flag = RegexUtil.checkAccountName(newName.trim()); logger.info("校验的结果:" + flag); // 校验新用户名的格式 if (!RegexUtil.checkAccountName(newName.trim())) { model.setResult(ImpAccountError.NEW_NAME_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NEW_NAME_FORMAT_ERROR)); continue; } newName = newName.toLowerCase(); // 检查文件中是否有重名 if (newAaccountNamesInFile.contains(newName)) { model.setResult(ImpAccountError.NEW_NAME_EXIST_IN_FILE); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NEW_NAME_EXIST_IN_FILE)); continue; } newAaccountNamesInFile.add(model.getNewName()); //检查名称是否和数据库中的名称重复 if (names.contains(model.getNewName())) { model.setResult(ImpAccountError.NAME_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EXIST)); continue; } names.add(name); } } } // 判断文件中手机号是否重复 if (StringUtils.isNotEmpty(phone)) { if (accountMobileInFile.contains(phone)) { model.setResult(ImpAccountError.MOBILE_EXIST_IN_FILE); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.MOBILE_EXIST_IN_FILE)); continue; } } accountMobileInFile.add(phone); String fullName = model.getFullName(); if (StringUtils.isNotEmpty(fullName)) { if ((fullName.trim()).length() > 20) { model.setResult(ImpAccountError.FULLNAME_LENGTH_LONG); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.FULLNAME_LENGTH_LONG)); continue; } mobileList.add(phone); } String enable = model.getEnabled(); Boolean enabled = null; if (StringUtils.isNotEmpty(enable)) { if ("1".equals(enable)) { enabled = Boolean.TRUE; } else if ("0".equals(enable)) { enabled = Boolean.FALSE; } } //查询账号过期类型 Integer expiredType = 0; String validDate = model.getValidDate(); Date startDate = null; Date endDate = null; Date expiredTime = null; Integer validDays = 0; try { if (org.apache.commons.lang3.StringUtils.EMPTY.equals(org.apache.commons.lang3.StringUtils.trimToEmpty(validDate))) { expiredType = 1; } else { if (validDate.indexOf("-") != -1) { String[] dateArr = validDate.split("-"); if (dateArr.length < 2) { model.setResult(ImpAccountError.VALIDDATE_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.VALIDDATE_FORMAT_ERROR)); continue; } else { expiredType = 2; startDate = DateUtil.parseShort(dateArr[0]); endDate = DateUtil.parseShort(dateArr[1]); } } else { expiredType = 3; validDays = Integer.parseInt(validDate); Calendar cal = Calendar.getInstance(); //根据有效天数计算账号过期时间 cal.add(Calendar.DATE, validDays); expiredTime = cal.getTime(); } } } catch (Exception e) { model.setResult(ImpAccountError.VALIDDATE_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.VALIDDATE_FORMAT_ERROR)); continue; } Account account = new Account(); account.setId(idGenerator.generate()); account.setName(name.trim()); account.setCompanyId(companyId); account.setEmail(email); account.setMobile(phone); account.setTelephone(phone); account.setWorkNum(workNum); account.setExpiredType(expiredType); account.setStartTime(startDate); account.setEndTime(endDate); account.setExpiredTime(expiredTime); account.setValidDays(validDays); account.setOrgId(orgId); logger.info("导入用户的用户组织id"); account.setFullName(model.getFullName()); account.setPosition(model.getPosition()); account.setCreateById(importModel.getAccountId()); account.setCreateByName(importModel.getAccountName()); account.setCreateTime(new Date()); // add by ly 2019-4-4 11:13:27 account.setRemarkFirst(model.getRemarkFirst()); account.setRemarkSecond(model.getRemarkSecond()); account.setRemarkThird(model.getRemarkThird()); // 判断导入用户还是新增用户 logger.info("当前导入操作:" + operation.trim()); if (StringUtils.isEmpty(operation)) { // 新增用户 account.setPassword(ShaEncrypt.encryptNewPassword(password)); accounts.add(account); } else { if (AccountExportConditionConstant.UPDATE_NAME.equals(operation.trim())) { try { // 获取用户信息 Account updateAccount = new Account(); updateAccount.setName(name); updateAccount.setCompanyId(companyId); // 获取当前的用户的信息 updateAccount = this.selectOne(QueryUtil.condition(updateAccount)); logger.info("返回用户:" + updateAccount); // 密码校验 if (StringUtils.isNotEmpty(password)) { //检查密码是否合法 if (!RegexUtil.checkAccountPassword(password.trim())) { model.setResult(ImpAccountError.PASSWORD_FORMAT_ERROR); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.PASSWORD_FORMAT_ERROR)); continue; } account.setPassword(ShaEncrypt.encryptNewPassword(password)); } //更新部门校验部门为空,不修改 if (StringUtils.isEmpty(model.getFullOrgName() != null ? model.getFullOrgName().trim() : model.getFullOrgName())) { account.setOrgId(updateAccount.getOrgId()); } if (updateAccount != null) { logger.info("用户id:" + updateAccount.getId()); if (enabled != null) { account.setEnabled(enabled); if (enabled) { account.setEnabledTime(new Date()); } } account.setId(updateAccount.getId()); // 可修改用户的名 add 2019年7月25日11:28:26 by lingye String new_name = StringUtils.isNotEmpty(newName) ? newName : name; account.setName(new_name); } account.setCreateTime(null); account.setUpdateTime(new Date()); updateAccountList.add(account); } catch (Exception e) { logger.info("更新异常{}", e); } } } // 解绑用户 } else if (unBindUserFlag) { String name = model.getName(); logger.info("解绑的用户名:" + name); if (StringUtils.isEmpty(name)) { model.setResult(ImpAccountError.NAME_EMPTY); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.NAME_EMPTY)); continue; } if (!names.contains(name)) { model.setResult(ImpAccountError.UNBIND_NAME_NOT_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.UNBIND_NAME_NOT_EXIST)); continue; } Account userInfo = new Account(); userInfo.setName(model.getName().trim()); userInfo.setCompanyId(companyId); Account account = this.selectOne(QueryUtil.condition(userInfo)); if (account == null) { model.setResult(ImpAccountError.UNBIND_NAME_NOT_EXIST); failEvents.add(new TaskLogDetailEvent(taskId, "第" + i + "行:" + ImpAccountError.UNBIND_NAME_NOT_EXIST)); continue; } accountIds.add(account.getId()); } } if (CollectionUtils.isNotEmpty(accountIds)) { // 解绑用户 Boolean unbindUserResult = weiXinClient.unbindUser(accountIds); if (CollectionUtils.isNotEmpty(failEvents)) { //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); } return models; } if (CollectionUtils.isNotEmpty(accounts)) { if (!this.insertBatch(accounts)) { throw new BizException(ReturnCode.SAVE_FAIL.getCode(), ReturnCode.SAVE_FAIL.getMsg()); } clearFlag = true; } // 更新用户信息 if (CollectionUtils.isNotEmpty(updateAccountList)) { if (!this.updateBatchById(updateAccountList)) { throw new BizException(ReturnCode.UPDATE_FAIL.getCode(), ReturnCode.UPDATE_FAIL.getMsg()); } clearFlag = true; } if (clearFlag) { Company company = companyMapper.selectById(companyId); if (company!=null){ // 计算左右索引 organizationIndexService.addInitTask(companyId); } } //错误的信息发送给任务详情表 if (CollectionUtils.isNotEmpty(failEvents)) { // rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); } return models; } else { throw new BizException(ReturnCode.RESOURCE_NOT_FOUND.getCode(), ReturnCode.RESOURCE_NOT_FOUND.getMsg()); } } /** * 获取当前节点的所有父亲节点 * * @param orgNameArray * @param curIndex * @return */ private String getAllParentName(String[] orgNameArray, int curIndex) { String name = ""; for (int i = 0; i < curIndex + 1; i++) { name += orgNameArray[i]; } return name + curIndex; } /** * 数组包含 * * @param arr * @param targetValue * @return */ public boolean useArrayUtils(String[] arr, String targetValue) { return ArrayUtils.contains(arr, targetValue); } /** * 去除跟组织 * * @param fullOrgName * @param rootName * @return */ private String[] checkOrgImportCode(String[] fullOrgName, String rootName) { if (fullOrgName[0].equals(rootName)) { return Arrays.copyOfRange(fullOrgName, 1, fullOrgName.length); } return fullOrgName; } /** * 查询组织 * * @param name * @param parentId * @return */ public Organization getOrg(String name, Long parentId) { Organization org = new Organization(); org.setName(name.trim()); org.setParentId(parentId); org.setDeleted(false); return orgService.selectOne(QueryUtil.condition(org)); } }
\ No newline at end of file \ No newline at end of file
......
...@@ -54,7 +54,6 @@ import org.apache.commons.lang3.StringUtils; ...@@ -54,7 +54,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -104,9 +103,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl ...@@ -104,9 +103,9 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
private OrganizationCacheService organizationCacheService; private OrganizationCacheService organizationCacheService;
@Autowired @Autowired
private AuthService authService; private AuthService authService;
/*
@Autowired @Autowired
RabbitTemplate rabbitTemplate; RabbitTemplate rabbitTemplate;*/
@Autowired @Autowired
RedisCache redisCache; RedisCache redisCache;
...@@ -1491,7 +1490,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl ...@@ -1491,7 +1490,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
rootOrg = rootOrg.selectOne(rootOrgEw); rootOrg = rootOrg.selectOne(rootOrgEw);
if (null == rootOrg) { if (null == rootOrg) {
failEvents.add(new TaskLogDetailEvent(taskId, "!!!查找根组织错误:未成功查询到根组织!!!")); failEvents.add(new TaskLogDetailEvent(taskId, "!!!查找根组织错误:未成功查询到根组织!!!"));
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); // rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
return models; return models;
} }
...@@ -2044,7 +2043,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl ...@@ -2044,7 +2043,7 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
} }
//错误的信息发送给任务详情表 //错误的信息发送给任务详情表
if (CollectionUtils.isNotEmpty(failEvents)) { if (CollectionUtils.isNotEmpty(failEvents)) {
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); // rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
} }
return models; return models;
} else { } else {
......
...@@ -50,7 +50,6 @@ import org.apache.commons.collections.CollectionUtils; ...@@ -50,7 +50,6 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Cacheable;
...@@ -85,8 +84,8 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org ...@@ -85,8 +84,8 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
private SiteMapper siteMapper; private SiteMapper siteMapper;
@Autowired @Autowired
private AuthzGroupMemberMapper groupMemberMapper; private AuthzGroupMemberMapper groupMemberMapper;
@Autowired /*@Autowired
RabbitTemplate rabbitTemplate; RabbitTemplate rabbitTemplate;*/
@Autowired @Autowired
private IAuthzGroupMemberService groupMemberService; private IAuthzGroupMemberService groupMemberService;
@Autowired @Autowired
...@@ -436,7 +435,7 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org ...@@ -436,7 +435,7 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
} }
//错误的信息发送给任务详情表 //错误的信息发送给任务详情表
if (CollectionUtils.isNotEmpty(failEvents)) { if (CollectionUtils.isNotEmpty(failEvents)) {
rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents); //rabbitTemplate.convertAndSend(LogQueue.BATCH_TASK_LOG_DETAIL_QUEUE, failEvents);
} }
} }
return impModels; return impModels;
......
server.port=35000 server.port=35000
spring.application.name=system spring.application.name=system
ACTIVE=${spring.profiles.active} ACTIVE=${spring.profiles.active}
spring.profiles.active=dev spring.profiles.active=prod
# nacos # nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active} spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name} spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.1.22:3333 spring.cloud.nacos.config.server-addr=10.23.1.183:8848
mybatis-plus.global-config.logic-not-delete-value=0 mybatis-plus.global-config.logic-not-delete-value=0
mybatis-plus.global-config.logic-delete-value=1 mybatis-plus.global-config.logic-delete-value=1
mybatis-plus.global-config.sql-injector=com.baomidou.mybatisplus.mapper.LogicSqlInjector mybatis-plus.global-config.sql-injector=com.baomidou.mybatisplus.mapper.LogicSqlInjector
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
// DataSourceConfig dsc = new DataSourceConfig(); // DataSourceConfig dsc = new DataSourceConfig();
// dsc.setUrl("jdbc:mysql://172.17.3.163:3306/czt?useUnicode=true&useSSL=false&characterEncoding=utf8"); // dsc.setUrl("jdbc:mysql://172.17.3.163:3306/czt?useUnicode=true&useSSL=false&characterEncoding=utf8");
// // dsc.setSchemaName("public"); // // dsc.setSchemaName("public");
// dsc.setDriverName("com.mysql.jdbc.Driver"); // dsc.setDriverName("com.mysql.cj.jdbc.Driver");
// dsc.setUsername("root"); // dsc.setUsername("root");
// dsc.setPassword("123456"); // dsc.setPassword("123456");
// mpg.setDataSource(dsc); // mpg.setDataSource(dsc);
......
connection.url=jdbc:mysql://192.168.0.150:3306/cloud_security?useUnicode=true&characterEncoding=UTF-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull connection.url=jdbc:mysql://192.168.0.150:3306/cloud_security?useUnicode=true&characterEncoding=UTF-8&relaxAutoCommit=true&zeroDateTimeBehavior=convertToNull
connection.driverClassName=com.mysql.jdbc.Driver connection.driverClassName=com.mysql.cj.jdbc.Driver
connection.username=root connection.username=root
connection.password=fulan@321#$ connection.password=fulan@321#$
...@@ -146,7 +146,7 @@ public class RegexUtil { ...@@ -146,7 +146,7 @@ public class RegexUtil {
} }
/** /**
* 匹配IP地址(简单匹配,格式,如:192.168.1.1,127.0.0.1,没有匹配IP段的大小) * 匹配IP地址(简单匹配,格式,如:192.168.1.1,10.23.1.183,没有匹配IP段的大小)
* @param ipAddress IPv4标准地址 * @param ipAddress IPv4标准地址
* @return 验证成功返回true,验证失败返回false * @return 验证成功返回true,验证失败返回false
*/ */
......
...@@ -55,8 +55,8 @@ ...@@ -55,8 +55,8 @@
<repositories> <repositories>
<repository> <repository>
<id>learning-data-group</id> <id>hqzhdj-data-group</id>
<url>http://192.168.0.15:8081/repository/learning-data-group/</url> <url>http://192.168.0.15:8081/repository/hqzhdj-data-group/</url>
<releases> <releases>
<enabled>true</enabled> <enabled>true</enabled>
</releases> </releases>
...@@ -69,8 +69,8 @@ ...@@ -69,8 +69,8 @@
<distributionManagement> <distributionManagement>
<snapshotRepository> <snapshotRepository>
<id>learning-data</id> <id>hqzhdj-data</id>
<url>http://192.168.0.15:8081/repository/learning-data/</url> <url>http://192.168.0.15:8081/repository/hqzhdj-data/</url>
</snapshotRepository> </snapshotRepository>
</distributionManagement> </distributionManagement>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
"parentPom": "elearn", "parentPom": "elearn",
"servicePom": "elearn/cloud-system", "servicePom": "elearn/cloud-system",
"dev": { "dev": {
"JAVA_OPTS": "-Dspring.profiles.active=dev -Dspring.cloud.nacos.config.server-addr=192.168.1.22:3333,192.168.1.22:4444,192.168.1.22:5555" "JAVA_OPTS": "-Dspring.profiles.active=prod -Dspring.cloud.nacos.config.server-addr=192.168.1.22:3333,192.168.1.22:4444,192.168.1.22:5555"
}, },
"sit": { "sit": {
"JAVA_OPTS": "-Dspring.profiles.active=sit -Dspring.cloud.nacos.config.server-addr=192.168.1.13:3333,192.168.1.24:4444,192.168.1.38:5555" "JAVA_OPTS": "-Dspring.profiles.active=sit -Dspring.cloud.nacos.config.server-addr=192.168.1.13:3333,192.168.1.24:4444,192.168.1.38:5555"
......
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