diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java index 3e9e40ddf..9ab470061 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/AuthServiceImpl.java @@ -17,6 +17,7 @@ import cn.stylefeng.roses.kernel.jwt.api.exception.JwtException; import cn.stylefeng.roses.kernel.jwt.api.exception.enums.JwtExceptionEnum; import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil; +import cn.stylefeng.roses.kernel.system.LoginLogServiceApi; import cn.stylefeng.roses.kernel.system.UserServiceApi; import cn.stylefeng.roses.kernel.system.enums.UserStatusEnum; import cn.stylefeng.roses.kernel.system.pojo.user.UserLoginInfoDTO; @@ -54,6 +55,9 @@ public class AuthServiceImpl implements AuthServiceApi { @Resource private PasswordTransferEncryptApi passwordTransferEncryptApi; + @Resource + private LoginLogServiceApi loginLogServiceApi; + @Override public LoginResponse login(LoginRequest loginRequest) { return loginAction(loginRequest, true); @@ -69,8 +73,13 @@ public class AuthServiceImpl implements AuthServiceApi { @Override public void logout() { String token = LoginContext.me().getToken(); + //退出日志 + if (StrUtil.isNotEmpty(token)) { + loginLogServiceApi.loginOutSuccess(LoginContext.me().getLoginUser().getUserId()); + } logoutWithToken(token); sessionManagerApi.destroySessionCookie(); + } @Override @@ -198,7 +207,9 @@ public class AuthServiceImpl implements AuthServiceApi { String ip = HttpServletUtil.getRequestClientIp(HttpServletUtil.getRequest()); userServiceApi.updateUserLoginInfo(loginUser.getUserId(), new Date(), ip); - // 11. 组装返回结果 + // 11.登录成功日志 + loginLogServiceApi.loginSuccess(loginUser.getUserId()); + // 12. 组装返回结果 return new LoginResponse(loginUser, jwtToken, defaultJwtPayload.getExpirationDate()); } diff --git a/kernel-s-system/pom.xml b/kernel-s-system/pom.xml index 9445f242e..cf27c8902 100644 --- a/kernel-s-system/pom.xml +++ b/kernel-s-system/pom.xml @@ -24,6 +24,7 @@ system-business-role system-business-menu system-business-notice + system-business-login-log system-spring-boot-starter diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/LoginLogServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/LoginLogServiceApi.java new file mode 100644 index 000000000..e751a5e0d --- /dev/null +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/LoginLogServiceApi.java @@ -0,0 +1,66 @@ +package cn.stylefeng.roses.kernel.system; + +import cn.stylefeng.roses.kernel.system.pojo.loginlog.request.SysLoginLogRequest; + +/** + * 登录日志api接口 + * + * @author chenjinlong + * @date 2021/1/13 11:12 + */ +public interface LoginLogServiceApi { + + /** + * 添加日志 + * + * @param sysLoginLogRequest 参数 + * @author chenjinlong + * @date 2021/1/13 10:56 + */ + void add(SysLoginLogRequest sysLoginLogRequest); + + /** + * 登录成功 + * + * @param userId 用户id + * @author chenjinlong + * @date 2021/1/13 11:36 + */ + void loginSuccess(Long userId); + + /** + * 登录失败 + * + * @param userId 用户id + * @param llgMessage 错误信息 + * @author chenjinlong + * @date 2021/1/13 11:36 + */ + void loginFail(Long userId, String llgMessage); + + /** + * 登出成功 + * + * @param userId 用户id + * @author chenjinlong + * @date 2021/1/13 11:36 + */ + void loginOutSuccess(Long userId); + + /** + * 登出失败 + * + * @param userId 用户id + * @author chenjinlong + * @date 2021/1/13 11:36 + */ + void loginOutFail(Long userId); + + /** + * 清空 + * + * @author chenjinlong + * @date 2021/1/13 10:55 + */ + void deleteAll(); +} diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/loginlog/request/SysLoginLogRequest.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/loginlog/request/SysLoginLogRequest.java new file mode 100644 index 000000000..180351e3d --- /dev/null +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/loginlog/request/SysLoginLogRequest.java @@ -0,0 +1,65 @@ +package cn.stylefeng.roses.kernel.system.pojo.loginlog.request; + +import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotNull; +import java.util.Date; + +/** + * 登录日志表 + * + * @author chenjinlong + * @date 2021/1/13 11:06 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class SysLoginLogRequest extends BaseRequest { + + /** + * 主键id + */ + @NotNull(message = "llgId不能为空", groups = {detail.class}) + private Long llgId; + + /** + * 日志名称 + */ + private String llgName; + + /** + * 是否执行成功 + */ + private String llgSucceed; + + /** + * 具体消息 + */ + private String llgMessage; + + /** + * 登录ip + */ + private String llgIpAddress; + + /** + * 用户id + */ + private Long userId; + + /** + * 开始时间 + */ + private Date createTime; + + /** + * 开始时间 + */ + private String beginTime; + + /** + * 结束时间 + */ + private String endTime; +} diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/loginlog/response/SysLoginLogResponse.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/loginlog/response/SysLoginLogResponse.java new file mode 100644 index 000000000..88e9d7e41 --- /dev/null +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/pojo/loginlog/response/SysLoginLogResponse.java @@ -0,0 +1,46 @@ +package cn.stylefeng.roses.kernel.system.pojo.loginlog.response; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 登录日志表 + * + * @author chenjinlong + * @date 2021/1/13 11:06 + */ +@Data +public class SysLoginLogResponse implements Serializable { + + /** + * 主键id + */ + private Long llgId; + + /** + * 日志名称 + */ + private String llgName; + + /** + * 是否执行成功 + */ + private String llgSucceed; + + /** + * 具体消息 + */ + private String llgMessage; + + /** + * 登录ip + */ + private String llgIpAddress; + + /** + * 用户id + */ + private Long userId; + +} diff --git a/kernel-s-system/system-business-login-log/README.md b/kernel-s-system/system-business-login-log/README.md new file mode 100644 index 000000000..0b1834c49 --- /dev/null +++ b/kernel-s-system/system-business-login-log/README.md @@ -0,0 +1 @@ +登录日志相关业务 \ No newline at end of file diff --git a/kernel-s-system/system-business-login-log/pom.xml b/kernel-s-system/system-business-login-log/pom.xml new file mode 100644 index 000000000..8591dc99e --- /dev/null +++ b/kernel-s-system/system-business-login-log/pom.xml @@ -0,0 +1,59 @@ + + + 4.0.0 + + + cn.stylefeng.roses + kernel-s-system + 1.0.0 + ../pom.xml + + + system-business-login-log + + jar + + + + + + cn.stylefeng.roses + system-api + 1.0.0 + + + + + + cn.stylefeng.roses + scanner-api + 1.0.0 + + + + + + cn.stylefeng.roses + validator-api + 1.0.0 + + + + + + cn.stylefeng.roses + db-sdk-mp + 1.0.0 + + + + + org.springframework.boot + spring-boot-starter-web + + + + + diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/constants/LoginLogConstant.java b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/constants/LoginLogConstant.java new file mode 100644 index 000000000..4a191dcbf --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/constants/LoginLogConstant.java @@ -0,0 +1,20 @@ +package cn.stylefeng.roses.kernel.loginlog.modular.constants; + +public interface LoginLogConstant { + + String LOGIN_IN_LOGINNAME = "登录日志"; + + String LOGIN_OUT_LOGINNAME = "退出日志"; + + String OPERATION_SUCCESS = "成功"; + + String OPERATION_FAIL = "失败"; + + String LOGIN_IN_SUCCESS_MESSAGE = "系统登录成功!"; + + String LOGIN_IN_SUCCESS_FAIL = "系统登录失败!"; + + String LOGIN_OUT_SUCCESS_MESSAGE = "系统退出成功!"; + + String LOGIN_OUT_SUCCESS_FAIL = "系统退出失败!"; +} diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/controller/SysLoginLogController.java b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/controller/SysLoginLogController.java new file mode 100644 index 000000000..49a405d3c --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/controller/SysLoginLogController.java @@ -0,0 +1,64 @@ +package cn.stylefeng.roses.kernel.loginlog.modular.controller; + +import cn.stylefeng.roses.kernel.loginlog.modular.service.SysLoginLogService; +import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource; +import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource; +import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData; +import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData; +import cn.stylefeng.roses.kernel.system.pojo.loginlog.request.SysLoginLogRequest; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 登陆日志控制器 + * + * @author chenjinlong + * @date 2021/1/13 17:51 + */ +@RestController +@ApiResource(name = "登录日志") +public class SysLoginLogController { + + @Resource + private SysLoginLogService sysLoginLogService; + + + /** + * 清空登录日志 + * + * @author chenjinlong + * @date 2021/1/13 17:51 + */ + @GetResource(name = "清空登录日志", path = "/loginLog/deleteAll") + public ResponseData deleteAll() { + sysLoginLogService.deleteAll(); + return new SuccessResponseData(); + } + + + /** + * 查询登录日志详情 + * + * @author chenjinlong + * @date 2021/1/13 17:51 + */ + @GetResource(name = "查看详情登录日志", path = "/loginLog/detail") + public ResponseData detail(@Validated(SysLoginLogRequest.detail.class) SysLoginLogRequest sysLoginLogRequest) { + return new SuccessResponseData(sysLoginLogService.detail(sysLoginLogRequest)); + } + + /** + * 分页查询登录日志 + * + * @author chenjinlong + * @date 2021/1/13 17:51 + */ + @GetResource(name = "分页查询登录日志", path = "/loginLog/page") + public ResponseData page(SysLoginLogRequest sysLoginLogRequest) { + return new SuccessResponseData(sysLoginLogService.page(sysLoginLogRequest)); + } + + +} diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/entity/SysLoginLog.java b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/entity/SysLoginLog.java new file mode 100644 index 000000000..2f1a0d790 --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/entity/SysLoginLog.java @@ -0,0 +1,63 @@ +package cn.stylefeng.roses.kernel.loginlog.modular.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 登录日志表 + * + * @author chenjinlong + * @date 2021/1/13 11:05 + */ +@Data +@TableName("sys_login_log") +public class SysLoginLog { + + /** + * 主键id + */ + @TableId("llg_id") + private Long llgId; + + /** + * 日志名称 + */ + @TableField("llg_name") + private String llgName; + + /** + * 是否执行成功 + */ + @TableField("llg_succeed") + private String llgSucceed; + + /** + * 具体消息 + */ + @TableField("llg_message") + private String llgMessage; + + /** + * 登录ip + */ + @TableField("llg_ip_address") + private String llgIpAddress; + + /** + * 用户id + */ + @TableField(value = "user_id") + private Long userId; + + /** + * 创建时间 + */ + @TableField(value = "create_time", fill = FieldFill.INSERT) + private Date createTime; + +} diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/factory/SysLoginLogFactory.java b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/factory/SysLoginLogFactory.java new file mode 100644 index 000000000..0f60ad42c --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/factory/SysLoginLogFactory.java @@ -0,0 +1,6 @@ +package cn.stylefeng.roses.kernel.loginlog.modular.factory; + +public class SysLoginLogFactory { + + +} diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/mapper/SysLoginLogMapper.java b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/mapper/SysLoginLogMapper.java new file mode 100644 index 000000000..130d86c96 --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/mapper/SysLoginLogMapper.java @@ -0,0 +1,37 @@ +/* +Copyright [2020] [https://www.stylefeng.cn] + +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. + +Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Guns源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns-separation +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns-separation +6.若您的项目无法满足以上几点,可申请商业授权,获取Guns商业授权许可,请在官网购买授权,地址为 https://www.stylefeng.cn + */ +package cn.stylefeng.roses.kernel.loginlog.modular.mapper; + +import cn.stylefeng.roses.kernel.loginlog.modular.entity.SysLoginLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * 系统应用mapper接口 + * + * @author fengshuonan + * @date 2020/3/13 16:17 + */ +public interface SysLoginLogMapper extends BaseMapper { +} diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/mapper/mapping/SysLoginLogMapper.xml b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/mapper/mapping/SysLoginLogMapper.xml new file mode 100644 index 000000000..abdfc7861 --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/mapper/mapping/SysLoginLogMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/service/SysLoginLogService.java b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/service/SysLoginLogService.java new file mode 100644 index 000000000..32f1191fe --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/service/SysLoginLogService.java @@ -0,0 +1,71 @@ +/* +Copyright [2020] [https://www.stylefeng.cn] + +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. + +Guns采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + +1.请不要删除和修改根目录下的LICENSE文件。 +2.请不要删除和修改Guns源码头部的版权声明。 +3.请保留源码和相关描述文件的项目出处,作者声明等。 +4.分发源码时候,请注明软件出处 https://gitee.com/stylefeng/guns-separation +5.在修改包名,模块名称,项目代码等时,请注明软件出处 https://gitee.com/stylefeng/guns-separation +6.若您的项目无法满足以上几点,可申请商业授权,获取Guns商业授权许可,请在官网购买授权,地址为 https://www.stylefeng.cn + */ +package cn.stylefeng.roses.kernel.loginlog.modular.service; + +import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.loginlog.modular.entity.SysLoginLog; +import cn.stylefeng.roses.kernel.system.LoginLogServiceApi; +import cn.stylefeng.roses.kernel.system.pojo.loginlog.request.SysLoginLogRequest; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 登录日志service接口 + * + * @author chenjinlong + * @date 2021/1/13 10:56 + */ +public interface SysLoginLogService extends IService, LoginLogServiceApi { + + + /** + * 删除 + * + * @param sysLoginLogRequest 参数 + * @author chenjinlong + * @date 2021/1/13 10:55 + */ + void delete(SysLoginLogRequest sysLoginLogRequest); + + + /** + * 查看相信 + * + * @param sysLoginLogRequest 参数 + * @author chenjinlong + * @date 2021/1/13 10:56 + */ + SysLoginLog detail(SysLoginLogRequest sysLoginLogRequest); + + /** + * 分页查询 + * + * @param sysLoginLogRequest 参数 + * @author chenjinlong + * @date 2021/1/13 10:57 + */ + PageResult page(SysLoginLogRequest sysLoginLogRequest); + + +} diff --git a/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/service/impl/SysLoginLogServiceImpl.java b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/service/impl/SysLoginLogServiceImpl.java new file mode 100644 index 000000000..7365fd0c8 --- /dev/null +++ b/kernel-s-system/system-business-login-log/src/main/java/cn/stylefeng/roses/kernel/loginlog/modular/service/impl/SysLoginLogServiceImpl.java @@ -0,0 +1,133 @@ +package cn.stylefeng.roses.kernel.loginlog.modular.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.stylefeng.roses.kernel.db.api.factory.PageFactory; +import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; +import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; +import cn.stylefeng.roses.kernel.loginlog.modular.constants.LoginLogConstant; +import cn.stylefeng.roses.kernel.loginlog.modular.entity.SysLoginLog; +import cn.stylefeng.roses.kernel.loginlog.modular.mapper.SysLoginLogMapper; +import cn.stylefeng.roses.kernel.loginlog.modular.service.SysLoginLogService; +import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException; +import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil; +import cn.stylefeng.roses.kernel.system.exception.enums.AppExceptionEnum; +import cn.stylefeng.roses.kernel.system.pojo.loginlog.request.SysLoginLogRequest; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 系统应用service接口实现类 + * + * @author fengshuonan + * @date 2020/3/13 16:15 + */ +@Service +public class SysLoginLogServiceImpl extends ServiceImpl implements SysLoginLogService { + + @Override + public void add(SysLoginLogRequest sysLoginLogRequest) { + SysLoginLog sysLoginLog = new SysLoginLog(); + BeanUtil.copyProperties(sysLoginLogRequest, sysLoginLog); + this.save(sysLoginLog); + } + + @Override + public void loginSuccess(Long userId) { + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setLlgName(LoginLogConstant.LOGIN_IN_LOGINNAME); + sysLoginLog.setUserId(userId); + sysLoginLog.setLlgIpAddress(HttpServletUtil.getRequestClientIp(HttpServletUtil.getRequest())); + sysLoginLog.setLlgSucceed(LoginLogConstant.OPERATION_SUCCESS); + sysLoginLog.setLlgMessage(LoginLogConstant.LOGIN_IN_SUCCESS_MESSAGE); + this.save(sysLoginLog); + } + + @Override + public void loginFail(Long userId, String llgMessage) { + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setLlgName(LoginLogConstant.LOGIN_IN_LOGINNAME); + sysLoginLog.setUserId(userId); + sysLoginLog.setLlgIpAddress(HttpServletUtil.getRequestClientIp(HttpServletUtil.getRequest())); + sysLoginLog.setLlgSucceed(LoginLogConstant.OPERATION_FAIL); + sysLoginLog.setLlgMessage(llgMessage); + this.save(sysLoginLog); + } + + @Override + public void loginOutSuccess(Long userId) { + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setLlgName(LoginLogConstant.LOGIN_OUT_LOGINNAME); + sysLoginLog.setUserId(userId); + sysLoginLog.setLlgIpAddress(HttpServletUtil.getRequestClientIp(HttpServletUtil.getRequest())); + sysLoginLog.setLlgSucceed(LoginLogConstant.OPERATION_SUCCESS); + sysLoginLog.setLlgMessage(LoginLogConstant.LOGIN_OUT_SUCCESS_MESSAGE); + this.save(sysLoginLog); + } + + @Override + public void loginOutFail(Long userId) { + SysLoginLog sysLoginLog = new SysLoginLog(); + sysLoginLog.setLlgName(LoginLogConstant.LOGIN_OUT_LOGINNAME); + sysLoginLog.setUserId(userId); + sysLoginLog.setLlgIpAddress(HttpServletUtil.getRequestClientIp(HttpServletUtil.getRequest())); + sysLoginLog.setLlgSucceed(LoginLogConstant.OPERATION_FAIL); + sysLoginLog.setLlgMessage(LoginLogConstant.LOGIN_OUT_SUCCESS_FAIL); + this.save(sysLoginLog); + } + + @Override + public void delete(SysLoginLogRequest sysLoginLogRequest) { + + } + + @Override + public void deleteAll() { + this.remove(null); + } + + @Override + public SysLoginLog detail(SysLoginLogRequest sysLoginLogRequest) { + return this.querySysLoginLog(sysLoginLogRequest); + } + + @Override + public PageResult page(SysLoginLogRequest sysLoginLogRequest) { + LambdaQueryWrapper wrapper = createWrapper(sysLoginLogRequest); + wrapper.orderByDesc(SysLoginLog::getCreateTime); + Page page = this.page(PageFactory.defaultPage(), wrapper); + return PageResultFactory.createPageResult(page); + } + + /** + * 获取详细信息 + * + * @author chenjinlong + * @date 2021/1/13 10:50 + */ + private SysLoginLog querySysLoginLog(SysLoginLogRequest sysLoginLogRequest) { + SysLoginLog sysLoginLog = this.getById(sysLoginLogRequest.getLlgId()); + if (ObjectUtil.isNull(sysLoginLog)) { + throw new ServiceException(AppExceptionEnum.APP_NOT_EXIST); + } + return sysLoginLog; + } + + /** + * 构建wrapper + * + * @author chenjinlong + * @date 2021/1/13 10:50 + */ + private LambdaQueryWrapper createWrapper(SysLoginLogRequest sysLoginLogRequest) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StrUtil.isNotBlank(sysLoginLogRequest.getLlgName()), SysLoginLog::getLlgName, sysLoginLogRequest.getLlgName()); + queryWrapper.ge(StrUtil.isNotBlank(sysLoginLogRequest.getBeginTime()), SysLoginLog::getCreateTime, sysLoginLogRequest.getBeginTime()); + queryWrapper.le(StrUtil.isNotBlank(sysLoginLogRequest.getEndTime()), SysLoginLog::getCreateTime, sysLoginLogRequest.getEndTime()); + return queryWrapper; + } + +} diff --git a/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/notice/modular/service/impl/SysNoticeServiceImpl.java b/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/notice/modular/service/impl/SysNoticeServiceImpl.java index 5c130d442..ec5298312 100644 --- a/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/notice/modular/service/impl/SysNoticeServiceImpl.java +++ b/kernel-s-system/system-business-notice/src/main/java/cn/stylefeng/roses/kernel/notice/modular/service/impl/SysNoticeServiceImpl.java @@ -19,9 +19,9 @@ import cn.stylefeng.roses.kernel.system.pojo.notice.SysNoticeRequest; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; /** @@ -36,15 +36,14 @@ public class SysNoticeServiceImpl extends ServiceImpl1.0.0 + + + cn.stylefeng.roses + system-business-login-log + 1.0.0 + + +