WANG il y a 6 ans
Parent
commit
dcdbc4339c

+ 2 - 2
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/swufe/ExamController.java

@@ -46,9 +46,9 @@ public class ExamController extends ControllerSupport {
 		Long rootOrgId = accessUser.getRootOrgId();
 
 		SaveExamReq saveExamReq = new SaveExamReq();
-		saveExamReq.setBeginTime(DateUtil.parse(examReq.getBeginTime(), DatePatterns.ISO));
+		saveExamReq.setBeginTime(DateUtil.parse(examReq.getBeginTime(), DatePatterns.CHINA_DEFAULT));
 		saveExamReq.setDuration(examReq.getDuration());
-		saveExamReq.setEndTime(DateUtil.parse(examReq.getEndTime(), DatePatterns.ISO));
+		saveExamReq.setEndTime(DateUtil.parse(examReq.getEndTime(), DatePatterns.CHINA_DEFAULT));
 		saveExamReq.setExamType(examReq.getExamType());
 		saveExamReq.setName(examReq.getName());
 		saveExamReq.setRootOrgId(rootOrgId);

+ 4 - 2
examcloud-exchange-outer-api-provider/src/main/java/cn/com/qmth/examcloud/exchange/outer/api/controller/sydx/StudentExamInfoController.java

@@ -85,9 +85,11 @@ public class StudentExamInfoController extends ControllerSupport {
 		} catch (StatusException e) {
 			if (e.getCode().equals("E-002002")) {
 				SaveExamReq saveExamReq = new SaveExamReq();
-				saveExamReq.setBeginTime(DateUtil.parse(exam.getBeginTime(), DatePatterns.ISO));
+				saveExamReq.setBeginTime(
+						DateUtil.parse(exam.getBeginTime(), DatePatterns.CHINA_DEFAULT));
 				saveExamReq.setDuration(exam.getDuration());
-				saveExamReq.setEndTime(DateUtil.parse(exam.getEndTime(), DatePatterns.ISO));
+				saveExamReq
+						.setEndTime(DateUtil.parse(exam.getEndTime(), DatePatterns.CHINA_DEFAULT));
 				saveExamReq.setExamType(exam.getExamType().name());
 				saveExamReq.setName(exam.getName());
 				saveExamReq.setRemark(exam.getRemark());

+ 2 - 2
examcloud-exchange-outer-service/src/main/java/cn/com/qmth/examcloud/exchange/outer/service/impl/OutletScoreServiceImpl.java

@@ -367,10 +367,10 @@ public class OutletScoreServiceImpl implements OutletScoreService{
 			outletScore.setObjectiveScore(examScoreData.getObjectiveScore());
 			outletScore.setSubjectiveScore(examScoreData.getSubjectiveScore());
 			
-			String startTime = DateUtil.format(examScoreData.getStartTime(),DatePatterns.ISO);
+			String startTime = DateUtil.format(examScoreData.getStartTime(),DatePatterns.CHINA_DEFAULT);
 			outletScore.setStartTime(startTime);
 			if(examScoreData.getEndTime()!=null){
-				String endTime = DateUtil.format(examScoreData.getEndTime(),DatePatterns.ISO);
+				String endTime = DateUtil.format(examScoreData.getEndTime(),DatePatterns.CHINA_DEFAULT);
 				outletScore.setEndTime(endTime);
 			}
 			outletScore.setSuccessRate(examScoreData.getSuccPercent());

+ 23 - 81
examcloud-exchange-starter/src/main/java/cn/com/qmth/examcloud/exchange/ExchangeApp.java

@@ -1,40 +1,17 @@
 package cn.com.qmth.examcloud.exchange;
 
-import org.slf4j.MDC;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
-import org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.cloud.client.loadbalancer.LoadBalanced;
 import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
-import org.springframework.cloud.netflix.feign.EnableFeignClients;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
-import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.web.multipart.MultipartResolver;
-import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import cn.com.qmth.examcloud.commons.logging.ExamCloudLog;
-import cn.com.qmth.examcloud.commons.logging.ExamCloudLogFactory;
-import cn.com.qmth.examcloud.commons.logging.SLF4JImpl;
-import cn.com.qmth.examcloud.exchange.inner.service.upyun.UpyunSiteManager;
-import cn.com.qmth.examcloud.web.boot.ExamCloudApp;
-import cn.com.qmth.examcloud.web.redis.RedisClient;
-import cn.com.qmth.examcloud.web.redis.RedisClientImpl;
-import cn.com.qmth.examcloud.web.support.CustomResponseErrorHandler;
+import cn.com.qmth.examcloud.web.bootstrap.AppBootstrap;
 
 /**
  * Exchange不连接除Redis外的任何数据库. 说明 by wangwei.<br>
@@ -43,68 +20,33 @@ import cn.com.qmth.examcloud.web.support.CustomResponseErrorHandler;
  * outer 提供第三方接入的中间件<br>
  *
  */
-@ComponentScan(basePackages = {"cn.com.qmth"})
+
 @SpringBootApplication
-@EnableEurekaClient
+@Configuration
+@EnableJpaAuditing
 @EnableTransactionManagement
-@EnableAsync
-@EnableFeignClients
+@EnableEurekaClient
 @EnableDiscoveryClient
-@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class,
-		DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
+@ComponentScan(basePackages = {"cn.com.qmth"})
+@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class,
+		HibernateJpaAutoConfiguration.class})
 public class ExchangeApp {
 
-	private static final ExamCloudLog LOG = ExamCloudLogFactory.getLog(ExchangeApp.class);
-
-	public static void main(String[] args) throws Exception {
-
-		if (LOG instanceof SLF4JImpl) {
-			MDC.put("TRACE_ID", Thread.currentThread().getName());
+	static {
+		String runtimeLevel = System.getProperty("log.commonLevel");
+		if (null == runtimeLevel) {
+			System.setProperty("log.commonLevel", "DEBUG");
 		}
-
-		ExamCloudApp.run(ExchangeApp.class, "exchange", args);
-
-		UpyunSiteManager.init();
-	}
-
-	@Bean
-	@LoadBalanced
-	public RestTemplate restTemplate() {
-		RestTemplate restTemplate = new RestTemplate();
-		restTemplate.setErrorHandler(new CustomResponseErrorHandler());
-		return restTemplate;
-	}
-
-	@Bean
-	public RedisTemplate<String, Object> redisTemplate(
-			RedisConnectionFactory redisConnectionFactory) {
-		RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
-		redisTemplate.setConnectionFactory(redisConnectionFactory);
-		Jackson2JsonRedisSerializer<?> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(
-				Object.class);
-		ObjectMapper objectMapper = new ObjectMapper();
-		objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-		objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-		jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
-		redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
-		redisTemplate.setKeySerializer(new StringRedisSerializer());
-		redisTemplate.afterPropertiesSet();
-		return redisTemplate;
-	}
-
-	@Bean
-	@Autowired
-	public RedisClient redisClient(RedisTemplate<String, Object> redisTemplate) {
-		return new RedisClientImpl(redisTemplate);
+		System.setProperty("hibernate.dialect.storage_engine", "innodb");
 	}
 
-	@Bean(name = "multipartResolver")
-	public MultipartResolver multipartResolver() {
-		CommonsMultipartResolver resolver = new CommonsMultipartResolver();
-		resolver.setDefaultEncoding("UTF-8");
-		resolver.setResolveLazily(true);
-		resolver.setMaxInMemorySize(2);
-		resolver.setMaxUploadSize(100 * 1024 * 1024);
-		return resolver;
+	/**
+	 * main
+	 *
+	 * @author WANGWEI
+	 * @param args
+	 */
+	public static void main(String[] args) {
+		AppBootstrap.run(ExchangeApp.class, args);
 	}
 }

+ 0 - 39
examcloud-exchange-starter/src/main/java/cn/com/qmth/examcloud/exchange/config/AppSelfInspection.java

@@ -1,39 +0,0 @@
-package cn.com.qmth.examcloud.exchange.config;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Component;
-
-import cn.com.qmth.examcloud.web.support.RemoteProcedureCallTester;
-
-/**
- * 应用自检
- *
- * @author WANGWEI
- * @date 2018年6月21日
- * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
- */
-@Component
-@Order(1)
-public class AppSelfInspection implements ApplicationRunner {
-
-	@Autowired
-	private RemoteProcedureCallTester remoteCallTester;
-
-	/**
-	 * 自检
-	 *
-	 * @author WANGWEI
-	 */
-	private void inspect() {
-		remoteCallTester.testRestTemplate("EC-CORE-BASIC");
-	}
-
-	@Override
-	public void run(ApplicationArguments args) throws Exception {
-		inspect();
-	}
-
-}

+ 0 - 134
examcloud-exchange-starter/src/main/java/cn/com/qmth/examcloud/exchange/config/DefaultWebMvcConfigurerAdapter.java

@@ -1,134 +0,0 @@
-package cn.com.qmth.examcloud.exchange.config;
-
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-import com.google.common.collect.Sets;
-
-import cn.com.qmth.examcloud.api.commons.security.bean.Role;
-import cn.com.qmth.examcloud.api.commons.security.bean.User;
-import cn.com.qmth.examcloud.api.commons.security.bean.UserType;
-import cn.com.qmth.examcloud.api.commons.security.enums.RoleMeta;
-import cn.com.qmth.examcloud.commons.util.PathUtil;
-import cn.com.qmth.examcloud.commons.util.PropertiesUtil;
-import cn.com.qmth.examcloud.commons.util.RegExpUtil;
-import cn.com.qmth.examcloud.core.basic.api.CommonCloudService;
-import cn.com.qmth.examcloud.web.interceptor.FirstInterceptor;
-import cn.com.qmth.examcloud.web.redis.RedisClient;
-import cn.com.qmth.examcloud.web.security.RequestPermissionInterceptor;
-import cn.com.qmth.examcloud.web.security.SpringCloudInterceptor;
-
-/**
- * 默认WebMvcConfigurer
- *
- * @author WANGWEI
- * @date 2018年5月22日
- * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
- */
-@Configuration
-public class DefaultWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
-
-	@Autowired
-	RedisClient redisClient;
-
-	@Autowired
-	CommonCloudService commonCloudService;
-
-	static {
-		PropertiesUtil.configure(PathUtil.getResoucePath("security-mapping.properties"));
-	}
-
-	@Override
-	public void addInterceptors(InterceptorRegistry registry) {
-		FirstInterceptor firstInterceptor = new FirstInterceptor();
-		firstInterceptor.configureAndWatch("intercept.conf");
-		registry.addInterceptor(firstInterceptor).addPathPatterns("/**");
-
-		SpringCloudInterceptor springCloudInterceptor = new SpringCloudInterceptor();
-		springCloudInterceptor.setRedisClient(redisClient);
-		registry.addInterceptor(springCloudInterceptor).addPathPatterns("/**");
-
-		ThirdPartyAccessInterceptor thirdPartyAccessInterceptor = new ThirdPartyAccessInterceptor();
-		thirdPartyAccessInterceptor.setRedisClient(redisClient);
-		thirdPartyAccessInterceptor.setCommonCloudService(commonCloudService);
-		registry.addInterceptor(thirdPartyAccessInterceptor).addPathPatterns("/**");
-
-		RequestPermissionInterceptor requestPermissionInterceptor = getRequestPermissionInterceptor();
-		requestPermissionInterceptor.configure("security-exclusions.conf");
-		registry.addInterceptor(requestPermissionInterceptor).addPathPatterns("/**");
-
-		super.addInterceptors(registry);
-	}
-
-	@Bean
-	public RequestPermissionInterceptor getRequestPermissionInterceptor() {
-		return new RequestPermissionInterceptor(redisClient) {
-
-			@Override
-			public boolean hasPermission(String mappingPath, User user) {
-
-				// 学生鉴权
-				if (user.getUserType().equals(UserType.STUDENT)) {
-					String key = "[s]" + mappingPath;
-					return PropertiesUtil.getBoolean(key, false);
-				}
-
-				List<Role> roleList = user.getRoleList();
-
-				if (CollectionUtils.isEmpty(roleList)) {
-					return false;
-				}
-
-				for (Role role : roleList) {
-					if (role.getRoleCode().equals(RoleMeta.SUPER_ADMIN.name())) {
-						return true;
-					}
-				}
-
-				// 权限组集合
-				String privilegeGroups = PropertiesUtil.getString(mappingPath);
-				if (StringUtils.isBlank(privilegeGroups)) {
-					return true;
-				}
-
-				// 用户权限集合
-				Set<String> rolePrivilegeList = Sets.newHashSet();
-				Long rootOrgId = user.getRootOrgId();
-				for (Role role : roleList) {
-					String key = "$_P_" + rootOrgId + "_" + role.getRoleId();
-					String rolePrivileges = redisClient.get(key, String.class);
-
-					List<String> rpList = RegExpUtil.findAll(rolePrivileges, "\\w+");
-					rolePrivilegeList.addAll(rpList);
-				}
-
-				List<String> privilegeGroupList = RegExpUtil.findAll(privilegeGroups, "[^\\;]+");
-
-				for (String pg : privilegeGroupList) {
-					pg = pg.trim();
-					if (StringUtils.isBlank(pg)) {
-						continue;
-					}
-
-					List<String> pList = RegExpUtil.findAll(pg, "[^\\,]+");
-					if (rolePrivilegeList.containsAll(pList)) {
-						return true;
-					} else {
-						continue;
-					}
-				}
-
-				return false;
-			}
-
-		};
-	}
-}