From 4a2c9c11f6e660483b2a8ece1d76fc7ee138181d Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 28 十一月 2023 15:25:58 +0800
Subject: [PATCH] 登录日志代码提交

---
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/mapper/LogOperateMapper.java                    |    2 
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java                |    1 
 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java                       |   24 ----
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java |    2 
 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java               |   11 +
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/LogApplication.java                             |    2 
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogOperateController.java            |   19 +++
 /dev/null                                                                                                    |   80 ----------------
 Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/enumpack/ServiceNameRoleEnum.java       |    2 
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogOperateService.java                 |    7 
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogOperateServiceImpl.java         |   26 +++-
 Source/UBCS-WEB/src/views/monitor/log/localLog.vue                                                           |   24 +---
 Source/UBCS-WEB/src/views/monitor/log/loginLog.vue                                                           |   43 ++++++--
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogLocalController.java              |    1 
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/feign/LogClient.java                            |   11 ++
 15 files changed, 103 insertions(+), 152 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/monitor/log/localLog.vue b/Source/UBCS-WEB/src/views/monitor/log/localLog.vue
index 057a888..d4c1d7b 100644
--- a/Source/UBCS-WEB/src/views/monitor/log/localLog.vue
+++ b/Source/UBCS-WEB/src/views/monitor/log/localLog.vue
@@ -90,21 +90,22 @@
             {
               label: "鏃ュ織鍚嶇О",
               prop: "logName",
-              width:'80',
+              width:'160',
             },
             {
               label: "鏃ュ織绫诲瀷",
-              prop: "logType"
+              prop: "logType",
+              width:'160'
             },
             {
               label: "鍒涘缓鏃堕棿",
               prop: "createTime",
-              width:'180'
+              width:'160'
             },
             {
               label: "鏈�鍚庝慨鏀规椂闂�",
               prop: "lastModifier",
-              width:'180'
+              width:'160'
             }
           ]
         },
@@ -117,22 +118,15 @@
       permissionList() {
         return {
           delBtn: this.vaildData(this.permission.localLog.localLog_delete, false),
-          downLoadBtn: this.vaildData(this.permission.localLog.localLog_dwonload, false)
+          downLoadBtn: this.vaildData(this.permission.localLog.localLog_download, false)
         };
       }
     },
-    methods: {  
-      // 鍒ゆ柇瀹㈡埛绔墍鍦ㄧ殑鎿嶄綔绯荤粺骞冲彴
-      isWindows() {
-        return navigator.platform.indexOf('Win') !== -1
-      },
-      // 鏍规嵁鎿嶄綔绯荤粺骞冲彴杩斿洖鐩稿簲鐨勮矾寰勫垎闅旂
-      getPathSeparator() {
-        return this.isWindows() ? '\\' : '/'
-      },
+    methods: {
+
       downLoadLogFile(row){
           this.downloadLoading = true;
-          let logPath = row.hasChildren ?  row.logPath:row.logPath+this.getPathSeparator()+row.logName;
+          let logPath = row.hasChildren ? row.logPath:row.logPath+"\\"+row.logName;
           downLoadLog(Object.assign({},row,{logFullPaths:logPath})).then(res=>{
               func.downloadFileByBlobHandler(res);
               this.downloadLoading = false;
diff --git a/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue b/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue
index 1298f88..e5d653c 100644
--- a/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue
+++ b/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue
@@ -19,7 +19,7 @@
 </template>
 
 <script>
-  import {getUsualList, getUsualLogs} from "@/api/logs";
+  import { listLogOperate } from "@/api/logs";
   import {mapGetters} from "vuex";
 
   export default {
@@ -28,6 +28,10 @@
         form: {},
         selectionList: [],
         query: {},
+        //鏄惁鏄笁鍛樼鐞嗗憳鏃ュ織
+        isAdmin: 0,
+        // LoginOrLogout:鐧诲綍鏃ュ織,auth:鎺堟潈鏃ュ織,operate:鎿嶄綔鏃ュ織
+        logType: "LoginOrLogout",
         loading: true,
         page: {
           pageSize: 10,
@@ -52,34 +56,34 @@
           column: [
             {
               label: "鐢ㄦ埛鍚�",
-              prop: "serviceId",
+              prop: "userName",
               search: true
             },
             {
               label: "濮撳悕",
-              prop: "serverHost",
+              prop: "realName",
               search: true
             },
             {
-              label: "鐢ㄦ埛id",
-              prop: "serverIp"
+              label: "鐢ㄦ埛ip",
+              prop: "ip"
             },
             {
               label: "妯″潡",
-              prop: "env",
-              width:'80'
+              prop: "model",
+              width:'160'
             },
             {
               label: "鏃堕棿",
-              prop: "logLevel"
+              prop: "time"
             },
             {
               label: "鎿嶄綔缁撴灉",
-              prop: "logId"
+              prop: "operateResult"
             },
             {
               label: "鎻忚堪",
-              prop: "requestUri"
+              prop: "description"
             },
           ]
         },
@@ -92,7 +96,7 @@
         return {
           viewBtn: this.vaildData(this.permission.log_usual.log_usual_view, false)
         };
-      }
+      },
     },
     methods: {
       searchReset() {
@@ -104,6 +108,9 @@
         this.page.currentPage = 1;
         this.onLoad(this.page, params);
         done();
+      },
+      underscoreName(key) {
+        return key.replace(/([A-Z])/g, "_$1").toLowerCase();
       },
       beforeOpen(done, type) {
         if (["edit", "view"].includes(type)) {
@@ -123,8 +130,20 @@
         this.onLoad(this.page, this.query);
       },
       onLoad(page, params = {}) {
+        let conditionMaps = {};
+        conditionMaps["conditionMap[is_admin]"] = this.isAdmin;
+        conditionMaps["conditionMap[log_type]"] = this.logType.trim();
+        if (params) {
+          Object.keys(params).forEach((key) => {
+            conditionMaps["conditionMap[" + this.underscoreName(key) + "_like]"] = params[key].trim();
+          });
+        }
         this.loading = true;
-        getUsualList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+        listLogOperate(
+          page.currentPage, 
+          page.pageSize,
+          conditionMaps
+        ).then(res => {
           const data = res.data.data;
           this.page.total = data.total;
           this.data = data.records;
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java
index 40ac34d..3a73e96 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/endpoint/BladeTokenEndPoint.java
@@ -24,6 +24,8 @@
 import org.springblade.core.jwt.JwtUtil;
 import org.springblade.core.jwt.props.JwtProperties;
 import org.springblade.core.launch.constant.TokenConstant;
+import org.springblade.core.log.annotation.ApiLog;
+import org.springblade.core.log.annotation.LoginOrLogoutLog;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -32,37 +34,16 @@
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.core.tool.utils.WebUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.security.authentication.InsufficientAuthenticationException;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.security.oauth2.common.OAuth2RefreshToken;
-import org.springframework.security.oauth2.common.exceptions.InvalidClientException;
-import org.springframework.security.oauth2.common.exceptions.InvalidGrantException;
-import org.springframework.security.oauth2.common.exceptions.InvalidRequestException;
-import org.springframework.security.oauth2.common.exceptions.UnsupportedGrantTypeException;
-import org.springframework.security.oauth2.common.util.OAuth2Utils;
 import org.springframework.security.oauth2.provider.AuthorizationRequest;
-import org.springframework.security.oauth2.provider.ClientDetails;
 import org.springframework.security.oauth2.provider.ClientDetailsService;
-import org.springframework.security.oauth2.provider.TokenRequest;
-import org.springframework.security.oauth2.provider.endpoint.TokenEndpoint;
 import org.springframework.security.oauth2.provider.token.TokenStore;
-import org.springframework.util.StringUtils;
-import org.springframework.web.HttpRequestMethodNotSupportedException;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
 
-import java.security.Principal;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 
 import javax.servlet.http.HttpSession;
 import java.time.Duration;
@@ -135,6 +116,7 @@
 	 * 閫�鍑虹櫥褰�
 	 */
 	@GetMapping("/oauth/logout")
+	@LoginOrLogoutLog("logout")
 	public Kv logout() {
 		BladeUser user = AuthUtil.getUser();
 		String token = JwtUtil.getToken(WebUtil.getRequest().getHeader(TokenConstant.HEADER));
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
index 18730fb..9913f8b 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
@@ -18,6 +18,7 @@
 
 import com.alibaba.nacos.common.utils.StringUtils;
 import com.vci.ubcs.auth.constant.AuthConstant;
+import com.vci.ubcs.auth.support.BladePasswordEncoderFactories;
 import com.vci.ubcs.auth.utils.TokenUtil;
 import com.vci.ubcs.system.user.entity.User;
 import com.vci.ubcs.system.user.entity.UserInfo;
@@ -30,6 +31,7 @@
 import com.vci.ubcs.common.cache.CacheNames;
 import org.springblade.core.jwt.JwtUtil;
 import org.springblade.core.jwt.props.JwtProperties;
+import org.springblade.core.log.annotation.LoginOrLogoutLog;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
@@ -99,6 +101,7 @@
 
 	@Override
 	@SneakyThrows
+	@LoginOrLogoutLog("login")
 	public BladeUserDetails loadUserByUsername(String username) {
 		HttpServletRequest request = WebUtil.getRequest();
 		// 鑾峰彇鐢ㄦ埛缁戝畾ID
@@ -136,9 +139,9 @@
 
 		//瓒呯骇绠$悊鍛橀厤缃枃浠堕厤缃处鍙峰瘑鐮侊紝瀹炵幇鐧诲綍, 榛樿绉熸埛id鍜岃秴绠′负閰嶇疆鍑烘潵鐨�
 		if(tenantId.equals(this.tenantId) && userName.equals(username)){
-			if (!this.userName.equals(username) && !password.equalsIgnoreCase(this.password)) {
+			if (!this.userName.equals(username) || !BladePasswordEncoderFactories.createDelegatingPasswordEncoder().encode(password).equalsIgnoreCase(AuthConstant.ENCRYPT+this.password)) {
 				setFailCount(tenantId, username, count,strategy.getLockingTime());
-				throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+				throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND+"杩樻湁銆�"+(failCount-count)+"銆戞灏濊瘯鏈轰細!");
 			}
 			//濡傛灉ip姣斿鍚巊et鎶涘嚭寮傚父No value present灏辩洿鎺ユ姏寮傚父缁撴潫鐧诲綍
 			if(ipEnable){
@@ -194,7 +197,7 @@
 				// 鐢ㄦ埛涓嶅瓨鍦�,浣嗘彁绀虹敤鎴峰悕涓庡瘑鐮侀敊璇苟閿佸畾璐﹀彿
 				if (user == null || user.getId() == null) {
 					setFailCount(tenantId, username, count,strategy.getLockingTime());
-					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND+"杩樻湁銆�"+(failCount-count)+"銆戞灏濊瘯鏈轰細!");
 				}
 				// 鐢ㄦ埛鐘舵�佷负1鏃惰鏄庤鐢ㄦ埛琚攣瀹�
 				if(user.getUserStatus() == 1){
@@ -204,7 +207,7 @@
 				// 鐢ㄦ埛瀛樺湪浣嗗瘑鐮侀敊璇�,瓒呰繃娆℃暟鍒欓攣瀹氳处鍙�
 				if (grantType != null && !grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user.getPassword().equals(hex)) {
 					setFailCount(tenantId, username, count,strategy.getLockingTime());
-					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND);
+					throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND+"杩樻湁銆�"+(failCount-count)+"銆戞灏濊瘯鏈轰細!");
 				}
 				// 鐢ㄦ埛瑙掕壊涓嶅瓨鍦�
 				if (Func.isEmpty(userInfo.getRoles())) {
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/entity/LogOperate.java b/Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/entity/LogOperate.java
deleted file mode 100644
index f7d063e..0000000
--- a/Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/entity/LogOperate.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.vci.ubcs.log.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 鎿嶄綔鏃ュ織绠$悊:(鍖呮嫭鐧诲綍鏃ュ織銆佹搷浣滄棩蹇椼�佹巿鏉冩棩蹇楋紝浠ュ強绠$悊鍛樼殑浠ヤ笂涓夌鏃ュ織)
- * @author ludc
- * @date 2023/11/24 10:58
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@TableName("PL_LOG_OPERATE")
-public class LogOperate implements Serializable {
-
-	/**
-	 * 搴忓垪鍖�
-	 */
-	private static final long serialVersionUID = 2217599544701724211L;
-
-	/**
-	 * 涓婚敭
-	 */
-	@TableId("OID")
-	private String oid;
-
-	/**
-	 * 鐢ㄦ埛鍚�
-	 */
-	private String userName;
-
-	/**
-	 * 濮撳悕
-	 */
-	private String realName;
-
-	/**
-	 * ip鍦板潃
-	 */
-	private String ip;
-
-	/**
-	 * 妯″潡
-	 */
-	private String model;
-
-	/**
-	 * 鎿嶄綔
-	 */
-	private String operate;
-
-	/**
-	 * 鏃堕棿
-	 */
-	private Date time;
-
-	/**
-	 * 鎿嶄綔缁撴灉
-	 */
-	private String operateResult;
-
-	/**
-	 * 鎻忚堪
-	 */
-	private String description;
-
-	/**
-	 * 鏃ュ織绫诲瀷
-	 */
-	private String logType;
-
-}
diff --git a/Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/enumpack/ServiceNameRoleEnum.java b/Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/enumpack/ServiceNameRoleEnum.java
index e65283e..59959cf 100644
--- a/Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/enumpack/ServiceNameRoleEnum.java
+++ b/Source/UBCS/ubcs-ops-api/ubcs-log-api/src/main/java/com/vci/ubcs/log/enumpack/ServiceNameRoleEnum.java
@@ -71,7 +71,7 @@
 	/**
 	 * 鐢ㄦ埛淇℃伅绠$悊鏈嶅姟
 	 */
-	UBCS_ADMIN("ubcs_user","鏈嶅姟娌荤悊鏈嶅姟")
+	UBCS_ADMIN("ubcs_admin","鏈嶅姟娌荤悊鏈嶅姟")
 
 	;
 
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/LogApplication.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/LogApplication.java
index ea8f6dd..3cb1c31 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/LogApplication.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/LogApplication.java
@@ -29,7 +29,7 @@
  * @author Chill
  */
 @EnableDiscoveryClient
-@EnableFeignClients(basePackages = {"com.vci.ubcs", "org.springblade"})
+@EnableFeignClients("org.springblade")
 @SpringBootApplication
 public class LogApplication {
 
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogLocalController.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogLocalController.java
index e62e28e..38e4eb7 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogLocalController.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogLocalController.java
@@ -9,6 +9,7 @@
 import com.vci.ubcs.starter.web.util.LangBaseUtil;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springframework.web.bind.annotation.*;
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogOperateController.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogOperateController.java
index 3263ddd..1d40f40 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogOperateController.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/controller/LogOperateController.java
@@ -1,10 +1,15 @@
 package com.vci.ubcs.log.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.log.service.ILogOperateService;
+import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springblade.core.log.model.LogOperate;
 import org.springblade.core.tenant.annotation.NonDS;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springblade.core.tool.api.R;
+import org.springframework.web.bind.annotation.*;
+
 
 /**
  * 鎿嶄綔鏃ュ織绠$悊:(鍖呮嫭鐧诲綍鏃ュ織銆佹搷浣滄棩蹇椼�佹巿鏉冩棩蹇楋紝浠ュ強绠$悊鍛樼殑浠ヤ笂涓夌鏃ュ織)
@@ -18,6 +23,16 @@
 @RequestMapping("/operateLog")
 public class LogOperateController {
 
+	private final ILogOperateService operateLogService;
 
+	/**
+	 * 鏌ヨ鏃ュ織鍒楄〃
+	 * @param bladeQueryObject
+	 * @return
+	 */
+	@GetMapping("/listLogOperate")
+	public R<IPage<LogOperate>> listLogOperate(BladeQueryObject bladeQueryObject) {
+		return R.data(operateLogService.listByCondition(bladeQueryObject));
+	}
 
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/feign/LogClient.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/feign/LogClient.java
index 4b613ec..a9a0a0e 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/feign/LogClient.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/feign/LogClient.java
@@ -17,13 +17,16 @@
 package com.vci.ubcs.log.feign;
 
 
+import org.springblade.core.log.model.LogOperate;
 import com.vci.ubcs.log.service.ILogApiService;
 import com.vci.ubcs.log.service.ILogErrorService;
+import com.vci.ubcs.log.service.ILogOperateService;
 import com.vci.ubcs.log.service.ILogUsualService;
 import org.springblade.core.log.feign.ILogClient;
 import org.springblade.core.log.model.LogError;
 import lombok.AllArgsConstructor;
 import org.springblade.core.log.model.LogApi;
+import org.springblade.core.log.model.LogOperate;
 import org.springblade.core.log.model.LogUsual;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
@@ -47,6 +50,8 @@
 
 	private final ILogErrorService errorLogService;
 
+	private final ILogOperateService operateLogService;
+
 	@Override
 	@PostMapping(API_PREFIX + "/saveUsualLog")
 	public R<Boolean> saveUsualLog(@RequestBody LogUsual log) {
@@ -68,6 +73,10 @@
 		return R.data(errorLogService.save(log));
 	}
 
-
+	@Override
+	@PostMapping(API_PREFIX + "/saveOpereateLog")
+	public R<Boolean> saveOpereateLog(@RequestBody LogOperate logOperate) {
+		return R.data(operateLogService.saveLogOperate(logOperate));
+	}
 
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/mapper/LogOperateMapper.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/mapper/LogOperateMapper.java
index 8526497..5ea1db5 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/mapper/LogOperateMapper.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/mapper/LogOperateMapper.java
@@ -1,8 +1,8 @@
 package com.vci.ubcs.log.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.vci.ubcs.log.entity.LogOperate;
 import org.apache.ibatis.annotations.Mapper;
+import org.springblade.core.log.model.LogOperate;
 
 /**
  * 鎿嶄綔鏃ュ織绠$悊:(鍖呮嫭鐧诲綍鏃ュ織銆佹搷浣滄棩蹇椼�佹巿鏉冩棩蹇楋紝浠ュ強绠$悊鍛樼殑浠ヤ笂涓夌鏃ュ織)
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogOperateService.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogOperateService.java
index e10e6c0..417f0a1 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogOperateService.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/ILogOperateService.java
@@ -1,11 +1,12 @@
 package com.vci.ubcs.log.service;
 
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.vci.ubcs.log.entity.LogOperate;
 import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.log.model.LogOperate;
 
-import java.util.List;
 
 /**
  * 鎿嶄綔鏃ュ織绠$悊:(鍖呮嫭鐧诲綍鏃ュ織銆佹搷浣滄棩蹇椼�佹巿鏉冩棩蹇楋紝浠ュ強绠$悊鍛樼殑浠ヤ笂涓夌鏃ュ織)
@@ -26,6 +27,6 @@
 	 * @param bladeQueryObject
 	 * @return
 	 */
-	List<LogOperate> listByCondition(BladeQueryObject bladeQueryObject) throws ServiceException;
+	IPage<LogOperate> listByCondition(BladeQueryObject bladeQueryObject) throws ServiceException;
 
 }
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogOperateServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogOperateServiceImpl.java
index a7d5fd0..3e739d8 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogOperateServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogOperateServiceImpl.java
@@ -1,19 +1,20 @@
 package com.vci.ubcs.log.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
-import com.vci.ubcs.log.entity.LogOperate;
 import com.vci.ubcs.log.mapper.LogOperateMapper;
 import com.vci.ubcs.log.service.ILogOperateService;
+import com.vci.ubcs.starter.util.UBCSCondition;
 import com.vci.ubcs.starter.web.pagemodel.BladeQueryObject;
 import org.springblade.core.log.exception.ServiceException;
+import org.springblade.core.log.model.LogOperate;
 import org.springblade.core.mp.support.Condition;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
-import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -22,7 +23,7 @@
  * @date 2023/11/24 10:51
  */
 @Service
-public class LogOperateServiceImpl extends ServiceImpl<LogOperateMapper,LogOperate> implements ILogOperateService {
+public class LogOperateServiceImpl extends ServiceImpl<LogOperateMapper, LogOperate> implements ILogOperateService {
 
 	@Autowired
 	private LogOperateMapper logOperateMapper;
@@ -37,6 +38,12 @@
 		if(Func.isEmpty(logOperate)){
 			return false;
 		}
+		// 鑾峰彇鍒拌鑹插悕绉板垽鏂槸鍚︿负涓夊憳绠$悊鍛�
+		String userRole = AuthUtil.getUserRole().toLowerCase(Locale.ROOT);
+		userRole = Func.isBlank(userRole) ? logOperate.getUserName():userRole;
+		if(userRole.contains("auditadmin") || userRole.contains("sysadmin") || userRole.contains("secadmin") || userRole.contains("admin")){
+			logOperate.setIsAdmin(1);
+		}
 		return SqlHelper.retBool(logOperateMapper.insert(logOperate));
 	}
 
@@ -46,14 +53,15 @@
 	 * @return
 	 */
 	@Override
-	public List<LogOperate> listByCondition(BladeQueryObject bladeQueryObject) throws ServiceException{
+	public IPage<LogOperate> listByCondition(BladeQueryObject bladeQueryObject) throws ServiceException{
 		Map<String, Object> conditionMap = bladeQueryObject.getConditionMap();
-		if(conditionMap.isEmpty() || Func.isBlank(conditionMap.get("logType").toString())){
+		// 涓昏涓轰簡鍖哄垎鏄搷浣滄棩蹇楄繕鏄櫥褰曟棩蹇楃瓑
+		if(conditionMap.isEmpty() || Func.isBlank(conditionMap.get("log_type").toString())){
 			throw new ServiceException("鏃ュ織鏌ヨ蹇呬紶鍙傛暟銆愭棩蹇楃被鍨嬨�戜笉鑳戒负绌猴紒");
 		}
 		// map瀵硅薄杞崲涓烘煡璇㈠璞�
-		QueryWrapper<LogOperate> queryWrapper = Condition.getQueryWrapper(bladeQueryObject.getConditionMap(),LogOperate.class);
-		return this.list(queryWrapper);
+		IPage<LogOperate> logOperateIPage = this.logOperateMapper.selectPage(Condition.getPage(bladeQueryObject.getQuery().setDescs("TIME")), UBCSCondition.getQueryWrapper(bladeQueryObject.getConditionMap(), LogOperate.class));
+		return logOperateIPage;
 	}
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java
index a2a630f..30f887c 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/mapper/RoleMapper.java
@@ -52,7 +52,6 @@
 	 * 鑾峰彇鏍戝舰鑺傜偣
 	 *
 	 * @param tenantId
-	 * @param excludeRole
 	 * @return
 	 */
 	List<RoleVO> roleList(String tenantId);
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
index 5acd73f..dfb7c75 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
@@ -150,7 +150,7 @@
 			}
 			strategy.setUpdateTime(new Date());
 			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
-			boolean temp1 = super.saveOrUpdate(strategy);
+			boolean temp1 = this.update(strategy,Wrappers.<Strategy>update().lambda().eq(Strategy::getId,strategy.getId()));
 			boolean temp2 = false;
 			if(Func.isNotEmpty(oldIsDefaultStrategy)){
 				temp2 = updateUserStrategyDefault(temp1, oldIsDefaultStrategy);

--
Gitblit v1.9.3