diff --git a/src/main/java/xyz/playedu/api/controller/backend/AdminLogController.java b/src/main/java/xyz/playedu/api/controller/backend/AdminLogController.java new file mode 100644 index 0000000..83bfee4 --- /dev/null +++ b/src/main/java/xyz/playedu/api/controller/backend/AdminLogController.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2023 杭州白书科技有限公司 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package xyz.playedu.api.controller.backend; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.MapUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import xyz.playedu.api.BCtx; +import xyz.playedu.api.annotation.Log; +import xyz.playedu.api.bus.BackendBus; +import xyz.playedu.api.constant.BusinessType; +import xyz.playedu.api.domain.*; +import xyz.playedu.api.service.AdminLogService; +import xyz.playedu.api.service.AdminUserService; +import xyz.playedu.api.types.JsonResponse; +import xyz.playedu.api.types.paginate.AdminLogPaginateFiler; +import xyz.playedu.api.types.paginate.PaginationResult; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +@RestController +@Slf4j +@RequestMapping("/backend/v1/admin/log") +public class AdminLogController { + + @Autowired private AdminLogService adminLogService; + + @Autowired private AdminUserService adminUserService; + + @Autowired private BackendBus backendBus; + + @GetMapping("/index") + @Log(title = "管理员日志-列表", businessType = BusinessType.GET) + public JsonResponse index(@RequestParam HashMap params) { + Integer page = MapUtils.getInteger(params, "page", 1); + Integer size = MapUtils.getInteger(params, "size", 10); + String sortField = MapUtils.getString(params, "sort_field"); + String sortAlgo = MapUtils.getString(params, "sort_algo"); + + Integer adminId = MapUtils.getInteger(params, "admin_id"); + String module = MapUtils.getString(params, "module"); + String title = MapUtils.getString(params, "title"); + Integer opt = MapUtils.getInteger(params, "opt"); + + AdminLogPaginateFiler filter = new AdminLogPaginateFiler(); + if(backendBus.isSuperAdmin()){ + filter.setAdminId(adminId); + }else { + filter.setAdminId(BCtx.getId()); + } + filter.setModule(module); + filter.setTitle(title); + filter.setOpt(opt); + filter.setSortField(sortField); + filter.setSortAlgo(sortAlgo); + + PaginationResult result = adminLogService.paginate(page, size, filter); + + Map adminUserMap = adminUserService.chunks(result.getData().stream().map(AdminLog::getAdminId).toList()) + .stream().collect(Collectors.toMap(AdminUser::getId, AdminUser::getName)); + + result.getData().forEach(adminLog -> { + adminLog.setAdminName(adminUserMap.get(adminLog.getAdminId())); + }); + + HashMap data = new HashMap<>(); + data.put("data", result.getData()); + data.put("total", result.getTotal()); + + return JsonResponse.data(data); + } +} diff --git a/src/main/java/xyz/playedu/api/domain/AdminLog.java b/src/main/java/xyz/playedu/api/domain/AdminLog.java index 68340e8..6bc40b0 100644 --- a/src/main/java/xyz/playedu/api/domain/AdminLog.java +++ b/src/main/java/xyz/playedu/api/domain/AdminLog.java @@ -40,6 +40,9 @@ public class AdminLog implements Serializable { @JsonProperty("admin_id") private Integer adminId; + @TableField(exist = false) + private String adminName; + /** 模块 */ private String module; diff --git a/src/main/java/xyz/playedu/api/mapper/AdminLogMapper.java b/src/main/java/xyz/playedu/api/mapper/AdminLogMapper.java index 96072f5..d60713c 100644 --- a/src/main/java/xyz/playedu/api/mapper/AdminLogMapper.java +++ b/src/main/java/xyz/playedu/api/mapper/AdminLogMapper.java @@ -20,6 +20,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import xyz.playedu.api.domain.AdminLog; +import xyz.playedu.api.types.paginate.AdminLogPaginateFiler; + +import java.util.List; /** * @author tengteng @@ -27,4 +30,8 @@ import xyz.playedu.api.domain.AdminLog; * @createDate 2023-02-17 15:40:31 @Entity xyz.playedu.api.domain.AdminLog */ @Mapper -public interface AdminLogMapper extends BaseMapper {} +public interface AdminLogMapper extends BaseMapper { + List paginate(AdminLogPaginateFiler filer); + + Long paginateCount(AdminLogPaginateFiler filer); +} diff --git a/src/main/java/xyz/playedu/api/service/AdminLogService.java b/src/main/java/xyz/playedu/api/service/AdminLogService.java index c255ed6..0b35ed7 100644 --- a/src/main/java/xyz/playedu/api/service/AdminLogService.java +++ b/src/main/java/xyz/playedu/api/service/AdminLogService.java @@ -20,6 +20,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.springframework.stereotype.Service; import xyz.playedu.api.domain.AdminLog; +import xyz.playedu.api.types.paginate.AdminLogPaginateFiler; +import xyz.playedu.api.types.paginate.PaginationResult; /** * @author tengteng @@ -27,4 +29,6 @@ import xyz.playedu.api.domain.AdminLog; * @createDate 2023-02-17 15:40:31 */ @Service -public interface AdminLogService extends IService {} +public interface AdminLogService extends IService { + PaginationResult paginate(int page, int size, AdminLogPaginateFiler filter); +} diff --git a/src/main/java/xyz/playedu/api/service/impl/AdminLogServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/AdminLogServiceImpl.java index 3c5b909..81f39b3 100644 --- a/src/main/java/xyz/playedu/api/service/impl/AdminLogServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/AdminLogServiceImpl.java @@ -22,6 +22,8 @@ import org.springframework.stereotype.Service; import xyz.playedu.api.domain.AdminLog; import xyz.playedu.api.mapper.AdminLogMapper; import xyz.playedu.api.service.AdminLogService; +import xyz.playedu.api.types.paginate.AdminLogPaginateFiler; +import xyz.playedu.api.types.paginate.PaginationResult; /** * @author tengteng @@ -30,4 +32,16 @@ import xyz.playedu.api.service.AdminLogService; */ @Service public class AdminLogServiceImpl extends ServiceImpl - implements AdminLogService {} + implements AdminLogService { + @Override + public PaginationResult paginate(int page, int size, AdminLogPaginateFiler filter) { + filter.setPageStart((page - 1) * size); + filter.setPageSize(size); + + PaginationResult pageResult = new PaginationResult<>(); + pageResult.setData(getBaseMapper().paginate(filter)); + pageResult.setTotal(getBaseMapper().paginateCount(filter)); + + return pageResult; + } +} diff --git a/src/main/java/xyz/playedu/api/types/paginate/AdminLogPaginateFiler.java b/src/main/java/xyz/playedu/api/types/paginate/AdminLogPaginateFiler.java new file mode 100644 index 0000000..61d1201 --- /dev/null +++ b/src/main/java/xyz/playedu/api/types/paginate/AdminLogPaginateFiler.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2023 杭州白书科技有限公司 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package xyz.playedu.api.types.paginate; + +import lombok.Data; + +@Data +public class AdminLogPaginateFiler { + + private Integer adminId; + + private String module; + + private String title; + + private Integer opt; + + private String sortField; + + private String sortAlgo; + + private Integer pageStart; + + private Integer pageSize; +} diff --git a/src/main/resources/mapper/AdminLogMapper.xml b/src/main/resources/mapper/AdminLogMapper.xml index 47892ab..02da4fa 100644 --- a/src/main/resources/mapper/AdminLogMapper.xml +++ b/src/main/resources/mapper/AdminLogMapper.xml @@ -26,4 +26,64 @@ opt,method,request_method,url,param,result, ip,ip_area,error_msg,created_at + + + +