From bd8bd728ef3f0c8339098be8f72f6bd17de0ba36 Mon Sep 17 00:00:00 2001 From: wanggeng888 <450292408@qq.com> Date: Sun, 28 Feb 2021 12:12:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../position/IPositionBaseService.java | 7 + .../interfaces/role/IRoleBaseService.java | 2 +- .../interfaces/user/IUserBaseService.java | 39 ++++ .../config/properties/SystemProperties.java | 4 +- .../controller/api/count/CountController.java | 117 +++++++++++ .../controller/api/log/LogController.java | 113 ++++++++++ .../base/dao/{ => config}/IConfigDao.java | 4 +- .../login/base/dao/log/ILoginLogDao.java | 55 +++++ .../login/base/manager/ConfigManager.java | 4 +- .../pojo/dtos/{ => config}/ConfigDTO.java | 2 +- .../login/base/pojo/dtos/log/LoginLogDTO.java | 81 +++++++ .../config/impl/ConfigServiceImpl.java | 4 +- .../base/service/count/ICountService.java | 93 +++++++++ .../service/count/impl/CountServiceImpl.java | 197 ++++++++++++++++++ .../base/service/log/ILoginLogService.java | 45 ++++ .../service/log/impl/LoginLogServiceImpl.java | 53 +++++ .../base/service/user/UserLoginService.java | 9 +- .../login/base/startup/LoginBaseStartUp.java | 9 +- .../mapper/{ => config}/config-mapper.xml | 4 +- .../mybatis/mapper/log/login-log-mapper.xml | 92 ++++++++ .../dao/IDepartmentAdjustmentDao.java | 12 ++ .../dao/IDepartmentUserAdjustmentDao.java | 12 ++ .../pojo/dtos/DepartmentAdjustmentDTO.java | 93 +++++++++ .../dtos/DepartmentUserAdjustmentDTO.java | 89 ++++++++ .../service/IDepartmentAdjustmentService.java | 11 + .../IDepartmentUserAdjustmentService.java | 16 +- .../impl/DepartmentAdjustmentServiceImpl.java | 13 ++ .../DepartmentUserAdjustmentServiceImpl.java | 14 ++ .../mapper/department-adjustment-mapper.xml | 43 ++++ .../department-user-adjustment-mapper.xml | 46 ++++ .../service/impl/PositionServiceImpl.java | 6 + .../role/service/impl/RoleServiceImpl.java | 2 +- .../service/user/enums/UserStateEnum.java | 27 +++ .../service/user/enums/UserTypeEnum.java | 27 +++ .../service/user/service/IUserService.java | 8 + .../user/service/impl/UserServiceImpl.java | 41 ++++ 36 files changed, 1375 insertions(+), 19 deletions(-) create mode 100644 login-base/src/main/java/ink/wgink/login/base/controller/api/count/CountController.java create mode 100644 login-base/src/main/java/ink/wgink/login/base/controller/api/log/LogController.java rename login-base/src/main/java/ink/wgink/login/base/dao/{ => config}/IConfigDao.java (93%) create mode 100644 login-base/src/main/java/ink/wgink/login/base/dao/log/ILoginLogDao.java rename login-base/src/main/java/ink/wgink/login/base/pojo/dtos/{ => config}/ConfigDTO.java (96%) create mode 100644 login-base/src/main/java/ink/wgink/login/base/pojo/dtos/log/LoginLogDTO.java create mode 100644 login-base/src/main/java/ink/wgink/login/base/service/count/ICountService.java create mode 100644 login-base/src/main/java/ink/wgink/login/base/service/count/impl/CountServiceImpl.java create mode 100644 login-base/src/main/java/ink/wgink/login/base/service/log/ILoginLogService.java create mode 100644 login-base/src/main/java/ink/wgink/login/base/service/log/impl/LoginLogServiceImpl.java rename login-base/src/main/resources/mybatis/mapper/{ => config}/config-mapper.xml (94%) create mode 100644 login-base/src/main/resources/mybatis/mapper/log/login-log-mapper.xml create mode 100644 service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentAdjustmentDTO.java create mode 100644 service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentUserAdjustmentDTO.java create mode 100644 service-user/src/main/java/ink/wgink/service/user/enums/UserStateEnum.java create mode 100644 service-user/src/main/java/ink/wgink/service/user/enums/UserTypeEnum.java diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/position/IPositionBaseService.java b/basic-interface/src/main/java/ink/wgink/interfaces/position/IPositionBaseService.java index 67c50f51..bcd22b75 100644 --- a/basic-interface/src/main/java/ink/wgink/interfaces/position/IPositionBaseService.java +++ b/basic-interface/src/main/java/ink/wgink/interfaces/position/IPositionBaseService.java @@ -101,4 +101,11 @@ public interface IPositionBaseService { */ List listPO(List positionIds); + /** + * 统计 + * + * @param params + * @return + */ + Integer count(Map params); } diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/role/IRoleBaseService.java b/basic-interface/src/main/java/ink/wgink/interfaces/role/IRoleBaseService.java index abe80c95..3c25bfdd 100644 --- a/basic-interface/src/main/java/ink/wgink/interfaces/role/IRoleBaseService.java +++ b/basic-interface/src/main/java/ink/wgink/interfaces/role/IRoleBaseService.java @@ -91,6 +91,6 @@ public interface IRoleBaseService { * @param params * @return */ - Integer countRole(Map params); + Integer count(Map params); } diff --git a/basic-interface/src/main/java/ink/wgink/interfaces/user/IUserBaseService.java b/basic-interface/src/main/java/ink/wgink/interfaces/user/IUserBaseService.java index 02e169d4..c3817234 100644 --- a/basic-interface/src/main/java/ink/wgink/interfaces/user/IUserBaseService.java +++ b/basic-interface/src/main/java/ink/wgink/interfaces/user/IUserBaseService.java @@ -85,4 +85,43 @@ public interface IUserBaseService { * @return */ SuccessResultList> listPageByExcludeIds(List excludeUserIds, ListPage page); + + /** + * 用户统计 + * + * @param startDate 开始日期,yyyy-MM-dd + * @param endDate 结束日期,yyyy-MM-dd + * @return + */ + int countDateRange(String startDate, String endDate); + + /** + * 用户统计 + * + * @return + */ + int count(); + + /** + * 用户统计 + * + * @param userType,0:系统用户,1:普通用户 + * @return + */ + int countType(int userType); + + /** + * 用户统计,错误类型 + * + * @return + */ + int countErrorType(); + + /** + * 用户统计 + * + * @param userState 0:正常用户,1:冻结 + * @return + */ + Integer countState(int userState); } diff --git a/login-base/src/main/java/ink/wgink/login/base/config/properties/SystemProperties.java b/login-base/src/main/java/ink/wgink/login/base/config/properties/SystemProperties.java index 1d45f60f..abeb3502 100644 --- a/login-base/src/main/java/ink/wgink/login/base/config/properties/SystemProperties.java +++ b/login-base/src/main/java/ink/wgink/login/base/config/properties/SystemProperties.java @@ -50,7 +50,7 @@ public class SystemProperties { } public String getSystemTitle() { - return systemTitle == null ? "" : systemTitle.trim(); + return systemTitle == null ? "统一用户管理系统" : systemTitle.trim(); } public void setSystemTitle(String systemTitle) { @@ -58,7 +58,7 @@ public class SystemProperties { } public String getSystemSubTitle() { - return systemSubTitle == null ? "" : systemSubTitle.trim(); + return systemSubTitle == null ? "山西腾狮科技" : systemSubTitle.trim(); } public void setSystemSubTitle(String systemSubTitle) { diff --git a/login-base/src/main/java/ink/wgink/login/base/controller/api/count/CountController.java b/login-base/src/main/java/ink/wgink/login/base/controller/api/count/CountController.java new file mode 100644 index 00000000..aadc1fe9 --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/controller/api/count/CountController.java @@ -0,0 +1,117 @@ +package ink.wgink.login.base.controller.api.count; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.exceptions.ParamsException; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.login.base.service.count.ICountService; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResultData; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: CountController + * @Description: 统计 + * @Author: wanggeng + * @Date: 2021/2/28 9:35 上午 + * @Version: 1.0 + */ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "统计") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/count") +public class CountController extends DefaultBaseController { + + @Autowired + private ICountService countService; + + @ApiOperation(value = "统计新增用户数量统计(按周统计)", notes = "统计新增用户数量统计(按周统计)接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-new-user-by-week") + public SuccessResultData> countNewUserByWeek() { + Map params = getParams(); + return new SuccessResultData<>(countService.countNewUserByWeek(params)); + } + + @ApiOperation(value = "统计用户数量", notes = "统计用户数量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-user") + public SuccessResultData> countUser() { + Map params = getParams(); + return new SuccessResultData<>(countService.countUser(params)); + } + + @ApiOperation(value = "Oauth客户端统计", notes = "Oauth客户端统计接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-oauth-client") + public SuccessResultData> countOauthClient() { + Map params = getParams(); + return new SuccessResultData<>(countService.countOauthClient(params)); + } + + @ApiOperation(value = "系统登录量统计", notes = "系统登录量统计接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-login") + public SuccessResultData> countLogin() { + Map params = getParams(); + return new SuccessResultData<>(countService.countLogin(params)); + } + + @ApiOperation(value = "系统登录量统计(按展示天数)", notes = "系统登录量统计(按展示天数)接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "days", value = "展示天数", paramType = "path"), + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-login-for-days/{days}") + public SuccessResultData> countLoginForDays(@PathVariable("days") Integer days) { + if (days < 1) { + throw new ParamsException("天数格式错误"); + } + return new SuccessResultData<>(countService.countLoginForDays(days)); + } + + @ApiOperation(value = "统计机构数量", notes = "统计机构数量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-department") + public SuccessResultData countDepartment() { + return new SuccessResultData<>(countService.countDepartment()); + } + + @ApiOperation(value = "统计角色数量", notes = "统计角色数量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-role") + public SuccessResultData countRole() { + return new SuccessResultData<>(countService.countRole()); + } + + @ApiOperation(value = "统计职位数量", notes = "统计职位数量接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-position") + public SuccessResultData countPosition() { + return new SuccessResultData<>(countService.countPosition()); + } + + @ApiOperation(value = "统计用户类型比例", notes = "统计用户类型比例接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-user-type-proportion") + public SuccessResultData>> countUserTypeProportion() { + return new SuccessResultData<>(countService.countUserTypeProportion()); + } + + @ApiOperation(value = "统计用户状态比例", notes = "统计用户状态比例接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("count-user-state-proportion") + public SuccessResultData>> countUserStateProportion() { + return new SuccessResultData<>(countService.countUserStateProportion()); + } + +} diff --git a/login-base/src/main/java/ink/wgink/login/base/controller/api/log/LogController.java b/login-base/src/main/java/ink/wgink/login/base/controller/api/log/LogController.java new file mode 100644 index 00000000..ce66960e --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/controller/api/log/LogController.java @@ -0,0 +1,113 @@ +package ink.wgink.login.base.controller.api.log; + +import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.interfaces.consts.ISystemConstant; +import ink.wgink.login.base.pojo.dtos.log.LoginLogDTO; +import ink.wgink.login.base.service.log.ILoginLogService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.ErrorResult; +import ink.wgink.pojo.result.SuccessResultList; +import ink.wgink.service.department.pojo.dtos.DepartmentAdjustmentDTO; +import ink.wgink.service.department.pojo.dtos.DepartmentUserAdjustmentDTO; +import ink.wgink.service.department.service.IDepartmentAdjustmentService; +import ink.wgink.service.department.service.IDepartmentUserAdjustmentService; +import ink.wgink.service.user.pojo.dtos.UserLogDTO; +import ink.wgink.service.user.service.IUserAdjustmentService; +import io.swagger.annotations.*; +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.RestController; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: LoginLogController + * @Description: 登录日志 + * @Author: wanggeng + * @Date: 2021/2/28 11:11 上午 + * @Version: 1.0 + */ +@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "日志") +@RestController +@RequestMapping(ISystemConstant.API_PREFIX + "/log") +public class LogController extends DefaultBaseController { + + @Autowired + private IUserAdjustmentService userAdjustmentService; + @Autowired + private IDepartmentAdjustmentService departmentAdjustmentService; + @Autowired + private IDepartmentUserAdjustmentService departmentUserAdjustmentService; + @Autowired + private ILoginLogService loginLoggerService; + + @ApiOperation(value = "用户调整分页列表", notes = "用户调整分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage/user-adjustment") + public SuccessResultList> listPageUserAdjustment(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return userAdjustmentService.listPage(page); + } + + @ApiOperation(value = "用户部门调整分页列表", notes = "用户部门调整分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage/department-user-adjustment") + public SuccessResultList> listPageDepartmentUserAdjustment(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return departmentUserAdjustmentService.listPage(page); + } + + @ApiOperation(value = "部门调整分页列表", notes = "部门调整分页列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage/department-adjustment") + public SuccessResultList> listPageDepartmentAdjustment(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return departmentAdjustmentService.listPage(page); + } + + @ApiOperation(value = "登录日志分页列表", notes = "登录日志列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"), + @ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"), + @ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"), + @ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("listpage/login-log") + public SuccessResultList> listPageLoginLogger(ListPage page) { + Map params = requestParams(); + page.setParams(params); + return loginLoggerService.listPage(page); + } + +} diff --git a/login-base/src/main/java/ink/wgink/login/base/dao/IConfigDao.java b/login-base/src/main/java/ink/wgink/login/base/dao/config/IConfigDao.java similarity index 93% rename from login-base/src/main/java/ink/wgink/login/base/dao/IConfigDao.java rename to login-base/src/main/java/ink/wgink/login/base/dao/config/IConfigDao.java index 67993919..1e3cec97 100644 --- a/login-base/src/main/java/ink/wgink/login/base/dao/IConfigDao.java +++ b/login-base/src/main/java/ink/wgink/login/base/dao/config/IConfigDao.java @@ -1,9 +1,9 @@ -package ink.wgink.login.base.dao; +package ink.wgink.login.base.dao.config; import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; -import ink.wgink.login.base.pojo.dtos.ConfigDTO; +import ink.wgink.login.base.pojo.dtos.config.ConfigDTO; import org.springframework.stereotype.Repository; import java.util.List; diff --git a/login-base/src/main/java/ink/wgink/login/base/dao/log/ILoginLogDao.java b/login-base/src/main/java/ink/wgink/login/base/dao/log/ILoginLogDao.java new file mode 100644 index 00000000..9740693d --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/dao/log/ILoginLogDao.java @@ -0,0 +1,55 @@ +package ink.wgink.login.base.dao.log; + +import ink.wgink.exceptions.SaveException; +import ink.wgink.exceptions.SearchException; +import ink.wgink.exceptions.UpdateException; +import ink.wgink.login.base.pojo.dtos.log.LoginLogDTO; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: ILoginLogDao + * @Description: 登录日志 + * @Author: wanggeng + * @Date: 2021/2/28 10:50 上午 + * @Version: 1.0 + */ +public interface ILoginLogDao { + + /** + * 建表 + * + * @throws UpdateException + */ + void createTable() throws UpdateException; + + /** + * 保存登录日志 + * + * @param params + * @throws SaveException + */ + void save(Map params) throws SaveException; + + /** + * 登录日志统计 + * + * @param params + * @return + * @throws SearchException + */ + Integer count(Map params) throws SearchException; + + /** + * 登录日志列表 + * + * @param params + * @return + * @throws SearchException + */ + List list(Map params) throws SearchException; +} diff --git a/login-base/src/main/java/ink/wgink/login/base/manager/ConfigManager.java b/login-base/src/main/java/ink/wgink/login/base/manager/ConfigManager.java index 545b72dd..ee61ab5e 100644 --- a/login-base/src/main/java/ink/wgink/login/base/manager/ConfigManager.java +++ b/login-base/src/main/java/ink/wgink/login/base/manager/ConfigManager.java @@ -2,8 +2,8 @@ package ink.wgink.login.base.manager; import ink.wgink.exceptions.SearchException; import ink.wgink.interfaces.manager.ISystemConfigManager; -import ink.wgink.login.base.dao.IConfigDao; -import ink.wgink.login.base.pojo.dtos.ConfigDTO; +import ink.wgink.login.base.dao.config.IConfigDao; +import ink.wgink.login.base.pojo.dtos.config.ConfigDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/login-base/src/main/java/ink/wgink/login/base/pojo/dtos/ConfigDTO.java b/login-base/src/main/java/ink/wgink/login/base/pojo/dtos/config/ConfigDTO.java similarity index 96% rename from login-base/src/main/java/ink/wgink/login/base/pojo/dtos/ConfigDTO.java rename to login-base/src/main/java/ink/wgink/login/base/pojo/dtos/config/ConfigDTO.java index e093f1b2..b064b759 100644 --- a/login-base/src/main/java/ink/wgink/login/base/pojo/dtos/ConfigDTO.java +++ b/login-base/src/main/java/ink/wgink/login/base/pojo/dtos/config/ConfigDTO.java @@ -1,4 +1,4 @@ -package ink.wgink.login.base.pojo.dtos; +package ink.wgink.login.base.pojo.dtos.config; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/login-base/src/main/java/ink/wgink/login/base/pojo/dtos/log/LoginLogDTO.java b/login-base/src/main/java/ink/wgink/login/base/pojo/dtos/log/LoginLogDTO.java new file mode 100644 index 00000000..84284dfc --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/pojo/dtos/log/LoginLogDTO.java @@ -0,0 +1,81 @@ +package ink.wgink.login.base.pojo.dtos.log; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: LoginLoggerDTO + * @Description: 登录日志 + * @Author: WangGeng + * @Date: 2020/7/21 18:43 + * @Version: 1.0 + **/ +@ApiModel +public class LoginLogDTO implements Serializable { + + private static final long serialVersionUID = 7035763517567758961L; + @ApiModelProperty(name = "loginAddress", value = "登录地址") + private String loginAddress; + @ApiModelProperty(name = "creatorName", value = "登录用户") + private String creatorName; + @ApiModelProperty(name = "gmtCreate", value = "登录时间") + private String gmtCreate; + @ApiModelProperty(name = "loginType", value = "登陆类型") + private String loginType; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getLoginAddress() { + return loginAddress == null ? "" : loginAddress.trim(); + } + + public void setLoginAddress(String loginAddress) { + this.loginAddress = loginAddress; + } + + public String getCreatorName() { + return creatorName == null ? "" : creatorName.trim(); + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public String getGmtCreate() { + return gmtCreate == null ? "" : gmtCreate.trim(); + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public String getLoginType() { + return loginType == null ? "" : loginType.trim(); + } + + public void setLoginType(String loginType) { + this.loginType = loginType; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"loginAddress\":\"") + .append(loginAddress).append('\"'); + sb.append(",\"creatorName\":\"") + .append(creatorName).append('\"'); + sb.append(",\"gmtCreate\":\"") + .append(gmtCreate).append('\"'); + sb.append(",\"loginType\":\"") + .append(loginType).append('\"'); + sb.append('}'); + return sb.toString(); + } +} diff --git a/login-base/src/main/java/ink/wgink/login/base/service/config/impl/ConfigServiceImpl.java b/login-base/src/main/java/ink/wgink/login/base/service/config/impl/ConfigServiceImpl.java index 79a2a218..70ccd840 100644 --- a/login-base/src/main/java/ink/wgink/login/base/service/config/impl/ConfigServiceImpl.java +++ b/login-base/src/main/java/ink/wgink/login/base/service/config/impl/ConfigServiceImpl.java @@ -2,9 +2,9 @@ package ink.wgink.login.base.service.config.impl; import ink.wgink.common.base.DefaultBaseService; -import ink.wgink.login.base.dao.IConfigDao; +import ink.wgink.login.base.dao.config.IConfigDao; import ink.wgink.login.base.manager.ConfigManager; -import ink.wgink.login.base.pojo.dtos.ConfigDTO; +import ink.wgink.login.base.pojo.dtos.config.ConfigDTO; import ink.wgink.login.base.pojo.vos.ConfigVO; import ink.wgink.login.base.service.config.IConfigService; import ink.wgink.util.map.HashMapUtil; diff --git a/login-base/src/main/java/ink/wgink/login/base/service/count/ICountService.java b/login-base/src/main/java/ink/wgink/login/base/service/count/ICountService.java new file mode 100644 index 00000000..c5969de1 --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/service/count/ICountService.java @@ -0,0 +1,93 @@ +package ink.wgink.login.base.service.count; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: ICountService + * @Description: 统计 + * @Author: wanggeng + * @Date: 2021/2/28 9:36 上午 + * @Version: 1.0 + */ +public interface ICountService { + + String DAY_FORMATTER = "yyyy-MM-dd"; + + /** + * 统计新增用户数量统计(按周统计) + * + * @param params + * @return + */ + Map countNewUserByWeek(Map params); + + /** + * 统计用户数量 + * + * @param params + * @return + */ + Map countUser(Map params); + + /** + * @param params + * @return + */ + Map countOauthClient(Map params); + + /** + * 系统登录量统计 + * + * @param params + * @return + */ + Map countLogin(Map params); + + /** + * 系统登录量统计(按展示天数) + * + * @param days + * @return + */ + Map countLoginForDays(Integer days); + + /** + * 统计机构数量 + * + * @return + */ + Integer countDepartment(); + + /** + * 统计角色数量 + * + * @return + */ + Integer countRole(); + + /** + * 统计职位数量 + * + * @return + */ + Integer countPosition(); + + /** + * 统计用户类型比例 + * + * @return + */ + List> countUserTypeProportion(); + + /** + * 统计用户状态比例 + * + * @return + */ + List> countUserStateProportion(); + +} diff --git a/login-base/src/main/java/ink/wgink/login/base/service/count/impl/CountServiceImpl.java b/login-base/src/main/java/ink/wgink/login/base/service/count/impl/CountServiceImpl.java new file mode 100644 index 00000000..b0a8e24f --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/service/count/impl/CountServiceImpl.java @@ -0,0 +1,197 @@ +package ink.wgink.login.base.service.count.impl; + +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.interfaces.position.IPositionBaseService; +import ink.wgink.interfaces.role.IRoleBaseService; +import ink.wgink.login.base.service.count.ICountService; +import ink.wgink.login.base.service.log.ILoginLogService; +import ink.wgink.service.department.service.IDepartmentService; +import ink.wgink.service.user.enums.UserStateEnum; +import ink.wgink.service.user.enums.UserTypeEnum; +import ink.wgink.service.user.service.IUserService; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: CountServiceImpl + * @Description: 统计 + * @Author: wanggeng + * @Date: 2021/2/28 9:37 上午 + * @Version: 1.0 + */ +@Service +public class CountServiceImpl extends DefaultBaseService implements ICountService { + + @Autowired + private IUserService userService; + @Autowired + private IDepartmentService departmentService; + @Autowired + private ILoginLogService loginLogService; + @Autowired(required = false) + private IRoleBaseService roleBaseService; + @Autowired(required = false) + private IPositionBaseService positionBaseService; + + @Override + public Map countNewUserByWeek(Map params) { + DateTime now = DateTime.now(); + DateTimeFormatter dayDateTimeFormatter = DateTimeFormat.forPattern(DAY_FORMATTER); + int weekNewUserCount = userService.countDateRange(now.dayOfWeek().withMinimumValue().toString(dayDateTimeFormatter), now.dayOfWeek().withMaximumValue().toString(dayDateTimeFormatter)); + int totalUserCount = userService.count(); + + Map result = getHashMap(4); + result.put("count", weekNewUserCount); + result.put("percentage", new BigDecimal(getPercentage(weekNewUserCount, totalUserCount)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); + return result; + } + + @Override + public Map countUser(Map params) { + DateTime now = DateTime.now(); + DateTimeFormatter dayDateTimeFormatter = DateTimeFormat.forPattern(DAY_FORMATTER); + int monthUserCount = userService.countDateRange(now.dayOfMonth().withMinimumValue().toString(dayDateTimeFormatter), now.dayOfMonth().withMaximumValue().toString(dayDateTimeFormatter)); + int totalUserCount = userService.count(); + + Map result = getHashMap(4); + result.put("count", totalUserCount); + result.put("newCount", monthUserCount); + return result; + } + + @Override + public Map countOauthClient(Map params) { + Map result = getHashMap(4); + return null; + } + + @Override + public Map countLogin(Map params) { + DateTime now = DateTime.now(); + DateTimeFormatter dayDateTimeFormatter = DateTimeFormat.forPattern(DAY_FORMATTER); + int loginLoggerCount = loginLogService.countDay(now.toString(dayDateTimeFormatter)); + int yesterdayLoggerCount = loginLogService.countDay(now.minusDays(1).toString(dayDateTimeFormatter)); + + Map result = getHashMap(4); + result.put("count", loginLoggerCount); + result.put("percentage", new BigDecimal(getPercentage((loginLoggerCount - yesterdayLoggerCount), yesterdayLoggerCount)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); + return result; + } + + @Override + public Map countLoginForDays(Integer days) { + DateTime now = DateTime.now(); + DateTimeFormatter dayDateTimeFormatter = DateTimeFormat.forPattern(DAY_FORMATTER); + String[] dateArray = new String[days]; + Integer[] loginCountArray = new Integer[days]; + for (int i = days - 1; i >= 0; i--) { + String currentDay = now.minusDays(i).toString(dayDateTimeFormatter); + int index = days - (i + 1); + dateArray[index] = currentDay; + loginCountArray[index] = loginLogService.countDay(currentDay); + } + Map result = new HashMap<>(2); + result.put("dateArray", dateArray); + result.put("loginCountArray", loginCountArray); + return result; + } + + @Override + public Integer countDepartment() { + Map params = getHashMap(0); + return departmentService.count(params); + } + + @Override + public Integer countRole() { + Map params = getHashMap(0); + if (roleBaseService != null) { + return roleBaseService.count(params); + } + return 0; + } + + @Override + public Integer countPosition() { + Map params = getHashMap(0); + if (positionBaseService != null) { + return positionBaseService.count(params); + } + return 0; + } + + @Override + public List> countUserTypeProportion() { + Integer systemUserCount = userService.countType(UserTypeEnum.SYSTEM.getValue()); + Integer normalUserCount = userService.countType(UserTypeEnum.NORMAL.getValue()); + Integer errorLoginTypeCount = userService.countErrorType(); + + Map systemUserCountResult = getHashMap(6); + systemUserCountResult.put("name", "系统用户"); + systemUserCountResult.put("value", systemUserCount); + systemUserCountResult.put("color", "#009688"); + + Map normalUserCountResult = getHashMap(6); + normalUserCountResult.put("name", "普通用户"); + normalUserCountResult.put("value", normalUserCount); + normalUserCountResult.put("color", "#FFB800"); + + Map errorLoginTypeCountResult = getHashMap(6); + errorLoginTypeCountResult.put("name", "类型错误"); + errorLoginTypeCountResult.put("value", errorLoginTypeCount); + errorLoginTypeCountResult.put("color", "#FF5722"); + + List> result = new ArrayList<>(); + result.add(systemUserCountResult); + result.add(normalUserCountResult); + result.add(errorLoginTypeCountResult); + return result; + } + + @Override + public List> countUserStateProportion() { + Integer normalUserCount = userService.countState(UserStateEnum.NORMAL.getValue()); + Integer lockingUserCount = userService.countState(UserStateEnum.LOCK.getValue()); + + Map normalUserCountResult = getHashMap(3); + normalUserCountResult.put("name", "正常用户"); + normalUserCountResult.put("value", normalUserCount); + normalUserCountResult.put("color", "#1E9FFF"); + + Map lockingUserCountResult = getHashMap(3); + lockingUserCountResult.put("name", "锁定用户"); + lockingUserCountResult.put("value", lockingUserCount); + lockingUserCountResult.put("color", "#009688"); + + List> result = new ArrayList<>(); + result.add(normalUserCountResult); + result.add(lockingUserCountResult); + return result; + } + + /** + * 计算占比 + * + * @param count + * @param totalCount + * @return + */ + private double getPercentage(int count, int totalCount) { + if (totalCount == 0) { + return 100D; + } + return (count * 1.0) / totalCount * 100; + } +} diff --git a/login-base/src/main/java/ink/wgink/login/base/service/log/ILoginLogService.java b/login-base/src/main/java/ink/wgink/login/base/service/log/ILoginLogService.java new file mode 100644 index 00000000..bb23c4dd --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/service/log/ILoginLogService.java @@ -0,0 +1,45 @@ +package ink.wgink.login.base.service.log; + +import ink.wgink.login.base.pojo.dtos.log.LoginLogDTO; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: ILoginLogService + * @Description: 登录日志 + * @Author: wanggeng + * @Date: 2021/2/28 10:38 上午 + * @Version: 1.0 + */ +public interface ILoginLogService { + + /** + * 添加 + * + * @param params + */ + void save(Map params); + + /** + * 统计 + * + * @param day + * @return + */ + Integer countDay(String day); + + /** + * 登录日志分页列表 + * + * @param page + * @return + */ + SuccessResultList> listPage(ListPage page); + +} diff --git a/login-base/src/main/java/ink/wgink/login/base/service/log/impl/LoginLogServiceImpl.java b/login-base/src/main/java/ink/wgink/login/base/service/log/impl/LoginLogServiceImpl.java new file mode 100644 index 00000000..144de92f --- /dev/null +++ b/login-base/src/main/java/ink/wgink/login/base/service/log/impl/LoginLogServiceImpl.java @@ -0,0 +1,53 @@ +package ink.wgink.login.base.service.log.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.login.base.dao.log.ILoginLogDao; +import ink.wgink.login.base.pojo.dtos.log.LoginLogDTO; +import ink.wgink.login.base.service.log.ILoginLogService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: LoginLogServiceImpl + * @Description: 登录日志 + * @Author: wanggeng + * @Date: 2021/2/28 10:39 上午 + * @Version: 1.0 + */ +@Service +public class LoginLogServiceImpl extends DefaultBaseService implements ILoginLogService { + + @Autowired + private ILoginLogDao loginLogDao; + + @Override + public void save(Map params) { + loginLogDao.save(params); + } + + @Override + public Integer countDay(String day) { + Map params = getHashMap(2); + params.put("day", day); + Integer count = loginLogDao.count(params); + return count == null ? 0 : count; + } + + @Override + public SuccessResultList> listPage(ListPage page) { + PageHelper.startPage(page.getPage(), page.getRows()); + List loginLoggerDTOs = loginLogDao.list(page.getParams()); + PageInfo pageInfo = new PageInfo<>(loginLoggerDTOs); + return new SuccessResultList<>(loginLoggerDTOs, pageInfo.getPageNum(), pageInfo.getTotal()); + } +} diff --git a/login-base/src/main/java/ink/wgink/login/base/service/user/UserLoginService.java b/login-base/src/main/java/ink/wgink/login/base/service/user/UserLoginService.java index eda735cd..9079f9dc 100644 --- a/login-base/src/main/java/ink/wgink/login/base/service/user/UserLoginService.java +++ b/login-base/src/main/java/ink/wgink/login/base/service/user/UserLoginService.java @@ -4,6 +4,7 @@ import ink.wgink.common.enums.RoleDataRightEnum; import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.UpdateException; import ink.wgink.interfaces.role.IRoleDataRightBaseService; +import ink.wgink.login.base.service.log.ILoginLogService; import ink.wgink.pojo.bos.LoginUser; import ink.wgink.pojo.pos.RolePO; import ink.wgink.service.department.service.IDepartmentService; @@ -44,6 +45,8 @@ public class UserLoginService { private IDepartmentService departmentService; @Autowired private IDepartmentUserService departmentUserService; + @Autowired + private ILoginLogService loginLogService; @Autowired(required = false) private IRoleDataRightBaseService roleDataRightBaseService; @@ -103,14 +106,14 @@ public class UserLoginService { * @throws SaveException */ private void saveLoginLogger(String userId, String userName, String loginType, String address, String currentTime) throws SaveException { - Map params = new HashMap<>(7); - params.put("loginLoggerId", UUIDUtil.getUUID()); + Map params = new HashMap<>(12); + params.put("loginLogId", UUIDUtil.getUUID()); params.put("loginAddress", address); params.put("loginType", loginType); params.put("gmtCreate", currentTime); params.put("creator", userId); params.put("creatorName", userName); - // loginLoggerService.saveLoginLogger(params); + loginLogService.save(params); } /** diff --git a/login-base/src/main/java/ink/wgink/login/base/startup/LoginBaseStartUp.java b/login-base/src/main/java/ink/wgink/login/base/startup/LoginBaseStartUp.java index cdb1d04a..33f4c26c 100644 --- a/login-base/src/main/java/ink/wgink/login/base/startup/LoginBaseStartUp.java +++ b/login-base/src/main/java/ink/wgink/login/base/startup/LoginBaseStartUp.java @@ -1,6 +1,7 @@ package ink.wgink.login.base.startup; -import ink.wgink.login.base.dao.IConfigDao; +import ink.wgink.login.base.dao.config.IConfigDao; +import ink.wgink.login.base.dao.log.ILoginLogDao; import ink.wgink.login.base.manager.ConfigManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,6 +27,8 @@ public class LoginBaseStartUp implements ApplicationRunner { @Autowired private IConfigDao configDao; + @Autowired + private ILoginLogDao loginLogDao; @Override public void run(ApplicationArguments args) throws Exception { @@ -34,6 +37,7 @@ public class LoginBaseStartUp implements ApplicationRunner { LOG.debug("初始化配置"); ConfigManager configManager = ConfigManager.getInstance(); configManager.setConfigDao(configDao); + } /** @@ -42,6 +46,9 @@ public class LoginBaseStartUp implements ApplicationRunner { private void initTable() { LOG.debug("创建 sys_config 表"); configDao.createTable(); + + LOG.debug("创建 log_login 表"); + loginLogDao.createTable(); } } diff --git a/login-base/src/main/resources/mybatis/mapper/config-mapper.xml b/login-base/src/main/resources/mybatis/mapper/config/config-mapper.xml similarity index 94% rename from login-base/src/main/resources/mybatis/mapper/config-mapper.xml rename to login-base/src/main/resources/mybatis/mapper/config/config-mapper.xml index 4151f274..8e8d1a63 100644 --- a/login-base/src/main/resources/mybatis/mapper/config-mapper.xml +++ b/login-base/src/main/resources/mybatis/mapper/config/config-mapper.xml @@ -1,10 +1,10 @@ - + - + diff --git a/login-base/src/main/resources/mybatis/mapper/log/login-log-mapper.xml b/login-base/src/main/resources/mybatis/mapper/log/login-log-mapper.xml new file mode 100644 index 00000000..cd5c9195 --- /dev/null +++ b/login-base/src/main/resources/mybatis/mapper/log/login-log-mapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + CREATE TABLE IF NOT EXISTS `log_login_log` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `loginlog_id` char(36) NOT NULL COMMENT '主键', + `login_address` varchar(255) DEFAULT NULL, + `login_type` int(1) DEFAULT '1' COMMENT '登录类型', + `creator` char(36) DEFAULT NULL, + `gmt_create` datetime DEFAULT NULL, + `creator_name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`,`loginlog_id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + + + + INSERT INTO log_login_log( + loginlog_id, + login_address, + login_type, + creator, + gmt_create, + creator_name + ) VALUES( + #{loginLogId}, + #{loginAddress}, + #{loginType}, + #{creator}, + #{gmtCreate}, + #{creatorName} + ) + + + + + + + + \ No newline at end of file diff --git a/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentAdjustmentDao.java b/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentAdjustmentDao.java index dead58d3..7e53cc43 100644 --- a/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentAdjustmentDao.java +++ b/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentAdjustmentDao.java @@ -1,9 +1,12 @@ package ink.wgink.service.department.dao; import ink.wgink.exceptions.SaveException; +import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; +import ink.wgink.service.department.pojo.dtos.DepartmentAdjustmentDTO; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Map; /** @@ -33,4 +36,13 @@ public interface IDepartmentAdjustmentDao { * @throws SaveException */ void save(Map params) throws SaveException; + + /** + * 部门调整列表 + * + * @param params + * @return + * @throws SearchException + */ + List list(Map params) throws SearchException; } diff --git a/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentUserAdjustmentDao.java b/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentUserAdjustmentDao.java index ee672e80..84b69724 100644 --- a/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentUserAdjustmentDao.java +++ b/service-department/src/main/java/ink/wgink/service/department/dao/IDepartmentUserAdjustmentDao.java @@ -1,9 +1,12 @@ package ink.wgink.service.department.dao; import ink.wgink.exceptions.SaveException; +import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; +import ink.wgink.service.department.pojo.dtos.DepartmentUserAdjustmentDTO; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Map; /** @@ -33,4 +36,13 @@ public interface IDepartmentUserAdjustmentDao { * @throws SaveException */ void save(Map params) throws SaveException; + + /** + * 部门用户调整列表 + * + * @param params + * @return + * @throws SearchException + */ + List list(Map params) throws SearchException; } diff --git a/service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentAdjustmentDTO.java b/service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentAdjustmentDTO.java new file mode 100644 index 00000000..0eb4f487 --- /dev/null +++ b/service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentAdjustmentDTO.java @@ -0,0 +1,93 @@ +package ink.wgink.service.department.pojo.dtos; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: DepartmentLogDTO + * @Description: 部门调整 + * @Author: WangGeng + * @Date: 2020/7/21 17:18 + * @Version: 1.0 + **/ +@ApiModel +public class DepartmentAdjustmentDTO implements Serializable { + + private static final long serialVersionUID = 829590971292786101L; + @ApiModelProperty(name = "oldDepartmentName", value = "旧部门名称") + private String oldDepartmentName; + @ApiModelProperty(name = "newDepartmentName", value = "新部门名称") + private String newDepartmentName; + @ApiModelProperty(name = "adjustmentType", value = "操作类型") + private String adjustmentType; + @ApiModelProperty(name = "gmtCreate", value = "创建时间") + private String gmtCreate; + @ApiModelProperty(name = "creatorName", value = "创建人") + private String creatorName; + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + public String getOldDepartmentName() { + return oldDepartmentName == null ? "" : oldDepartmentName.trim(); + } + + public void setOldDepartmentName(String oldDepartmentName) { + this.oldDepartmentName = oldDepartmentName; + } + + public String getNewDepartmentName() { + return newDepartmentName == null ? "" : newDepartmentName.trim(); + } + + public void setNewDepartmentName(String newDepartmentName) { + this.newDepartmentName = newDepartmentName; + } + + public String getAdjustmentType() { + return adjustmentType == null ? "" : adjustmentType.trim(); + } + + public void setAdjustmentType(String adjustmentType) { + this.adjustmentType = adjustmentType; + } + + public String getGmtCreate() { + return gmtCreate == null ? "" : gmtCreate.trim(); + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public String getCreatorName() { + return creatorName == null ? "" : creatorName.trim(); + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"oldDepartmentName\":\"") + .append(oldDepartmentName).append('\"'); + sb.append(",\"newDepartmentName\":\"") + .append(newDepartmentName).append('\"'); + sb.append(",\"adjustmentType\":\"") + .append(adjustmentType).append('\"'); + sb.append(",\"gmtCreate\":\"") + .append(gmtCreate).append('\"'); + sb.append(",\"creatorName\":\"") + .append(creatorName).append('\"'); + sb.append('}'); + return sb.toString(); + } +} diff --git a/service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentUserAdjustmentDTO.java b/service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentUserAdjustmentDTO.java new file mode 100644 index 00000000..7efb9fcb --- /dev/null +++ b/service-department/src/main/java/ink/wgink/service/department/pojo/dtos/DepartmentUserAdjustmentDTO.java @@ -0,0 +1,89 @@ +package ink.wgink.service.department.pojo.dtos; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: UserDepartmentLogDTO + * @Description: 用户部门日志 + * @Author: WangGeng + * @Date: 2020/7/22 12:53 下午 + * @Version: 1.0 + **/ +@ApiModel +public class DepartmentUserAdjustmentDTO implements Serializable { + + private static final long serialVersionUID = -7519233242842566624L; + @ApiModelProperty(name = "userName", value = "用户名称") + private String userName; + @ApiModelProperty(name = "departmentName", value = "部门名称") + private String departmentName; + @ApiModelProperty(name = "adjustmentType", value = "修改类型") + private String adjustmentType; + @ApiModelProperty(name = "gmtCreate", value = "创建时间") + private String gmtCreate; + @ApiModelProperty(name = "creatorName", value = "创建人") + private String creatorName; + + public String getUserName() { + return userName == null ? "" : userName.trim(); + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getDepartmentName() { + return departmentName == null ? "" : departmentName.trim(); + } + + public void setDepartmentName(String departmentName) { + this.departmentName = departmentName; + } + + public String getAdjustmentType() { + return adjustmentType == null ? "" : adjustmentType.trim(); + } + + public void setAdjustmentType(String adjustmentType) { + this.adjustmentType = adjustmentType; + } + + public String getGmtCreate() { + return gmtCreate == null ? "" : gmtCreate.trim(); + } + + public void setGmtCreate(String gmtCreate) { + this.gmtCreate = gmtCreate; + } + + public String getCreatorName() { + return creatorName == null ? "" : creatorName.trim(); + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("{"); + sb.append("\"userName\":") + .append("\"").append(userName).append("\""); + sb.append(",\"departmentName\":") + .append("\"").append(departmentName).append("\""); + sb.append(",\"adjustmentType\":") + .append("\"").append(adjustmentType).append("\""); + sb.append(",\"gmtCreate\":") + .append("\"").append(gmtCreate).append("\""); + sb.append(",\"creatorName\":") + .append("\"").append(creatorName).append("\""); + sb.append('}'); + return sb.toString(); + } +} diff --git a/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentAdjustmentService.java b/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentAdjustmentService.java index 7002366f..a3bdd82b 100644 --- a/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentAdjustmentService.java +++ b/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentAdjustmentService.java @@ -1,6 +1,9 @@ package ink.wgink.service.department.service; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.service.department.enmus.DepartmentAdjustmentTypeEnum; +import ink.wgink.service.department.pojo.dtos.DepartmentAdjustmentDTO; import java.util.List; @@ -36,4 +39,12 @@ public interface IDepartmentAdjustmentService { * @param userDepartmentType 部门用户类型,join、leave */ void save(List departmentUserIds, String departmentId, String departmentName, String userDepartmentType); + + /** + * 用户部门调整列表 + * + * @param page 分页 + * @return + */ + SuccessResultList> listPage(ListPage page); } diff --git a/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentUserAdjustmentService.java b/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentUserAdjustmentService.java index b1155df5..d8629d70 100644 --- a/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentUserAdjustmentService.java +++ b/service-department/src/main/java/ink/wgink/service/department/service/IDepartmentUserAdjustmentService.java @@ -2,7 +2,11 @@ package ink.wgink.service.department.service; import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.UpdateException; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; +import ink.wgink.service.department.pojo.dtos.DepartmentUserAdjustmentDTO; +import java.util.List; import java.util.Map; /** @@ -21,7 +25,15 @@ public interface IDepartmentUserAdjustmentService { * 新增部门用户调整 * * @param params - * @throws SaveException */ - void save(Map params) throws SaveException; + void save(Map params); + + /** + * 部门用户调整分页列表 + * + * @param page 分页 + * @return + */ + SuccessResultList> listPage(ListPage page); + } diff --git a/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentAdjustmentServiceImpl.java b/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentAdjustmentServiceImpl.java index ff04cdfa..6330cb9a 100644 --- a/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentAdjustmentServiceImpl.java +++ b/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentAdjustmentServiceImpl.java @@ -1,9 +1,14 @@ package ink.wgink.service.department.service.impl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.user.UserDTO; +import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.service.department.dao.IDepartmentAdjustmentDao; import ink.wgink.service.department.enmus.DepartmentAdjustmentTypeEnum; +import ink.wgink.service.department.pojo.dtos.DepartmentAdjustmentDTO; import ink.wgink.service.department.service.IDepartmentAdjustmentService; import ink.wgink.service.department.service.IDepartmentUserAdjustmentService; import ink.wgink.service.user.service.IUserService; @@ -66,4 +71,12 @@ public class DepartmentAdjustmentServiceImpl extends DefaultBaseService implemen } } + @Override + public SuccessResultList> listPage(ListPage page) { + PageHelper.startPage(page.getPage(), page.getRows()); + List departmentLogDTOs = departmentAdjustmentDao.list(page.getParams()); + PageInfo pageInfo = new PageInfo<>(departmentLogDTOs); + return new SuccessResultList<>(departmentLogDTOs, pageInfo.getPageNum(), pageInfo.getTotal()); + } + } diff --git a/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentUserAdjustmentServiceImpl.java b/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentUserAdjustmentServiceImpl.java index 0d912631..a595ad7b 100644 --- a/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentUserAdjustmentServiceImpl.java +++ b/service-department/src/main/java/ink/wgink/service/department/service/impl/DepartmentUserAdjustmentServiceImpl.java @@ -1,11 +1,17 @@ package ink.wgink.service.department.service.impl; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import ink.wgink.common.base.DefaultBaseService; +import ink.wgink.pojo.ListPage; +import ink.wgink.pojo.result.SuccessResultList; import ink.wgink.service.department.dao.IDepartmentUserAdjustmentDao; +import ink.wgink.service.department.pojo.dtos.DepartmentUserAdjustmentDTO; import ink.wgink.service.department.service.IDepartmentUserAdjustmentService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; /** @@ -29,4 +35,12 @@ public class DepartmentUserAdjustmentServiceImpl extends DefaultBaseService impl departmentUserAdjustmentDao.save(params); } + @Override + public SuccessResultList> listPage(ListPage page) { + PageHelper.startPage(page.getPage(), page.getRows()); + List userDepartmentLogDTOs = departmentUserAdjustmentDao.list(page.getParams()); + PageInfo pageInfo = new PageInfo<>(userDepartmentLogDTOs); + return new SuccessResultList<>(userDepartmentLogDTOs, pageInfo.getPageNum(), pageInfo.getTotal()); + } + } diff --git a/service-department/src/main/resources/mybatis/mapper/department-adjustment-mapper.xml b/service-department/src/main/resources/mybatis/mapper/department-adjustment-mapper.xml index 5015fe2b..fd33b7a8 100644 --- a/service-department/src/main/resources/mybatis/mapper/department-adjustment-mapper.xml +++ b/service-department/src/main/resources/mybatis/mapper/department-adjustment-mapper.xml @@ -4,6 +4,14 @@ + + + + + + + + CREATE TABLE IF NOT EXISTS `sys_department_adjustment` ( @@ -43,5 +51,40 @@ ) + + + \ No newline at end of file diff --git a/service-department/src/main/resources/mybatis/mapper/department-user-adjustment-mapper.xml b/service-department/src/main/resources/mybatis/mapper/department-user-adjustment-mapper.xml index 8cf62b8d..d3f309f1 100644 --- a/service-department/src/main/resources/mybatis/mapper/department-user-adjustment-mapper.xml +++ b/service-department/src/main/resources/mybatis/mapper/department-user-adjustment-mapper.xml @@ -4,6 +4,14 @@ + + + + + + + + CREATE TABLE IF NOT EXISTS `sys_department_user_adjustment` ( @@ -43,4 +51,42 @@ ) + + + \ No newline at end of file diff --git a/service-position/src/main/java/ink/wgink/service/position/service/impl/PositionServiceImpl.java b/service-position/src/main/java/ink/wgink/service/position/service/impl/PositionServiceImpl.java index 09306026..788bb353 100644 --- a/service-position/src/main/java/ink/wgink/service/position/service/impl/PositionServiceImpl.java +++ b/service-position/src/main/java/ink/wgink/service/position/service/impl/PositionServiceImpl.java @@ -135,6 +135,12 @@ public class PositionServiceImpl extends DefaultBaseService implements IPosition return listPO(params); } + @Override + public Integer count(Map params) { + Integer count = positionDao.count(params); + return count == null ? 0 : count; + } + /** * 递归查询子组 * diff --git a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java index f3b8daa9..368336f9 100644 --- a/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java +++ b/service-role/src/main/java/ink/wgink/service/role/service/impl/RoleServiceImpl.java @@ -146,7 +146,7 @@ public class RoleServiceImpl extends DefaultBaseService implements IRoleService } @Override - public Integer countRole(Map params) throws SearchException { + public Integer count(Map params) throws SearchException { Integer roleCount = roleDao.countRole(params); return roleCount == null ? 0 : roleCount; } diff --git a/service-user/src/main/java/ink/wgink/service/user/enums/UserStateEnum.java b/service-user/src/main/java/ink/wgink/service/user/enums/UserStateEnum.java new file mode 100644 index 00000000..24d54c0e --- /dev/null +++ b/service-user/src/main/java/ink/wgink/service/user/enums/UserStateEnum.java @@ -0,0 +1,27 @@ +package ink.wgink.service.user.enums; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: UserStateEnum + * @Description: 用户状态 + * @Author: wanggeng + * @Date: 2021/2/28 11:52 上午 + * @Version: 1.0 + */ +public enum UserStateEnum { + + NORMAL(0), + LOCK(1); + + private int value; + + UserStateEnum(int value) { + this.value = value; + } + + public int getValue() { + return value; + } +} diff --git a/service-user/src/main/java/ink/wgink/service/user/enums/UserTypeEnum.java b/service-user/src/main/java/ink/wgink/service/user/enums/UserTypeEnum.java new file mode 100644 index 00000000..447bb121 --- /dev/null +++ b/service-user/src/main/java/ink/wgink/service/user/enums/UserTypeEnum.java @@ -0,0 +1,27 @@ +package ink.wgink.service.user.enums; + +/** + * When you feel like quitting. Think about why you started + * 当你想要放弃的时候,想想当初你为何开始 + * + * @ClassName: UserTypeEnum + * @Description: 用户类型 + * @Author: wanggeng + * @Date: 2021/2/28 11:52 上午 + * @Version: 1.0 + */ +public enum UserTypeEnum { + + SYSTEM(1), + NORMAL(2); + + private int value; + + UserTypeEnum(int value) { + this.value = value; + } + + public int getValue() { + return value; + } +} diff --git a/service-user/src/main/java/ink/wgink/service/user/service/IUserService.java b/service-user/src/main/java/ink/wgink/service/user/service/IUserService.java index 2fd56bf7..ddf4a272 100644 --- a/service-user/src/main/java/ink/wgink/service/user/service/IUserService.java +++ b/service-user/src/main/java/ink/wgink/service/user/service/IUserService.java @@ -110,4 +110,12 @@ public interface IUserService extends IUserBaseService, IUserCheckService { */ void updateLoginInfo(Map params); + /** + * 统计 + * + * @param params + * @return + */ + Integer count(Map params); + } diff --git a/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java b/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java index 6bd5ea68..2b7ceeec 100644 --- a/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java +++ b/service-user/src/main/java/ink/wgink/service/user/service/impl/UserServiceImpl.java @@ -289,6 +289,47 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService return listPage(page); } + @Override + public Integer count(Map params) { + Integer count = userDao.count(params); + return count == null ? 0 : count; + } + + @Override + public int countDateRange(String startDate, String endDate) { + Map params = getHashMap(4); + params.put("startDay", startDate); + params.put("endDay", endDate); + return count(params); + } + + @Override + public int count() { + Map params = getHashMap(0); + return count(params); + } + + @Override + public int countType(int userType) { + Map params = getHashMap(2); + params.put("userType", userType); + return count(params); + } + + @Override + public int countErrorType() { + Map params = getHashMap(2); + params.put("errorLoginType", "errorLoginType"); + return count(params); + } + + @Override + public Integer countState(int userState) { + Map params = getHashMap(2); + params.put("userState", userState); + return count(params); + } + /** * Excel导入错误对象 *