Browse Source

代码优化-app端添加mac地址;统计接口优化

wangchangsheng 2 years ago
parent
commit
2bdb0bb087
17 changed files with 188 additions and 20 deletions
  1. 22 0
      exam-06173-api/src/main/java/com/gyee/boot/base/api/api/dto/BaseFlagReqDTO.java
  2. 6 0
      exam-06173-api/src/main/java/com/gyee/boot/base/api/utils/IpUtils.java
  3. 6 0
      exam-06173-api/src/main/java/com/gyee/exam/ability/face/enums/FaceProvider.java
  4. 8 0
      exam-06173-api/src/main/java/com/gyee/exam/ability/face/factory/FaceFactory.java
  5. 44 0
      exam-06173-api/src/main/java/com/gyee/exam/ability/face/provides/local/service/impl/LocalFaceServiceImpl.java
  6. 8 1
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/mapper/ExamMapper.java
  7. 37 3
      exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/impl/ExamServiceImpl.java
  8. 1 1
      exam-06173-api/src/main/java/com/gyee/exam/modules/sys/config/service/impl/CfgFaceServiceImpl.java
  9. 6 4
      exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/controller/SysDepartController.java
  10. 3 0
      exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/dto/request/DepartQueryReqDTO.java
  11. 3 1
      exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/service/SysDepartService.java
  12. 3 2
      exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/service/impl/SysDepartServiceImpl.java
  13. 6 6
      exam-06173-api/src/main/resources/application-dev.yml
  14. 1 1
      exam-06173-api/src/main/resources/application-uat.yml
  15. 1 1
      exam-06173-api/src/main/resources/application.yml
  16. 29 0
      exam-06173-api/src/main/resources/mapper/exam/ExamMapper.xml
  17. 4 0
      exam-06173-api/src/main/resources/mapper/sys/depart/SysDepartMapper.xml

+ 22 - 0
exam-06173-api/src/main/java/com/gyee/boot/base/api/api/dto/BaseFlagReqDTO.java

@@ -0,0 +1,22 @@
+package com.gyee.boot.base.api.api.dto;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * <p>
+ * dataFlag通用请求类
+ * </p>
+ *
+ * @author 聪明笨狗
+ * @since 2022-09-20 12:15
+ */
+@Data
+@ApiModel(value="dataFlag通用请求类", description="dataFlag通用请求类")
+public class BaseFlagReqDTO {
+
+    @ApiModelProperty(value = "数据标记")
+    private String flag;
+}

+ 6 - 0
exam-06173-api/src/main/java/com/gyee/boot/base/api/utils/IpUtils.java

@@ -25,6 +25,9 @@ public class IpUtils {
 
 		String ip = null;
 
+
+		String mac = request.getHeader("mac");
+
 		//X-Forwarded-For:Squid 服务代理
 		String ipAddresses = request.getHeader("X-Forwarded-For");
 
@@ -58,6 +61,9 @@ public class IpUtils {
 			ip = request.getRemoteAddr();
 		}
 
+		if (null != mac && mac.length()>0){
+			ip = ip+"|"+mac;
+		}
 		return ip;
 	}
 

+ 6 - 0
exam-06173-api/src/main/java/com/gyee/exam/ability/face/enums/FaceProvider.java

@@ -20,4 +20,10 @@ public interface FaceProvider {
      * 腾讯云
      */
     String TENCENT = "tencent";
+
+
+    /**
+     * 本地
+     */
+    String LOCAL = "local";
 }

+ 8 - 0
exam-06173-api/src/main/java/com/gyee/exam/ability/face/factory/FaceFactory.java

@@ -9,6 +9,7 @@ import com.gyee.exam.modules.sys.config.enums.FuncSwitch;
 import com.gyee.exam.modules.sys.config.service.CfgFaceService;
 import com.gyee.exam.modules.sys.config.service.CfgSwitchService;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
 @Service
@@ -27,6 +28,9 @@ public class FaceFactory {
     private ThirdFaceService tencentFaceService;
 
     @Autowired
+    private ThirdFaceService localFaceService;
+
+    @Autowired
     private EmptyFaceService emptyFaceService;
 
     @Autowired
@@ -63,6 +67,10 @@ public class FaceFactory {
             return tencentFaceService;
         }
 
+        if(FaceProvider.LOCAL.equalsIgnoreCase(dto.getProvider())){
+            return localFaceService;
+        }
+
         throw new ServiceException("人脸服务商配置不正确!");
 
     }

+ 44 - 0
exam-06173-api/src/main/java/com/gyee/exam/ability/face/provides/local/service/impl/LocalFaceServiceImpl.java

@@ -0,0 +1,44 @@
+package com.gyee.exam.ability.face.provides.local.service.impl;
+
+import com.gyee.exam.ability.face.service.ThirdFaceService;
+import com.gyee.exam.modules.sys.config.service.CfgFaceService;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+@Log4j2
+@Service("localFaceService")
+public class LocalFaceServiceImpl implements ThirdFaceService {
+
+
+
+    @Autowired
+    private CfgFaceService cfgFaceService;
+
+
+    @Override
+    public void addFace(String imageType, String image, String userId) {
+
+    }
+
+    @Override
+    public void deleteFace(String userId) {
+
+    }
+
+    @Override
+    public void updateFace(String imageType, String image, String userId) {
+
+    }
+
+    @Override
+    public String searchFace(String imageType, String image) {
+        return null;
+    }
+
+    @Override
+    public void mergeFace(boolean isAdd, String oldFace, String newFace, String userId) {
+
+    }
+}

+ 8 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/mapper/ExamMapper.java

@@ -48,12 +48,19 @@ public interface ExamMapper extends BaseMapper<Exam> {
 
 
     /**
-     * 部门培训统计
+     * 部门考试统计
      * @param reqDTO
      * @return
      */
     List<ExamDepartTotalDTO> examDepartTotal(@Param("query") BaseQueryReqDTO reqDTO);
 
+    /**
+     * 部门考试统计
+     * @param reqDTO
+     * @return
+     */
+    List<ExamDepartTotalDTO> selectUserTotal(@Param("query") BaseQueryReqDTO reqDTO);
+
 
     List<ExamDepartidTotalDTO> selectExamDepartidTotal(@Param("query") BaseQueryReqDTO reqDTO);
 

+ 37 - 3
exam-06173-api/src/main/java/com/gyee/exam/modules/exam/service/impl/ExamServiceImpl.java

@@ -10,6 +10,7 @@ import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.boot.base.api.exception.ServiceException;
 import com.gyee.boot.base.api.utils.BeanMapper;
 import com.gyee.exam.modules.course.dto.request.CheckUserCourseStatDTO;
+import com.gyee.exam.modules.ectotal.dto.response.ExamAndCourseDepartTotalDTO;
 import com.gyee.exam.modules.exam.dto.response.*;
 import com.gyee.exam.modules.stat.course.dto.response.StatCourseLearnDTO;
 import com.gyee.exam.modules.stat.course.service.StatCourseService;
@@ -35,7 +36,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
 * <p>
@@ -252,9 +256,39 @@ public class ExamServiceImpl extends ServiceImpl<ExamMapper, Exam> implements Ex
     @Override
     public List<ExamDepartTotalDTO> examDepartTotal(BaseQueryReqDTO reqDTO) {
 
-        List<ExamDepartTotalDTO> dtos = baseMapper.examDepartTotal(reqDTO);
-
-        return dtos;
+        List<ExamDepartTotalDTO> examList = baseMapper.examDepartTotal(reqDTO);
+        List<ExamDepartTotalDTO> userList = baseMapper.selectUserTotal(reqDTO);
+        List<String> exams = examList.stream().map(ExamDepartTotalDTO::getDeptCode).collect(Collectors.toList());
+        List<String> users = userList.stream().map(ExamDepartTotalDTO::getDeptCode).collect(Collectors.toList());
+//        exams.addAll(users);
+//        List<String> listAll = exams.stream().distinct().collect(Collectors.toList());
+//
+//        List<ExamDepartTotalDTO> allDtos = new ArrayList<>();
+        ExamDepartTotalDTO totalDTO = null;
+        Map<String, List<ExamDepartTotalDTO>> groupexam = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
+        Map<String, List<ExamDepartTotalDTO>> groupuser = examList.stream().collect(Collectors.groupingBy(ExamDepartTotalDTO::getDeptCode));
+//        for(int i = 0; i < listAll.size(); i++){
+//
+//            totalDTO = new ExamDepartTotalDTO();
+//            List<ExamDepartTotalDTO> dept = groupexam.get(i) == null ? null :groupexam.get(i);
+//            if (null != dept && dept.size() == 1){
+//                totalDTO.setDeptCode(groupexam.get(i).get(0).getDeptCode());
+//            }
+//
+//
+//        }
+        examList.addAll(userList);
+        List<String> intersection = exams.stream().filter(users::contains).collect(Collectors.toList());
+        for (int i = 0; i < intersection.size(); i++){
+            totalDTO = new ExamDepartTotalDTO();
+            totalDTO.setDeptCode(groupexam.get(i).get(0).getDeptCode());
+            totalDTO.setDeptName(groupexam.get(i).get(0).getDeptName());
+            totalDTO.setEeActualUser(groupexam.get(i).get(0).getEeActualUser()+groupuser.get(i).get(0).getEeActualUser());
+            totalDTO.setEePassUser(groupexam.get(i).get(0).getEePassUser()+groupuser.get(i).get(0).getEePassUser());
+            totalDTO.setEeTotalUser(groupexam.get(i).get(0).getEeTotalUser()+groupuser.get(i).get(0).getEeTotalUser());
+            examList.add(totalDTO);
+        }
+        return examList;
     }
 
     @Override

+ 1 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/sys/config/service/impl/CfgFaceServiceImpl.java

@@ -49,7 +49,7 @@ public class CfgFaceServiceImpl extends ServiceImpl<CfgFaceMapper, CfgFace> impl
 
     }
 
-    @Cacheable(value = CacheKey.FACE, key = "#provider")
+    //@Cacheable(value = CacheKey.FACE, key = "#provider")
     @Override
     public CfgFaceDTO detail(String provider) {
 

+ 6 - 4
exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/controller/SysDepartController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.gyee.boot.base.api.annon.LogInject;
 import com.gyee.boot.base.api.api.ApiRest;
 import com.gyee.boot.base.api.api.controller.BaseController;
+import com.gyee.boot.base.api.api.dto.BaseFlagReqDTO;
 import com.gyee.boot.base.api.api.dto.BaseIdReqDTO;
 import com.gyee.boot.base.api.api.dto.BaseIdsReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
@@ -108,8 +109,8 @@ public class SysDepartController extends BaseController {
      */
     @ApiOperation(value = "树列表")
     @PostMapping("/tree")
-    public ApiRest<List<SysDepartTreeDTO>> tree() {
-        List<SysDepartTreeDTO> dtoList = baseService.findTree(true);
+    public ApiRest<List<SysDepartTreeDTO>> tree(@RequestBody BaseFlagReqDTO dto) {
+        List<SysDepartTreeDTO> dtoList = baseService.findTree(true,dto);
         return super.success(dtoList);
     }
 
@@ -120,11 +121,12 @@ public class SysDepartController extends BaseController {
      */
     @ApiOperation(value = "部门树-注册用")
     @PostMapping( "/tree-select")
-    public ApiRest<List<SysDepartTreeDTO>> treeSelect() {
-        List<SysDepartTreeDTO> dtoList = baseService.findTree(false);
+    public ApiRest<List<SysDepartTreeDTO>> treeSelect(@RequestBody BaseFlagReqDTO dto) {
+        List<SysDepartTreeDTO> dtoList = baseService.findTree(false,dto);
         return super.success(dtoList);
     }
 
+
     /**
      * 分类排序
      * @param reqDTO

+ 3 - 0
exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/dto/request/DepartQueryReqDTO.java

@@ -35,4 +35,7 @@ public class DepartQueryReqDTO implements Serializable {
 
     @ApiModelProperty(value = "部门名称")
     private String deptName;
+
+    @ApiModelProperty(value = "数据标记")
+    private String flag;
 }

+ 3 - 1
exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/service/SysDepartService.java

@@ -2,6 +2,7 @@ package com.gyee.exam.modules.sys.depart.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.gyee.boot.base.api.api.dto.BaseFlagReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.exam.modules.sys.depart.dto.SysDepartDTO;
 import com.gyee.exam.modules.sys.depart.dto.request.DepartQueryReqDTO;
@@ -37,7 +38,8 @@ public interface SysDepartService extends IService<SysDepart> {
      * 查找部门树结构
      * @return
      */
-    List<SysDepartTreeDTO> findTree(boolean self);
+    List<SysDepartTreeDTO> findTree(boolean self, BaseFlagReqDTO dto);
+
 
     /**
      * 排序

+ 3 - 2
exam-06173-api/src/main/java/com/gyee/exam/modules/sys/depart/service/impl/SysDepartServiceImpl.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gyee.boot.base.api.api.dto.BaseFlagReqDTO;
 import com.gyee.boot.base.api.api.dto.PagingReqDTO;
 import com.gyee.boot.base.api.exception.ServiceException;
 import com.gyee.boot.base.api.utils.BeanMapper;
@@ -100,13 +101,13 @@ public class SysDepartServiceImpl extends ServiceImpl<SysDepartMapper, SysDepart
 
 
     @Override
-    public List<SysDepartTreeDTO> findTree(boolean self) {
+    public List<SysDepartTreeDTO> findTree(boolean self, BaseFlagReqDTO dto) {
         Page page = new Page<>();
         page.setCurrent(1);
         page.setSize(1000);
 
         DepartQueryReqDTO reqDTO = new DepartQueryReqDTO();
-
+        reqDTO.setFlag(dto.getFlag());
         // 构建权限
         if(self) {
             this.appendDeptQuery(reqDTO);

+ 6 - 6
exam-06173-api/src/main/resources/application-dev.yml

@@ -1,13 +1,13 @@
 spring:
-#  123.60.213.70
+#  124.70.18.168
   # 数据库配置
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driver-class-name: com.mysql.cj.jdbc.Driver
     #国电考培服务器
-    #url: jdbc:mysql://10.155.32.18:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+    #url: jdbc:mysql://124.70.18.168:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
     #华为云
-    url: jdbc:mysql://123.60.213.70:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
+    url: jdbc:mysql://124.70.18.168:3306/yf_exam?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true
     username: root
     password: 123456
     filters: stat
@@ -28,9 +28,9 @@ spring:
   redis:
     database: 0
     #国电考培服务器
-    #host: 10.155.32.18
+    #host: 124.70.18.168
     #华为云
-    host: 123.60.213.70
+    host: 124.70.18.168
     port: 6379
     password: gdnxfd123
     timeout: 5000
@@ -97,5 +97,5 @@ swagger:
 
 logging:
   level:
-    root: info
+    root: debug
   path: logs/${spring.application.name}/

+ 1 - 1
exam-06173-api/src/main/resources/application-uat.yml

@@ -93,5 +93,5 @@ swagger:
 
 logging:
   level:
-    root: info
+    root: debug
   path: logs/${spring.application.name}/

+ 1 - 1
exam-06173-api/src/main/resources/application.yml

@@ -2,7 +2,7 @@ spring:
   application:
     name: gyee-exam-api
   profiles:
-      active: dev
+      active: uat
   main:
     allow-bean-definition-overriding: true
 server:

+ 29 - 0
exam-06173-api/src/main/resources/mapper/exam/ExamMapper.xml

@@ -234,6 +234,34 @@
 
     </select>
 
+
+    <select id="selectUserTotal" resultType="com.gyee.exam.modules.exam.dto.response.ExamDepartTotalDTO">
+
+
+        SELECT
+        uc.dept_code,
+        sd.dept_name,
+        COUNT( ps.user_id) eeTotalUser,
+        COUNT( ep.id ) eeActualUser,
+        IFNULL( sum( ep.passed ), 0 ) eePassUser
+        FROM el_exam_person ps
+        INNER JOIN el_exam ee on ee.id = ps.exam_id
+        INNER JOIN sys_user uc ON ps.user_id = uc.id
+        INNER JOIN sys_depart sd on sd.dept_code = uc.dept_code
+        LEFT JOIN el_paper ep on ep.user_id = ps.user_id AND ep.exam_id = ps.exam_id
+
+        <if test="query.statDateL!=null ">
+            AND ep.create_time >=  #{query.statDateL}
+        </if>
+
+        <if test="query.statDateR!=null ">
+            AND ep.limit_time &lt; #{query.statDateR}
+        </if>
+
+        GROUP BY uc.dept_code
+
+    </select>
+
     <select id="selectExamDepartidTotal"
             resultType="com.gyee.exam.modules.exam.dto.response.ExamDepartidTotalDTO">
                 SELECT
@@ -373,4 +401,5 @@
 
     </select>
 
+
 </mapper>

+ 4 - 0
exam-06173-api/src/main/resources/mapper/sys/depart/SysDepartMapper.xml

@@ -66,6 +66,10 @@
             <if test="query.deptName!=null and query.deptName!=''">
                 AND dp.dept_name LIKE '%${query.deptName}%'
             </if>
+
+            <if test="query.flag!=null and query.flag!=''">
+                AND dp.data_flag LIKE '%${query.flag}%'
+            </if>
         </if>
 
         ORDER BY `sort` ASC