diff --git a/ruoyi-ui/src/api/english/log.js b/ruoyi-ui/src/api/english/log.js
new file mode 100644
index 00000000..317e73db
--- /dev/null
+++ b/ruoyi-ui/src/api/english/log.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询日志列表
+export function listLog(query) {
+ return request({
+ url: '/english/log/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询日志详细
+export function getLog(id) {
+ return request({
+ url: '/english/log/' + id,
+ method: 'get'
+ })
+}
+
+// 新增日志
+export function addLog(data) {
+ return request({
+ url: '/english/log',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改日志
+export function updateLog(data) {
+ return request({
+ url: '/english/log',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除日志
+export function delLog(id) {
+ return request({
+ url: '/english/log/' + id,
+ method: 'delete'
+ })
+}
diff --git a/ruoyi-ui/src/views/business/english/log/index.vue b/ruoyi-ui/src/views/business/english/log/index.vue
new file mode 100644
index 00000000..645c2d45
--- /dev/null
+++ b/ruoyi-ui/src/views/business/english/log/index.vue
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java
new file mode 100644
index 00000000..1967afc7
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java
@@ -0,0 +1,80 @@
+package com.xjs.log.controller;
+
+import java.util.List;
+import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+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.log.annotation.Log;
+import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.xjs.log.domain.ApiLog;
+import com.xjs.log.service.IApiLogService;
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.AjaxResult;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.web.page.TableDataInfo;
+
+/**
+ * 日志Controller
+ *
+ * @author xjs
+ * @date 2021-12-26
+ */
+@RestController
+@RequestMapping("log")
+public class ApiLogController extends BaseController {
+ @Autowired
+ private IApiLogService apiLogService;
+
+ /**
+ * 查询日志列表
+ */
+ @RequiresPermissions("english:log:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ApiLog apiLog) {
+ startPage();
+ List list = apiLogService.selectApiLogList(apiLog);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出日志列表
+ */
+ @RequiresPermissions("english:log:export")
+ @Log(title = "API日志", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ApiLog apiLog) {
+ List list = apiLogService.selectApiLogList(apiLog);
+ ExcelUtil util = new ExcelUtil(ApiLog.class);
+ util.exportExcel(response, list, "日志数据");
+ }
+
+ /**
+ * 获取日志详细信息
+ */
+ @RequiresPermissions("english:log:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id) {
+ return AjaxResult.success(apiLogService.selectApiLogById(id));
+ }
+
+
+ /**
+ * 删除日志
+ */
+ @RequiresPermissions("english:log:remove")
+ @Log(title = "API日志", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids) {
+ return toAjax(apiLogService.deleteApiLogByIds(ids));
+ }
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java
new file mode 100644
index 00000000..b7d5e020
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java
@@ -0,0 +1,123 @@
+package com.xjs.log.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.core.annotation.Excel;
+import com.ruoyi.common.core.web.domain.BaseEntity;
+
+import java.io.Serializable;
+
+/**
+ * 日志对象 api_log
+ *
+ * @author xjs
+ * @date 2021-12-26
+ */
+public class ApiLog implements Serializable
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long id;
+
+ /** 接口名称 */
+ @Excel(name = "接口名称")
+ private String apiName;
+
+ /** 请求API的url */
+ @Excel(name = "请求API的url")
+ private String url;
+
+ /** 请求API的方法 */
+ @Excel(name = "请求API的方法")
+ private String method;
+
+ /** 请求request */
+ @Excel(name = "请求request")
+ private String request;
+
+ /** 响应体 */
+ @Excel(name = "响应体")
+ private String response;
+
+ /** 是否请求成功 */
+ @Excel(name = "是否请求成功")
+ private Integer isSuccess;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+ public void setApiName(String apiName)
+ {
+ this.apiName = apiName;
+ }
+
+ public String getApiName()
+ {
+ return apiName;
+ }
+ public void setUrl(String url)
+ {
+ this.url = url;
+ }
+
+ public String getUrl()
+ {
+ return url;
+ }
+ public void setMethod(String method)
+ {
+ this.method = method;
+ }
+
+ public String getMethod()
+ {
+ return method;
+ }
+ public void setRequest(String request)
+ {
+ this.request = request;
+ }
+
+ public String getRequest()
+ {
+ return request;
+ }
+ public void setResponse(String response)
+ {
+ this.response = response;
+ }
+
+ public String getResponse()
+ {
+ return response;
+ }
+ public void setIsSuccess(Integer isSuccess)
+ {
+ this.isSuccess = isSuccess;
+ }
+
+ public Integer getIsSuccess()
+ {
+ return isSuccess;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("apiName", getApiName())
+ .append("url", getUrl())
+ .append("method", getMethod())
+ .append("request", getRequest())
+ .append("response", getResponse())
+ .append("isSuccess", getIsSuccess())
+ .toString();
+ }
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java
new file mode 100644
index 00000000..611afe6c
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java
@@ -0,0 +1,45 @@
+package com.xjs.log.mapper;
+
+import java.util.List;
+import com.xjs.log.domain.ApiLog;
+
+/**
+ * 日志Mapper接口
+ *
+ * @author xjs
+ * @date 2021-12-26
+ */
+public interface ApiLogMapper
+{
+ /**
+ * 查询日志
+ *
+ * @param id 日志主键
+ * @return 日志
+ */
+ public ApiLog selectApiLogById(Long id);
+
+ /**
+ * 查询日志列表
+ *
+ * @param apiLog 日志
+ * @return 日志集合
+ */
+ public List selectApiLogList(ApiLog apiLog);
+
+ /**
+ * 删除日志
+ *
+ * @param id 日志主键
+ * @return 结果
+ */
+ public int deleteApiLogById(Long id);
+
+ /**
+ * 批量删除日志
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteApiLogByIds(Long[] ids);
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java
new file mode 100644
index 00000000..ca81a8f6
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java
@@ -0,0 +1,45 @@
+package com.xjs.log.service;
+
+import java.util.List;
+import com.xjs.log.domain.ApiLog;
+
+/**
+ * 日志Service接口
+ *
+ * @author xjs
+ * @date 2021-12-26
+ */
+public interface IApiLogService
+{
+ /**
+ * 查询日志
+ *
+ * @param id 日志主键
+ * @return 日志
+ */
+ public ApiLog selectApiLogById(Long id);
+
+ /**
+ * 查询日志列表
+ *
+ * @param apiLog 日志
+ * @return 日志集合
+ */
+ public List selectApiLogList(ApiLog apiLog);
+
+ /**
+ * 批量删除日志
+ *
+ * @param ids 需要删除的日志主键集合
+ * @return 结果
+ */
+ public int deleteApiLogByIds(Long[] ids);
+
+ /**
+ * 删除日志信息
+ *
+ * @param id 日志主键
+ * @return 结果
+ */
+ public int deleteApiLogById(Long id);
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/impl/ApiLogServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/impl/ApiLogServiceImpl.java
new file mode 100644
index 00000000..406ed6bf
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/impl/ApiLogServiceImpl.java
@@ -0,0 +1,65 @@
+package com.xjs.log.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.xjs.log.mapper.ApiLogMapper;
+import com.xjs.log.domain.ApiLog;
+import com.xjs.log.service.IApiLogService;
+
+/**
+ * 日志Service业务层处理
+ *
+ * @author xjs
+ * @date 2021-12-26
+ */
+@Service
+public class ApiLogServiceImpl implements IApiLogService {
+ @Autowired
+ private ApiLogMapper apiLogMapper;
+
+ /**
+ * 查询日志
+ *
+ * @param id 日志主键
+ * @return 日志
+ */
+ @Override
+ public ApiLog selectApiLogById(Long id) {
+ return apiLogMapper.selectApiLogById(id);
+ }
+
+ /**
+ * 查询日志列表
+ *
+ * @param apiLog 日志
+ * @return 日志
+ */
+ @Override
+ public List selectApiLogList(ApiLog apiLog) {
+ return apiLogMapper.selectApiLogList(apiLog);
+ }
+
+ /**
+ * 批量删除日志
+ *
+ * @param ids 需要删除的日志主键
+ * @return 结果
+ */
+ @Override
+ public int deleteApiLogByIds(Long[] ids) {
+ return apiLogMapper.deleteApiLogByIds(ids);
+ }
+
+ /**
+ * 删除日志信息
+ *
+ * @param id 日志主键
+ * @return 结果
+ */
+ @Override
+ public int deleteApiLogById(Long id) {
+ return apiLogMapper.deleteApiLogById(id);
+ }
+}
diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java
index b4b13fc3..35fd2d9e 100644
--- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java
+++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java
@@ -3,6 +3,9 @@ package com.xjs.translation.controller;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType;
+import com.ruoyi.common.security.annotation.RequiresLogin;
+import com.ruoyi.common.security.annotation.RequiresPermissions;
+import com.ruoyi.common.security.annotation.RequiresRoles;
import com.xjs.translation.domain.qo.translation.TranslationQo;
import com.xjs.translation.domain.vo.translation.TranslationVo;
import com.xjs.translation.service.TranslationService;
@@ -33,6 +36,7 @@ public class TranslationController {
@PostMapping
@ApiOperation("翻译接口")
@Log(title = "翻译管理")
+ @RequiresLogin
public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) {
TranslationVo translationVo=new TranslationVo();
if (BAIDU.equals(translationQo.getTranslationType())) {
diff --git a/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml
new file mode 100644
index 00000000..7b25a7a5
--- /dev/null
+++ b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, api_name, url, method, request, response, is_success from api_log
+
+
+
+
+
+
+
+ delete from api_log where id = #{id}
+
+
+
+ delete from api_log where id in
+
+ #{id}
+
+
+
\ No newline at end of file
diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java
index 9528c802..4c41106f 100644
--- a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java
+++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java
@@ -4,7 +4,10 @@ import com.xjs.XjsEnglishApp;
import com.xjs.translation.domain.qo.translation.TranslationQo;
import com.xjs.translation.domain.vo.translation.TranslationVo;
import com.xjs.translation.service.TranslationService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.RedisTemplate;
import javax.annotation.Resource;
@@ -18,9 +21,17 @@ class BaiDuTranslationServiceImplTest {
@Resource(name = "baiDuTranslationServiceImpl")
TranslationService translationService;
+ @Autowired
+ RedisTemplate redisTemplate;
@org.junit.jupiter.api.Test
void handlerTranslationApi() {
TranslationVo translationVo = translationService.translationApi(new TranslationQo());
System.out.println(translationVo);
}
+
+ @Test
+ public void redis() {
+ Object o = redisTemplate.opsForValue().get("login_tokens:043f6e6c-fc10-4f6e-8cd4-1243cdb2fa09");
+ System.out.println(o);
+ }
}
\ No newline at end of file