Просмотр исходного кода

Merge branch 'master' of https://e.coding.net/chuanghaikeji/smartCampus/backend_code

夏文涛 2 лет назад
Родитель
Сommit
4cf94e6046
35 измененных файлов с 522 добавлено и 28 удалено
  1. 3 0
      src/main/java/com/template/api/HikvisionAPI.java
  2. 4 0
      src/main/java/com/template/api/LogInfoControllerAPI.java
  3. 17 0
      src/main/java/com/template/api/ScreenMonitorsControllerAPI.java
  4. 18 0
      src/main/java/com/template/api/SmartAskForLeaveConfigControllerAPI.java
  5. 13 0
      src/main/java/com/template/api/SmartAttendanceControllerAPI.java
  6. 5 0
      src/main/java/com/template/api/SmartAuthorGroupControllerAPI.java
  7. 16 13
      src/main/java/com/template/common/utils/GetCameraPreviewURL.java
  8. 12 6
      src/main/java/com/template/controller/HikvisionController.java
  9. 46 0
      src/main/java/com/template/controller/LogInfoController.java
  10. 14 0
      src/main/java/com/template/controller/ScreenMonitorsController.java
  11. 29 0
      src/main/java/com/template/controller/SmartAskForLeaveConfigController.java
  12. 15 0
      src/main/java/com/template/controller/SmartAttendanceController.java
  13. 31 2
      src/main/java/com/template/controller/SmartAuthorGroupController.java
  14. 7 0
      src/main/java/com/template/controller/SmartAuthorityController.java
  15. 33 1
      src/main/java/com/template/controller/SmartFaceDiscernController.java
  16. 1 0
      src/main/java/com/template/controller/Task.java
  17. 18 0
      src/main/java/com/template/mapper/SmartAskForLeaveConfigMapper.java
  18. 5 0
      src/main/java/com/template/mapper/SmartAttendanceMapper.java
  19. 1 0
      src/main/java/com/template/mapper/SmartAuthorGroupMapper.java
  20. 16 0
      src/main/java/com/template/model/enumModel/eIfVerification.java
  21. 61 0
      src/main/java/com/template/model/pojo/SmartAskForLeaveConfig.java
  22. 4 1
      src/main/java/com/template/model/pojo/SmartAttendance.java
  23. 40 0
      src/main/java/com/template/model/vo/AskForLeaveVo.java
  24. 16 0
      src/main/java/com/template/services/SmartAskForLeaveConfigService.java
  25. 4 0
      src/main/java/com/template/services/SmartAttendanceService.java
  26. 1 0
      src/main/java/com/template/services/SmartAuthorGroupService.java
  27. 1 0
      src/main/java/com/template/services/SmartAuthorityService.java
  28. 20 0
      src/main/java/com/template/services/impl/SmartAskForLeaveConfigServiceImpl.java
  29. 12 3
      src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java
  30. 5 0
      src/main/java/com/template/services/impl/SmartAuthorGroupServiceImpl.java
  31. 10 0
      src/main/java/com/template/services/impl/SmartAuthorityServiceImpl.java
  32. 1 1
      src/main/java/com/template/services/impl/SmartFaceDiscernServiceImpl.java
  33. 3 1
      src/main/java/com/template/services/impl/SmartUserServiceImpl.java
  34. 32 0
      src/main/resources/mapper/template/SmartAttendanceMapper.xml
  35. 8 0
      src/main/resources/mapper/template/SmartAuthorGroupMapper.xml

+ 3 - 0
src/main/java/com/template/api/HikvisionAPI.java

@@ -12,12 +12,15 @@ import org.springframework.web.bind.annotation.RequestMapping;
 @RequestMapping({"/eventRcv"})
 @Api(tags = {"HikvisionController"}, value = "海康威视回调地址")
 public interface HikvisionAPI {
+//    事件订阅
     @PostMapping({"/subscription"})
     void subscription(HttpServletRequest request);
 
+//    人脸比对
     @PostMapping({"/faceComparison"})
     void faceComparison(HttpServletRequest request);
 
+    //重点人员
     @PostMapping({"/emphasisFace"})
     void emphasisFace(HttpServletRequest request);
 

+ 4 - 0
src/main/java/com/template/api/LogInfoControllerAPI.java

@@ -18,4 +18,8 @@ public interface LogInfoControllerAPI {
     @PostMapping("/logIn")
     @ApiOperation(value = "短信验证",httpMethod = "POST")
     CommonResult logInfo(String phone,String code);
+
+    @PostMapping("/verification")
+    @ApiOperation(value = "验证",httpMethod = "POST")
+    CommonResult verification(String phone,String code);
 }

+ 17 - 0
src/main/java/com/template/api/ScreenMonitorsControllerAPI.java

@@ -0,0 +1,17 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Api(tags = {"ScreenMonitorsController"}, value = "大屏接口")
+@RequestMapping("/api/screenMonitors")
+public interface ScreenMonitorsControllerAPI {
+
+    @GetMapping("/homePage")
+    @ApiOperation(value = "首页信息", notes = "首页信息",httpMethod = "GET")
+    CommonResult homePage();
+}

+ 18 - 0
src/main/java/com/template/api/SmartAskForLeaveConfigControllerAPI.java

@@ -0,0 +1,18 @@
+package com.template.api;
+
+import com.template.model.result.CommonResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@RequestMapping("/auto/smartAskForLeaveConfig")
+public interface SmartAskForLeaveConfigControllerAPI {
+
+    @GetMapping(value = "/list")
+    @ApiOperation(value = "请假配置展示", notes = "请假配置展示", httpMethod = "GET")
+    CommonResult list();
+
+
+
+}

+ 13 - 0
src/main/java/com/template/api/SmartAttendanceControllerAPI.java

@@ -72,4 +72,17 @@ public interface SmartAttendanceControllerAPI {
     @ApiOperation(value = "历史出勤", notes = "历史出勤", httpMethod = "GET")
     CommonResult historicalAttendance(@RequestParam int userId,@RequestParam String dateTime);
 
+    /**
+     * 请假管理
+     * @param name
+     * @param cardNo
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    @GetMapping(value = "/askForLeavePage")
+    @ApiOperation(value = "请假管理", notes = "请假管理", httpMethod = "GET")
+    CommonResult askForLeavePage(@RequestParam int currentPage, @RequestParam int pageCount,String name,String cardNo,String startTime,String endTime,Integer ifVerification);
+
+
 }

+ 5 - 0
src/main/java/com/template/api/SmartAuthorGroupControllerAPI.java

@@ -72,4 +72,9 @@ public interface SmartAuthorGroupControllerAPI {
     @RequestMapping(value = "/deleteSmartAuthorGroupById")
     @ApiOperation(value = "根据ID删除指定权限组", notes = "根据ID删除指定权限组", httpMethod = "GET")
     CommonResult deleteSmartAuthorGroupById(@RequestParam int id);
+
+    @GetMapping(value = "/getClassById")
+    @ApiOperation(value = "根据userHead获取所管理的班级", notes = "根据userHead获取所管理的班级", httpMethod = "GET")
+    CommonResult getClassById(@RequestParam String userHead);
+
 }

+ 16 - 13
src/main/java/com/template/common/utils/GetCameraPreviewURL.java

@@ -25,9 +25,10 @@ public class GetCameraPreviewURL {
     }
 
     public static String GetCameraPreviewURL() {
-        ArtemisConfig.host = "192.168.161.72:443";
-        ArtemisConfig.appKey = "29849943";
-        ArtemisConfig.appSecret = "e1eXZtEvJhi4waZmSgmd";
+//        ArtemisConfig.host = "192.168.161.72:443";
+        ArtemisConfig.host = "172.16.7.200:443";
+        ArtemisConfig.appKey = "22263265";
+        ArtemisConfig.appSecret = "fPjOY3vB865ACoQNj6yj";
         String ARTEMIS_PATH = "/artemis";
         String previewURLsApi = "/artemis/api/eventService/v1/eventSubscriptionByEventTypes";
         Map<String, String> path = new HashMap<String, String>(2) {
@@ -47,9 +48,10 @@ public class GetCameraPreviewURL {
     }
 
     public static String CameraPreviewURL(String url, JSONObject jsonBody) {
-        ArtemisConfig.host = "192.168.161.72:443";
-        ArtemisConfig.appKey = "29849943";
-        ArtemisConfig.appSecret = "e1eXZtEvJhi4waZmSgmd";
+//        ArtemisConfig.host = "192.168.161.72:443";
+        ArtemisConfig.host = "172.16.7.200:443";
+        ArtemisConfig.appKey = "22263265";
+        ArtemisConfig.appSecret = "fPjOY3vB865ACoQNj6yj";
         String ARTEMIS_PATH = "/artemis";
         final String previewURLsApi = "/artemis" + url;
         Map<String, String> path = new HashMap<String, String>(2) {
@@ -64,9 +66,10 @@ public class GetCameraPreviewURL {
     }
 
     public static String CameraPreviewURL2(String url, JSONArray jsonBody) {
-        ArtemisConfig.host = "192.168.161.72:443";
-        ArtemisConfig.appKey = "29849943";
-        ArtemisConfig.appSecret = "e1eXZtEvJhi4waZmSgmd";
+//        ArtemisConfig.host = "192.168.161.72:443";
+        ArtemisConfig.host = "172.16.7.200:443";
+        ArtemisConfig.appKey = "22263265";
+        ArtemisConfig.appSecret = "fPjOY3vB865ACoQNj6yj";
         String ARTEMIS_PATH = "/artemis";
         final String previewURLsApi = "/artemis" + url;
         Map<String, String> path = new HashMap<String, String>(2) {
@@ -84,16 +87,16 @@ public class GetCameraPreviewURL {
         JSONObject jsonBody = new JSONObject();
 
 //        人脸比对
-//        int[] ingArr=new int[]{131659};
+        int[] ingArr=new int[]{131659};
 //        String url = "http://192.168.161.224:8080/wanzai/eventRcv/faceComparison";
 //        String url = "https://www.campussmartlife.com/smartApi/wanzai/eventRcv/faceComparison";
-//        String url = "http://122.51.35.116:8080/wanzai/eventRcv/faceComparison";
+        String url = "http://122.51.35.116:8080/wanzai/eventRcv/faceComparison";
 
 //        区域入侵,进入区域,离开区域,倒地
-        int[] ingArr=new int[]{131588,131586,131587,131605};
+//        int[] ingArr=new int[]{131588,131586,131587,131605};
 //        String url = "http://192.168.161.224:8080/wanzai/eventRcv/subscription";
 //        String url = "https://www.campussmartlife.com/smartApi/wanzai/eventRcv/subscription";
-        String url = "http://122.51.35.116:8080/wanzai/eventRcv/subscription";
+//        String url = "http://122.51.35.116:8080/wanzai/eventRcv/subscription";
 
 //        重点人员识别事件
 //        int[] ingArr = new int[]{1644175361};

+ 12 - 6
src/main/java/com/template/controller/HikvisionController.java

@@ -17,6 +17,8 @@ import com.template.services.SmartNotificationService;
 import com.template.services.SmartUserService;
 import com.template.services.SmartWarningService;
 import org.aspectj.weaver.ast.Var;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -32,6 +34,7 @@ import java.util.List;
 @DESRespondSecret
 public class HikvisionController implements HikvisionAPI {
 
+    private static Logger logger = LoggerFactory.getLogger(HikvisionController.class);
     @Autowired
     SmartWarningService smartWarningService;
 
@@ -234,17 +237,20 @@ public class HikvisionController implements HikvisionAPI {
                     JSONObject reserve_field = jsonObject5.getJSONObject("reserve_field");
 //                    证件号
                     String certificateNumber = reserve_field.getString("certificateNumber");
+                    logger.info("证件号 = " + certificateNumber);
 //                    名字
                     String name = reserve_field.getString("name");
+                    logger.info("名字 = " + name);
+
                     smartFaceDiscern.setName(name);
 
 //                   通过身份证,学号查询是谁
-                    SmartUser one = smartUserService.getCard(certificateNumber);
-                    if (ObjectUtils.isNotEmpty(one)) {
-                        smartFaceDiscern.setUserId(one.getId());
-                    }
-
-                    smartFaceDiscernService.save(smartFaceDiscern);
+//                    SmartUser one = smartUserService.getCard(certificateNumber);
+//                    if (ObjectUtils.isNotEmpty(one)) {
+//                        smartFaceDiscern.setUserId(one.getId());
+//                    }
+                    logger.info("smartFaceDiscern = " + smartFaceDiscern);
+//                    smartFaceDiscernService.save(smartFaceDiscern);
 
                 }
 

+ 46 - 0
src/main/java/com/template/controller/LogInfoController.java

@@ -1,14 +1,27 @@
 package com.template.controller;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.template.annotation.DESRespondSecret;
 import com.template.annotation.PassToken;
 import com.template.api.LogInfoControllerAPI;
+import com.template.common.utils.AesUtils;
+import com.template.common.utils.JWTUtil;
+import com.template.model.pojo.SmartUser;
+import com.template.model.pojo.SmsCode;
+import com.template.model.pojo.SystemUser;
 import com.template.model.result.CommonResult;
+import com.template.model.vo.LoginVO;
+import com.template.services.SmartUserService;
 import com.template.services.impl.SmsCodeServiceImpl;
 import com.template.services.impl.SystemUserServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Date;
+import java.util.List;
+
 @RestController
 //返回参数加密注解
 @DESRespondSecret
@@ -21,6 +34,9 @@ public class LogInfoController implements LogInfoControllerAPI {
     @Autowired
     SmsCodeServiceImpl smsCodeService;
 
+    @Autowired
+    SmartUserService smartUserService;
+
     @Override
     @PassToken
     @DESRespondSecret(validated = true)
@@ -34,4 +50,34 @@ public class LogInfoController implements LogInfoControllerAPI {
     public CommonResult logInfo(String phone, String code) {
         return smsCodeService.logIn(phone, code);
     }
+
+    @Override
+    public CommonResult verification(String phone, String code) {
+        QueryWrapper<SmsCode> queryWrapper1 = new QueryWrapper<>();
+        queryWrapper1.eq("deleted", 0);
+        queryWrapper1.eq("is_verify", 0);
+        queryWrapper1.eq("phone_number", phone);
+        queryWrapper1.eq("code", code);
+        queryWrapper1.ge("expiration_time", new Date());
+        List<SmsCode> listc = smsCodeService.getSmsCodeByKey(queryWrapper1);
+        if (listc.isEmpty()) {
+            return CommonResult.ok("验证码已失效");
+        }
+//        核销验证码
+        for (SmsCode smsCode : listc) {
+            smsCode.setIsVerify("1");
+            smsCodeService.updateSmsCode(smsCode);
+        }
+        // 登录成功,生成token
+        LambdaQueryWrapper<SmartUser> wrapper2 = new LambdaQueryWrapper<>();
+        wrapper2.eq(SmartUser::getPhone, phone);
+        SmartUser one1 = smartUserService.getOne(wrapper2);
+        long expired = 1000 * 60 * 60 * 24;
+        String token = JWTUtil.getToken(one1,expired);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("token", token);
+        jsonObject.put("user", one1);
+        jsonObject.put("userhead", AesUtils.encrypt(String.valueOf(one1.getId())));
+        return CommonResult.ok(jsonObject);
+    }
 }

+ 14 - 0
src/main/java/com/template/controller/ScreenMonitorsController.java

@@ -0,0 +1,14 @@
+package com.template.controller;
+
+import com.template.api.ScreenMonitorsControllerAPI;
+import com.template.model.result.CommonResult;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class ScreenMonitorsController implements ScreenMonitorsControllerAPI {
+
+    @Override
+    public CommonResult homePage() {
+        return null;
+    }
+}

+ 29 - 0
src/main/java/com/template/controller/SmartAskForLeaveConfigController.java

@@ -0,0 +1,29 @@
+package com.template.controller;
+
+import com.template.api.SmartAskForLeaveConfigControllerAPI;
+import com.template.model.pojo.SmartAskForLeaveConfig;
+import com.template.model.result.CommonResult;
+import com.template.services.SmartAskForLeaveConfigService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@RestController
+public class SmartAskForLeaveConfigController implements SmartAskForLeaveConfigControllerAPI {
+
+    @Autowired
+    SmartAskForLeaveConfigService smartAskForLeaveConfigService;
+
+    @Override
+    public CommonResult list() {
+        return null;
+    }
+}
+

+ 15 - 0
src/main/java/com/template/controller/SmartAttendanceController.java

@@ -15,11 +15,13 @@ import com.template.config.ControlConfig;
 import com.template.config.SeewoConfig;
 import com.template.model.enumModel.eAttendanceStatu;
 import com.template.model.enumModel.eIdentityStatu;
+import com.template.model.enumModel.eIfVerification;
 import com.template.model.enumModel.eXwApproveStatu;
 import com.template.model.evaluate.student.SmartEvaluateStudent;
 import com.template.model.pojo.*;
 import com.template.model.request.askForLeaveRequest;
 import com.template.model.result.CommonResult;
+import com.template.model.result.PageUtils;
 import com.template.model.seewo.PersonalLeaveListSchoolPeriodRecordsParam;
 import com.template.model.seewo.PersonalLeaveListSchoolPeriodRecordsRequest;
 import com.template.model.seewo.PersonalLeaveListSchoolPeriodRecordsResult;
@@ -33,6 +35,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
@@ -127,6 +130,8 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
                 attendance.setInitiateXwname(result.getResponseBody().getData().getResult().get(i).getApplyUserName());
                 attendance.setInitiateXwphone(result.getResponseBody().getData().getResult().get(i).getApplyUserPhone());
                 attendance.setStatus(eAttendanceStatu.AskLeave.getValue());
+//               加未核销字段
+                attendance.setIfVerification(eIfVerification.NoVerification.getValue());
                 attendances.add(attendance);
             }
         }
@@ -158,6 +163,8 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
                         attendance.setInitiateXwname(result.getResponseBody().getData().getResult().get(j).getApplyUserName());
                         attendance.setInitiateXwphone(result.getResponseBody().getData().getResult().get(j).getApplyUserPhone());
                         attendance.setStatus(eAttendanceStatu.AskLeave.getValue());
+//                        加未核销字段
+                        attendance.setIfVerification(eIfVerification.NoVerification.getValue());
                         attendances.add(attendance);
                     }
                 }
@@ -332,6 +339,14 @@ public class SmartAttendanceController implements SmartAttendanceControllerAPI {
         return CommonResult.ok(historicalAttendanceVo);
     }
 
+    @Override
+    @DESRespondSecret(validated = true)
+    public CommonResult askForLeavePage(int currentPage, int pageCount, String name, String cardNo, String startTime, String endTime,Integer ifVerification) {
+        PageUtils<AskForLeaveVo> result=smartAttendanceService.askForLeavePage(currentPage,pageCount,name,cardNo,startTime,endTime,ifVerification);
+        return CommonResult.ok(result);
+
+    }
+
     public PersonalLeaveListSchoolPeriodRecordsResult getXwAttendance(String startDate, String endDate, Integer currentPage, Integer pageSize) {
         //初始化客户端
         SeewoClient seewoClient = new DefaultSeewoClient(new Account(seewoConfig.getAppId(), seewoConfig.getAppSecret()));

+ 31 - 2
src/main/java/com/template/controller/SmartAuthorGroupController.java

@@ -3,6 +3,8 @@ package com.template.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.sun.org.apache.bcel.internal.generic.NEW;
 import com.template.annotation.DESRespondSecret;
 import com.template.annotation.PassToken;
 import com.template.api.SmartAuthorGroupControllerAPI;
@@ -410,7 +412,7 @@ public class SmartAuthorGroupController implements SmartAuthorGroupControllerAPI
     public CommonResult delSmartAuthorGroup(Integer id) {
         QueryWrapper<SmartAuthorGroup> queryWrapper1 = new QueryWrapper<>();
         queryWrapper1.eq("parent_id", id);
-        queryWrapper1.eq("deleted",0);
+        queryWrapper1.eq("deleted", 0);
         List<SmartAuthorGroup> list1 = smartAuthorGroupService.getAuthorGroupByKey(queryWrapper1);
         SmartAuthorGroup rns = new SmartAuthorGroup();
         rns.setId(id);
@@ -420,7 +422,7 @@ public class SmartAuthorGroupController implements SmartAuthorGroupControllerAPI
         smartAuthority.setDeleted(1);
         QueryWrapper<SmartAuthority> queryWrapper2 = new QueryWrapper<>();
         queryWrapper2.eq("group_id", id);
-        boolean m = smartAuthorityService.update(smartAuthority,queryWrapper2);
+        boolean m = smartAuthorityService.update(smartAuthority, queryWrapper2);
         SmartAuthorGroup rns2 = new SmartAuthorGroup();
         rns2.setDeleted(1);
         QueryWrapper<SmartAuthorGroup> queryWrapper3 = new QueryWrapper<>();
@@ -699,5 +701,32 @@ public class SmartAuthorGroupController implements SmartAuthorGroupControllerAPI
 
         return result > 0 ? CommonResult.ok("删除成功") : CommonResult.fail("删除失败");
     }
+
+    @Override
+    @DESRespondSecret(validated = true)
+    public CommonResult getClassById(String userHead) {
+        String  userId="";
+        try {
+            userId = AesUtils.decrypt(userHead);
+        } catch (Exception e) {
+            return CommonResult.fail("传入的userHead有误");
+        }
+        SmartAuthorGroup smartAuthorGroup= smartAuthorGroupService.getByUserId(userId);
+        if (ObjectUtils.isEmpty(smartAuthorGroup)) {
+            return CommonResult.fail("该用户无权限");
+        }
+        Integer parentId = smartAuthorGroup.getParentId();
+        if (parentId==0) {
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("schoolClass",0);
+            return CommonResult.ok(jsonObject);
+        }
+        SmartUser smartUser = smartUserService.getById(userId);
+        Integer schoolClass = smartUser.getSchoolClass();
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("schoolClass",schoolClass);
+        return CommonResult.ok(jsonObject);
+    }
+
 }
 

+ 7 - 0
src/main/java/com/template/controller/SmartAuthorityController.java

@@ -1,13 +1,17 @@
 package com.template.controller;
 
 
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.annotation.DESRespondSecret;
 import com.template.api.SmartAuthorityControllerAPI;
+import com.template.common.utils.AesUtil;
+import com.template.common.utils.AesUtils;
 import com.template.common.utils.paramUtils;
 import com.template.model.pojo.SmartAuthority;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.services.SmartAuthorityService;
+import com.template.services.SmartDepartmentService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -30,6 +34,9 @@ public class SmartAuthorityController implements SmartAuthorityControllerAPI {
     @Autowired
     private SmartAuthorityService smartAuthorityService;
 
+    @Autowired
+    SmartDepartmentService smartDepartmentService;
+
     /**
      * 新增权限管理
      *

+ 33 - 1
src/main/java/com/template/controller/SmartFaceDiscernController.java

@@ -90,8 +90,40 @@ public class SmartFaceDiscernController implements SmartFaceDiscernControllerAPI
         String endTime = date.getString("endTime");
 
         List<SmartFaceDiscern> smartFaceDiscerns = smartFaceDiscernService.track(stateTime, endTime, id);
+        ArrayList<LastSevenDaysTrackVo> vos = new ArrayList<>();
+        for (SmartFaceDiscern faceDiscern : smartFaceDiscerns) {
+            LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
+            lastSevenDaysTrackVo.setName(faceDiscern.getName());
+            lastSevenDaysTrackVo.setType(faceDiscern.getType());
+            lastSevenDaysTrackVo.setLocation(faceDiscern.getLocation());
+            lastSevenDaysTrackVo.setImage(faceDiscern.getImage());
+            lastSevenDaysTrackVo.setDateTime(faceDiscern.getDateTime());
+            vos.add(lastSevenDaysTrackVo);
+        }
+
+        List<SmartAttendance> attendances = smartAttendanceService.track(stateTime, endTime, id);
+//        获取班级名称
+        SmartUser smartUser = smartUserService.getSmartById(id);
+        SmartClass smartClass = smartClassService.getSmartClassById(smartUser.getSchoolClass());
+        String className = smartClass.getName();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        for (SmartAttendance attendance : attendances) {
+            LastSevenDaysTrackVo lastSevenDaysTrackVo = new LastSevenDaysTrackVo();
+            lastSevenDaysTrackVo.setName(attendance.getXwUserName());
+            lastSevenDaysTrackVo.setType("打卡");
+            lastSevenDaysTrackVo.setLocation(className);
+            Date attendTime = attendance.getAttendTime();
+            lastSevenDaysTrackVo.setDateTime(sdf.format(attendTime));
+            vos.add(lastSevenDaysTrackVo);
+        }
 
-        return CommonResult.ok(smartFaceDiscerns);
+//        排序
+        Collections.sort(vos, Comparator.comparing((h) -> {
+            return h.getDateTime();
+        }));
+
+
+        return CommonResult.ok(vos);
     }
 
     @Override

+ 1 - 0
src/main/java/com/template/controller/Task.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.template.annotation.PassToken;
 import com.template.common.utils.CommonUtil;
 import com.template.common.utils.DBUtil;
+import com.template.common.utils.HttpsClient;
 import com.template.common.utils.QuartzJobUtils;
 import com.template.mapper.SmartDataSourceMapper;
 import com.template.mapper.SmartDataTaskMapper;

+ 18 - 0
src/main/java/com/template/mapper/SmartAskForLeaveConfigMapper.java

@@ -0,0 +1,18 @@
+package com.template.mapper;
+
+import com.template.model.pojo.SmartAskForLeaveConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@Repository
+public interface SmartAskForLeaveConfigMapper extends BaseMapper<SmartAskForLeaveConfig> {
+
+}

+ 5 - 0
src/main/java/com/template/mapper/SmartAttendanceMapper.java

@@ -1,7 +1,11 @@
 package com.template.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.model.pojo.SmartAttendance;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.template.model.vo.AskForLeaveVo;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
@@ -19,4 +23,5 @@ public interface SmartAttendanceMapper extends BaseMapper<SmartAttendance> {
 
     List<Integer> getGroup();
 
+    IPage<AskForLeaveVo> askForLeavePage(Page<AskForLeaveVo> page, @Param("name") String name,@Param("cardNo") String cardNo,@Param("startTime") String startTime,@Param("endTime") String endTime,@Param("ifVerification")Integer ifVerification);
 }

+ 1 - 0
src/main/java/com/template/mapper/SmartAuthorGroupMapper.java

@@ -25,4 +25,5 @@ public interface SmartAuthorGroupMapper extends BaseMapper<SmartAuthorGroup> {
 
     List<SmartAuthorGroup> smartAuthorGroupSuperAdmin(@Param("userId") Integer userId);
 
+    SmartAuthorGroup getByUserId(@Param("userId") String userId);
 }

+ 16 - 0
src/main/java/com/template/model/enumModel/eIfVerification.java

@@ -0,0 +1,16 @@
+package com.template.model.enumModel;
+
+public enum eIfVerification {
+    NoVerification(0),//未核销
+    verification(1); //已核销
+
+    private int value;
+
+    eIfVerification(int value){
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+}

+ 61 - 0
src/main/java/com/template/model/pojo/SmartAskForLeaveConfig.java

@@ -0,0 +1,61 @@
+package com.template.model.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="SmartAskForLeaveConfig对象", description="")
+public class SmartAskForLeaveConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "配置")
+    private Integer config;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Date updateTime;
+
+    @ApiModelProperty(value = "创建人员")
+    @TableField(fill = FieldFill.INSERT)
+    private String createUser;
+
+    @ApiModelProperty(value = "更新人员")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateUser;
+
+    @ApiModelProperty(value = "逻辑删除 未删除:0;删除:1")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleted;
+
+
+}

+ 4 - 1
src/main/java/com/template/model/pojo/SmartAttendance.java

@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.template.model.enumModel.eIfVerification;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -87,6 +88,9 @@ public class SmartAttendance implements Serializable {
     @ApiModelProperty(value = "希沃请假ID")
     private String xwuid;
 
+    @ApiModelProperty(value = "请假核销(0:未核销,1:已核销)")
+    private Integer ifVerification;
+
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@@ -110,5 +114,4 @@ public class SmartAttendance implements Serializable {
     @TableLogic
     private Integer deleted;
 
-
 }

+ 40 - 0
src/main/java/com/template/model/vo/AskForLeaveVo.java

@@ -0,0 +1,40 @@
+package com.template.model.vo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AskForLeaveVo {
+
+    private Integer id;
+
+    @ApiModelProperty(value = "头像")
+    private String image;
+
+    @ApiModelProperty(value = "希沃用户名称")
+    private String xwUserName;
+
+    @ApiModelProperty(value = "学号")
+    private String cardNo;
+
+    @ApiModelProperty(value = "请假原因")
+    private String reason;
+
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "希沃发起时间")
+    private Date initiateTime;
+
+    @ApiModelProperty(value = "请假核销(0:未核销,1:已核销)")
+    private Integer ifVerification;
+
+}

+ 16 - 0
src/main/java/com/template/services/SmartAskForLeaveConfigService.java

@@ -0,0 +1,16 @@
+package com.template.services;
+
+import com.template.model.pojo.SmartAskForLeaveConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+public interface SmartAskForLeaveConfigService extends IService<SmartAskForLeaveConfig> {
+
+}

+ 4 - 0
src/main/java/com/template/services/SmartAttendanceService.java

@@ -3,6 +3,8 @@ package com.template.services;
 import com.template.model.pojo.SmartAttendance;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.pojo.SmartVisitor;
+import com.template.model.result.PageUtils;
+import com.template.model.vo.AskForLeaveVo;
 
 import java.util.Date;
 import java.util.List;
@@ -29,4 +31,6 @@ public interface SmartAttendanceService extends IService<SmartAttendance> {
     List<Integer> getGroup();
 
     List<SmartAttendance> track(String startTime, String endTime, int userId);
+
+    PageUtils<AskForLeaveVo> askForLeavePage(int currentPage, int pageCount,String name, String cardNo, String startTime, String endTime,Integer ifVerification);
 }

+ 1 - 0
src/main/java/com/template/services/SmartAuthorGroupService.java

@@ -42,5 +42,6 @@ public interface SmartAuthorGroupService extends IService<SmartAuthorGroup> {
     List<SmartAuthorGroupManager> getSmartAuthorGroupManager(String groupId);
 
 
+    SmartAuthorGroup getByUserId(String userId);
 
 }

+ 1 - 0
src/main/java/com/template/services/SmartAuthorityService.java

@@ -29,4 +29,5 @@ public interface SmartAuthorityService extends IService<SmartAuthority> {
 
     List<SmartAuthority> getAuthorByKey(QueryWrapper<SmartAuthority> queryWrapper);
 
+    SmartAuthority getByUserId(String userId);
 }

+ 20 - 0
src/main/java/com/template/services/impl/SmartAskForLeaveConfigServiceImpl.java

@@ -0,0 +1,20 @@
+package com.template.services.impl;
+
+import com.template.model.pojo.SmartAskForLeaveConfig;
+import com.template.mapper.SmartAskForLeaveConfigMapper;
+import com.template.services.SmartAskForLeaveConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ceshi
+ * @since 2024-05-24
+ */
+@Service
+public class SmartAskForLeaveConfigServiceImpl extends ServiceImpl<SmartAskForLeaveConfigMapper, SmartAskForLeaveConfig> implements SmartAskForLeaveConfigService {
+
+}

+ 12 - 3
src/main/java/com/template/services/impl/SmartAttendanceServiceImpl.java

@@ -1,13 +1,15 @@
 package com.template.services.impl;
 
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.template.mapper.SmartAuthorGroupMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.model.enumModel.eAttendanceStatu;
 import com.template.model.pojo.SmartAttendance;
 import com.template.mapper.SmartAttendanceMapper;
-import com.template.model.pojo.SmartFaceDiscern;
+import com.template.model.pojo.SmartVisitor;
+import com.template.model.result.PageUtils;
+import com.template.model.vo.AskForLeaveVo;
 import com.template.services.SmartAttendanceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -97,4 +99,11 @@ public class SmartAttendanceServiceImpl extends ServiceImpl<SmartAttendanceMappe
 
         return list;
     }
+
+    @Override
+    public PageUtils<AskForLeaveVo> askForLeavePage(int currentPage, int pageCount,String name, String cardNo, String startTime, String endTime,Integer ifVerification) {
+        Page<AskForLeaveVo> page = new Page<>(currentPage,pageCount);
+        IPage<AskForLeaveVo> datas = smartAttendanceMapper.askForLeavePage(page, name,cardNo,startTime,endTime,ifVerification);
+        return new PageUtils(datas);
+    }
 }

+ 5 - 0
src/main/java/com/template/services/impl/SmartAuthorGroupServiceImpl.java

@@ -188,4 +188,9 @@ public class SmartAuthorGroupServiceImpl extends ServiceImpl<SmartAuthorGroupMap
         }
         return list;
     }
+
+    @Override
+    public SmartAuthorGroup getByUserId(String userId) {
+        return smartAuthorGroupMapper.getByUserId(userId);
+    }
 }

+ 10 - 0
src/main/java/com/template/services/impl/SmartAuthorityServiceImpl.java

@@ -1,5 +1,7 @@
 package com.template.services.impl;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -69,4 +71,12 @@ public class SmartAuthorityServiceImpl extends ServiceImpl<SmartAuthorityMapper,
         return result;
     }
 
+    @Override
+    public SmartAuthority getByUserId(String decrypt) {
+        LambdaQueryWrapper<SmartAuthority> wrapper=new LambdaQueryWrapper<>();
+        wrapper.eq(SmartAuthority::getUserId,decrypt);
+        SmartAuthority one = this.getOne(wrapper);
+        return one;
+    }
+
 }

+ 1 - 1
src/main/java/com/template/services/impl/SmartFaceDiscernServiceImpl.java

@@ -62,7 +62,7 @@ public class SmartFaceDiscernServiceImpl extends ServiceImpl<SmartFaceDiscernMap
     private Integer size = 50;
 
 
-    @Async
+//    @Async
 //    @Scheduled(cron = "0 0 0/1 * * ? ")
     public void baiS() {
         if(scheduleConfig.getIsOpen().equals("1")){

+ 3 - 1
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -332,7 +332,9 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
         LambdaQueryWrapper<SmartUser> wrapper=new LambdaQueryWrapper<>();
         wrapper.eq(SmartUser::getBsStudentNo,idNum)
                 .or()
-                .eq(SmartUser::getBsStaffCode,idNum);
+                .eq(SmartUser::getBsStaffCode,idNum)
+                .or()
+                .eq(SmartUser::getIdCard,idNum);
         SmartUser one = this.getOne(wrapper);
         return one;
     }

+ 32 - 0
src/main/resources/mapper/template/SmartAttendanceMapper.xml

@@ -10,4 +10,36 @@
         GROUP BY
             `status`
     </select>
+
+    <select id="askForLeavePage" resultType="com.template.model.vo.AskForLeaveVo">
+        SELECT
+            sa.id,
+            su.head_image,
+            sa.xw_user_name,
+            su.card_no,
+            sa.start_time,
+            sa.end_time,
+            sa.reason,
+            sa.if_verification,
+            sa.initiate_time
+        FROM
+            `smart_attendance` sa
+                LEFT JOIN smart_user su ON su.id = sa.user_id
+        WHERE
+        sa.`status` = 6
+        AND sa.deleted = 0
+        <if test="name != null and name != ''">
+            and sa.xw_user_name = #{name}
+        </if>
+        <if test="cardNo != null and cardNo != ''">
+            and su.card_no = #{cardNo}
+        </if>
+        <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
+            and sa.initiate_time &gt;= #{startTime} and sa.initiate_time &lt;= #{endTime}
+        </if>
+        <if test="ifVerification != null and ifVerification != ''">
+            and sa.if_verification = #{ifVerification}
+        </if>
+        ORDER BY sa.initiate_time
+    </select>
 </mapper>

+ 8 - 0
src/main/resources/mapper/template/SmartAuthorGroupMapper.xml

@@ -40,4 +40,12 @@
             from `smart_authority` a left join `smart_user` b on a.`user_id`=b.id
             where group_id=#{groupId} and a.deleted=0 and b.deleted=0
     </select>
+    <select id="getByUserId" resultType="com.template.model.pojo.SmartAuthorGroup">
+        SELECT
+            *
+        FROM
+            `smart_author_group`
+        WHERE
+            FIND_IN_SET(#{userId}, user_id )
+    </select>
 </mapper>