From 85e514c685f2862cfe641b3eadb4412a09af2062 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 05 九月 2023 18:13:42 +0800
Subject: [PATCH] 111

---
 server/src/main/java/doumeemes/dao/system/SystemUserMapper.java                   |   10 +
 server/src/main/java/doumeemes/api/system/SystemLoginLogController.java           |   21 +++
 server/src/main/java/doumeemes/service/system/SystemUserService.java              |    9 +
 server/src/main/java/doumeemes/dao/ext/vo/StagingLoginVO.java                     |   33 ++++
 server/src/main/java/doumeemes/api/ext/StagingExtController.java                  |   52 +++++++
 server/src/main/resources/mappers/SystemUserMapper.xml                            |   52 +++++++
 server/src/main/java/doumeemes/dao/ext/vo/CompanyLoginStatisticsVO.java           |   35 +++++
 server/src/main/java/doumeemes/config/shiro/ShiroConfig.java                      |   19 ++
 server/src/main/java/doumeemes/dao/ext/vo/ActivityLoginVO.java                    |   23 +++
 server/src/main/java/doumeemes/service/system/SystemLoginLogService.java          |    3 
 server/src/main/java/doumeemes/dao/ext/dto/ActivityLoginDTO.java                  |   24 +++
 server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java |   66 +++++++++
 server/src/main/java/doumeemes/service/system/impl/SystemUserServiceImpl.java     |   21 +++
 server/src/main/java/doumeemes/dao/ext/dto/CompanyLoginDTO.java                   |   22 +++
 14 files changed, 385 insertions(+), 5 deletions(-)

diff --git a/server/src/main/java/doumeemes/api/ext/StagingExtController.java b/server/src/main/java/doumeemes/api/ext/StagingExtController.java
new file mode 100644
index 0000000..294c5ed
--- /dev/null
+++ b/server/src/main/java/doumeemes/api/ext/StagingExtController.java
@@ -0,0 +1,52 @@
+package doumeemes.api.ext;
+
+import doumeemes.api.BaseController;
+import doumeemes.core.model.ApiResponse;
+import doumeemes.dao.ext.dto.ActivityLoginDTO;
+import doumeemes.dao.ext.vo.ActivityLoginVO;
+import doumeemes.dao.ext.vo.StagingLoginVO;
+import doumeemes.dao.system.model.SystemUser;
+import doumeemes.service.system.SystemLoginLogService;
+import doumeemes.service.system.SystemLoginService;
+import doumeemes.service.system.SystemUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/9/5 10:26
+ */
+
+@RestController
+@RequestMapping("/ext/stagingExt")
+@Api(tags = "宸ヤ綔鍙版帴鍙�")
+public class StagingExtController  extends BaseController {
+
+    @Autowired
+    private SystemLoginLogService systemLoginLogService;
+
+    @Autowired
+    private SystemUserService systemUserService;
+
+    @ApiOperation("宸ヤ綔鍙版椿璺冩暟鎹�")
+    @GetMapping("/getStagingLoginVO")
+    public ApiResponse<StagingLoginVO> getStagingLoginVO() {
+        return ApiResponse.success(systemLoginLogService.getStagingLoginVO());
+    }
+
+    @ApiOperation("宸ヤ綔鍙版椿璺冩暟鎹秼鍔垮浘")
+    @PostMapping("/getActivityLoginVOList")
+    public ApiResponse<List<ActivityLoginVO>> getActivityLoginVOList(@RequestBody ActivityLoginDTO activityLoginDTO) {
+        return ApiResponse.success(systemUserService.activityLoginVOList(activityLoginDTO));
+    }
+
+
+}
diff --git a/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java b/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
index de8b960..9ce66ab 100644
--- a/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
+++ b/server/src/main/java/doumeemes/api/system/SystemLoginLogController.java
@@ -6,9 +6,12 @@
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
 import doumeemes.core.utils.DateUtil;
+import doumeemes.dao.ext.dto.CompanyLoginDTO;
+import doumeemes.dao.ext.vo.CompanyLoginStatisticsVO;
 import doumeemes.dao.system.dto.QuerySystemLoginLogDTO;
 import doumeemes.dao.system.model.SystemLoginLog;
 import doumeemes.service.system.SystemLoginLogService;
+import doumeemes.service.system.SystemUserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.shiro.authz.annotation.RequiresPermissions;    
@@ -29,6 +32,9 @@
     @Autowired
     private SystemLoginLogService systemLoginLogService;
 
+    @Autowired
+    private SystemUserService systemUserService;
+
     @PostMapping("/page")
     @ApiOperation("鍒嗛〉鏌ヨ")
     @RequiresPermissions("system:loginLog:query")
@@ -42,4 +48,19 @@
     public void export (@RequestBody PageWrap<QuerySystemLoginLogDTO> pageWrap, HttpServletResponse response) {
         ExcelExporter.build(SystemLoginLog.class).exportWithFirstAndEnd(systemLoginLogService.findPage(pageWrap).getRecords(), "鐧诲綍鏃ュ織_"+System.currentTimeMillis(),"鐧诲綍鏃ュ織-"+ DateUtil.getPlusTime2(DateUtil.getCurrentDate()),null, response);
     }
+
+
+    @PostMapping("/companyLoginStatisticsPage")
+    @ApiOperation("浼佷笟鐧诲綍缁熻")
+//    @RequiresPermissions("system:loginLog:query")
+    public ApiResponse<PageData<CompanyLoginStatisticsVO>> companyLoginStatisticsPage (@RequestBody PageWrap<CompanyLoginDTO> pageWrap) {
+        return ApiResponse.success(systemUserService.companyLoginStatisticsPage(pageWrap));
+    }
+
+    @PostMapping("/companyLoginStatisticsExport")
+    @ApiOperation("浼佷笟鐧诲綍缁熻瀵煎嚭")
+//    @RequiresPermissions("system:loginLog:query")
+    public void companyLoginStatisticsExport (@RequestBody PageWrap<CompanyLoginDTO> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(CompanyLoginStatisticsVO.class).exportWithFirstAndEnd(systemUserService.companyLoginStatisticsPage(pageWrap).getRecords(), "浼佷笟鐧诲綍缁熻_"+System.currentTimeMillis(),"浼佷笟鐧诲綍缁熻_"+ DateUtil.getPlusTime2(DateUtil.getCurrentDate()),null, response);
+    }
 }
diff --git a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
index 3318795..3f1eeba 100644
--- a/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
+++ b/server/src/main/java/doumeemes/config/shiro/ShiroConfig.java
@@ -89,17 +89,26 @@
         shiroFilterFactoryBean.setSecurityManager(securityManager);
         Map<String, String> map = new LinkedHashMap<>();
         // 璺緞鎷︽埅閰嶇疆
-        map.put("/web/user/login", "anon");
-        map.put("/public/uploadRichText", "anon");
         map.put("/system/login", "anon");
+        map.put("/system/wxLogin", "anon");
+        map.put("/system/wxProgramLogin", "anon");
+        map.put("/system/wxAccountLogin", "anon");
+        map.put("/system/initCompany", "anon");
         map.put("/system/logout", "anon");
         map.put("/common/captcha", "anon");
-        //鏀捐 scratch 鎺ュ彛
-        map.put("/web/scratch/**", "anon");
-
+        map.put("/statistics/**", "anon");
+        map.put("/dingding/push", "anon");
+//        map.put("/ext/workorderExt/freshStatistics", "anon");
+        map.put("/dingding/jsapiTicket", "anon");
+        map.put("/dingding/ddLogin", "anon");
+        map.put("/dingding/getDingdingCorpId", "anon");
+        map.put("/lingyang/login", "anon");
+        map.put("/lingyang/loginDemo", "anon");
+        map.put("/edgp/**", "anon");
         // - 鏀捐swagger
         map.put("/doc.html", "anon");
         map.put("/webjars/**", "anon");
+        map.put("/template/**", "anon");
         map.put("/swagger-resources/**", "anon");
         map.put("/v2/api-docs/**", "anon");
         // - 鍏朵粬鎺ュ彛缁熶竴鎷︽埅
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/ActivityLoginDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/ActivityLoginDTO.java
new file mode 100644
index 0000000..b90341e
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/dto/ActivityLoginDTO.java
@@ -0,0 +1,24 @@
+package doumeemes.dao.ext.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author T14
+ */
+@Data
+@ApiModel("宸ヤ綔鍙版椿璺冭秼鍔垮浘鏌ヨ绫�")
+public class ActivityLoginDTO {
+
+    @ApiModelProperty(value = "鏉ユ簮  0pc 1閽夐拤 2缇氱緤骞冲彴 3EDGP骞冲彴")
+    private Integer orgin;
+
+    @ApiModelProperty(value = "寮�濮嬫棩鏈�")
+    private String startDate;
+
+    @ApiModelProperty(value = "缁撴潫鏃ユ湡")
+    private String endDate;
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/CompanyLoginDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/CompanyLoginDTO.java
new file mode 100644
index 0000000..6fe2906
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/dto/CompanyLoginDTO.java
@@ -0,0 +1,22 @@
+package doumeemes.dao.ext.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author T14
+ */
+@Data
+@ApiModel("浼佷笟鐧诲綍缁熻鏌ヨ绫�")
+public class CompanyLoginDTO {
+
+    @ApiModelProperty(value = "鏉ユ簮  0pc 1閽夐拤 2缇氱緤骞冲彴 3EDGP骞冲彴")
+    private Integer orgin;
+
+    @ApiModelProperty(value = "鏌ヨ骞存湀 YYYY-MM")
+    private String queryMonth;
+
+    @ApiModelProperty(value = "浼佷笟鍚嶇О")
+    private String companyName;
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/ActivityLoginVO.java b/server/src/main/java/doumeemes/dao/ext/vo/ActivityLoginVO.java
new file mode 100644
index 0000000..66df634
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/vo/ActivityLoginVO.java
@@ -0,0 +1,23 @@
+package doumeemes.dao.ext.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/9/5 10:30
+ */
+@Data
+@ApiModel("宸ヤ綔鍙版椿璺冭秼鍔垮浘鏁版嵁")
+public class ActivityLoginVO {
+
+    @ApiModelProperty(value = "浠婃棩娲昏穬鐢ㄦ埛")
+    private Integer dayActiveUserNum;
+
+    @ApiModelProperty(value = "浠婃棩娲昏穬浼佷笟")
+    private String dataDate;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/CompanyLoginStatisticsVO.java b/server/src/main/java/doumeemes/dao/ext/vo/CompanyLoginStatisticsVO.java
new file mode 100644
index 0000000..961ab91
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/vo/CompanyLoginStatisticsVO.java
@@ -0,0 +1,35 @@
+package doumeemes.dao.ext.vo;
+
+import doumeemes.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/9/5 10:30
+ */
+@Data
+@ApiModel("浼佷笟鐧诲綍缁熻鏌ヨ鏁版嵁")
+public class CompanyLoginStatisticsVO {
+
+    @ApiModelProperty(value = "鏃堕棿 yyyy-MM-dd")
+    @ExcelColumn(name="鏃堕棿",width = 6,align = HorizontalAlignment.CENTER)
+    private String dataDate;
+
+    @ApiModelProperty(value = "鐧诲綍浼佷笟鍚嶇О")
+    @ExcelColumn(name="鐧诲綍浼佷笟鍚嶇О",width = 6,align = HorizontalAlignment.CENTER)
+    private String companyName;
+
+    @ApiModelProperty(value = "娓犻亾")
+    @ExcelColumn(name="娓犻亾", valueMapping = "0=PC骞冲彴;1=閽夐拤骞冲彴;2=缇氱緤骞冲彴;3=EDGP骞冲彴;4=寰俊灏忕▼搴�",width = 6,align = HorizontalAlignment.CENTER)
+    private Integer orgin;
+
+    @ApiModelProperty(value = "鐧诲綍娆℃暟")
+    @ExcelColumn(name="鐧诲綍娆℃暟",width = 6,align = HorizontalAlignment.CENTER)
+    private Integer loginNum;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/StagingLoginVO.java b/server/src/main/java/doumeemes/dao/ext/vo/StagingLoginVO.java
new file mode 100644
index 0000000..986c641
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/vo/StagingLoginVO.java
@@ -0,0 +1,33 @@
+package doumeemes.dao.ext.vo;
+
+import doumeemes.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/9/5 10:30
+ */
+@Data
+@ApiModel("宸ヤ綔鍙版椿璺冩暟鎹�")
+public class StagingLoginVO {
+
+    @ApiModelProperty(value = "浠婃棩娲昏穬鐢ㄦ埛")
+    private Integer dayActiveUserNum;
+
+    @ApiModelProperty(value = "浠婃棩娲昏穬浼佷笟")
+    private Integer dayActiveCompanyNum;
+
+    @ApiModelProperty(value = "鏈湀娲昏穬浼佷笟")
+    private Integer monthActiveCompanyNum;
+
+    @ApiModelProperty(value = "鏈湀鐧诲綍2娆″強浠ヤ笂浼佷笟鏁�")
+    private Integer monthTwoCompanyNum;
+
+    @ApiModelProperty(value = "鏈湀鐧诲綍2娆″強浠ヤ笂浼佷笟鏁�(缇氱緤)")
+    private Integer monthTwoCompanyLYNum;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/system/SystemUserMapper.java b/server/src/main/java/doumeemes/dao/system/SystemUserMapper.java
index 289ac2b..d2c84ad 100644
--- a/server/src/main/java/doumeemes/dao/system/SystemUserMapper.java
+++ b/server/src/main/java/doumeemes/dao/system/SystemUserMapper.java
@@ -1,6 +1,10 @@
 package doumeemes.dao.system;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import doumeemes.dao.ext.dto.ActivityLoginDTO;
+import doumeemes.dao.ext.dto.CompanyLoginDTO;
+import doumeemes.dao.ext.vo.ActivityLoginVO;
+import doumeemes.dao.ext.vo.CompanyLoginStatisticsVO;
 import doumeemes.dao.system.dto.QuerySystemUserDTO;
 import doumeemes.dao.system.model.SystemUser;
 import doumeemes.dao.system.vo.SystemUserListVO;
@@ -17,4 +21,10 @@
      */
     List<SystemUserListVO> selectManageList(@Param("dto") QuerySystemUserDTO dto, @Param("orderByClause") String orderByClause);
 
+
+    List<ActivityLoginVO> activityLoginVOList(@Param("dto")ActivityLoginDTO activityLoginDTO) ;
+
+
+    List<CompanyLoginStatisticsVO> companyLoginStatisticsList(@Param("dto") CompanyLoginDTO companyLoginDTO) ;
+
 }
diff --git a/server/src/main/java/doumeemes/service/system/SystemLoginLogService.java b/server/src/main/java/doumeemes/service/system/SystemLoginLogService.java
index c611320..6302109 100644
--- a/server/src/main/java/doumeemes/service/system/SystemLoginLogService.java
+++ b/server/src/main/java/doumeemes/service/system/SystemLoginLogService.java
@@ -2,6 +2,7 @@
 
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
+import doumeemes.dao.ext.vo.StagingLoginVO;
 import doumeemes.dao.system.dto.QuerySystemLoginLogDTO;
 import doumeemes.dao.system.model.SystemLoginLog;
 import java.util.List;
@@ -89,4 +90,6 @@
      * @date 2022/04/18 18:12
      */
     long count(SystemLoginLog systemLoginLog);
+
+    StagingLoginVO getStagingLoginVO();
 }
diff --git a/server/src/main/java/doumeemes/service/system/SystemUserService.java b/server/src/main/java/doumeemes/service/system/SystemUserService.java
index 6b03e35..6175c2f 100644
--- a/server/src/main/java/doumeemes/service/system/SystemUserService.java
+++ b/server/src/main/java/doumeemes/service/system/SystemUserService.java
@@ -2,6 +2,10 @@
 
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
+import doumeemes.dao.ext.dto.ActivityLoginDTO;
+import doumeemes.dao.ext.dto.CompanyLoginDTO;
+import doumeemes.dao.ext.vo.ActivityLoginVO;
+import doumeemes.dao.ext.vo.CompanyLoginStatisticsVO;
 import doumeemes.dao.system.dto.QuerySystemUserDTO;
 import doumeemes.dao.system.model.SystemUser;
 import doumeemes.dao.system.vo.SystemUserListVO;
@@ -91,4 +95,9 @@
      * @date 2022/04/18 18:12
      */
     long count(SystemUser systemUser);
+
+    List<ActivityLoginVO> activityLoginVOList(ActivityLoginDTO activityLoginDTO);
+
+    PageData<CompanyLoginStatisticsVO> companyLoginStatisticsPage(PageWrap<CompanyLoginDTO> pageWrap);
+
 }
diff --git a/server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java
index 243a4d1..af8d0cf 100644
--- a/server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java
@@ -6,6 +6,9 @@
 import doumeemes.core.utils.Utils;
 import doumeemes.dao.business.model.Company;
 import doumeemes.dao.business.model.CompanyUser;
+import doumeemes.dao.ext.dto.ActivityLoginDTO;
+import doumeemes.dao.ext.vo.ActivityLoginVO;
+import doumeemes.dao.ext.vo.StagingLoginVO;
 import doumeemes.dao.system.SystemLoginLogMapper;
 import doumeemes.dao.system.dto.QuerySystemLoginLogDTO;
 import doumeemes.dao.system.join.SystemLoginLogJoinMapper;
@@ -137,4 +140,67 @@
         Wrapper<SystemLoginLog> wrapper = new QueryWrapper<>(systemLoginLog);
         return systemLoginLogMapper.selectCount(wrapper);
     }
+
+
+    @Override
+    public StagingLoginVO getStagingLoginVO(){
+        StagingLoginVO stagingLoginVO = new StagingLoginVO();
+        //浠婃棩娲昏穬鐢ㄦ埛锛氱粺璁″綋澶╃櫥褰曠敤鎴锋暟锛屼竴涓郴缁熺敤鎴峰湪涓嶅悓鐨勪紒涓氱櫥褰曪紝绠椾袱涓敤鎴凤紱涓�涓敤鎴峰湪涓�涓紒涓氬唴澶氭鐧诲綍锛岀畻涓�涓敤鎴�
+        stagingLoginVO.setDayActiveUserNum(
+            systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
+                    .select(" COMPANY_USER_ID ")
+                    .isNotNull(" COMPANY_ID ")
+                    .isNotNull(" COMPANY_USER_ID ")
+                    .apply(" LOGIN_TIME like concat(CURDATE(),'%') ")
+                    .groupBy(" COMPANY_ID , COMPANY_USER_ID ")
+            ).size()
+        );
+        //浠婃棩娲昏穬浼佷笟锛氱粺璁″綋澶╃櫥褰曠殑浼佷笟鏁帮紝涓�涓紒涓氱殑涓嶅悓鐢ㄦ埛鐧诲綍锛岀畻涓�涓紒涓氭暟锛�
+        stagingLoginVO.setDayActiveCompanyNum(
+                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
+                        .select(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_USER_ID ")
+                        .apply(" LOGIN_TIME like concat(CURDATE(),'%') ")
+                        .groupBy(" COMPANY_ID ")
+                ).size()
+        );
+        //缁熻鏈湀锛堣嚜鐒舵湀锛夌櫥褰曠殑浼佷笟鏁帮紝閫昏緫鍚屼笂锛�
+        stagingLoginVO.setMonthActiveCompanyNum(
+                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
+                        .select(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_USER_ID ")
+                        .apply(" LOGIN_TIME like concat(date_format(NOW(), '%Y-%m'),'%') ")
+                        .groupBy(" COMPANY_ID ")
+                ).size()
+        );
+        //鏈湀鐧诲綍2娆″強浠ヤ笂浼佷笟鏁帮細缁熻鏈湀锛堣嚜鐒舵湀锛夌櫥褰�2娆″強浠ヤ笂鐨勪紒涓氭暟锛岄�昏緫鍚屼笂锛�
+        stagingLoginVO.setMonthTwoCompanyNum(
+                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
+                        .select(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_USER_ID ")
+                        .apply(" LOGIN_TIME like concat(date_format(NOW(), '%Y-%m'),'%') ")
+                        .groupBy(" COMPANY_ID ")
+                        .having(" count(1) > 1 ")
+                ).size()
+        );
+        //鏈湀鐧诲綍2娆″強浠ヤ笂浼佷笟鏁�(缇氱緤)锛氱粺璁℃湰鏈堬紙鑷劧鏈堬級鐧诲綍2娆″強浠ヤ笂锛堢櫥褰曟潵婧愪簬缇氱緤骞冲彴锛夌殑浼佷笟鏁帮紝閫昏緫鍚屼笂锛�
+        stagingLoginVO.setMonthTwoCompanyLYNum(
+                systemLoginLogMapper.selectList(new QueryWrapper<SystemLoginLog>()
+                        .select(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_ID ")
+                        .isNotNull(" COMPANY_USER_ID ")
+                        .apply(" LOGIN_TIME like concat(date_format(NOW(), '%Y-%m'),'%') ")
+                        .eq("ORGIN",2)
+                        .groupBy(" COMPANY_ID ")
+                        .having(" count(1) > 1 ")
+                ).size()
+        );
+        return stagingLoginVO;
+    }
+
+
+
 }
diff --git a/server/src/main/java/doumeemes/service/system/impl/SystemUserServiceImpl.java b/server/src/main/java/doumeemes/service/system/impl/SystemUserServiceImpl.java
index 5ed1023..229dc43 100644
--- a/server/src/main/java/doumeemes/service/system/impl/SystemUserServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/system/impl/SystemUserServiceImpl.java
@@ -4,6 +4,10 @@
 import com.github.pagehelper.PageInfo;
 import doumeemes.core.model.PageData;
 import doumeemes.core.model.PageWrap;
+import doumeemes.dao.ext.dto.ActivityLoginDTO;
+import doumeemes.dao.ext.dto.CompanyLoginDTO;
+import doumeemes.dao.ext.vo.ActivityLoginVO;
+import doumeemes.dao.ext.vo.CompanyLoginStatisticsVO;
 import doumeemes.dao.system.SystemUserMapper;
 import doumeemes.dao.system.dto.QuerySystemUserDTO;
 import doumeemes.dao.system.model.SystemUser;
@@ -188,4 +192,21 @@
             injectIds(pool, child);
         }
     }
+
+
+
+    @Override
+    public List<ActivityLoginVO> activityLoginVOList(ActivityLoginDTO activityLoginDTO) {
+        return systemUserMapper.activityLoginVOList(activityLoginDTO);
+    }
+
+
+
+    @Override
+    public PageData<CompanyLoginStatisticsVO> companyLoginStatisticsPage(PageWrap<CompanyLoginDTO> pageWrap) {
+        // 鎵ц鏌ヨ
+        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+        List<CompanyLoginStatisticsVO> companyLoginStatisticsList = systemUserMapper.companyLoginStatisticsList(pageWrap.getModel());
+        return PageData.from(new PageInfo<>(companyLoginStatisticsList));
+    }
 }
diff --git a/server/src/main/resources/mappers/SystemUserMapper.xml b/server/src/main/resources/mappers/SystemUserMapper.xml
index b9d9982..3bacf5c 100644
--- a/server/src/main/resources/mappers/SystemUserMapper.xml
+++ b/server/src/main/resources/mappers/SystemUserMapper.xml
@@ -18,6 +18,7 @@
       <result column="UPDATE_USER_NAME" property="username"/>
     </association>
   </resultMap>
+
   <select id="selectManageList" parameterType="doumeemes.dao.system.dto.QuerySystemUserDTO" resultMap="SystemUserListVO">
     SELECT
       DISTINCT
@@ -65,4 +66,55 @@
     ${orderByClause}
   </select>
 
+
+  <resultMap id="ActivityLoginVO" type="doumeemes.dao.ext.vo.ActivityLoginVO" autoMapping="true">
+    <id column="ID" property="id"/>
+  </resultMap>
+
+  <select id="activityLoginVOList" parameterType="doumeemes.dao.ext.dto.ActivityLoginDTO" resultMap="ActivityLoginVO">
+    select a.DATA_DATE , count(1)  as dayActiveUserNum from ( SELECT DATE_FORMAT( DATE_ADD(CONCAT(#{dto.startDate}), INTERVAL(help_topic_id) DAY),'%Y-%m-%d')  DATA_DATE
+    FROM mysql.help_topic
+    WHERE  TIMESTAMPDIFF(DAY,CONCAT(#{dto.startDate}),CONCAT(#{dto.endDate})) > help_topic_id )  a
+    left join
+    ( SELECT  s.*   FROM `system_login_log` s where s.COMPANY_ID is not null and s.COMPANY_USER_ID is not null
+      <if test="dto.orgin != null">
+        AND s.orgin = #{dto.orgin}
+      </if>
+        ) b
+    on a.DATA_DATE = date_format(b.LOGIN_TIME , '%Y-%m-%d')
+    where 1 = 1
+    group by a.DATA_DATE
+  </select>
+
+
+
+  <resultMap id="CompanyLoginStatisticsVO" type="doumeemes.dao.ext.vo.CompanyLoginStatisticsVO" autoMapping="true">
+    <id column="ID" property="id"/>
+  </resultMap>
+
+  <select id="companyLoginStatisticsList" parameterType="doumeemes.dao.ext.dto.CompanyLoginDTO" resultMap="CompanyLoginStatisticsVO">
+    SELECT date_format(s.LOGIN_TIME, '%Y-%m-%d') as dataDate ,c.`NAME` as companyName ,s.orgin , count(1)  as loginNum
+    FROM `system_login_log` s left join company c on s.COMPANY_ID = c.ID
+    <where>
+      s.COMPANY_ID is not null
+      <if test="dto.orgin != null">
+        AND s.orgin = #{dto.orgin}
+      </if>
+
+      <if test="dto.companyName != null and dto.companyName != ''">
+        AND c.`NAME` LIKE CONCAT('%', #{dto.companyName}, '%')
+      </if>
+
+      <if test="dto.queryMonth != null and dto.queryMonth != ''">
+        AND s.LOGIN_TIME LIKE CONCAT('%', #{dto.queryMonth}, '%')
+      </if>
+
+    </where>
+
+    group by S.COMPANY_ID , date_format(s.LOGIN_TIME, '%Y-%m-%d') ,c.`NAME` ,s.orgin
+
+    order by s.LOGIN_TIME  desc , c.`NAME` desc
+  </select>
+
+
 </mapper>

--
Gitblit v1.9.3