Parcourir la source

Merge remote-tracking branch 'origin/saas' into saas

zouxuan il y a 3 ans
Parent
commit
7d8a1f33c1

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -88,7 +88,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 				employee.setId(user.getId());
 				employeeDao.insert(employee);
 				//新增用户角色
-				employeeDao.batchAddEmployeeRole(user.getId(),employee.getRoleIds(), user.getTeacherId());
+				employeeDao.batchAddEmployeeRole(user.getId(),employee.getRoleIds(), user.getTenantId());
 				employee.setUserType(user.getUserType() + ",SYSTEM");
 				teacherDao.updateUser(employee);
 				return;
@@ -102,7 +102,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 		employee.setUserId(employee.getId());
         employeeDao.insert(employee);
 		//新增用户角色
-		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds(), user.getTeacherId());
+		employeeDao.batchAddEmployeeRole(employee.getId(),employee.getRoleIds(), employee.getTenantId());
 		//添加用户现金账户
 		sysUserCashAccountDao.insert(new SysUserCashAccount(employee.getId(),"CNY"));
 		ImResult imResult = imFeignService.register(new ImUserModel(employee.getId().toString(), employee.getUsername(),null));

+ 3 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantInfoServiceImpl.java

@@ -244,7 +244,7 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
         String key = "Tenant_First_Open:" + tenantId;
         RBucket<Object> bucket = redissonClient.getBucket(key);
         //原子操作 抢锁成功为true
-        if (!bucket.trySet(tenantId, 3L, TimeUnit.MINUTES)) {
+        if (!bucket.trySet(tenantId, 1L, TimeUnit.MINUTES)) {
             throw new BizException("机构正在开通中请勿频繁操作");
         }
         //获取产品信息得到服务id
@@ -267,7 +267,8 @@ public class TenantInfoServiceImpl extends ServiceImpl<TenantInfoDao, TenantInfo
         // 创建账号、用户信息、用户和角色关系
         createUser(tenantInfo, orgId, Lists.newArrayList(roleId));
         //建立角色和菜单关系数据
-        employeeService.batchInsertRoleMenu(roleId, collectMenuId, tenantId);
+         Lists.partition(collectMenuId, 200)
+                         .forEach(idList -> employeeService.batchInsertRoleMenu(roleId, idList, tenantId));
         //创建资产信息
         TenantAssetsInfo assetsInfo = new TenantAssetsInfo();
         assetsInfo.setTenantId(tenantId);

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/TenantOrderRecordServiceImpl.java

@@ -59,7 +59,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
         TenantOrderRecord orderRecord = this.getOne(new WrapperUtil<TenantOrderRecord>()
                 .hasEq("order_no_", orderNo).queryWrapper());
         if (StringUtils.equals(orderRecord.getPaymentChannel(), PaymentChannelEnum.ADAPAY.getCode())) {
-            Map<String, Object> payment = null;
+            Map<String, Object> payment;
             try {
                 payment = Payment.queryPayment(orderRecord.getTransNo());
                 if (Objects.nonNull(payment.get("status"))) {
@@ -91,6 +91,7 @@ public class TenantOrderRecordServiceImpl extends ServiceImpl<TenantOrderRecordD
 
         log.info("checkTenantOrder  getOrderState>>>>> {}", JSON.toJSONString(orderRecord));
         getOrderState(orderRecord, result);
+        log.info("checkTenantOrder  result >>>>> {}", result);
         return result;
     }
 

+ 137 - 106
mec-common/audit-log/src/main/java/com/yonge/log/interceptor/AuditLogInterceptor.java

@@ -1,123 +1,154 @@
 package com.yonge.log.interceptor;
 
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import com.ym.mec.util.json.JsonUtil;
+import com.ym.mec.util.web.WebUtil;
+import com.yonge.log.dal.model.AuditLog;
+import com.yonge.log.model.AuditLogAnnotation;
+import com.yonge.log.service.AuditLogService;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
 import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
-import com.ym.mec.util.json.JsonUtil;
-import com.ym.mec.util.web.WebUtil;
-import com.yonge.log.dal.model.AuditLog;
-import com.yonge.log.model.AuditLogAnnotation;
-import com.yonge.log.service.AuditLogService;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
 
 /**
  * 日志审计的拦截器
  */
 public class AuditLogInterceptor extends HandlerInterceptorAdapter {
 
-	@Autowired
-	private AuditLogService auditLogService;
-
-	@Value("${spring.application.name}")
-	private String clientName;
-
-	private String username;
-
-	private Integer userId;
-
-	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-	private static List<String> ignoreLogUrl;
-
-
-
-	@Override
-	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
-		return true;
-	}
-
-	@Override
-	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
-		syncSaveLog(request,handler);
-	}
-
-	@Async
-	private void syncSaveLog(HttpServletRequest request, Object handler){
-		try {
-			String servletPath = request.getServletPath();
-			HandlerMethod handlerMethod = (HandlerMethod) handler;
-			AuditLogAnnotation anno = handlerMethod.getMethodAnnotation(AuditLogAnnotation.class);
-			ApiOperation apiOperation = handlerMethod.getMethodAnnotation(ApiOperation.class);
-			String operateName = null;
-			if(StringUtils.isEmpty(operateName) && apiOperation != null){
-				operateName = apiOperation.value();
-			}
-			if(StringUtils.isEmpty(operateName) && anno != null){
-				operateName = anno.operateName();
-			}
-			if(anno != null){
-				saveLog(operateName,servletPath,request);
-				return;
-			}
-			if(servletPath.contains("/task/") || servletPath.contains("/import/") ){
-				return;
-			}
-			String substring = servletPath.substring(servletPath.lastIndexOf("/") + 1).toLowerCase();
-			if(ignoreLogUrl == null){
-				ignoreLogUrl = new ArrayList<>();
-				ignoreLogUrl.add("query");
-				ignoreLogUrl.add("get");
-				ignoreLogUrl.add("find");
-				ignoreLogUrl.add("list");
-				ignoreLogUrl.add("detail");
-				ignoreLogUrl.add("hasindexerrdata");
-				ignoreLogUrl.add("newindex");
-			}
-			for (String e : ignoreLogUrl) {
-				if(substring.contains(e)){
-					return;
-				}
-			}
-			saveLog(operateName,servletPath,request);
-		}catch (Exception e){
-			e.printStackTrace();
-		}
-	}
-
-	private void saveLog(String operateName,String servletPath,HttpServletRequest request) throws IOException {
-		AuditLog auditLog = new AuditLog();
-		auditLog.setOperateName(operateName);
-		auditLog.setInterfaceUrl(servletPath);
-		auditLog.setToken(request.getHeader("Authorization"));
-		auditLog.setService(clientName);
-		auditLog.setUserIp(WebUtil.getRemoteIp(request));
-
-		Map<String, Object> params = WebUtil.getParameterMap(request);
-		if (params == null || params.size() == 0) {
-			auditLog.setInputParams(IOUtils.toString(request.getInputStream(), Charset.defaultCharset()));
-		} else {
-			auditLog.setInputParams(JsonUtil.toJSONString(WebUtil.getParameterMap(request)));
-		}
-		// 操作人
-		auditLog.setUsername(username);
-		auditLog.setUserId(userId);
-		auditLog.setOperateTime(sdf.format(new Date()));
-		auditLogService.insert(auditLog);
-	}
-
-	public void setUsername(String username,Integer userId) {
-		this.username = username;
-		this.userId = userId;
-	}
+    @Autowired
+    private AuditLogService auditLogService;
+
+    @Value("${spring.application.name}")
+    private String clientName;
+
+    private String username;
+
+    private Integer userId;
+
+    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    private static List<String> ignoreLogUrl;
+
+    /**
+     * 异步线程池配置
+     */
+    @Bean("syncSaveLog")
+    public Executor asyncExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        // 设置核心线程数
+        executor.setCorePoolSize(10);
+        // 设置最大线程数
+        executor.setMaxPoolSize(100);
+        // 设置队列容量
+        executor.setQueueCapacity(1000);
+        // 设置线程活跃时间(秒)
+        executor.setKeepAliveSeconds(60);
+        // 设置默认线程名称
+        executor.setThreadNamePrefix("syncSaveLog-");
+        // 设置拒绝策略
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        // 等待所有任务结束后再关闭线程池
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        executor.initialize();
+        return executor;
+    }
+
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {
+        return true;
+    }
+
+    @Override
+    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+        syncSaveLog(request, handler);
+    }
+
+    @Async("syncSaveLog")
+    public void syncSaveLog(HttpServletRequest request, Object handler) {
+        try {
+            String servletPath = request.getServletPath();
+            HandlerMethod handlerMethod = (HandlerMethod) handler;
+            AuditLogAnnotation anno = handlerMethod.getMethodAnnotation(AuditLogAnnotation.class);
+            ApiOperation apiOperation = handlerMethod.getMethodAnnotation(ApiOperation.class);
+            String operateName = null;
+            if (StringUtils.isEmpty(operateName) && apiOperation != null) {
+                operateName = apiOperation.value();
+            }
+            if (StringUtils.isEmpty(operateName) && anno != null) {
+                operateName = anno.operateName();
+            }
+            if (anno != null) {
+                saveLog(operateName, servletPath, request);
+                return;
+            }
+            if (servletPath.contains("/task/") || servletPath.contains("/import/")) {
+                return;
+            }
+            String substring = servletPath.substring(servletPath.lastIndexOf("/") + 1).toLowerCase();
+            if (ignoreLogUrl == null) {
+                ignoreLogUrl = new ArrayList<>();
+                ignoreLogUrl.add("query");
+                ignoreLogUrl.add("get");
+                ignoreLogUrl.add("find");
+                ignoreLogUrl.add("list");
+                ignoreLogUrl.add("detail");
+                ignoreLogUrl.add("hasindexerrdata");
+                ignoreLogUrl.add("newindex");
+            }
+            for (String e : ignoreLogUrl) {
+                if (substring.contains(e)) {
+                    return;
+                }
+            }
+            saveLog(operateName, servletPath, request);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void saveLog(String operateName, String servletPath, HttpServletRequest request) throws IOException {
+        AuditLog auditLog = new AuditLog();
+        auditLog.setOperateName(operateName);
+        auditLog.setInterfaceUrl(servletPath);
+        auditLog.setToken(request.getHeader("Authorization"));
+        auditLog.setService(clientName);
+        auditLog.setUserIp(WebUtil.getRemoteIp(request));
+
+        Map<String, Object> params = WebUtil.getParameterMap(request);
+        if (params == null || params.size() == 0) {
+            auditLog.setInputParams(IOUtils.toString(request.getInputStream(), Charset.defaultCharset()));
+        } else {
+            auditLog.setInputParams(JsonUtil.toJSONString(WebUtil.getParameterMap(request)));
+        }
+        // 操作人
+        auditLog.setUsername(username);
+        auditLog.setUserId(userId);
+        auditLog.setOperateTime(sdf.format(new Date()));
+        auditLogService.insert(auditLog);
+    }
+
+    public void setUsername(String username, Integer userId) {
+        this.username = username;
+        this.userId = userId;
+    }
 }

+ 1 - 0
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -152,6 +152,7 @@ public class StudentOrderController extends BaseController {
         }
         StudentPaymentOrder orderByOrderNo = studentPaymentOrderService.findOrderByOrderNo(orderNo);
         if (Objects.isNull(orderByOrderNo)) {
+            logger.info("checkOrderStatus >>>> tenantOrder {}", orderNo);
             Map<String, Object> tenantOrder = tenantOrderRecordService.checkTenantOrder(orderNo);
             if (Objects.nonNull(tenantOrder)) {
                 return succeed(tenantOrder);

+ 6 - 1
mec-web/src/main/java/com/ym/mec/web/controller/TenantInfoController.java

@@ -80,8 +80,13 @@ public class TenantInfoController extends BaseController {
         return succeed(tenantInfoService.tenantOpenPay(id));
     }
 
+    /**
+     * 支付回调-第三方回调地址
+     * @param msg
+     * @return
+     */
     @PostMapping("/notify")
-    public Msg notify(@ModelAttribute Msg msg) throws Exception {
+    public Msg notify(@ModelAttribute Msg msg) {
         return tenantInfoService.orderNotify(msg);
     }
 

+ 6 - 1
mec-web/src/main/java/com/ym/mec/web/controller/TenantOrderRecordController.java

@@ -2,7 +2,6 @@ package com.ym.mec.web.controller;
 
 
 import com.ym.mec.biz.dal.dto.TenantOrderRecordDto;
-import com.ym.mec.biz.dal.entity.TenantOrderRecord;
 import com.ym.mec.biz.service.OrderPayOpsService;
 import com.ym.mec.biz.service.TenantOrderRecordService;
 import com.ym.mec.common.controller.BaseController;
@@ -60,5 +59,11 @@ public class TenantOrderRecordController extends BaseController {
         }
     }
 
+    @ApiOperation(value = "自测用的")
+    @PostMapping("/checkTenantOrder")
+    public Object checkTenantOrder(String orderNo) {
+        return succeed(tenantOrderRecordService.checkTenantOrder(orderNo));
+    }
+
 }
 

+ 1 - 1
mec-web/src/main/resources/logback-spring.xml

@@ -43,7 +43,7 @@
 		</encoder>
 	</appender>
 
-	<logger name="com.ym.mec" level="WARN" />
+	<logger name="com.ym.mec" level="INFO" />
 
 	<logger name="com.ym.mec.thirdparty" level="INFO"
 			additivity="false">