From 34d18c08f04de78eccb42b88b7484b0531d263ff Mon Sep 17 00:00:00 2001
From: zhibing.pu <393733352@qq.com>
Date: 星期一, 12 八月 2024 20:13:19 +0800
Subject: [PATCH] 新增加系统管理部分功能接口
---
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java | 64 +
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java | 23
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TInvoiceTypeMapper.java | 9
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java | 12
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java | 484 +++++-----
ruoyi-service/ruoyi-other/src/main/resources/mapper/TEvaluationTagMapper.xml | 9
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java | 12
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java | 18
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLoginLogMapper.java | 24
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java | 11
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java | 77
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TInvoiceTypeServiceImpl.java | 19
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java | 69 +
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 2
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java | 8
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 11
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLoginLog.java | 91 ++
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TEvaluationTagFallbackFactory.java | 8
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java | 12
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java | 40
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java | 69 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java | 11
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java | 12
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java | 10
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java | 132 +-
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysLoginLogFallbackFactory.java | 28
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/SysOperLogQuery.java | 21
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java | 53
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLoginLogMapper.xml | 35
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TInvoiceTypeService.java | 10
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java | 208 ++--
ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml | 34
ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java | 10
ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 1
/dev/null | 54 -
ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java | 32
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLoginLogService.java | 32
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java | 162 +++
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java | 63 +
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java | 6
ruoyi-service/ruoyi-other/src/main/resources/mapper/TInvoiceTypeMapper.xml | 14
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLoginLogServiceImpl.java | 66 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java | 73 +
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/InvoiceTypePageList.java | 21
ruoyi-api/ruoyi-api-system/pom.xml | 8
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java | 11
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java | 26
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java | 252 +++---
48 files changed, 1,682 insertions(+), 775 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
index 22549a5..9742f77 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserFallbackFactory.java
@@ -1,6 +1,7 @@
package com.ruoyi.account.api.factory;
import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.common.core.domain.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -28,6 +29,11 @@
public R<List<Long>> getUserIdsByPhone(String phone) {
return R.fail("根据手机号查询用户ids失败:"+throwable.getMessage());
}
+
+ @Override
+ public R<TAppUser> getUserById(Long id) {
+ return R.fail("根据id查询用户失败:"+throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
index 8d4d1c7..b39f099 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java
@@ -1,10 +1,12 @@
package com.ruoyi.account.api.feignClient;
+import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.account.api.factory.AppUserFallbackFactory;
import com.ruoyi.common.core.domain.R;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -19,5 +21,13 @@
@ApiOperation(value = "管理后台-根据手机号查询用户ids", tags = {"管理后台-活动费用统计"})
@PostMapping(value = "/t-app-user/user/getUserIdsByPhone")
public R<List<Long>> getUserIdsByPhone(@RequestParam("phone") String phone);
-
+
+
+ /**
+ * 根据id获取用户
+ * @param id
+ * @return
+ */
+ @GetMapping(value = "/user/getUserById")
+ R<TAppUser> getUserById(Long id);
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TEvaluationTagFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TEvaluationTagFallbackFactory.java
index c6527d9..7bc1399 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TEvaluationTagFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/TEvaluationTagFallbackFactory.java
@@ -1,6 +1,7 @@
package com.ruoyi.other.api.factory;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.TEvaluationTagClient;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
@@ -26,9 +27,14 @@
return new TEvaluationTagClient() {
@Override
- public R<List<TEvaluationTagVO>> getTagList() {
+ public R<List<TEvaluationTagVO>> getTagList(Integer type) {
return R.fail("获取标签列表:" + throwable.getMessage());
}
+
+ @Override
+ public R<List<TEvaluationTag>> getListByIds(List<Integer> tagIds) {
+ return R.fail("根据id集合获取数据失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
index 92c209d..4d7e87a 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/TEvaluationTagClient.java
@@ -2,6 +2,7 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.factory.RoleSiteFallbackFactory;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
import org.springframework.cloud.openfeign.FeignClient;
@@ -24,5 +25,14 @@
* @return
*/
@PostMapping("/t-evaluation-tag/getTagList")
- R<List<TEvaluationTagVO>> getTagList();
+ R<List<TEvaluationTagVO>> getTagList(Integer type);
+
+
+ /**
+ * 根据id集合获取数据
+ * @param tagIds
+ * @return
+ */
+ @GetMapping("/t-evaluation-tag/getListByIds")
+ R<List<TEvaluationTag>> getListByIds(List<Integer> tagIds);
}
diff --git a/ruoyi-api/ruoyi-api-system/pom.xml b/ruoyi-api/ruoyi-api-system/pom.xml
index a9f9845..723a3c0 100644
--- a/ruoyi-api/ruoyi-api-system/pom.xml
+++ b/ruoyi-api/ruoyi-api-system/pom.xml
@@ -28,7 +28,13 @@
</exclusion>
</exclusions>
</dependency>
-
+ <dependency>
+ <groupId>com.ruoyi</groupId>
+ <artifactId>ruoyi-modules-system</artifactId>
+ <version>3.6.2</version>
+ <scope>compile</scope>
+ </dependency>
+
</dependencies>
</project>
\ No newline at end of file
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
index 525eda3..dc247b3 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteLogService.java
@@ -28,14 +28,5 @@
*/
@PostMapping("/operlog")
public R<Boolean> saveLog(@RequestBody SysOperLog sysOperLog, @RequestHeader(SecurityConstants.FROM_SOURCE) String source) throws Exception;
-
- /**
- * 保存访问记录
- *
- * @param sysLogininfor 访问实体
- * @param source 请求来源
- * @return 结果
- */
- @PostMapping("/logininfor")
- public R<Boolean> saveLogininfor(@RequestBody SysLogininfor sysLogininfor, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
index a3c350f..1e04af6 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysOperLog.java
@@ -1,6 +1,7 @@
package com.ruoyi.system.api.domain;
import java.util.Date;
+
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
@@ -8,248 +9,247 @@
/**
* 操作日志记录表 oper_log
- *
+ *
* @author ruoyi
*/
-public class SysOperLog extends BaseEntity
-{
- private static final long serialVersionUID = 1L;
-
- /** 日志主键 */
- @Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
- private Long operId;
-
- /** 操作模块 */
- @Excel(name = "操作模块")
- private String title;
-
- /** 业务类型(0其它 1新增 2修改 3删除) */
- @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
- private Integer businessType;
-
- /** 业务类型数组 */
- private Integer[] businessTypes;
-
- /** 请求方法 */
- @Excel(name = "请求方法")
- private String method;
-
- /** 请求方式 */
- @Excel(name = "请求方式")
- private String requestMethod;
-
- /** 操作类别(0其它 1后台用户 2手机端用户) */
- @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
- private Integer operatorType;
-
- /** 操作人员 */
- @Excel(name = "操作人员")
- private String operName;
-
- /** 部门名称 */
- @Excel(name = "部门名称")
- private String deptName;
-
- /** 请求url */
- @Excel(name = "请求地址")
- private String operUrl;
-
- /** 操作地址 */
- @Excel(name = "操作地址")
- private String operIp;
-
- /** 请求参数 */
- @Excel(name = "请求参数")
- private String operParam;
-
- /** 返回参数 */
- @Excel(name = "返回参数")
- private String jsonResult;
-
- /** 操作状态(0正常 1异常) */
- @Excel(name = "状态", readConverterExp = "0=正常,1=异常")
- private Integer status;
-
- /** 错误消息 */
- @Excel(name = "错误消息")
- private String errorMsg;
-
- /** 操作时间 */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
- private Date operTime;
-
- /** 消耗时间 */
- @Excel(name = "消耗时间", suffix = "毫秒")
- private Long costTime;
-
- public Long getOperId()
- {
- return operId;
- }
-
- public void setOperId(Long operId)
- {
- this.operId = operId;
- }
-
- public String getTitle()
- {
- return title;
- }
-
- public void setTitle(String title)
- {
- this.title = title;
- }
-
- public Integer getBusinessType()
- {
- return businessType;
- }
-
- public void setBusinessType(Integer businessType)
- {
- this.businessType = businessType;
- }
-
- public Integer[] getBusinessTypes()
- {
- return businessTypes;
- }
-
- public void setBusinessTypes(Integer[] businessTypes)
- {
- this.businessTypes = businessTypes;
- }
-
- public String getMethod()
- {
- return method;
- }
-
- public void setMethod(String method)
- {
- this.method = method;
- }
-
- public String getRequestMethod()
- {
- return requestMethod;
- }
-
- public void setRequestMethod(String requestMethod)
- {
- this.requestMethod = requestMethod;
- }
-
- public Integer getOperatorType()
- {
- return operatorType;
- }
-
- public void setOperatorType(Integer operatorType)
- {
- this.operatorType = operatorType;
- }
-
- public String getOperName()
- {
- return operName;
- }
-
- public void setOperName(String operName)
- {
- this.operName = operName;
- }
-
- public String getDeptName()
- {
- return deptName;
- }
-
- public void setDeptName(String deptName)
- {
- this.deptName = deptName;
- }
-
- public String getOperUrl()
- {
- return operUrl;
- }
-
- public void setOperUrl(String operUrl)
- {
- this.operUrl = operUrl;
- }
-
- public String getOperIp()
- {
- return operIp;
- }
-
- public void setOperIp(String operIp)
- {
- this.operIp = operIp;
- }
-
- public String getOperParam()
- {
- return operParam;
- }
-
- public void setOperParam(String operParam)
- {
- this.operParam = operParam;
- }
-
- public String getJsonResult()
- {
- return jsonResult;
- }
-
- public void setJsonResult(String jsonResult)
- {
- this.jsonResult = jsonResult;
- }
-
- public Integer getStatus()
- {
- return status;
- }
-
- public void setStatus(Integer status)
- {
- this.status = status;
- }
-
- public String getErrorMsg()
- {
- return errorMsg;
- }
-
- public void setErrorMsg(String errorMsg)
- {
- this.errorMsg = errorMsg;
- }
-
- public Date getOperTime()
- {
- return operTime;
- }
-
- public void setOperTime(Date operTime)
- {
- this.operTime = operTime;
- }
-
- public Long getCostTime()
- {
- return costTime;
- }
-
- public void setCostTime(Long costTime)
- {
- this.costTime = costTime;
- }
+public class SysOperLog extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 日志主键
+ */
+ @Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
+ private Long operId;
+
+ /**
+ * 操作模块
+ */
+ @Excel(name = "操作模块")
+ private String title;
+
+ /**
+ * 业务类型(0其它 1新增 2修改 3删除)
+ */
+ @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
+ private Integer businessType;
+
+ /**
+ * 业务类型数组
+ */
+ private Integer[] businessTypes;
+
+ /**
+ * 请求方法
+ */
+ @Excel(name = "请求方法")
+ private String method;
+
+ /**
+ * 请求方式
+ */
+ @Excel(name = "请求方式")
+ private String requestMethod;
+
+ /**
+ * 操作类别(0其它 1后台用户 2手机端用户)
+ */
+ @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
+ private Integer operatorType;
+
+ /**
+ * 操作人员
+ */
+ @Excel(name = "操作人员")
+ private String operName;
+
+ /**
+ * 部门名称
+ */
+ @Excel(name = "部门名称")
+ private String deptName;
+
+ /**
+ * 请求url
+ */
+ @Excel(name = "请求地址")
+ private String operUrl;
+
+ /**
+ * 操作地址
+ */
+ @Excel(name = "操作地址")
+ private String operIp;
+
+ /**
+ * 请求参数
+ */
+ @Excel(name = "请求参数")
+ private String operParam;
+
+ /**
+ * 返回参数
+ */
+ @Excel(name = "返回参数")
+ private String jsonResult;
+
+ /**
+ * 操作状态(0正常 1异常)
+ */
+ @Excel(name = "状态", readConverterExp = "0=正常,1=异常")
+ private Integer status;
+
+ /**
+ * 错误消息
+ */
+ @Excel(name = "错误消息")
+ private String errorMsg;
+
+ /**
+ * 操作时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date operTime;
+
+ /**
+ * 消耗时间
+ */
+ @Excel(name = "消耗时间", suffix = "毫秒")
+ private Long costTime;
+
+ public Long getOperId() {
+ return operId;
+ }
+
+ public void setOperId(Long operId) {
+ this.operId = operId;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public Integer getBusinessType() {
+ return businessType;
+ }
+
+ public void setBusinessType(Integer businessType) {
+ this.businessType = businessType;
+ }
+
+ public Integer[] getBusinessTypes() {
+ return businessTypes;
+ }
+
+ public void setBusinessTypes(Integer[] businessTypes) {
+ this.businessTypes = businessTypes;
+ }
+
+ public String getMethod() {
+ return method;
+ }
+
+ public void setMethod(String method) {
+ this.method = method;
+ }
+
+ public String getRequestMethod() {
+ return requestMethod;
+ }
+
+ public void setRequestMethod(String requestMethod) {
+ this.requestMethod = requestMethod;
+ }
+
+ public Integer getOperatorType() {
+ return operatorType;
+ }
+
+ public void setOperatorType(Integer operatorType) {
+ this.operatorType = operatorType;
+ }
+
+ public String getOperName() {
+ return operName;
+ }
+
+ public void setOperName(String operName) {
+ this.operName = operName;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
+ public String getOperUrl() {
+ return operUrl;
+ }
+
+ public void setOperUrl(String operUrl) {
+ this.operUrl = operUrl;
+ }
+
+ public String getOperIp() {
+ return operIp;
+ }
+
+ public void setOperIp(String operIp) {
+ this.operIp = operIp;
+ }
+
+ public String getOperParam() {
+ return operParam;
+ }
+
+ public void setOperParam(String operParam) {
+ this.operParam = operParam;
+ }
+
+ public String getJsonResult() {
+ return jsonResult;
+ }
+
+ public void setJsonResult(String jsonResult) {
+ this.jsonResult = jsonResult;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getErrorMsg() {
+ return errorMsg;
+ }
+
+ public void setErrorMsg(String errorMsg) {
+ this.errorMsg = errorMsg;
+ }
+
+ public Date getOperTime() {
+ return operTime;
+ }
+
+ public void setOperTime(Date operTime) {
+ this.operTime = operTime;
+ }
+
+ public Long getCostTime() {
+ return costTime;
+ }
+
+ public void setCostTime(Long costTime) {
+ this.costTime = costTime;
+ }
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
index 6acb505..599d97a 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java
@@ -20,8 +20,7 @@
private static final Logger log = LoggerFactory.getLogger(RemoteLogFallbackFactory.class);
@Override
- public RemoteLogService create(Throwable throwable)
- {
+ public RemoteLogService create(Throwable throwable) {
log.error("日志服务调用失败:{}", throwable.getMessage());
return new RemoteLogService()
{
@@ -30,12 +29,7 @@
{
return null;
}
-
- @Override
- public R<Boolean> saveLogininfor(SysLogininfor sysLogininfor, String source)
- {
- return null;
- }
+
};
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysLoginLogFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysLoginLogFallbackFactory.java
new file mode 100644
index 0000000..df6782c
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/SysLoginLogFallbackFactory.java
@@ -0,0 +1,28 @@
+package com.ruoyi.system.api.factory;
+
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.domain.SysRole;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysLoginLogClient;
+import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.ruoyi.system.api.model.*;
+import com.ruoyi.system.domain.SysLoginLog;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class SysLoginLogFallbackFactory implements FallbackFactory<SysLoginLogClient> {
+ @Override
+ public SysLoginLogClient create(Throwable cause) {
+ return new SysLoginLogClient(){
+
+
+ @Override
+ public R saveLoginLog(SysLoginLog loginLog) {
+ return R.fail("添加登录日志失败!" + cause.getMessage());
+ }
+ };
+ }
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java
new file mode 100644
index 0000000..f4283ec
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysLoginLogClient.java
@@ -0,0 +1,26 @@
+package com.ruoyi.system.api.feignClient;
+
+import com.ruoyi.common.core.constant.ServiceNameConstants;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.system.api.factory.SysLoginLogFallbackFactory;
+import com.ruoyi.system.domain.SysLoginLog;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 16:30
+ */
+@FeignClient(contextId = "SysLoginLogClient", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = SysLoginLogFallbackFactory.class)
+public interface SysLoginLogClient {
+
+
+ /**
+ * 添加登陆日志
+ * @param loginLog
+ * @return
+ */
+ @PostMapping("/saveLoginLog")
+ R saveLoginLog(@RequestBody SysLoginLog loginLog);
+}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 7104897..4dfeaf3 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-api/ruoyi-api-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -3,3 +3,4 @@
com.ruoyi.system.api.factory.RemoteFileFallbackFactory
com.ruoyi.system.api.factory.SysUserFallbackFactory
com.ruoyi.system.api.factory.SysRoleFallbackFactory
+com.ruoyi.system.api.factory.SysLoginLogFallbackFactory
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
index 9868d190..85ebf14 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -1,12 +1,15 @@
package com.ruoyi.auth.controller;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysLoginLogClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
+import com.ruoyi.system.domain.SysLoginLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.DeleteMapping;
@@ -24,6 +27,9 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.model.LoginUser;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.time.LocalDateTime;
import java.util.*;
/**
@@ -39,14 +45,18 @@
@Autowired
private SysLoginService sysLoginService;
- @Autowired
+ @Resource
private SysUserClient userClient;
+
+
+
+
+
@PostMapping("login")
- public R<?> login(@RequestBody LoginBody form)
- {
+ public R<?> login(@RequestBody LoginBody form, HttpServletRequest request) {
// 用户登录
- LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword());
+ LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(), request);
HashMap<String, Object> map = new HashMap<>();
map.put("token",tokenService.createToken(userInfo));
List<SysRole> roles = userInfo.getSysUser().getRoles();
@@ -62,13 +72,15 @@
sysUser.setLoginDate(new Date());
System.out.println("修改用户登录时间"+sysUser);
userClient.updateSysUser(sysUser);
- // 获取登录token
return R.ok(map);
}
+
+
+
+
@DeleteMapping("logout")
- public R<?> logout(HttpServletRequest request)
- {
+ public R<?> logout(HttpServletRequest request) {
String token = SecurityUtils.getToken(request);
if (StringUtils.isNotEmpty(token))
{
@@ -76,7 +88,7 @@
// 删除用户缓存记录
AuthUtil.logoutByToken(token);
// 记录用户退出日志
- sysLoginService.logout(username);
+ sysLoginService.logout(username, request);
}
return R.ok();
}
@@ -95,10 +107,10 @@
}
@PostMapping("register")
- public R<?> register(@RequestBody RegisterBody registerBody)
+ public R<?> register(@RequestBody RegisterBody registerBody, HttpServletRequest request)
{
// 用户注册
- sysLoginService.register(registerBody.getUsername(), registerBody.getPassword());
+ sysLoginService.register(registerBody.getUsername(), registerBody.getPassword(), request);
return R.ok();
}
}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
index 431c264..acfab13 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -1,5 +1,6 @@
package com.ruoyi.auth.service;
+import com.ruoyi.system.domain.SysLoginLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.core.constant.CacheConstants;
@@ -17,6 +18,9 @@
import com.ruoyi.system.api.RemoteUserService;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
/**
* 登录校验方法
@@ -41,42 +45,44 @@
/**
* 登录
*/
- public LoginUser login(String username, String password)
- {
+ public LoginUser login(String username, String password, HttpServletRequest request) {
+ // 查询用户信息
+ R<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
+
+ if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
+ {
+ recordLogService.recordLogininfor(request, null, username, Constants.LOGIN_FAIL_STATUS, "登录用户不存在");
+ throw new ServiceException("登录用户:" + username + " 不存在");
+ }
+ LoginUser userInfo = userResult.getData();
+ SysUser user = userResult.getData().getSysUser();
+
// 用户名或密码为空 错误
if (StringUtils.isAnyBlank(username, password))
{
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户/密码必须填写");
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "用户/密码必须填写");
throw new ServiceException("用户/密码必须填写");
}
// 密码如果不在指定范围内 错误
if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
|| password.length() > UserConstants.PASSWORD_MAX_LENGTH)
{
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户密码不在指定范围");
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "用户密码不在指定范围");
throw new ServiceException("用户密码不在指定范围");
}
// 用户名不在指定范围内 错误
if (username.length() < UserConstants.USERNAME_MIN_LENGTH
|| username.length() > UserConstants.USERNAME_MAX_LENGTH)
{
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名不在指定范围");
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "用户名不在指定范围");
throw new ServiceException("用户名不在指定范围");
}
// IP黑名单校验
String blackStr = Convert.toStr(redisService.getCacheObject(CacheConstants.SYS_LOGIN_BLACKIPLIST));
if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))
{
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "很遗憾,访问IP已被列入系统黑名单");
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "很遗憾,访问IP已被列入系统黑名单");
throw new ServiceException("很遗憾,访问IP已被列入系统黑名单");
- }
- // 查询用户信息
- R<LoginUser> userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
-
- if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData()))
- {
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "登录用户不存在");
- throw new ServiceException("登录用户:" + username + " 不存在");
}
if (R.FAIL == userResult.getCode())
@@ -84,32 +90,31 @@
throw new ServiceException(userResult.getMsg());
}
- LoginUser userInfo = userResult.getData();
- SysUser user = userResult.getData().getSysUser();
+
if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
{
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "对不起,您的账号已被删除");
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "对不起,您的账号已被删除");
throw new ServiceException("对不起,您的账号:" + username + " 已被删除");
}
if (UserStatus.DISABLE.getCode().equals(user.getStatus()))
{
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户已停用,请联系管理员");
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, "用户已停用,请联系管理员");
throw new ServiceException("对不起,您的账号:" + username + " 已停用");
}
- passwordService.validate(user, password);
- recordLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
+ passwordService.validate(user, password, request);
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_SUCCESS_STATUS, "登录成功");
return userInfo;
}
- public void logout(String loginName)
+ public void logout(String loginName, HttpServletRequest request)
{
- recordLogService.recordLogininfor(loginName, Constants.LOGOUT, "退出成功");
+ recordLogService.recordLogininfor(request, null, loginName, Constants.LOGIN_SUCCESS_STATUS, "退出成功");
}
/**
* 注册
*/
- public void register(String username, String password)
+ public void register(String username, String password, HttpServletRequest request)
{
// 用户名或密码为空 错误
if (StringUtils.isAnyBlank(username, password))
@@ -138,6 +143,6 @@
{
throw new ServiceException(registerResult.getMsg());
}
- recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功");
+ recordLogService.recordLogininfor(request, sysUser.getUserId().intValue(), username, Constants.LOGIN_SUCCESS_STATUS, "注册成功");
}
}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
index e00b1a4..1f6a419 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysPasswordService.java
@@ -10,6 +10,8 @@
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysUser;
+import javax.servlet.http.HttpServletRequest;
+
/**
* 登录密码方法
*
@@ -39,7 +41,7 @@
return CacheConstants.PWD_ERR_CNT_KEY + username;
}
- public void validate(SysUser user, String password)
+ public void validate(SysUser user, String password, HttpServletRequest request)
{
String username = user.getUserName();
@@ -53,14 +55,14 @@
if (retryCount >= Integer.valueOf(maxRetryCount).intValue())
{
String errMsg = String.format("密码输入错误%s次,帐户锁定%s分钟", maxRetryCount, lockTime);
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL,errMsg);
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS,errMsg);
throw new ServiceException(errMsg);
}
if (!matches(user, password))
{
retryCount = retryCount + 1;
- recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount));
+ recordLogService.recordLogininfor(request, user.getUserId().intValue(), username, Constants.LOGIN_FAIL_STATUS, String.format("密码输入错误%s次", retryCount));
redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
throw new ServiceException("密码错误");
}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
index 7ca0f00..c4230d8 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysRecordLogService.java
@@ -1,48 +1,134 @@
package com.ruoyi.auth.service;
-import org.springframework.beans.factory.annotation.Autowired;
+import com.ruoyi.system.api.feignClient.SysLoginLogClient;
+import com.ruoyi.system.domain.SysLoginLog;
import org.springframework.stereotype.Component;
-import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.constant.SecurityConstants;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.common.core.utils.ip.IpUtils;
-import com.ruoyi.system.api.RemoteLogService;
-import com.ruoyi.system.api.domain.SysLogininfor;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
/**
* 记录日志方法
- *
+ *
* @author ruoyi
*/
@Component
-public class SysRecordLogService
-{
- @Autowired
- private RemoteLogService remoteLogService;
-
- /**
- * 记录登录信息
- *
- * @param username 用户名
- * @param status 状态
- * @param message 消息内容
- * @return
- */
- public void recordLogininfor(String username, String status, String message)
- {
- SysLogininfor logininfor = new SysLogininfor();
- logininfor.setUserName(username);
- logininfor.setIpaddr(IpUtils.getIpAddr());
- logininfor.setMsg(message);
- // 日志状态
- if (StringUtils.equalsAny(status, Constants.LOGIN_SUCCESS, Constants.LOGOUT, Constants.REGISTER))
- {
- logininfor.setStatus(Constants.LOGIN_SUCCESS_STATUS);
- }
- else if (Constants.LOGIN_FAIL.equals(status))
- {
- logininfor.setStatus(Constants.LOGIN_FAIL_STATUS);
- }
- remoteLogService.saveLogininfor(logininfor, SecurityConstants.INNER);
- }
+public class SysRecordLogService {
+ @Resource
+ private SysLoginLogClient sysLoginLogClient;
+
+ /**
+ * 记录登录信息
+ *
+ * @param username 用户名
+ * @param status 状态
+ * @param message 消息内容
+ * @return
+ */
+ public void recordLogininfor(HttpServletRequest request, Integer userId, String username, String status, String message) {
+ Map<String, String> headerData = getHeaderData(request);
+ //添加登录日志
+ SysLoginLog loginLog = new SysLoginLog();
+ loginLog.setUserId(userId);
+ loginLog.setUsername(username);
+ loginLog.setIpAddress(headerData.get("ip"));
+ loginLog.setAddress("");// todo 待完善 https://www.juhe.cn/docs/api/id/1
+ loginLog.setBrowserType(headerData.get("browser"));
+ loginLog.setOperatingSystem(headerData.get("os"));
+ loginLog.setLoginTime(LocalDateTime.now());
+ loginLog.setLoginStatus(Integer.valueOf(status));
+ loginLog.setMessage(message);
+ sysLoginLogClient.saveLoginLog(loginLog);
+ }
+
+
+ public Map<String, String> getHeaderData(HttpServletRequest request) {
+ //Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
+ String browserDetails = request.getHeader("User-Agent");
+ String userAgent = browserDetails;
+ String user = userAgent.toLowerCase();
+ Map<String, String> map = new HashMap<>();
+ String os = "";
+ String browser = "";
+ if (userAgent.toLowerCase().indexOf("windows") >= 0) {
+ os = "Windows";
+ } else if (userAgent.toLowerCase().indexOf("mac") >= 0) {
+ os = "Mac";
+ } else if (userAgent.toLowerCase().indexOf("x11") >= 0) {
+ os = "Unix";
+ } else if (userAgent.toLowerCase().indexOf("android") >= 0) {
+ os = "Android";
+ } else if (userAgent.toLowerCase().indexOf("iphone") >= 0) {
+ os = "IPhone";
+ } else {
+ os = "UnKnown, More-Info: " + userAgent;
+ }
+ if (user.contains("edge")) {
+ browser = (userAgent.substring(userAgent.indexOf("Edge")).split(" ")[0]).replace("/", "-");
+ } else if (user.contains("msie")) {
+ String substring = userAgent.substring(userAgent.indexOf("MSIE")).split(";")[0];
+ browser = substring.split(" ")[0].replace("MSIE", "IE") + "-" + substring.split(" ")[1];
+ } else if (user.contains("safari") && user.contains("version")) {
+ browser = (userAgent.substring(userAgent.indexOf("Safari")).split(" ")[0]).split("/")[0]
+ + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+ } else if (user.contains("opr") || user.contains("opera")) {
+ if (user.contains("opera")) {
+ browser = (userAgent.substring(userAgent.indexOf("Opera")).split(" ")[0]).split("/")[0]
+ + "-" + (userAgent.substring(userAgent.indexOf("Version")).split(" ")[0]).split("/")[1];
+ } else if (user.contains("opr")) {
+ browser = ((userAgent.substring(userAgent.indexOf("OPR")).split(" ")[0]).replace("/", "-"))
+ .replace("OPR", "Opera");
+ }
+
+ } else if (user.contains("chrome")) {
+ browser = (userAgent.substring(userAgent.indexOf("Chrome")).split(" ")[0]).replace("/", "-");
+ } else if ((user.indexOf("mozilla/7.0") > -1) || (user.indexOf("netscape6") != -1) ||
+ (user.indexOf("mozilla/4.7") != -1) || (user.indexOf("mozilla/4.78") != -1) ||
+ (user.indexOf("mozilla/4.08") != -1) || (user.indexOf("mozilla/3") != -1)) {
+ browser = "Netscape-?";
+
+ } else if (user.contains("firefox")) {
+ browser = (userAgent.substring(userAgent.indexOf("Firefox")).split(" ")[0]).replace("/", "-");
+ } else if (user.contains("rv")) {
+ String IEVersion = (userAgent.substring(userAgent.indexOf("rv")).split(" ")[0]).replace("rv:", "-");
+ browser = "IE" + IEVersion.substring(0, IEVersion.length() - 1);
+ } else {
+ browser = "UnKnown, More-Info: " + userAgent;
+ }
+
+ String ip = request.getHeader("x-forwarded-for");
+ if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {
+ // 多次反向代理后会有多个ip值,第一个ip才是真实ip
+ if (ip.indexOf(",") != -1) {
+ ip = ip.split(",")[0];
+ }
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("Proxy-Client-IP");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("WL-Proxy-Client-IP");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("HTTP_CLIENT_IP");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getHeader("X-Real-IP");
+ }
+ if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+ ip = request.getRemoteAddr();
+ }
+ map.put("os", os);
+ map.put("browser", browser);
+ map.put("ip", ip);
+ return map;
+ }
+
+
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
index 1b48650..d27cec0 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/domain/BaseEntity.java
@@ -16,132 +16,132 @@
/**
* Entity基类
- *
+ *
* @author ruoyi
*/
-public class BaseEntity implements Serializable
-{
- private static final long serialVersionUID = 1L;
-
- /** 搜索值 */
- @JsonIgnore
- @TableField(exist = false)
- private String searchValue;
-
- /** 创建者 */
- @ApiModelProperty(value = "记录创建人,前端忽略")
- @TableField(value = "create_by", fill = FieldFill.INSERT)
- private String createBy;
-
- /** 创建时间 */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @TableField("create_time")
- private Date createTime;
-
- /** 更新者 */
- @ApiModelProperty(value = "记录修改人,前端忽略")
- //@JsonIgnore
- @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
- private String updateBy;
-
- /** 更新时间 */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @TableField("update_time")
- private Date updateTime;
-
- /** 是否删除 1未删除 0已删除 */
- @TableLogic
- @Excel(name = "是否删除 0未删除 1已删除")
- @TableField(exist = false)
- private Boolean disabled;
-
- /** 备注 */
- private String remark;
-
- /** 请求参数 */
- @JsonInclude(JsonInclude.Include.NON_EMPTY)
- @TableField(exist = false)
- private Map<String, Object> params;
-
- public Boolean getDisabled() {
- return disabled;
- }
-
- public void setDisabled(Boolean disabled) {
- this.disabled = disabled;
- }
-
- public String getSearchValue()
- {
- return searchValue;
- }
-
- public void setSearchValue(String searchValue)
- {
- this.searchValue = searchValue;
- }
-
- public String getCreateBy()
- {
- return createBy;
- }
-
- public void setCreateBy(String createBy)
- {
- this.createBy = createBy;
- }
-
- public Date getCreateTime()
- {
- return createTime;
- }
-
- public void setCreateTime(Date createTime)
- {
- this.createTime = createTime;
- }
-
- public String getUpdateBy()
- {
- return updateBy;
- }
-
- public void setUpdateBy(String updateBy)
- {
- this.updateBy = updateBy;
- }
-
- public Date getUpdateTime()
- {
- return updateTime;
- }
-
- public void setUpdateTime(Date updateTime)
- {
- this.updateTime = updateTime;
- }
-
- public String getRemark()
- {
- return remark;
- }
-
- public void setRemark(String remark)
- {
- this.remark = remark;
- }
-
- public Map<String, Object> getParams()
- {
- if (params == null)
- {
- params = new HashMap<>();
- }
- return params;
- }
-
- public void setParams(Map<String, Object> params)
- {
- this.params = params;
- }
+public class BaseEntity implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 搜索值
+ */
+ @JsonIgnore
+ @TableField(exist = false)
+ private String searchValue;
+
+ /**
+ * 创建者
+ */
+ @ApiModelProperty(value = "记录创建人,前端忽略")
+ @TableField(value = "create_by", fill = FieldFill.INSERT)
+ private String createBy;
+
+ /**
+ * 创建时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("create_time")
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ @ApiModelProperty(value = "记录修改人,前端忽略")
+ //@JsonIgnore
+ @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
+ private String updateBy;
+
+ /**
+ * 更新时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @TableField("update_time")
+ private Date updateTime;
+
+ /**
+ * 是否删除 1未删除 0已删除
+ */
+ @TableLogic
+ @Excel(name = "是否删除 0未删除 1已删除")
+ @TableField(exist = false)
+ private Boolean disabled;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ /**
+ * 请求参数
+ */
+ @JsonInclude(JsonInclude.Include.NON_EMPTY)
+ @TableField(exist = false)
+ private Map<String, Object> params;
+
+ public Boolean getDisabled() {
+ return disabled;
+ }
+
+ public void setDisabled(Boolean disabled) {
+ this.disabled = disabled;
+ }
+
+ public String getSearchValue() {
+ return searchValue;
+ }
+
+ public void setSearchValue(String searchValue) {
+ this.searchValue = searchValue;
+ }
+
+ public String getCreateBy() {
+ return createBy;
+ }
+
+ public void setCreateBy(String createBy) {
+ this.createBy = createBy;
+ }
+
+ public Date getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Date createTime) {
+ this.createTime = createTime;
+ }
+
+ public String getUpdateBy() {
+ return updateBy;
+ }
+
+ public void setUpdateBy(String updateBy) {
+ this.updateBy = updateBy;
+ }
+
+ public Date getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Date updateTime) {
+ this.updateTime = updateTime;
+ }
+
+ public String getRemark() {
+ return remark;
+ }
+
+ public void setRemark(String remark) {
+ this.remark = remark;
+ }
+
+ public Map<String, Object> getParams() {
+ if (params == null) {
+ params = new HashMap<>();
+ }
+ return params;
+ }
+
+ public void setParams(Map<String, Object> params) {
+ this.params = params;
+ }
}
diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java
index 83f2ef6..e44b648 100644
--- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java
+++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/service/AsyncLogService.java
@@ -7,23 +7,23 @@
import com.ruoyi.system.api.RemoteLogService;
import com.ruoyi.system.api.domain.SysOperLog;
+import javax.annotation.Resource;
+
/**
* 异步调用日志服务
*
* @author ruoyi
*/
@Service
-public class AsyncLogService
-{
- @Autowired
+public class AsyncLogService {
+ @Resource
private RemoteLogService remoteLogService;
/**
* 保存系统日志记录
*/
@Async
- public void saveSysLog(SysOperLog sysOperLog) throws Exception
- {
+ public void saveSysLog(SysOperLog sysOperLog) throws Exception {
remoteLogService.saveLog(sysOperLog, SecurityConstants.INNER);
}
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java
new file mode 100644
index 0000000..208c975
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLoginLogController.java
@@ -0,0 +1,63 @@
+package com.ruoyi.system.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.domain.SysLoginLog;
+import com.ruoyi.system.service.ISysLoginLogService;
+import com.ruoyi.system.service.ISysUserService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 15:48
+ */
+@RestController
+@RequestMapping("/sysLoginLog")
+public class SysLoginLogController {
+
+
+ @Resource
+ private ISysLoginLogService sysLoginLogService;
+
+ @Resource
+ private ISysUserService sysUserService;
+
+
+
+ @GetMapping("/pageList")
+ @ApiOperation(value = "获取登录日志列表", tags = {"管理后台-登录日志"})
+ public AjaxResult<PageInfo<SysLoginLog>> pageList(String name, BasePage basePage){
+ PageInfo<SysLoginLog> pageInfo = sysLoginLogService.pageList(name, basePage);
+ return AjaxResult.success(pageInfo);
+ }
+
+
+ @PostMapping("/addLoginLog")
+ @ApiOperation(value = "添加登录日志", tags = {"管理后台-登录日志"})
+ public AjaxResult addLoginLog(@RequestBody SysLoginLog loginLog){
+ return sysLoginLogService.addLoginLog(loginLog);
+ }
+
+
+ /**
+ * 添加登陆日志
+ * @param loginLog
+ * @return
+ */
+ @PostMapping("/saveLoginLog")
+ public R saveLoginLog(@RequestBody SysLoginLog loginLog){
+ loginLog.setCreateTime(LocalDateTime.now());
+ loginLog.setDelFlag(0);
+ sysLoginLogService.save(loginLog);
+ return R.ok();
+ }
+
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java
deleted file mode 100644
index aa116a4..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysLogininforController.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.ruoyi.system.controller;
-
-import java.util.List;
-import javax.servlet.http.HttpServletResponse;
-
-import com.ruoyi.system.service.ISysLogininforService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.core.constant.CacheConstants;
-import com.ruoyi.common.core.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.web.controller.BaseController;
-import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.core.web.page.TableDataInfo;
-import com.ruoyi.common.log.annotation.Log;
-import com.ruoyi.common.log.enums.BusinessType;
-import com.ruoyi.common.redis.service.RedisService;
-import com.ruoyi.common.security.annotation.InnerAuth;
-import com.ruoyi.common.security.annotation.RequiresPermissions;
-import com.ruoyi.system.api.domain.SysLogininfor;
-
-/**
- * 系统访问记录
- *
- * @author ruoyi
- */
-@RestController
-@RequestMapping("/logininfor")
-public class SysLogininforController extends BaseController
-{
- @Autowired
- private ISysLogininforService logininforService;
-
- @Autowired
- private RedisService redisService;
-
- @RequiresPermissions("system:logininfor:list")
- @GetMapping("/list")
- public TableDataInfo list(SysLogininfor logininfor)
- {
- startPage();
- List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
- return getDataTable(list);
- }
-
- @Log(title = "登录日志", businessType = BusinessType.EXPORT)
- @RequiresPermissions("system:logininfor:export")
- @PostMapping("/export")
- public void export(HttpServletResponse response, SysLogininfor logininfor)
- {
- List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
- ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
- util.exportExcel(response, list, "登录日志");
- }
-
- @RequiresPermissions("system:logininfor:remove")
- @Log(title = "登录日志", businessType = BusinessType.DELETE)
- @DeleteMapping("/{infoIds}")
- public AjaxResult remove(@PathVariable Long[] infoIds)
- {
- return toAjax(logininforService.deleteLogininforByIds(infoIds));
- }
-
- @RequiresPermissions("system:logininfor:remove")
- @Log(title = "登录日志", businessType = BusinessType.DELETE)
- @DeleteMapping("/clean")
- public AjaxResult clean()
- {
- logininforService.cleanLogininfor();
- return success();
- }
-
- @RequiresPermissions("system:logininfor:unlock")
- @Log(title = "账户解锁", businessType = BusinessType.OTHER)
- @GetMapping("/unlock/{userName}")
- public AjaxResult unlock(@PathVariable("userName") String userName)
- {
- redisService.deleteObject(CacheConstants.PWD_ERR_CNT_KEY + userName);
- return success();
- }
-
- @InnerAuth
- @PostMapping
- public AjaxResult add(@RequestBody SysLogininfor logininfor)
- {
- return toAjax(logininforService.insertLogininfor(logininfor));
- }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
index 4a6ec7c..eadb678 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysOperlogController.java
@@ -1,13 +1,11 @@
package com.ruoyi.system.controller;
-import java.util.Iterator;
import java.util.List;
-import java.util.Objects;
import javax.servlet.http.HttpServletResponse;
-import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.system.query.SysOperLogQuery;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,7 +19,6 @@
import com.ruoyi.common.core.utils.poi.ExcelUtil;
import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult;
-import com.ruoyi.common.core.web.page.TableDataInfo;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.InnerAuth;
@@ -31,78 +28,65 @@
/**
* 操作日志记录
- *
+ *
* @author ruoyi
*/
@RestController
@RequestMapping("/operlog")
-public class SysOperlogController extends BaseController
-{
- @Autowired
- private ISysOperLogService operLogService;
-
-// @RequiresPermissions("system:operlog:list")
-// @GetMapping("/list")
-// public TableDataInfo list(SysOperLog operLog)
-// {
-// startPage();
-// List<SysOperLog> list = operLogService.selectOperLogList(operLog);
-// return getDataTable(list);
-// }
-
- @ApiOperation(value = "当前车辆操作日志查询")
- @PostMapping("/list")
- public AjaxResult list(@RequestBody SysOperLogQuery query)
- {
- LambdaQueryWrapper<SysOperLog> wrapper = new LambdaQueryWrapper<>();
- wrapper.like(SysOperLog::getTitle,"车辆管理");
- wrapper.ne(SysOperLog::getBusinessType,1);
- List<SysOperLog> list = operLogService.list(wrapper);
- Iterator<SysOperLog> iterator = list.iterator();
- while (iterator.hasNext()){
- SysOperLog sysOperLog = iterator.next();
- String operParam = sysOperLog.getOperParam();
- JSONObject jsonObject = JSONObject.parseObject(operParam);
- String carId = jsonObject.getString("carId");
- if(StringUtils.isNotEmpty(carId) && Objects.nonNull(query.getCarId()) && !carId.equals(String.valueOf(query.getCarId()))){
- iterator.remove();
- }
- }
- return AjaxResult.success(list);
- }
-
-
- @Log(title = "操作日志", businessType = BusinessType.EXPORT)
- @RequiresPermissions("system:operlog:export")
- @PostMapping("/export")
- public void export(HttpServletResponse response, SysOperLog operLog)
- {
- List<SysOperLog> list = operLogService.selectOperLogList(operLog);
- ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
- util.exportExcel(response, list, "操作日志");
- }
-
- @Log(title = "操作日志", businessType = BusinessType.DELETE)
- @RequiresPermissions("system:operlog:remove")
- @DeleteMapping("/{operIds}")
- public AjaxResult remove(@PathVariable Long[] operIds)
- {
- return toAjax(operLogService.deleteOperLogByIds(operIds));
- }
-
- @RequiresPermissions("system:operlog:remove")
- @Log(title = "操作日志", businessType = BusinessType.CLEAN)
- @DeleteMapping("/clean")
- public AjaxResult clean()
- {
- operLogService.cleanOperLog();
- return success();
- }
-
- @InnerAuth
- @PostMapping
- public AjaxResult add(@RequestBody SysOperLog operLog)
- {
- return toAjax(operLogService.insertOperlog(operLog));
- }
+public class SysOperlogController extends BaseController {
+ @Autowired
+ private ISysOperLogService operLogService;
+
+
+ @GetMapping("/list")
+ @ApiOperation(value = "获取操作日志列表", tags = {"管理后台-操作日志"})
+ public AjaxResult<PageInfo<SysOperLog>> list(SysOperLogQuery query) {
+ PageInfo<SysOperLog> pageInfo = new PageInfo(query.getPageCurr(), query.getPageSize());
+ LambdaQueryWrapper<SysOperLog> wrapper = new LambdaQueryWrapper<>();
+ if(StringUtils.isNotEmpty(query.getOperName())){
+ wrapper.like(SysOperLog::getOperName, query.getOperName());
+ }
+ if(StringUtils.isNotEmpty(query.getTitle())){
+ wrapper.like(SysOperLog::getTitle, query.getTitle());
+ }
+ if(null != query.getStatus()){
+ wrapper.eq(SysOperLog::getStatus, query.getStatus());
+ }
+ if(null != query.getStartTime() && null != query.getEndTime()){
+ wrapper.between(SysOperLog::getOperTime, query.getStartTime(), query.getEndTime());
+ }
+ PageInfo<SysOperLog> page = operLogService.page(pageInfo, wrapper);
+ return AjaxResult.success(page);
+ }
+
+
+ @Log(title = "操作日志", businessType = BusinessType.EXPORT)
+ @RequiresPermissions("system:operlog:export")
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, SysOperLog operLog) {
+ List<SysOperLog> list = operLogService.selectOperLogList(operLog);
+ ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
+ util.exportExcel(response, list, "操作日志");
+ }
+
+ @Log(title = "操作日志", businessType = BusinessType.DELETE)
+ @RequiresPermissions("system:operlog:remove")
+ @DeleteMapping("/{operIds}")
+ public AjaxResult remove(@PathVariable Long[] operIds) {
+ return toAjax(operLogService.deleteOperLogByIds(operIds));
+ }
+
+ @RequiresPermissions("system:operlog:remove")
+ @Log(title = "操作日志", businessType = BusinessType.CLEAN)
+ @DeleteMapping("/clean")
+ public AjaxResult clean() {
+ operLogService.cleanOperLog();
+ return success();
+ }
+
+ @InnerAuth
+ @PostMapping
+ public AjaxResult add(@RequestBody SysOperLog operLog) {
+ return toAjax(operLogService.insertOperlog(operLog));
+ }
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLoginLog.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLoginLog.java
new file mode 100644
index 0000000..df7119c
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLoginLog.java
@@ -0,0 +1,91 @@
+package com.ruoyi.system.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 15:38
+ */
+@Data
+@TableName("sys_login_log")
+@ApiModel
+public class SysLoginLog {
+ /**
+ * 主键
+ */
+ @ApiModelProperty(value = "数据id")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 用户id
+ */
+ @TableField("user_id")
+ private Integer userId;
+ /**
+ * 登录账号
+ */
+ @TableField("username")
+ @ApiModelProperty(value = "用户账号")
+ private String username;
+ /**
+ * 登录IP地址
+ */
+ @TableField("ip_address")
+ @ApiModelProperty(value = "登录IP地址")
+ private String ipAddress;
+ /**
+ * 登录地址
+ */
+ @TableField("address")
+ @ApiModelProperty(value = "登录地址")
+ private String address;
+ /**
+ * 浏览器类型
+ */
+ @TableField("browser_type")
+ @ApiModelProperty(value = "浏览器类型")
+ private String browserType;
+ /**
+ * 操作系统
+ */
+ @TableField("operating_system")
+ @ApiModelProperty(value = "操作系统")
+ private String operatingSystem;
+ /**
+ * 登录时间
+ */
+ @TableField("login_time")
+ @ApiModelProperty(value = "登录时间")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime loginTime;
+ /**
+ * 登录状态(1=成功,2=失败)
+ */
+ @TableField("login_status")
+ private Integer loginStatus;
+ /**
+ * 提示消息
+ */
+ @TableField("message")
+ private String message;
+ /**
+ * 添加时间
+ */
+ @TableField("create_time")
+ private LocalDateTime createTime;
+ /**
+ * 删除状态(0=否,1=是)
+ */
+ @TableField("del_flag")
+ private Integer delFlag;
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLoginLogMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLoginLogMapper.java
new file mode 100644
index 0000000..e3be84b
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLoginLogMapper.java
@@ -0,0 +1,24 @@
+package com.ruoyi.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.system.domain.SysLoginLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 15:44
+ */
+public interface SysLoginLogMapper extends BaseMapper<SysLoginLog> {
+
+ /**
+ * 获取列表数据
+ * @param pageInfo
+ * @param name
+ * @return
+ */
+ List<SysLoginLog> pageList(PageInfo<SysLoginLog> pageInfo, @Param("name") String name);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
deleted file mode 100644
index 19671f3..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysLogininforMapper.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.ruoyi.system.mapper;
-
-import java.util.List;
-import com.ruoyi.system.api.domain.SysLogininfor;
-
-/**
- * 系统访问日志情况信息 数据层
- *
- * @author ruoyi
- */
-public interface SysLogininforMapper
-{
- /**
- * 新增系统登录日志
- *
- * @param logininfor 访问日志对象
- */
- public int insertLogininfor(SysLogininfor logininfor);
-
- /**
- * 查询系统登录日志集合
- *
- * @param logininfor 访问日志对象
- * @return 登录记录集合
- */
- public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
-
- /**
- * 批量删除系统登录日志
- *
- * @param infoIds 需要删除的登录日志ID
- * @return 结果
- */
- public int deleteLogininforByIds(Long[] infoIds);
-
- /**
- * 清空系统登录日志
- *
- * @return 结果
- */
- public int cleanLogininfor();
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/SysOperLogQuery.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/SysOperLogQuery.java
index 84d75e4..fcb7a5b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/SysOperLogQuery.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/query/SysOperLogQuery.java
@@ -1,16 +1,27 @@
package com.ruoyi.system.query;
+import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.web.page.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+import java.time.LocalDateTime;
+
@Data
-@ApiModel(value = "当前车辆查询操作日志")
+@ApiModel()
public class SysOperLogQuery extends BasePage {
-
-
- @ApiModelProperty(value = "车辆id")
- private Integer carId;
+ @ApiModelProperty(value = "操作人员")
+ private String operName;
+ @ApiModelProperty(value = "操作标题")
+ private String title;
+ @ApiModelProperty(value = "状态(0=正常,1=异常)")
+ private Integer status;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty(value = "操作开始时间", notes = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime startTime;
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty(value = "操作结束时间", notes = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime endTime;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLoginLogService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLoginLogService.java
new file mode 100644
index 0000000..e99400e
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLoginLogService.java
@@ -0,0 +1,32 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.system.domain.SysLoginLog;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 15:47
+ */
+public interface ISysLoginLogService extends IService<SysLoginLog> {
+
+
+ /**
+ * 获取列表数据
+ * @param name
+ * @param basePage
+ * @return
+ */
+ PageInfo<SysLoginLog> pageList(String name, BasePage basePage);
+
+
+ /**
+ * 添加登录日志
+ * @param loginLog
+ * @return
+ */
+ AjaxResult addLoginLog(SysLoginLog loginLog);
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
deleted file mode 100644
index 509cc54..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.ruoyi.system.service;
-
-import java.util.List;
-import com.ruoyi.system.api.domain.SysLogininfor;
-
-/**
- * 系统访问日志情况信息 服务层
- *
- * @author ruoyi
- */
-public interface ISysLogininforService
-{
- /**
- * 新增系统登录日志
- *
- * @param logininfor 访问日志对象
- */
- public int insertLogininfor(SysLogininfor logininfor);
-
- /**
- * 查询系统登录日志集合
- *
- * @param logininfor 访问日志对象
- * @return 登录记录集合
- */
- public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor);
-
- /**
- * 批量删除系统登录日志
- *
- * @param infoIds 需要删除的登录日志ID
- * @return 结果
- */
- public int deleteLogininforByIds(Long[] infoIds);
-
- /**
- * 清空系统登录日志
- */
- public void cleanLogininfor();
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
index 46a31f7..66bbc1d 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java
@@ -7,45 +7,44 @@
/**
* 操作日志 服务层
- *
+ *
* @author ruoyi
*/
-public interface ISysOperLogService extends IService<SysOperLog>
-{
- /**
- * 新增操作日志
- *
- * @param operLog 操作日志对象
- * @return 结果
- */
- public int insertOperlog(SysOperLog operLog);
-
- /**
- * 查询系统操作日志集合
- *
- * @param operLog 操作日志对象
- * @return 操作日志集合
- */
- public List<SysOperLog> selectOperLogList(SysOperLog operLog);
-
- /**
- * 批量删除系统操作日志
- *
- * @param operIds 需要删除的操作日志ID
- * @return 结果
- */
- public int deleteOperLogByIds(Long[] operIds);
-
- /**
- * 查询操作日志详细
- *
- * @param operId 操作ID
- * @return 操作日志对象
- */
- public SysOperLog selectOperLogById(Long operId);
-
- /**
- * 清空操作日志
- */
- public void cleanOperLog();
+public interface ISysOperLogService extends IService<SysOperLog> {
+ /**
+ * 新增操作日志
+ *
+ * @param operLog 操作日志对象
+ * @return 结果
+ */
+ public int insertOperlog(SysOperLog operLog);
+
+ /**
+ * 查询系统操作日志集合
+ *
+ * @param operLog 操作日志对象
+ * @return 操作日志集合
+ */
+ public List<SysOperLog> selectOperLogList(SysOperLog operLog);
+
+ /**
+ * 批量删除系统操作日志
+ *
+ * @param operIds 需要删除的操作日志ID
+ * @return 结果
+ */
+ public int deleteOperLogByIds(Long[] operIds);
+
+ /**
+ * 查询操作日志详细
+ *
+ * @param operId 操作ID
+ * @return 操作日志对象
+ */
+ public SysOperLog selectOperLogById(Long operId);
+
+ /**
+ * 清空操作日志
+ */
+ public void cleanOperLog();
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLoginLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLoginLogServiceImpl.java
new file mode 100644
index 0000000..69d7b95
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLoginLogServiceImpl.java
@@ -0,0 +1,66 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.domain.SysLoginLog;
+import com.ruoyi.system.mapper.SysLoginLogMapper;
+import com.ruoyi.system.service.ISysLoginLogService;
+import com.ruoyi.system.service.ISysUserService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 15:47
+ */
+@Service
+public class SysLoginLogServiceImpl extends ServiceImpl<SysLoginLogMapper, SysLoginLog> implements ISysLoginLogService {
+
+ @Resource
+ private ISysUserService sysUserService;
+
+
+
+
+
+ /**
+ * 获取列表数据
+ * @param name
+ * @param basePage
+ * @return
+ */
+ @Override
+ public PageInfo<SysLoginLog> pageList(String name, BasePage basePage) {
+ PageInfo<SysLoginLog> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize());
+ List<SysLoginLog> list = this.baseMapper.pageList(pageInfo, name);
+ return pageInfo.setRecords(list);
+ }
+
+
+ /**
+ * 添加登录日志
+ * @param loginLog
+ * @return
+ */
+ @Override
+ public AjaxResult addLoginLog(SysLoginLog loginLog) {
+ String username = loginLog.getUsername();
+ SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, username).eq(SysUser::getDelFlag, 0));
+ if(null == sysUser){
+ return AjaxResult.error("用户账号无效");
+ }
+ loginLog.setUserId(sysUser.getUserId().intValue());
+ loginLog.setCreateTime(LocalDateTime.now());
+ loginLog.setDelFlag(0);
+ this.save(loginLog);
+ return AjaxResult.success();
+ }
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
deleted file mode 100644
index 525d9d7..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.ruoyi.system.service.impl;
-
-import java.util.List;
-
-import com.ruoyi.system.mapper.SysLogininforMapper;
-import com.ruoyi.system.service.ISysLogininforService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.system.api.domain.SysLogininfor;
-
-/**
- * 系统访问日志情况信息 服务层处理
- *
- * @author ruoyi
- */
-@Service
-public class SysLogininforServiceImpl implements ISysLogininforService
-{
-
- @Autowired
- private SysLogininforMapper logininforMapper;
-
- /**
- * 新增系统登录日志
- *
- * @param logininfor 访问日志对象
- */
- @Override
- public int insertLogininfor(SysLogininfor logininfor)
- {
- return logininforMapper.insertLogininfor(logininfor);
- }
-
- /**
- * 查询系统登录日志集合
- *
- * @param logininfor 访问日志对象
- * @return 登录记录集合
- */
- @Override
- public List<SysLogininfor> selectLogininforList(SysLogininfor logininfor)
- {
- return logininforMapper.selectLogininforList(logininfor);
- }
-
- /**
- * 批量删除系统登录日志
- *
- * @param infoIds 需要删除的登录日志ID
- * @return 结果
- */
- @Override
- public int deleteLogininforByIds(Long[] infoIds)
- {
- return logininforMapper.deleteLogininforByIds(infoIds);
- }
-
- /**
- * 清空系统登录日志
- */
- @Override
- public void cleanLogininfor()
- {
- logininforMapper.cleanLogininfor();
- }
-}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
index 7ca5d1b..5174654 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
@@ -15,114 +15,108 @@
/**
* 操作日志 服务层处理
- *
+ *
* @author ruoyi
*/
@Service
-public class SysOperLogServiceImpl implements ISysOperLogService
-{
- @Autowired
- private SysOperLogMapper operLogMapper;
-
- /**
- * 新增操作日志
- *
- * @param operLog 操作日志对象
- * @return 结果
- */
- @Override
- public int insertOperlog(SysOperLog operLog)
- {
- return operLogMapper.insertOperlog(operLog);
- }
-
- /**
- * 查询系统操作日志集合
- *
- * @param operLog 操作日志对象
- * @return 操作日志集合
- */
- @Override
- public List<SysOperLog> selectOperLogList(SysOperLog operLog)
- {
- return operLogMapper.selectOperLogList(operLog);
- }
-
- /**
- * 批量删除系统操作日志
- *
- * @param operIds 需要删除的操作日志ID
- * @return 结果
- */
- @Override
- public int deleteOperLogByIds(Long[] operIds)
- {
- return operLogMapper.deleteOperLogByIds(operIds);
- }
-
- /**
- * 查询操作日志详细
- *
- * @param operId 操作ID
- * @return 操作日志对象
- */
- @Override
- public SysOperLog selectOperLogById(Long operId)
- {
- return operLogMapper.selectOperLogById(operId);
- }
-
- /**
- * 清空操作日志
- */
- @Override
- public void cleanOperLog()
- {
- operLogMapper.cleanOperLog();
- }
-
- @Override
- public boolean saveBatch(Collection<SysOperLog> entityList, int batchSize) {
- return false;
- }
-
- @Override
- public boolean saveOrUpdateBatch(Collection<SysOperLog> entityList, int batchSize) {
- return false;
- }
-
- @Override
- public boolean updateBatchById(Collection<SysOperLog> entityList, int batchSize) {
- return false;
- }
-
- @Override
- public boolean saveOrUpdate(SysOperLog entity) {
- return false;
- }
-
- @Override
- public SysOperLog getOne(Wrapper<SysOperLog> queryWrapper, boolean throwEx) {
- return null;
- }
-
- @Override
- public Map<String, Object> getMap(Wrapper<SysOperLog> queryWrapper) {
- return null;
- }
-
- @Override
- public <V> V getObj(Wrapper<SysOperLog> queryWrapper, Function<? super Object, V> mapper) {
- return null;
- }
-
- @Override
- public BaseMapper<SysOperLog> getBaseMapper() {
- return null;
- }
-
- @Override
- public Class<SysOperLog> getEntityClass() {
- return null;
- }
+public class SysOperLogServiceImpl implements ISysOperLogService {
+ @Autowired
+ private SysOperLogMapper operLogMapper;
+
+ /**
+ * 新增操作日志
+ *
+ * @param operLog 操作日志对象
+ * @return 结果
+ */
+ @Override
+ public int insertOperlog(SysOperLog operLog) {
+ return operLogMapper.insertOperlog(operLog);
+ }
+
+ /**
+ * 查询系统操作日志集合
+ *
+ * @param operLog 操作日志对象
+ * @return 操作日志集合
+ */
+ @Override
+ public List<SysOperLog> selectOperLogList(SysOperLog operLog) {
+ return operLogMapper.selectOperLogList(operLog);
+ }
+
+ /**
+ * 批量删除系统操作日志
+ *
+ * @param operIds 需要删除的操作日志ID
+ * @return 结果
+ */
+ @Override
+ public int deleteOperLogByIds(Long[] operIds) {
+ return operLogMapper.deleteOperLogByIds(operIds);
+ }
+
+ /**
+ * 查询操作日志详细
+ *
+ * @param operId 操作ID
+ * @return 操作日志对象
+ */
+ @Override
+ public SysOperLog selectOperLogById(Long operId) {
+ return operLogMapper.selectOperLogById(operId);
+ }
+
+ /**
+ * 清空操作日志
+ */
+ @Override
+ public void cleanOperLog() {
+ operLogMapper.cleanOperLog();
+ }
+
+ @Override
+ public boolean saveBatch(Collection<SysOperLog> entityList, int batchSize) {
+ return false;
+ }
+
+ @Override
+ public boolean saveOrUpdateBatch(Collection<SysOperLog> entityList, int batchSize) {
+ return false;
+ }
+
+ @Override
+ public boolean updateBatchById(Collection<SysOperLog> entityList, int batchSize) {
+ return false;
+ }
+
+ @Override
+ public boolean saveOrUpdate(SysOperLog entity) {
+ return false;
+ }
+
+ @Override
+ public SysOperLog getOne(Wrapper<SysOperLog> queryWrapper, boolean throwEx) {
+ return null;
+ }
+
+ @Override
+ public Map<String, Object> getMap(Wrapper<SysOperLog> queryWrapper) {
+ return null;
+ }
+
+ @Override
+ public <V> V getObj(Wrapper<SysOperLog> queryWrapper, Function<? super Object, V> mapper) {
+ return null;
+ }
+
+ @Override
+ public BaseMapper<SysOperLog> getBaseMapper() {
+ return null;
+ }
+
+ @Override
+ public Class<SysOperLog> getEntityClass() {
+ return null;
+ }
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLoginLogMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLoginLogMapper.xml
new file mode 100644
index 0000000..87f8136
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLoginLogMapper.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.SysLoginLogMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.SysLoginLog">
+ <id column="id" property="id" />
+ <result column="user_id" property="userId" />
+ <result column="user_name" property="username" />
+ <result column="ip_address" property="ipAddress"/>
+ <result column="address" property="address"/>
+ <result column="browser_type" property="browserType"/>
+ <result column="operating_system" property="operatingSystem"/>
+ <result column="login_time" property="loginTime"/>
+ <result column="login_status" property="loginStatus"/>
+ <result column="message" property="message"/>
+ <result column="create_time" property="createTime"/>
+ <result column="del_flag" property="delFlag"/>
+ </resultMap>
+
+
+
+ <select id="pageList" resultMap="BaseResultMap">
+ select
+ a.*,
+ b.user_name
+ from sys_login_log a
+ left join sys_user b on (a.user_id = b.user_id)
+ where a.del_flag = 0
+ <if test="null != name and '' != name">
+ and b.user_name like CONCAT('%', #{name}, '%')
+ </if>
+ order by a.create_time desc
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
deleted file mode 100644
index 8c5a10e..0000000
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysLogininforMapper.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.ruoyi.system.mapper.SysLogininforMapper">
-
- <resultMap type="com.ruoyi.system.api.domain.SysLogininfor" id="SysLogininforResult">
- <id property="infoId" column="info_id" />
- <result property="userName" column="user_name" />
- <result property="status" column="status" />
- <result property="ipaddr" column="ipaddr" />
- <result property="msg" column="msg" />
- <result property="accessTime" column="access_time" />
- </resultMap>
-
- <insert id="insertLogininfor" parameterType="com.ruoyi.system.api.domain.SysLogininfor">
- insert into sys_logininfor (user_name, status, ipaddr, msg, access_time)
- values (#{userName}, #{status}, #{ipaddr}, #{msg}, sysdate())
- </insert>
-
- <select id="selectLogininforList" parameterType="com.ruoyi.system.api.domain.SysLogininfor" resultMap="SysLogininforResult">
- select info_id, user_name, ipaddr, status, msg, access_time from sys_logininfor
- <where>
- <if test="ipaddr != null and ipaddr != ''">
- AND ipaddr like concat('%', #{ipaddr}, '%')
- </if>
- <if test="status != null and status != ''">
- AND status = #{status}
- </if>
- <if test="userName != null and userName != ''">
- AND user_name like concat('%', #{userName}, '%')
- </if>
- <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
- AND access_time >= #{params.beginTime}
- </if>
- <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
- AND access_time <= #{params.endTime}
- </if>
- </where>
- order by info_id desc
- </select>
-
- <delete id="deleteLogininforByIds" parameterType="Long">
- delete from sys_logininfor where info_id in
- <foreach collection="array" item="infoId" open="(" separator="," close=")">
- #{infoId}
- </foreach>
- </delete>
-
- <update id="cleanLogininfor">
- truncate table sys_logininfor
- </update>
-
-</mapper>
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index fed89c4..15172f8 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -333,5 +333,16 @@
return R.ok();
}
+
+ /**
+ * 根据用户id获取用户
+ * @param id
+ * @return
+ */
+ @GetMapping(value = "/user/getUserById/{id}")
+ public R<TAppUser> getUserById(@PathVariable Long id){
+ TAppUser appUser = appUserService.getById(id);
+ return R.ok(appUser);
+ }
}
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
index 3750bc9..87353bc 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -156,7 +156,7 @@
@ResponseBody
@GetMapping("/getAllSiteList")
- @ApiOperation(value = "获取所有站点数据", tags = {"管理后台-充电桩信息", "管理后台-系统用户管理", "管理后台-角色管理", "管理后台-系统通知"})
+ @ApiOperation(value = "获取所有站点数据", tags = {"管理后台-充电桩信息", "管理后台-系统用户管理", "管理后台-角色管理", "管理后台-系统通知", "管理后台-充电评价"})
public AjaxResult<List<Site>> getAllSiteList(){
//校验当前账户站点权限
SysUser sysUser = sysUserClient.getSysUser(SecurityUtils.getUserId()).getData();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
index ec89086..20cc001 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderEvaluateController.java
@@ -1,22 +1,21 @@
package com.ruoyi.order.controller;
-import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.model.TOrderEvaluate;
import com.ruoyi.order.api.query.TOrderEvaluateQuery;
import com.ruoyi.order.api.vo.TOrderEvaluateVO;
+import com.ruoyi.order.dto.GetOrderEvaluatePageList;
+import com.ruoyi.order.dto.GetOrderEvaluatePageListDTO;
import com.ruoyi.order.service.TOrderEvaluateService;
-import com.ruoyi.other.api.feignClient.TEvaluationTagClient;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import java.time.LocalDateTime;
import java.util.List;
/**
@@ -47,6 +46,62 @@
public AjaxResult<PageInfo<TOrderEvaluateVO>> pageList(@RequestBody TOrderEvaluateQuery query) {
return AjaxResult.ok(orderEvaluateService.getTagList(query));
}
-
+
+
+
+
+
+
+
+ @GetMapping(value = "/getPageList")
+ @ApiOperation(value = "获取充电评价列表", tags = {"管理后台-充电评价"})
+ public AjaxResult<PageInfo<GetOrderEvaluatePageListDTO>> getPageList(@RequestBody GetOrderEvaluatePageList pageList){
+ PageInfo<GetOrderEvaluatePageListDTO> list = orderEvaluateService.getPageList(pageList);
+ return AjaxResult.success(list);
+ }
+
+
+
+ @DeleteMapping(value = "/delOrderEvaluate")
+ @ApiOperation(value = "删除充电评价", tags = {"管理后台-充电评价"})
+ public AjaxResult delOrderEvaluate(@PathVariable Long id){
+ TOrderEvaluate orderEvaluate = orderEvaluateService.getById(id);
+ orderEvaluate.setDelFlag(true);
+ orderEvaluateService.updateById(orderEvaluate);
+ return AjaxResult.success();
+ }
+
+
+
+
+ @PostMapping(value = "/replyEvaluation")
+ @ApiOperation(value = "充电评价回复", tags = {"管理后台-充电评价"})
+ public AjaxResult replyEvaluation(@PathVariable("id") Long id, @RequestParam("reply") String reply){
+ TOrderEvaluate orderEvaluate = orderEvaluateService.getById(id);
+ reply = reply.replaceAll("& #40;", "(")
+ .replaceAll("& #41;", ")")
+ .replaceAll("& #40;", "(")
+ .replaceAll("& #41;", ")")
+ .replaceAll("& #39;", "'")
+ .replaceAll("& lt;", "<")
+ .replaceAll("& gt;", ">");
+ orderEvaluate.setEvaluationResponse(reply);
+ orderEvaluate.setResponseTime(LocalDateTime.now());
+ orderEvaluateService.updateById(orderEvaluate);
+ return AjaxResult.success();
+ }
+
+
+
+
+ @DeleteMapping(value = "/delOrderEvaluateReply")
+ @ApiOperation(value = "删除充电评价回复", tags = {"管理后台-充电评价"})
+ public AjaxResult delOrderEvaluateReply(@PathVariable Long id){
+ TOrderEvaluate orderEvaluate = orderEvaluateService.getById(id);
+ orderEvaluate.setEvaluationResponse("");
+ orderEvaluateService.updateById(orderEvaluate);
+ return AjaxResult.success();
+ }
+
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java
new file mode 100644
index 0000000..c195f20
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageList.java
@@ -0,0 +1,23 @@
+package com.ruoyi.order.dto;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 19:07
+ */
+@Data
+@ApiModel
+public class GetOrderEvaluatePageList extends BasePage {
+ @ApiModelProperty(value = "订单编号")
+ private String code;
+ @ApiModelProperty(value = "评价内容")
+ private String content;
+ @ApiModelProperty(value = "评价类型(1=好评,2=中评,3=差评)")
+ private Integer evaluateType;
+ @ApiModelProperty(value = "归属电站id")
+ private Integer siteId;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java
new file mode 100644
index 0000000..37ac8db
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/GetOrderEvaluatePageListDTO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.order.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 19:09
+ */
+@Data
+@ApiModel
+public class GetOrderEvaluatePageListDTO {
+ @ApiModelProperty("订单id")
+ private String id;
+ @ApiModelProperty("订单编号")
+ private String code;
+ private Long appUserId;
+ @ApiModelProperty("用户头像")
+ private String avatar;
+ @ApiModelProperty("用户电话")
+ private String phone;
+ @ApiModelProperty("评分")
+ private Integer mark;
+ @ApiModelProperty("归属电站名称")
+ private String siteName;
+ private Integer siteId;
+ @ApiModelProperty("评价内容")
+ private String content;
+ @ApiModelProperty("评价图片")
+ private String imgUrl;
+ @ApiModelProperty("评价时间")
+ private String createTime;
+ @ApiModelProperty("评价标签")
+ private List<String> tags;
+ @ApiModelProperty("回复内容")
+ private String recover;
+}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java
index b2566d5..2c6257e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java
@@ -5,6 +5,8 @@
import com.ruoyi.order.api.model.TOrderEvaluate;
import com.ruoyi.order.api.query.TOrderEvaluateQuery;
import com.ruoyi.order.api.vo.TOrderEvaluateVO;
+import com.ruoyi.order.dto.GetOrderEvaluatePageList;
+import com.ruoyi.order.dto.GetOrderEvaluatePageListDTO;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -30,4 +32,14 @@
* @return
*/
List<TOrderEvaluateVO> pageList(@Param("query") TOrderEvaluateQuery query,@Param("pageInfo")PageInfo<TOrderEvaluateVO> pageInfo);
+
+
+ /**
+ * 获取充电评价列表数据
+ * @param pageList
+ * @param pageInfo
+ * @return
+ */
+ List<GetOrderEvaluatePageListDTO> getPageList(@Param("query") GetOrderEvaluatePageList pageList, @Param("evaluationTagIds") List<Integer> evaluationTagIds,
+ PageInfo<GetOrderEvaluatePageListDTO> pageInfo);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java
index cd76d7d..f2b212d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TOrderEvaluateService.java
@@ -5,7 +5,10 @@
import com.ruoyi.order.api.model.TOrderEvaluate;
import com.ruoyi.order.api.query.TOrderEvaluateQuery;
import com.ruoyi.order.api.vo.TOrderEvaluateVO;
+import com.ruoyi.order.dto.GetOrderEvaluatePageList;
+import com.ruoyi.order.dto.GetOrderEvaluatePageListDTO;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
+import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -31,4 +34,12 @@
* @return
*/
PageInfo<TOrderEvaluateVO> getTagList(TOrderEvaluateQuery query);
+
+
+ /**
+ * 获取充电评价列表
+ * @param pageList
+ * @return
+ */
+ PageInfo<GetOrderEvaluatePageListDTO> getPageList(GetOrderEvaluatePageList pageList);
}
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index b1b5ca5..1c27a8a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -1,24 +1,35 @@
package com.ruoyi.order.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TOrderEvaluate;
+import com.ruoyi.order.api.model.TOrderEvaluateTag;
import com.ruoyi.order.api.query.TOrderEvaluateQuery;
import com.ruoyi.order.api.vo.TOrderEvaluateVO;
+import com.ruoyi.order.dto.GetOrderEvaluatePageList;
+import com.ruoyi.order.dto.GetOrderEvaluatePageListDTO;
import com.ruoyi.order.mapper.TChargingOrderMapper;
import com.ruoyi.order.mapper.TOrderEvaluateMapper;
import com.ruoyi.order.mapper.TOrderEvaluateTagMapper;
import com.ruoyi.order.service.TOrderEvaluateService;
+import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.feignClient.TEvaluationTagClient;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import javax.annotation.Resource;
+import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
@@ -35,16 +46,34 @@
@Service
public class TOrderEvaluateServiceImpl extends ServiceImpl<TOrderEvaluateMapper, TOrderEvaluate> implements TOrderEvaluateService {
- @Autowired
+ @Resource
private TEvaluationTagClient evaluationTagClient;
- @Autowired
+ @Resource
private TOrderEvaluateTagMapper orderEvaluateTagMapper;
- @Autowired
+ @Resource
private TChargingOrderMapper chargingOrderMapper;
+
+ @Resource
+ private AppUserClient appUserClient;
+
+ @Resource
+ private SiteClient siteClient;
+
+
+
+
+
+
+
+
+
+
+
+
@Override
public List<TEvaluationTagVO> getTagCount() {
// 查询标签列表
- R<List<TEvaluationTagVO>> r = evaluationTagClient.getTagList();
+ R<List<TEvaluationTagVO>> r = evaluationTagClient.getTagList(null);
List<TEvaluationTagVO> tagList = r.getData();
List<Integer> tagIds = tagList.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
// 统计标签使用数量
@@ -100,5 +129,35 @@
tagList.add(evaluationTagVO);
}
}
-
+
+
+ /**
+ * 获取充电评价列表
+ * @param pageList
+ * @return
+ */
+ @Override
+ public PageInfo<GetOrderEvaluatePageListDTO> getPageList(GetOrderEvaluatePageList pageList) {
+ PageInfo<GetOrderEvaluatePageListDTO> pageInfo = new PageInfo<>(pageList.getPageCurr(), pageList.getPageSize());
+ List<Integer> evaluationTagIds = null;
+ if(null != pageList.getEvaluateType()){
+ List<TEvaluationTagVO> data = evaluationTagClient.getTagList(pageList.getEvaluateType()).getData();
+ evaluationTagIds = data.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
+ }
+ List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, pageInfo);
+ for (GetOrderEvaluatePageListDTO dto : list) {
+ TAppUser appUser = appUserClient.getUserById(dto.getAppUserId()).getData();
+ dto.setAvatar(appUser.getAvatar());
+ String phone = appUser.getPhone();
+ dto.setPhone(phone.substring(0, 3) + "****" + phone.substring(6));
+ Site site = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData().get(0);
+ dto.setSiteName(site.getName());
+ List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, dto.getId()));
+ List<Integer> tagIds = tOrderEvaluateTags.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList());
+ List<TEvaluationTag> data = evaluationTagClient.getListByIds(tagIds).getData();
+ List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList());
+ dto.setTags(collect);
+ }
+ return pageInfo.setRecords(list);
+ }
}
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
index 66e30e6..8e83dee 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml
@@ -79,4 +79,38 @@
</if>
</select>
+
+
+ <select id="getPageList" resultType="com.ruoyi.order.dto.GetOrderEvaluatePageListDTO">
+ select
+ CAST(a.id AS CHAR) as id,
+ b.`code`,
+ a.mark,
+ b.site_id as siteId,
+ b.app_user_id as appUserId,
+ a.content,
+ a.img_url as imgUrl,
+ DATE_FORMAT(a.create_time, '%Y-%m-%d %H:%i:%s') as createTime,
+ a.evaluation_response as `recover`
+ from t_order_evaluate a
+ left join t_charging_order b on (a.order_id = b.id)
+ where a.order_type = 1 and a.del_flag = 0
+ <if test="null != query.code and '' != query.code">
+ and b.`code` like CONCAT('%', #{query.code}, '%')
+ </if>
+ <if test="null != query.content and '' != query.content">
+ and a.content like CONCAT('%', #{query.content}, '%')
+ </if>
+ <if test="null != query.evaluateType">
+ and a.id in (select order_evaluate_id from t_order_evaluate_tag where evaluation_tag_id in
+ <foreach collection="evaluationTagIds" item="item" index="index" open="(" separator="," close=")">
+ #{item}
+ </foreach>
+ )
+ </if>
+ <if test="null != query.siteId">
+ and b.site_id = #{query.siteId}
+ </if>
+ order by a.create_time desc
+ </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
index 261869b..6b55808 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEvaluationTagController.java
@@ -3,15 +3,18 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TEvaluationTag;
+import com.ruoyi.other.api.domain.TInvoiceType;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
+import com.ruoyi.other.query.InvoiceTypePageList;
import com.ruoyi.other.service.TEvaluationTagService;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RestController;
-
+import java.util.Arrays;
import java.util.List;
/**
@@ -37,6 +40,66 @@
public R<List<TEvaluationTagVO>> getTagList() {
return R.ok(evaluationTagService.getTagList());
}
-
+
+
+
+ @ResponseBody
+ @GetMapping("/pageList")
+ @ApiOperation(value = "获取评价标签列表", tags = {"管理后台-评价标签设置"})
+ public AjaxResult<PageInfo<TEvaluationTag>> pageList(String name, BasePage basePage){
+ PageInfo<TEvaluationTag> pageInfo = evaluationTagService.pageList(name, basePage);
+ return AjaxResult.success(pageInfo);
+ }
+
+
+ @ResponseBody
+ @PostMapping("/addEvaluationTag")
+ @ApiOperation(value = "添加评价标签", tags = {"管理后台-评价标签设置"})
+ public AjaxResult addEvaluationTag(@RequestBody TEvaluationTag evaluationTag){
+ evaluationTagService.save(evaluationTag);
+ return AjaxResult.success();
+ }
+
+ @ResponseBody
+ @GetMapping("/getEvaluationTagInfo/{id}")
+ @ApiOperation(value = "获取评价标签详情", tags = {"管理后台-评价标签设置"})
+ public AjaxResult<TEvaluationTag> getEvaluationTagInfo(@PathVariable Integer id){
+ TEvaluationTag evaluationTag = evaluationTagService.getById(id);
+ return AjaxResult.success(evaluationTag);
+ }
+
+
+ @ResponseBody
+ @PostMapping("/editEvaluationTag")
+ @ApiOperation(value = "编辑评价标签", tags = {"管理后台-评价标签设置"})
+ public AjaxResult editEvaluationTag(@RequestBody TEvaluationTag evaluationTag){
+ evaluationTagService.updateById(evaluationTag);
+ return AjaxResult.success();
+ }
+
+
+ @ResponseBody
+ @DeleteMapping("/delEvaluationTag/{id}")
+ @ApiOperation(value = "删除评价标签", tags = {"管理后台-评价标签设置"})
+ public AjaxResult<TInvoiceType> delEvaluationTag(@PathVariable Integer[] id){
+ List<TEvaluationTag> tEvaluationTags = evaluationTagService.listByIds(Arrays.asList(id));
+ for (TEvaluationTag evaluationTag : tEvaluationTags) {
+ evaluationTag.setDelFlag(true);
+ evaluationTagService.updateById(evaluationTag);
+ }
+ return AjaxResult.success();
+ }
+
+
+ /**
+ * 根据id集合获取数据
+ * @param tagIds
+ * @return
+ */
+ @GetMapping("/getListByIds")
+ public R<List<TEvaluationTag>> getListByIds(List<Integer> tagIds){
+ List<TEvaluationTag> tEvaluationTags = evaluationTagService.listByIds(tagIds);
+ return R.ok(tEvaluationTags);
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
index bb00ff7..6c55b54 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TInvoiceTypeController.java
@@ -1,9 +1,17 @@
package com.ruoyi.other.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.other.api.domain.TInvoiceType;
+import com.ruoyi.other.query.InvoiceTypePageList;
+import com.ruoyi.other.service.TInvoiceTypeService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.List;
/**
* <p>
@@ -16,6 +24,56 @@
@RestController
@RequestMapping("/t-invoice-type")
public class TInvoiceTypeController {
-
+
+ @Resource
+ private TInvoiceTypeService invoiceTypeService;
+
+
+ @ResponseBody
+ @GetMapping("/pageList")
+ @ApiOperation(value = "获取发票类型列表", tags = {"管理后台-发票类型管理"})
+ public AjaxResult<PageInfo<TInvoiceType>> pageList(InvoiceTypePageList pageList){
+ PageInfo<TInvoiceType> pageInfo = invoiceTypeService.pageList(pageList);
+ return AjaxResult.success(pageInfo);
+ }
+
+
+ @ResponseBody
+ @PostMapping("/addInvoiceType")
+ @ApiOperation(value = "添加发票类型", tags = {"管理后台-发票类型管理"})
+ public AjaxResult addInvoiceType(@RequestBody TInvoiceType invoiceType){
+ invoiceTypeService.save(invoiceType);
+ return AjaxResult.success();
+ }
+
+ @ResponseBody
+ @GetMapping("/getInvoiceTypeInfo/{id}")
+ @ApiOperation(value = "获取发票类型详情", tags = {"管理后台-发票类型管理"})
+ public AjaxResult<TInvoiceType> getInvoiceTypeInfo(@PathVariable Integer id){
+ TInvoiceType invoiceType = invoiceTypeService.getById(id);
+ return AjaxResult.success(invoiceType);
+ }
+
+
+ @ResponseBody
+ @PostMapping("/editInvoiceType")
+ @ApiOperation(value = "编辑发票类型", tags = {"管理后台-发票类型管理"})
+ public AjaxResult editInvoiceType(@RequestBody TInvoiceType invoiceType){
+ invoiceTypeService.updateById(invoiceType);
+ return AjaxResult.success();
+ }
+
+
+ @ResponseBody
+ @DeleteMapping("/delInvoiceType/{id}")
+ @ApiOperation(value = "删除发票类型", tags = {"管理后台-发票类型管理"})
+ public AjaxResult<TInvoiceType> delInvoiceType(@PathVariable Integer[] id){
+ List<TInvoiceType> tInvoiceTypes = invoiceTypeService.listByIds(Arrays.asList(id));
+ for (TInvoiceType invoiceType : tInvoiceTypes) {
+ invoiceType.setDelFlag(true);
+ invoiceTypeService.updateById(invoiceType);
+ }
+ return AjaxResult.success();
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java
index 64e26b7..4376dbf 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TEvaluationTagMapper.java
@@ -1,8 +1,10 @@
package com.ruoyi.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
+import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -21,5 +23,13 @@
* @return
*/
List<TEvaluationTagVO> getTagList();
-
+
+
+ /**
+ * 获取列表数据
+ * @param pageInfo
+ * @param name
+ * @return
+ */
+ List<TEvaluationTag> pageList(PageInfo<TEvaluationTag> pageInfo, @Param("name") String name);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TInvoiceTypeMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TInvoiceTypeMapper.java
index 5b284f1..fac2361 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TInvoiceTypeMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/TInvoiceTypeMapper.java
@@ -1,7 +1,12 @@
package com.ruoyi.other.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TInvoiceType;
+import com.ruoyi.other.query.InvoiceTypePageList;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* <p>
@@ -12,5 +17,7 @@
* @since 2024-08-06
*/
public interface TInvoiceTypeMapper extends BaseMapper<TInvoiceType> {
-
+
+
+ List<TInvoiceType> pageList(PageInfo<TInvoiceType> pageInfo, @Param("req") InvoiceTypePageList pageList);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/InvoiceTypePageList.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/InvoiceTypePageList.java
new file mode 100644
index 0000000..ab62966
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/query/InvoiceTypePageList.java
@@ -0,0 +1,21 @@
+package com.ruoyi.other.query;
+
+import com.ruoyi.common.core.web.page.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/8/12 18:07
+ */
+@Data
+@ApiModel
+public class InvoiceTypePageList extends BasePage {
+ @ApiModelProperty(value = "类型名称")
+ private String name;
+ @ApiModelProperty(value = "公司名称")
+ private String company;
+ @ApiModelProperty(value = "开票方式(1=人工,2=自动)")
+ private Integer method;
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java
index 5a58a01..7b0cb82 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TEvaluationTagService.java
@@ -1,6 +1,8 @@
package com.ruoyi.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
@@ -21,4 +23,13 @@
* @return
*/
List<TEvaluationTagVO> getTagList();
+
+
+ /**
+ * 获取列表页数据
+ * @param name
+ * @param basePage
+ * @return
+ */
+ PageInfo<TEvaluationTag> pageList(String name, BasePage basePage);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TInvoiceTypeService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TInvoiceTypeService.java
index 2f3502e..057ef7b 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TInvoiceTypeService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/TInvoiceTypeService.java
@@ -1,7 +1,9 @@
package com.ruoyi.other.service;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TInvoiceType;
+import com.ruoyi.other.query.InvoiceTypePageList;
/**
* <p>
@@ -12,5 +14,11 @@
* @since 2024-08-06
*/
public interface TInvoiceTypeService extends IService<TInvoiceType> {
-
+
+ /**
+ * 获取发票类型列表数据
+ * @param pageList
+ * @return
+ */
+ PageInfo<TInvoiceType> pageList(InvoiceTypePageList pageList);
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java
index 6b03b9b..f6448d9 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TEvaluationTagServiceImpl.java
@@ -1,5 +1,7 @@
package com.ruoyi.other.service.impl;
+import com.ruoyi.common.core.web.page.BasePage;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
import com.ruoyi.other.mapper.TEvaluationTagMapper;
@@ -21,7 +23,21 @@
public class TEvaluationTagServiceImpl extends ServiceImpl<TEvaluationTagMapper, TEvaluationTag> implements TEvaluationTagService {
@Override
- public List<TEvaluationTagVO> getTagCount() {
+ public List<TEvaluationTagVO> getTagList() {
return this.baseMapper.getTagList();
}
+
+
+ /**
+ * 获取列表数据
+ * @param name
+ * @param basePage
+ * @return
+ */
+ @Override
+ public PageInfo<TEvaluationTag> pageList(String name, BasePage basePage) {
+ PageInfo<TEvaluationTag> pageInfo = new PageInfo<>(basePage.getPageCurr(), basePage.getPageSize());
+ List<TEvaluationTag> list = this.baseMapper.pageList(pageInfo, name);
+ return pageInfo.setRecords(list);
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TInvoiceTypeServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TInvoiceTypeServiceImpl.java
index f96a0aa..d519cff 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TInvoiceTypeServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TInvoiceTypeServiceImpl.java
@@ -1,10 +1,14 @@
package com.ruoyi.other.service.impl;
+import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.other.api.domain.TInvoiceType;
import com.ruoyi.other.mapper.TInvoiceTypeMapper;
+import com.ruoyi.other.query.InvoiceTypePageList;
import com.ruoyi.other.service.TInvoiceTypeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
+
+import java.util.List;
/**
* <p>
@@ -16,5 +20,18 @@
*/
@Service
public class TInvoiceTypeServiceImpl extends ServiceImpl<TInvoiceTypeMapper, TInvoiceType> implements TInvoiceTypeService {
-
+
+
+ /**
+ * 获取发票类型列表数据
+ * @param pageList
+ * @return
+ */
+ @Override
+ public PageInfo<TInvoiceType> pageList(InvoiceTypePageList pageList) {
+ PageInfo<TInvoiceType> pageInfo = new PageInfo<>(pageList.getPageCurr(), pageList.getPageSize());
+ List<TInvoiceType> list = this.baseMapper.pageList(pageInfo, pageList);
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
}
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/TEvaluationTagMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/TEvaluationTagMapper.xml
index 96c8e5f..ec534eb 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/TEvaluationTagMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/TEvaluationTagMapper.xml
@@ -20,4 +20,13 @@
from t_evaluation_tag where del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} ORDER BY `type`
</select>
+
+
+ <select id="pageList" resultMap="BaseResultMap">
+ select * from t_evaluation_tag where del_flag = 0
+ <if test="null != name and '' != name">
+ and name like CONCAT('%', #{name}, '%')
+ </if>
+ order by create_time desc
+ </select>
</mapper>
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/TInvoiceTypeMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/TInvoiceTypeMapper.xml
index 2688cdd..c7e7c76 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/TInvoiceTypeMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/TInvoiceTypeMapper.xml
@@ -20,4 +20,18 @@
id, name, invoicing_company, invoicing_method, electricity_tariff, service_tariff, added_service_tariff, del_flag, create_time
</sql>
+
+ <select id="pageList" resultMap="BaseResultMap">
+ select * from t_invoice_type where del_flag = 0
+ <if test="null != req.name and '' != req.name">
+ and name like CONCAT('%', #{req.name}, '%')
+ </if>
+ <if test="null != req.company and '' != req.company">
+ and invoicing_company like CONCAT('%', #{req.company}, '%')
+ </if>
+ <if test="null != req.method">
+ and invoicing_method = #{req.method}
+ </if>
+ order by create_time desc
+ </select>
</mapper>
--
Gitblit v1.7.1