夏文涛 2 éve
szülő
commit
be32a3ff1e
25 módosított fájl, 2396 hozzáadás és 332 törlés
  1. 398 298
      .idea/workspace.xml
  2. 19 0
      pom.xml
  3. 1 0
      src/main/java/com/template/api/LoginControllerAPI.java
  4. 51 4
      src/main/java/com/template/api/SmartUserControllerAPI.java
  5. 64 0
      src/main/java/com/template/common/utils/ExcelUtils.java
  6. 76 0
      src/main/java/com/template/common/utils/FileUtils.java
  7. 885 15
      src/main/java/com/template/controller/SmartUserController.java
  8. 6 0
      src/main/java/com/template/mapper/SmartUserMapper.java
  9. 32 0
      src/main/java/com/template/model/enumModel/eFileType.java
  10. 59 0
      src/main/java/com/template/model/enumModel/eIdentityStatu.java
  11. 32 0
      src/main/java/com/template/model/enumModel/eLogOff.java
  12. 52 0
      src/main/java/com/template/model/enumModel/eSexStatu.java
  13. 26 0
      src/main/java/com/template/model/request/changeDepartmentRequest.java
  14. 152 0
      src/main/java/com/template/model/request/insertSmartUserRequest.java
  15. 158 0
      src/main/java/com/template/model/request/updateSmartUserRequest.java
  16. 22 0
      src/main/java/com/template/model/vo/DepartmentVo.java
  17. 32 0
      src/main/java/com/template/model/vo/UserVo.java
  18. 10 1
      src/main/java/com/template/services/SmartUserService.java
  19. 19 6
      src/main/java/com/template/services/impl/SmartUploadServiceImpl.java
  20. 42 8
      src/main/java/com/template/services/impl/SmartUserServiceImpl.java
  21. 60 0
      src/main/resources/mapper/template/SmartUserMapper.xml
  22. 22 0
      target/classes/mapper/template/SmartUserMapper.xml
  23. 101 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  24. 77 0
      target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  25. BIN
      target/mybatis_plus-0.0.1-SNAPSHOT.jar.original

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 398 - 298
.idea/workspace.xml


+ 19 - 0
pom.xml

@@ -217,6 +217,25 @@
             <artifactId>pagehelper-spring-boot-starter</artifactId>
             <version>1.4.2</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-test</artifactId>
+            <version>6.0.9</version>
+            <scope>compile</scope>
+        </dependency>
+
+        <!-- 上传文件的依赖 -->
+        <dependency>
+            <!--common-fileupload的依赖组件-->
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.6</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-fileupload</groupId>
+            <artifactId>commons-fileupload</artifactId>
+            <version>1.4</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 1 - 0
src/main/java/com/template/api/LoginControllerAPI.java

@@ -1,5 +1,6 @@
 package com.template.api;
 
+import com.template.annotation.PassToken;
 import com.template.model.pojo.RepairAdmin;
 import com.template.model.request.changePasswordRequest;
 import com.template.model.request.loginRequest;

+ 51 - 4
src/main/java/com/template/api/SmartUserControllerAPI.java

@@ -1,12 +1,18 @@
 package com.template.api;
 
-import com.template.model.pojo.SmartUser;
+import com.template.model.request.changeDepartmentRequest;
+import com.template.model.request.insertSmartUserRequest;
+import com.template.model.request.updateSmartUserRequest;
 import com.template.model.result.CommonResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 /**
  * @Author: binguo
@@ -17,17 +23,57 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/api/smartUser")
 @Api(tags = {"SmartUserControllerAPI"}, value = "用户")
 public interface SmartUserControllerAPI {
+    /**
+     * 注销账号
+      */
+    @GetMapping(value = "logoffAccount")
+    @ApiOperation(value = "注销账号", notes = "注销账号", httpMethod = "GET")
+    CommonResult logoffAccount(@RequestParam int id);
+
+    /**
+     * 移动多个用户到其他部门
+     */
+    @PostMapping(value = "changeDepartment")
+    @ApiOperation(value = "移动多个用户到其他部门", notes = "移动多个用户到其他部门", httpMethod = "POST")
+    CommonResult changeDepartment(@Validated @RequestBody changeDepartmentRequest cdr, BindingResult bindingResult);
+
+    /**
+     * 批量导入用户信息
+     * @param excelFile excel文件
+     * @return
+     */
+    @PostMapping(value = "importExcelUsers")
+    @ApiOperation(value = "批量导入用户信息", notes = "批量导入用户信息", httpMethod = "POST")
+    CommonResult importExcelUsers(@RequestParam("file") MultipartFile excelFile, @RequestParam String headImage) throws IOException;
+
+    /**
+     * 批量导入压缩包
+     * @param zipFile 附件文件
+     * @return
+     */
+    @PostMapping(value = "importZipUsers")
+    @ApiOperation(value = "批量导入", notes = "批量导入", httpMethod = "POST")
+    CommonResult importZipUsers(@RequestParam("file") MultipartFile zipFile) throws IOException;
+
+
     @PostMapping(value = "/insertSmartUser")
     @ApiOperation(value = "添加用户", notes = "添加用户数据", httpMethod = "POST")
-    CommonResult insertSmartUser(@Validated @RequestBody SmartUser smartApply, BindingResult bindingResult);
+    CommonResult insertSmartUser(@Validated @RequestBody insertSmartUserRequest isur, BindingResult bindingResult);
 
     @PostMapping(value = "/updateSmartUserById")
     @ApiOperation(value = "编辑用户数据", notes = "编辑用户数据", httpMethod = "POST")
-    CommonResult updateSmartUserById(@Validated @RequestBody SmartUser ra, BindingResult bindingResult);
+    CommonResult updateSmartUserById(@Validated @RequestBody updateSmartUserRequest ra, BindingResult bindingResult);
 
     @GetMapping(value = "/queryPageSmartUser")
     @ApiOperation(value = "用户分页数据", notes = "用户分页数据", httpMethod = "GET")
-    CommonResult queryPageSmartUser(@RequestParam int currentPage, @RequestParam int pageCount, String name);
+    CommonResult queryPageSmartUser(@RequestParam int currentPage, @RequestParam int pageCount, int departmentId, String name);
+
+    /**
+     * 导出用户数据
+     */
+    @GetMapping(value = "smartUserExport")
+    @ApiOperation(value = "导出用户数据", notes = "导出用户数据", httpMethod = "GET")
+    void smartUserExport(HttpServletResponse response, int departmentId, String name);
 
     @GetMapping(value = "/deleteSmartUserById")
     @ApiOperation(value = "根据ID删除指定用户", notes = "根据ID删除指定用户", httpMethod = "GET")
@@ -39,4 +85,5 @@ public interface SmartUserControllerAPI {
     @GetMapping(value = "/queryAffiliateUserById")
     @ApiOperation(value = "根据当前用户ID获取受访学生数据", notes = "根据当前用户ID获取受访学生数据", httpMethod = "GET")
     CommonResult queryAffiliateUserById(@RequestParam int id);
+
 }

+ 64 - 0
src/main/java/com/template/common/utils/ExcelUtils.java

@@ -0,0 +1,64 @@
+package com.template.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.springframework.boot.system.ApplicationHome;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/10 星期一 14:21
+ * @Description: com.repair.common.utils
+ * @Version: 1.0
+ */
+@Slf4j
+public class ExcelUtils {
+    public static void fileDownload(String fileName, HttpServletResponse response) {
+        try {
+            ApplicationHome applicationHome = new ApplicationHome(ExcelUtils.class);
+            String pathResouce = applicationHome.getDir().getParentFile().getParentFile().getAbsolutePath();
+            String decode = URLDecoder.decode(pathResouce, "utf-8");
+            File readPath = new File(decode + "/project/repair" + File.separator);
+            File file = new File(readPath.getAbsolutePath() + fileName);
+            // 获取文件名
+            String filename = file.getName();
+            // 获取文件后缀名
+            String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
+            InputStream inputStream = new FileInputStream(file);//根据路径获取要下载的文件输入流
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            response.setHeader("Content-disposition", "attachment;fileName=" + URLEncoder.encode(filename, "UTF-8"));
+            OutputStream out = response.getOutputStream();
+            byte[] b = new byte[1024];  //创建数据缓冲区
+            int length;
+            while ((length = inputStream.read(b)) > 0) {  //把文件流写到缓冲区里
+                out.write(b, 0, length);
+            }
+            out.flush();
+            out.close();
+            inputStream.close();
+        } catch (IOException ex) {
+            System.out.println("模板导出失败:" + ex.getMessage());
+            ex.printStackTrace();
+        }
+    }
+
+    public static void excelDownload(Workbook workbook, String fileName, HttpServletResponse response) {
+        try {
+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+            response.setCharacterEncoding("utf-8");
+            response.setHeader("Content-disposition", "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));
+            OutputStream out = response.getOutputStream();
+            workbook.write(out);
+            out.flush();
+            out.close();
+        } catch (IOException ex) {
+            System.out.println("模板导出失败:" + ex.getMessage());
+            ex.printStackTrace();
+        }
+    }
+}

+ 76 - 0
src/main/java/com/template/common/utils/FileUtils.java

@@ -0,0 +1,76 @@
+package com.template.common.utils;
+
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileItemFactory;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.springframework.http.MediaType;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/12/27 星期三 11:08
+ * @Description: com.template.common.utils
+ * @Version: 1.0
+ */
+public class FileUtils {
+
+
+    /**
+     * 获取封装得MultipartFile
+     *
+     * @param inputStream inputStream
+     * @return MultipartFile
+     */
+    public static MultipartFile getMultipartFile(InputStream inputStream, String fileName) {
+        FileItem fileItem = createFileItem(inputStream, fileName);
+        //CommonsMultipartFile是feign对multipartFile的封装,但是要FileItem类对象
+        return new CommonsMultipartFile(fileItem);
+    }
+    /**
+     * FileItem类对象创建
+     *
+     * @param inputStream inputStream
+     * @param fileName    fileName
+     * @return FileItem
+     */
+    public static FileItem createFileItem(InputStream inputStream, String fileName) {
+        FileItemFactory factory = new DiskFileItemFactory(16, null);
+        String textFieldName = "file";
+        FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName);
+        int bytesRead = 0;
+        byte[] buffer = new byte[10 * 1024 * 1024];
+        OutputStream os = null;
+        //使用输出流输出输入流的字节
+        try {
+            os = item.getOutputStream();
+            while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
+                os.write(buffer, 0, bytesRead);
+            }
+            inputStream.close();
+        } catch (IOException e) {
+            throw new IllegalArgumentException("文件上传失败");
+        } finally {
+            if (os != null) {
+                try {
+                    os.close();
+                } catch (IOException e) {
+
+                }
+            }
+            if (inputStream != null) {
+                try {
+                    inputStream.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+
+        return item;
+    }
+}

+ 885 - 15
src/main/java/com/template/controller/SmartUserController.java

@@ -1,24 +1,56 @@
 package com.template.controller;
 
 
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.qcloud.cos.utils.IOUtils;
 import com.template.api.SmartUserControllerAPI;
+import com.template.common.utils.ExcelUtils;
+import com.template.common.utils.FileUtils;
 import com.template.common.utils.paramUtils;
+import com.template.model.enumModel.eFileType;
+import com.template.model.enumModel.eIdentityStatu;
+import com.template.model.enumModel.eLogOff;
+import com.template.model.enumModel.eSexStatu;
+import com.template.model.pojo.SmartDepartment;
 import com.template.model.pojo.SmartUser;
+import com.template.model.request.changeDepartmentRequest;
+import com.template.model.request.insertSmartUserRequest;
+import com.template.model.request.updateSmartUserRequest;
 import com.template.model.result.CommonResult;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.AffiliateUserVo;
+import com.template.model.vo.DepartmentTreeVo;
+import com.template.model.vo.UserVo;
+import com.template.services.SmartDepartmentService;
+import com.template.services.SmartUploadService;
 import com.template.services.SmartUserService;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
-import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.nio.charset.Charset;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.zip.ZipInputStream;
 
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author ceshi
@@ -30,20 +62,709 @@ public class SmartUserController implements SmartUserControllerAPI {
     @Autowired
     private SmartUserService smartUserService;
 
+    @Autowired
+    private SmartUploadService smartUploadService;
+
+    @Autowired
+    private SmartDepartmentService smartDepartmentService;
+
+    @Override
+    public CommonResult logoffAccount(int id) {
+        SmartUser user = smartUserService.getSmartById(id);
+        if (user == null) {
+            return CommonResult.fail("用户信息已失效");
+        }
+
+        user.setIsCancel(eLogOff.Logout.getValue());
+
+        int updateResult = smartUserService.updateSmartUser(user);
+
+        return updateResult > 0 ? CommonResult.ok("注销成功") : CommonResult.fail("注销失败");
+    }
+
+    @Override
+    public CommonResult changeDepartment(changeDepartmentRequest cdr, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            String st = paramUtils.getParamError(bindingResult);
+            return CommonResult.fail(st);
+        }
+
+        List<SmartUser> users = smartUserService.getSmartUserByIds(cdr.getUserIds());
+        if (users == null) {
+            return CommonResult.fail("用户信息无效,移动失败!");
+        }
+
+        if (users.size() != cdr.getUserIds().size()) {
+            return CommonResult.fail("存在无效用户数据,移动失败!");
+        }
+
+        for (SmartUser user : users) {
+            user.setDepartmentId(cdr.getDepartmentId());
+
+        }
+        boolean result = smartUserService.updateUserBatchById(users);
+
+        return result ? CommonResult.ok("移动成功") : CommonResult.fail("移动失败");
+    }
+
+    @Override
+    public CommonResult importExcelUsers(MultipartFile excelFile, String headImage) throws IOException {
+        List<SmartUser> result = new ArrayList<>();
+
+        //先解析excel如果excel不满足格式就提示错误信息 避免提前占用带宽上传头像
+        if (excelFile.isEmpty() || excelFile.getSize() == 0) {
+            return CommonResult.fail("压缩包中的excel文件不能为空");
+        }
+
+        String ContentType = excelFile.getContentType();
+        InputStream inputStream = excelFile.getInputStream();
+
+        //xls格式文件
+        if (ContentType.equals(eFileType.Xls.getValue())) {
+            CommonResult<List<SmartUser>> resultData = readXls(inputStream);
+            if (!resultData.isSuccess()) {
+                return resultData;
+            }
+            result = resultData.getData();
+        } else if (ContentType.equals(eFileType.Xlsx.getValue())) {
+            CommonResult<List<SmartUser>> resultData = readXlsx(inputStream);
+            if (!resultData.isSuccess()) {
+                return resultData;
+            }
+            result = resultData.getData();
+        } else {
+            return CommonResult.fail("用户导入只支持Xls、Xlsx");
+        }
+
+        List<String> uploadImages = Arrays.asList(headImage.split(","));
+        for (SmartUser user : result) {
+            Optional<String> image = uploadImages == null ? null : uploadImages.stream().filter(e -> e.equals("https://wanzai-1306339220.cos.ap-shanghai.myqcloud.com/headImage/" + user.getHeadImage())).findFirst();
+            if (image != null && image.isPresent()) {
+                user.setHeadImage(image.get());
+            }
+        }
+
+        //批量存储用户信息
+        boolean resultBool = smartUserService.saveBatch(result);
+
+        return resultBool ? CommonResult.ok("导入成功") : CommonResult.fail("导入失败");
+    }
+
+    /**
+     * 批量导入用户信息
+     * 以身份证号作为判断依据 如果存在重复数据就提示存在重复数据
+     * 开发流程:建议先去拿到excel中的所有数据的身份证号去数据库中找一遍是否存在重复数据
+     * 如果不存在重复数据就把附件文件夹中的附件文件上传到cos服务器上
+     * 然后手动拼接一个人脸照片文件地址存入对应的数据中
+     *
+     * @param zipFile zip压缩包
+     * @return
+     */
+    @Override
+    public CommonResult importZipUsers(MultipartFile zipFile) throws IOException {
+        List<SmartUser> result = new ArrayList<>();
+        MultipartFile excelFile = null;
+        List<MultipartFile> multipartFileHashMap = new ArrayList<>();
+        String excelStr = null;
+        if (zipFile != null) {
+            //解压压缩文件并上传文件
+            ByteArrayOutputStream byteOut = null;
+            ZipInputStream zipIn = null;
+            try {
+                java.util.zip.ZipEntry zipEntry = null;
+                zipIn = new ZipInputStream(zipFile.getInputStream(), Charset.forName("GBK"));
+                while ((zipEntry = zipIn.getNextEntry()) != null) {
+                    String fileName = zipEntry.getName();
+                    if (fileName.contains("人脸照片") && (fileName.endsWith(".jpg") || fileName.endsWith(".png") || fileName.endsWith(".jpeg"))) {
+                        byteOut = new ByteArrayOutputStream();
+                        IOUtils.copy(zipIn, byteOut);
+                        InputStream inputStream = new ByteArrayInputStream(byteOut.toByteArray());
+                        MultipartFile multipartFile = FileUtils.getMultipartFile(inputStream, fileName);
+                        multipartFileHashMap.add(multipartFile);
+                    } else if (fileName.contains("人员信息采集表") && (fileName.endsWith(".xlsx") || fileName.endsWith(".xls"))) {
+                        excelStr = fileName.endsWith(".xlsx") ? "xlsx" : "xls";
+                        byteOut = new ByteArrayOutputStream();
+                        IOUtils.copy(zipIn, byteOut);
+                        InputStream inputStream = new ByteArrayInputStream(byteOut.toByteArray());
+                        excelFile = FileUtils.getMultipartFile(inputStream, fileName);
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                if (byteOut != null) {
+                    byteOut.close();
+                }
+                if (zipIn != null) {
+                    zipIn.close();
+                }
+            }
+        }
+
+        //先解析excel如果excel不满足格式就提示错误信息 避免提前占用带宽上传头像
+        if (excelFile.isEmpty() || excelFile.getSize() == 0) {
+            return CommonResult.fail("压缩包中的excel文件不能为空");
+        }
+
+        String ContentType = excelFile.getContentType();
+        InputStream inputStream = excelFile.getInputStream();
+
+        //xls格式文件
+        if (excelStr.equals("xls")) {
+            CommonResult<List<SmartUser>> resultData = readXls(inputStream);
+            if (!resultData.isSuccess()) {
+                return resultData;
+            }
+            result = resultData.getData();
+        } else if (excelStr.equals("xlsx")) {
+            CommonResult<List<SmartUser>> resultData = readXlsx(inputStream);
+            if (!resultData.isSuccess()) {
+                return resultData;
+            }
+            result = resultData.getData();
+        } else {
+            return CommonResult.fail("用户导入只支持Xls、Xlsx");
+        }
+
+        //cos上传 返回图片地址
+        String uploadResult = smartUploadService.upload(multipartFileHashMap.toArray(new MultipartFile[0]));
+        List<String> uploadImages = Arrays.asList(uploadResult.split(","));
+        for (SmartUser user : result) {
+            Optional<String> headImage = uploadImages == null ? null : uploadImages.stream().filter(e -> e.equals("https://wanzai-1306339220.cos.ap-shanghai.myqcloud.com/headImage/" + user.getHeadImage())).findFirst();
+            if (headImage != null && headImage.isPresent()) {
+                user.setHeadImage(headImage.get());
+            }
+        }
+
+        //批量存储用户信息
+        boolean resultBool = smartUserService.saveBatch(result);
+
+        return resultBool ? CommonResult.ok("导入成功") : CommonResult.fail("导入失败");
+    }
+
+    /**
+     * Xlsx文件读取方法
+     *
+     * @param inputStream 文件流
+     * @return
+     * @throws IOException
+     */
+    private CommonResult<List<SmartUser>> readXlsx(InputStream inputStream) throws IOException {
+        List<String> phones = new ArrayList<>();
+        List<String> idCards = new ArrayList<>();
+        List<String> cardNos = new ArrayList<>();
+        List<SmartUser> result = new ArrayList<>();
+        XSSFWorkbook sheets = new XSSFWorkbook(inputStream);
+
+        List<SmartDepartment> departments = smartDepartmentService.list(null);
+
+        //读取第一张sheet
+        XSSFSheet sheetAt = sheets.getSheetAt(0);
+
+        DataFormatter dataFormatter = new DataFormatter();
+        try {
+            for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
+                XSSFRow row = sheetAt.getRow(rowNum);
+
+                if (row != null) {
+                    //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
+                    //所以先使用setCellType()方法先将该单元格的类型设置为STRING
+                    //然后poi会根据字符串读取它
+                    //标题 校验
+                    if (rowNum == 0) {
+                        String cardNo = dataFormatter.formatCellValue(row.getCell(0));//学号
+                        if (!cardNo.equals("学号")) {
+                            return CommonResult.fail("导入数据第一列为学号");
+                        }
+                        String name = dataFormatter.formatCellValue(row.getCell(1));//姓名
+                        if (!name.equals("姓名")) {
+                            return CommonResult.fail("导入数据第二列为姓名");
+                        }
+                        String identity = dataFormatter.formatCellValue(row.getCell(2));//身份
+                        if (!identity.equals("身份")) {
+                            return CommonResult.fail("导入数据第三列为身份");
+                        }
+                        String idCard = dataFormatter.formatCellValue(row.getCell(3));//身份证
+                        if (!idCard.equals("身份证")) {
+                            return CommonResult.fail("导入数据第四列为身份证");
+                        }
+                        String sex = dataFormatter.formatCellValue(row.getCell(4));//性别
+                        if (!sex.equals("性别")) {
+                            return CommonResult.fail("导入数据第五列为性别");
+                        }
+                        String department = dataFormatter.formatCellValue(row.getCell(5));//部门
+                        if (!department.equals("部门")) {
+                            return CommonResult.fail("导入数据第六列为部门");
+                        }
+                        String headImage = dataFormatter.formatCellValue(row.getCell(6));//人脸照片
+                        if (!headImage.equals("人脸照片")) {
+                            return CommonResult.fail("导入数据第七列为人脸照片");
+                        }
+                        String dormitoryNumber = dataFormatter.formatCellValue(row.getCell(7));//宿舍号
+                        if (!dormitoryNumber.equals("宿舍号")) {
+                            return CommonResult.fail("导入数据第八列为宿舍号");
+                        }
+                        String grade = dataFormatter.formatCellValue(row.getCell(8));//年级
+                        if (!grade.equals("年级")) {
+                            return CommonResult.fail("导入数据第九列为年级");
+                        }
+                        String schoolClass = dataFormatter.formatCellValue(row.getCell(9));//班级
+                        if (!schoolClass.equals("班级")) {
+                            return CommonResult.fail("导入数据第十列为班级");
+                        }
+                        String phone = dataFormatter.formatCellValue(row.getCell(10));//手机号
+                        if (!phone.equals("手机号")) {
+                            return CommonResult.fail("导入数据第十一列为手机号");
+                        }
+                        String affiliate = dataFormatter.formatCellValue(row.getCell(11));//关联人
+                        if (!affiliate.equals("关联人")) {
+                            return CommonResult.fail("导入数据第十二列为关联人");
+                        }
+                        String title = dataFormatter.formatCellValue(row.getCell(12));//职称
+                        if (!title.equals("职称")) {
+                            return CommonResult.fail("导入数据第十三列为职称");
+                        }
+                        String address = dataFormatter.formatCellValue(row.getCell(13));//家庭住址
+                        if (!address.equals("家庭住址")) {
+                            return CommonResult.fail("导入数据第十四列为家庭住址");
+                        }
+                        String nation = dataFormatter.formatCellValue(row.getCell(14));//民族
+                        if (!nation.equals("民族")) {
+                            return CommonResult.fail("导入数据第十五列为民族");
+                        }
+                        String ofStudent = dataFormatter.formatCellValue(row.getCell(15));//生源地
+                        if (!ofStudent.equals("生源地")) {
+                            return CommonResult.fail("导入数据第十六列为生源地");
+                        }
+                        String graduate = dataFormatter.formatCellValue(row.getCell(16));//毕业学校
+                        if (!graduate.equals("毕业学校")) {
+                            return CommonResult.fail("导入数据第十七列为毕业学校");
+                        }
+                        String duties = dataFormatter.formatCellValue(row.getCell(17));//职务
+                        if (!duties.equals("职务")) {
+                            return CommonResult.fail("导入数据第十八列为职务");
+                        }
+                    } else {
+                        SmartUser user = new SmartUser();
+                        String name = dataFormatter.formatCellValue(row.getCell(1));
+                        if (ObjectUtils.isEmpty(name)) {
+                            return CommonResult.fail("第" + (rowNum + 2) + "条数据的名称不能为空");
+                        }
+
+                        //身份是否为空判断
+                        String identity = dataFormatter.formatCellValue(row.getCell(2));
+                        if (ObjectUtils.isEmpty(identity)) {
+                            return CommonResult.fail(name + "的身份不能为空");
+                        }
+
+                        String dormitoryNumber = dataFormatter.formatCellValue(row.getCell(7));//宿舍号
+                        String grade = dataFormatter.formatCellValue(row.getCell(8));//年级
+                        String schoolClass = dataFormatter.formatCellValue(row.getCell(9));//班级
+                        //身份为学生的情况下 宿舍号、年级、班级不能为空
+                        if (eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Student.getValue()) {
+                            if (ObjectUtils.isEmpty(dormitoryNumber)) {
+                                return CommonResult.fail(name + "的宿舍号不能为空");
+                            }
+                            if (ObjectUtils.isEmpty(grade)) {
+                                return CommonResult.fail(name + "的年级不能为空");
+                            }
+                            if (ObjectUtils.isEmpty(schoolClass)) {
+                                return CommonResult.fail(name + "的班级不能为空");
+                            }
+                        }
+
+                        //手机号重复判断
+                        String phone = dataFormatter.formatCellValue(row.getCell(10));
+                        if (eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Parent.getValue() || eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Teacher.getValue()) {
+                            if (ObjectUtils.isEmpty(phone)) {
+                                return CommonResult.fail(name + "的手机号不能为空");
+                            }
+                        }
+                        if (!ObjectUtils.isEmpty(phone)) {
+                            phones.add(phone);
+                        }
+                        if (phones.stream().distinct().count() != phones.size()) {
+                            return CommonResult.fail("导入的Excel中,手机号:" + phone + "存在重复数据");
+                        }
+
+                        String affiliate = dataFormatter.formatCellValue(row.getCell(11));//关联人
+                        if (eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Parent.getValue()) {
+                            if (ObjectUtils.isEmpty(affiliate)) {
+                                return CommonResult.fail(name + "的关联人不能为空");
+                            }
+                        }
+
+                        //性别是否为空判断
+                        String sex = dataFormatter.formatCellValue(row.getCell(4));
+                        if (ObjectUtils.isEmpty(sex)) {
+                            return CommonResult.fail(name + "的性别不能为空");
+                        }
+
+                        //家庭住址是否为空判断
+                        String address = dataFormatter.formatCellValue(row.getCell(13));
+                        if (ObjectUtils.isEmpty(address)) {
+                            return CommonResult.fail(name + "的家庭住址不能为空");
+                        }
+
+                        //民族是否为空判断
+                        String nation = dataFormatter.formatCellValue(row.getCell(14));
+                        if (ObjectUtils.isEmpty(nation)) {
+                            return CommonResult.fail(name + "的民族不能为空");
+                        }
+
+                        //部门是否为空判断
+                        String department = dataFormatter.formatCellValue(row.getCell(5));
+                        if (ObjectUtils.isEmpty(department)) {
+                            return CommonResult.fail(name + "的部门不能为空");
+                        }
+                        int lastIndex = department.lastIndexOf("/");
+                        Integer departmentId = null;
+                        if (lastIndex >= 0) {
+                            Optional<SmartDepartment> departModel = departments.stream().filter(e -> e.getName().equals(department.substring(lastIndex))).findFirst();
+                            if (departModel != null && departModel.isPresent()) {
+                                departmentId = departModel.get().getId();
+                            }
+                        }
+
+                        //学号重复判断
+                        String cardNo = dataFormatter.formatCellValue(row.getCell(0));
+                        if (!ObjectUtils.isEmpty(cardNo)) {
+                            cardNos.add(cardNo);
+                        }
+                        if (cardNos.stream().distinct().count() != cardNos.size()) {
+                            return CommonResult.fail("导入的Excel中,卡号:" + cardNo + "存在重复数据");
+                        }
+
+                        //身份证重复判断
+                        String idCard = dataFormatter.formatCellValue(row.getCell(3));
+                        if (!ObjectUtils.isEmpty(idCard)) {
+                            idCards.add(idCard);
+                        }
+                        //List<String> noEmptyIdCards = idCards.stream().filter(e -> !e.equals("") || e != null).collect(Collectors.toList());
+                        if (idCards.stream().distinct().count() != idCards.size()) {
+                            return CommonResult.fail("导入的Excel中,身份证号:" + idCard + "存在重复数据");
+                        }
+                        user.setCardNo(cardNo == null ? "" : cardNo);
+                        user.setName(name == null ? "" : name);
+                        user.setIdentityId(identity == null ? eIdentityStatu.Student.getValue() : eIdentityStatu.integerOf(identity));
+                        user.setIdCard(idCard == null ? "" : idCard);
+                        user.setSexId(sex == null ? eSexStatu.Man.getValue() : eSexStatu.integerOf(sex));
+                        user.setDepartmentId(departmentId);
+                        String cellImage = dataFormatter.formatCellValue(row.getCell(6));
+                        user.setHeadImage(cellImage);
+                        user.setDormitoryNumber(dormitoryNumber == null ? "" : dormitoryNumber);
+                        user.setGrade(grade == null ? "" : grade);
+                        user.setSchoolClass(schoolClass == null ? "" : schoolClass);
+                        user.setCollege("");
+                        user.setSpeciality("");
+                        user.setCampus("");
+                        user.setPhone(phone == null ? "" : phone);
+                        user.setAffiliate(affiliate == null ? "" : affiliate);
+                        String title = dataFormatter.formatCellValue(row.getCell(12));//职称
+                        user.setTitle(title == null ? "" : title);
+                        user.setAddress(address == null ? "" : address);
+                        user.setNation(nation == null ? "" : nation);
+                        String ofStudent = dataFormatter.formatCellValue(row.getCell(15));//生源地
+                        user.setOfStudent(ofStudent == null ? "" : ofStudent);
+                        String graduate = dataFormatter.formatCellValue(row.getCell(16));//毕业学校
+                        user.setGraduate(graduate == null ? "" : graduate);
+                        String duties = dataFormatter.formatCellValue(row.getCell(17));//职务
+                        user.setDuties(duties == null ? "" : duties);
+                        user.setIsCancel(eLogOff.Unlogout.getValue());
+
+                        result.add(user);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            return CommonResult.fail("请按模板格式导入数据");
+        }
+
+        return CommonResult.ok(result);
+    }
+
+    /**
+     * Xls文件读取方法
+     *
+     * @param inputStream 文件流
+     * @return
+     * @throws IOException
+     */
+    private CommonResult<List<SmartUser>> readXls(InputStream inputStream) throws IOException {
+        List<String> phones = new ArrayList<>();
+        List<String> idCards = new ArrayList<>();
+        List<String> cardNos = new ArrayList<>();
+        List<SmartUser> result = new ArrayList<>();
+        HSSFWorkbook sheets = new HSSFWorkbook(inputStream);
+
+        List<SmartDepartment> departments = smartDepartmentService.list(null);
+
+        //读取第一张sheet
+        HSSFSheet sheetAt = sheets.getSheetAt(0);
+
+        DataFormatter dataFormatter = new DataFormatter();
+        try {
+            for (int rowNum = 0; rowNum < sheetAt.getLastRowNum() + 1; rowNum++) {
+                HSSFRow row = sheetAt.getRow(rowNum);
+
+                if (row != null) {
+                    //使用了getStringCellValue()方法来获取值,POI会判断单元格的类型,如果非字符串类型就会抛出上面的异常。
+                    //所以先使用setCellType()方法先将该单元格的类型设置为STRING
+                    //然后poi会根据字符串读取它
+                    //标题 校验
+                    if (rowNum == 0) {
+                        String cardNo = dataFormatter.formatCellValue(row.getCell(0));//学号
+                        if (!cardNo.equals("学号")) {
+                            return CommonResult.fail("导入数据第一列为学号");
+                        }
+                        String name = dataFormatter.formatCellValue(row.getCell(1));//姓名
+                        if (!name.equals("姓名")) {
+                            return CommonResult.fail("导入数据第二列为姓名");
+                        }
+                        String identity = dataFormatter.formatCellValue(row.getCell(2));//身份
+                        if (!identity.equals("身份")) {
+                            return CommonResult.fail("导入数据第三列为身份");
+                        }
+                        String idCard = dataFormatter.formatCellValue(row.getCell(3));//身份证
+                        if (!idCard.equals("身份证")) {
+                            return CommonResult.fail("导入数据第四列为身份证");
+                        }
+                        String sex = dataFormatter.formatCellValue(row.getCell(4));//性别
+                        if (!sex.equals("性别")) {
+                            return CommonResult.fail("导入数据第五列为性别");
+                        }
+                        String department = dataFormatter.formatCellValue(row.getCell(5));//部门
+                        if (!department.equals("部门")) {
+                            return CommonResult.fail("导入数据第六列为部门");
+                        }
+                        String headImage = dataFormatter.formatCellValue(row.getCell(6));//人脸照片
+                        if (!headImage.equals("人脸照片")) {
+                            return CommonResult.fail("导入数据第七列为人脸照片");
+                        }
+                        String dormitoryNumber = dataFormatter.formatCellValue(row.getCell(7));//宿舍号
+                        if (!dormitoryNumber.equals("宿舍号")) {
+                            return CommonResult.fail("导入数据第八列为宿舍号");
+                        }
+                        String grade = dataFormatter.formatCellValue(row.getCell(8));//年级
+                        if (!grade.equals("年级")) {
+                            return CommonResult.fail("导入数据第九列为年级");
+                        }
+                        String schoolClass = dataFormatter.formatCellValue(row.getCell(9));//班级
+                        if (!schoolClass.equals("班级")) {
+                            return CommonResult.fail("导入数据第十列为班级");
+                        }
+                        String phone = dataFormatter.formatCellValue(row.getCell(10));//手机号
+                        if (!phone.equals("手机号")) {
+                            return CommonResult.fail("导入数据第十一列为手机号");
+                        }
+                        String affiliate = dataFormatter.formatCellValue(row.getCell(11));//关联人
+                        if (!affiliate.equals("关联人")) {
+                            return CommonResult.fail("导入数据第十二列为关联人");
+                        }
+                        String title = dataFormatter.formatCellValue(row.getCell(12));//职称
+                        if (!title.equals("职称")) {
+                            return CommonResult.fail("导入数据第十三列为职称");
+                        }
+                        String address = dataFormatter.formatCellValue(row.getCell(13));//家庭住址
+                        if (!address.equals("家庭住址")) {
+                            return CommonResult.fail("导入数据第十四列为家庭住址");
+                        }
+                        String nation = dataFormatter.formatCellValue(row.getCell(14));//民族
+                        if (!nation.equals("民族")) {
+                            return CommonResult.fail("导入数据第十五列为民族");
+                        }
+                        String ofStudent = dataFormatter.formatCellValue(row.getCell(15));//生源地
+                        if (!ofStudent.equals("生源地")) {
+                            return CommonResult.fail("导入数据第十六列为生源地");
+                        }
+                        String graduate = dataFormatter.formatCellValue(row.getCell(16));//毕业学校
+                        if (!graduate.equals("毕业学校")) {
+                            return CommonResult.fail("导入数据第十七列为毕业学校");
+                        }
+                        String duties = dataFormatter.formatCellValue(row.getCell(17));//职务
+                        if (!duties.equals("职务")) {
+                            return CommonResult.fail("导入数据第十八列为职务");
+                        }
+                    } else {
+                        SmartUser user = new SmartUser();
+                        String name = dataFormatter.formatCellValue(row.getCell(1));
+                        if (ObjectUtils.isEmpty(name)) {
+                            return CommonResult.fail("第" + (rowNum + 2) + "条数据的名称不能为空");
+                        }
+
+                        //身份是否为空判断
+                        String identity = dataFormatter.formatCellValue(row.getCell(2));
+                        if (ObjectUtils.isEmpty(identity)) {
+                            return CommonResult.fail(name + "的身份不能为空");
+                        }
+
+                        String dormitoryNumber = dataFormatter.formatCellValue(row.getCell(7));//宿舍号
+                        String grade = dataFormatter.formatCellValue(row.getCell(8));//年级
+                        String schoolClass = dataFormatter.formatCellValue(row.getCell(9));//班级
+                        //身份为学生的情况下 宿舍号、年级、班级不能为空
+                        if (eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Student.getValue()) {
+                            if (ObjectUtils.isEmpty(dormitoryNumber)) {
+                                return CommonResult.fail(name + "的宿舍号不能为空");
+                            }
+                            if (ObjectUtils.isEmpty(grade)) {
+                                return CommonResult.fail(name + "的年级不能为空");
+                            }
+                            if (ObjectUtils.isEmpty(schoolClass)) {
+                                return CommonResult.fail(name + "的班级不能为空");
+                            }
+                        }
+
+                        //手机号重复判断
+                        String phone = dataFormatter.formatCellValue(row.getCell(10));
+                        if (eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Parent.getValue() || eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Teacher.getValue()) {
+                            if (ObjectUtils.isEmpty(phone)) {
+                                return CommonResult.fail(name + "的手机号不能为空");
+                            }
+                        }
+                        if (!ObjectUtils.isEmpty(phone)) {
+                            phones.add(phone);
+                        }
+                        if (phones.stream().distinct().count() != phones.size()) {
+                            return CommonResult.fail("导入的Excel中,手机号:" + phone + "存在重复数据");
+                        }
+
+                        String affiliate = dataFormatter.formatCellValue(row.getCell(11));//关联人
+                        if (eIdentityStatu.integerOf(identity).intValue() == eIdentityStatu.Parent.getValue()) {
+                            if (ObjectUtils.isEmpty(affiliate)) {
+                                return CommonResult.fail(name + "的关联人不能为空");
+                            }
+                        }
+
+                        //性别是否为空判断
+                        String sex = dataFormatter.formatCellValue(row.getCell(4));
+                        if (ObjectUtils.isEmpty(sex)) {
+                            return CommonResult.fail(name + "的性别不能为空");
+                        }
+
+                        //家庭住址是否为空判断
+                        String address = dataFormatter.formatCellValue(row.getCell(13));
+                        if (ObjectUtils.isEmpty(address)) {
+                            return CommonResult.fail(name + "的家庭住址不能为空");
+                        }
+
+                        //民族是否为空判断
+                        String nation = dataFormatter.formatCellValue(row.getCell(14));
+                        if (ObjectUtils.isEmpty(nation)) {
+                            return CommonResult.fail(name + "的民族不能为空");
+                        }
+
+                        //部门是否为空判断
+                        String department = dataFormatter.formatCellValue(row.getCell(5));
+                        if (ObjectUtils.isEmpty(department)) {
+                            return CommonResult.fail(name + "的部门不能为空");
+                        }
+                        int lastIndex = department.lastIndexOf("/");
+                        Integer departmentId = null;
+                        if (lastIndex >= 0) {
+                            Optional<SmartDepartment> departModel = departments.stream().filter(e -> e.getName().equals(department.substring(lastIndex))).findFirst();
+                            if (departModel != null && departModel.isPresent()) {
+                                departmentId = departModel.get().getId();
+                            }
+                        }
+
+
+                        //学号重复判断
+                        String cardNo = dataFormatter.formatCellValue(row.getCell(0));
+                        if (!ObjectUtils.isEmpty(cardNo)) {
+                            cardNos.add(cardNo);
+                        }
+                        if (cardNos.stream().distinct().count() != cardNos.size()) {
+                            return CommonResult.fail("导入的Excel中,卡号:" + cardNo + "存在重复数据");
+                        }
+
+                        //身份证重复判断
+                        String idCard = dataFormatter.formatCellValue(row.getCell(3));
+                        if (!ObjectUtils.isEmpty(idCard)) {
+                            idCards.add(idCard);
+                        }
+                        //List<String> noEmptyIdCards = idCards.stream().filter(e -> !e.equals("") || e != null).collect(Collectors.toList());
+                        if (idCards.stream().distinct().count() != idCards.size()) {
+                            return CommonResult.fail("导入的Excel中,身份证号:" + idCard + "存在重复数据");
+                        }
+                        user.setCardNo(cardNo == null ? "" : cardNo);
+                        user.setName(name == null ? "" : name);
+                        user.setIdentityId(identity == null ? eIdentityStatu.Student.getValue() : eIdentityStatu.integerOf(identity));
+                        user.setIdCard(idCard == null ? "" : idCard);
+                        user.setSexId(sex == null ? eSexStatu.Man.getValue() : eSexStatu.integerOf(sex));
+                        user.setDepartmentId(departmentId);
+                        String cellImage = dataFormatter.formatCellValue(row.getCell(6));
+                        user.setHeadImage(cellImage);
+                        user.setDormitoryNumber(dormitoryNumber == null ? "" : dormitoryNumber);
+                        user.setGrade(grade == null ? "" : grade);
+                        user.setSchoolClass(schoolClass == null ? "" : schoolClass);
+                        user.setCollege("");
+                        user.setSpeciality("");
+                        user.setCampus("");
+                        user.setPhone(phone == null ? "" : phone);
+                        user.setAffiliate(affiliate == null ? "" : affiliate);
+                        String title = dataFormatter.formatCellValue(row.getCell(12));//职称
+                        user.setTitle(title == null ? "" : title);
+                        user.setAddress(address == null ? "" : address);
+                        user.setNation(nation == null ? "" : nation);
+                        String ofStudent = dataFormatter.formatCellValue(row.getCell(15));//生源地
+                        user.setOfStudent(ofStudent == null ? "" : ofStudent);
+                        String graduate = dataFormatter.formatCellValue(row.getCell(16));//毕业学校
+                        user.setGraduate(graduate == null ? "" : graduate);
+                        String duties = dataFormatter.formatCellValue(row.getCell(17));//职务
+                        user.setDuties(duties == null ? "" : duties);
+                        user.setIsCancel(eLogOff.Unlogout.getValue());
+
+                        result.add(user);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            return CommonResult.fail("请按模板格式导入数据");
+        }
+
+        return CommonResult.ok(result);
+    }
+
+
     /**
      * 新增用户
-     * @param smartApply 用户数据
+     *
+     * @param isur          用户数据
      * @param bindingResult
      * @return
      */
     @Override
-    public CommonResult insertSmartUser(SmartUser smartApply, BindingResult bindingResult) {
+    public CommonResult insertSmartUser(insertSmartUserRequest isur, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             String st = paramUtils.getParamError(bindingResult);
             return CommonResult.fail(st);
         }
 
-        int result = smartUserService.insertSmartUser(smartApply);
+        SmartUser su = new SmartUser();
+        su.setCardNo(isur.getCardNo());
+        su.setName(isur.getName());
+        su.setIdentityId(isur.getIdentityId());
+        su.setIdCard(isur.getIdCard());
+        su.setSexId(isur.getSexId());
+        su.setDepartmentId(isur.getDepartmentId());
+        su.setHeadImage(isur.getHeadImage());
+        su.setGrade(isur.getGrade());
+        su.setCollege(isur.getCollege());
+        su.setSpeciality(isur.getSpeciality());
+        su.setSchoolClass(isur.getSchoolClass());
+        su.setCampus(isur.getCampus());
+        su.setDormitoryNumber(isur.getDormitoryNumber());
+        su.setPhone(isur.getPhone());
+        su.setAffiliate(StringUtils.join(isur.getAffiliate(), ","));
+        su.setTitle(isur.getTitle());
+        su.setAddress(isur.getAddress());
+        su.setNation(isur.getNation());
+        su.setOfStudent(isur.getOfStudent());
+        su.setGraduate(isur.getGraduate());
+        su.setDuties(isur.getDuties());
+        su.setIsCancel(eLogOff.Unlogout.getValue());
+
+        int result = smartUserService.insertSmartUser(su);
 
         //新增用户得将用户信息通过接口推送到希沃、百胜
 
@@ -52,44 +773,193 @@ public class SmartUserController implements SmartUserControllerAPI {
 
     /**
      * 更新用户
-     * @param sa 用户数据
+     *
+     * @param usur          更新用户数据
      * @param bindingResult
      * @return
      */
     @Override
-    public CommonResult updateSmartUserById(SmartUser sa, BindingResult bindingResult) {
+    public CommonResult updateSmartUserById(updateSmartUserRequest usur, BindingResult bindingResult) {
         if (bindingResult.hasErrors()) {
             String st = paramUtils.getParamError(bindingResult);
             return CommonResult.fail(st);
         }
 
         //更新的同时将百胜用户信息同步过去或者同步过来?
+        SmartUser su = smartUserService.getSmartById(usur.getId());
+
+        if (su == null) {
+            CommonResult.fail("用户数据已失效,修改失败!");
+        }
 
-        int result = smartUserService.updateSmartUser(sa);
+        su.setCardNo(usur.getCardNo());
+        su.setName(usur.getName());
+        su.setIdentityId(usur.getIdentityId());
+        su.setIdCard(usur.getIdCard());
+        su.setSexId(usur.getSexId());
+        su.setDepartmentId(usur.getDepartmentId());
+        su.setHeadImage(usur.getHeadImage());
+        su.setGrade(usur.getGrade());
+        su.setCollege(usur.getCollege());
+        su.setSpeciality(usur.getSpeciality());
+        su.setSchoolClass(usur.getSchoolClass());
+        su.setCampus(usur.getCampus());
+        su.setDormitoryNumber(usur.getDormitoryNumber());
+        su.setPhone(usur.getPhone());
+        su.setAffiliate(StringUtils.join(usur.getAffiliate(), ","));
+        su.setTitle(usur.getTitle());
+        su.setAddress(usur.getAddress());
+        su.setNation(usur.getNation());
+        su.setOfStudent(usur.getOfStudent());
+        su.setGraduate(usur.getGraduate());
+        su.setDuties(usur.getDuties());
+        su.setIsCancel(eLogOff.Unlogout.getValue());
+
+        int result = smartUserService.updateSmartUser(su);
         return result > 0 ? CommonResult.ok("修改成功") : CommonResult.fail("修改失败");
     }
 
     /**
      * 用户分页数据查询
-     * @param currentPage 当前页数
-     * @param pageCount 一页数据条数
-     * @param name 查询名称
+     *
+     * @param currentPage  当前页数
+     * @param pageCount    一页数据条数
+     * @param departmentId 部门ID
      * @return
      */
     @Override
-    public CommonResult queryPageSmartUser(int currentPage, int pageCount, String name) {
-        PageUtils<SmartUser> result = smartUserService.queryPageSmartUsers(currentPage, pageCount, name);
+    public CommonResult queryPageSmartUser(int currentPage, int pageCount, int departmentId, String name) {
+        //获取该部门下的所有子级部门ID
+        List<Integer> childDepartmentIds = new ArrayList<>();
+        List<SmartDepartment> departments = smartDepartmentService.list(null);
+        childDepartmentIds.add(departmentId);
+        QueryDepartmentTreeRecords(departmentId, departments, childDepartmentIds);
+
+        PageUtils<UserVo> result = smartUserService.querySmartUserPages(currentPage, pageCount, childDepartmentIds, name);
 
         return CommonResult.ok(result);
     }
 
+    @Override
+    public void smartUserExport(HttpServletResponse response, int departmentId, String name) {
+        //获取该部门下的所有子级部门ID
+        List<Integer> childDepartmentIds = new ArrayList<>();
+        List<SmartDepartment> departments = smartDepartmentService.list(null);
+        childDepartmentIds.add(departmentId);
+        QueryDepartmentTreeRecords(departmentId, departments, childDepartmentIds);
+
+        List<SmartUser> users = smartUserService.querySmartUsers(childDepartmentIds, name);
+
+        //导出
+        Workbook workbook = new XSSFWorkbook();
+        Sheet sheet = workbook.createSheet("用户信息管理");
+        Row headerRow = sheet.createRow(0);
+        headerRow.createCell(0).setCellValue("序号");
+        headerRow.createCell(1).setCellValue("学号");
+        headerRow.createCell(2).setCellValue("姓名");
+        headerRow.createCell(3).setCellValue("身份");
+        headerRow.createCell(4).setCellValue("身份证号");
+        headerRow.createCell(5).setCellValue("性别");
+        headerRow.createCell(6).setCellValue("部门");
+        headerRow.createCell(7).setCellValue("人脸");
+        headerRow.createCell(8).setCellValue("年级");
+        headerRow.createCell(9).setCellValue("学院");
+        headerRow.createCell(10).setCellValue("专业");
+        headerRow.createCell(11).setCellValue("班级");
+        headerRow.createCell(12).setCellValue("校区");
+        headerRow.createCell(13).setCellValue("宿舍号");
+        headerRow.createCell(14).setCellValue("手机号");
+        headerRow.createCell(15).setCellValue("关联人");
+        headerRow.createCell(16).setCellValue("职称");
+        headerRow.createCell(17).setCellValue("家庭住址");
+        headerRow.createCell(18).setCellValue("民族");
+        headerRow.createCell(19).setCellValue("生源地");
+        headerRow.createCell(20).setCellValue("毕业学校");
+        headerRow.createCell(21).setCellValue("职务");
+
+        for (int i = 0; i < users.size(); i++) {
+            SmartUser user = users.get(i);
+
+            Row dataRow = sheet.createRow(i + 1);
+            dataRow.createCell(0).setCellValue(i + 1);
+            dataRow.createCell(1).setCellValue(user.getCardNo());
+            dataRow.createCell(2).setCellValue(user.getName());
+            dataRow.createCell(3).setCellValue(eIdentityStatu.stringOf(user.getIdentityId()));
+            dataRow.createCell(4).setCellValue(user.getIdCard());
+            dataRow.createCell(5).setCellValue(eSexStatu.stringOf(user.getSexId()));
+            //获取父级部门ID
+            Optional<SmartDepartment> department = departments.stream().filter(e -> e.getId().equals(user.getDepartmentId())).findFirst();
+            if(department != null && department.isPresent()){
+                dataRow.createCell(6).setCellValue(QueryParentDepartments(department.get().getParentId(), departments, null));
+            }
+
+            dataRow.createCell(7).setCellValue(user.getHeadImage());
+            dataRow.createCell(8).setCellValue(user.getGrade());
+            dataRow.createCell(9).setCellValue(user.getCollege());
+            dataRow.createCell(10).setCellValue(user.getSpeciality());
+            dataRow.createCell(11).setCellValue(user.getSchoolClass());
+            dataRow.createCell(12).setCellValue(user.getCampus());
+            dataRow.createCell(13).setCellValue(user.getDormitoryNumber());
+            dataRow.createCell(14).setCellValue(user.getPhone());
+            dataRow.createCell(15).setCellValue(user.getAffiliate());
+            dataRow.createCell(16).setCellValue(user.getTitle());
+            dataRow.createCell(17).setCellValue(user.getAddress());
+            dataRow.createCell(18).setCellValue(user.getNation());
+            dataRow.createCell(19).setCellValue(user.getOfStudent());
+            dataRow.createCell(20).setCellValue(user.getGraduate());
+            dataRow.createCell(21).setCellValue(user.getDuties());
+        }
+
+        // 将工作簿写入文件
+        ExcelUtils.excelDownload(workbook, "用户信息.xlsx", response);
+    }
+
+    /**
+     * 根据父级ID获取树形数据
+     *
+     * @param parentID 父级ID
+     * @param lists    数据集合
+     * @return
+     */
+    private List<DepartmentTreeVo> QueryDepartmentTreeRecords(Integer parentID, List<SmartDepartment> lists, List<Integer> departmentIds) {
+        List<DepartmentTreeVo> newTrees = new ArrayList<>();
+
+        List<SmartDepartment> datas = lists.stream().filter(e -> e.getParentId().equals(parentID)).collect(Collectors.toList());
+
+        for (SmartDepartment data : datas) {
+            departmentIds.add(data.getId());
+            QueryDepartmentTreeRecords(data.getId(), lists, departmentIds);
+        }
+
+        return newTrees;
+    }
+
+
+    /**
+     * 根据父级ID获取父级数据
+     *
+     * @param parentID 子级ID
+     * @param lists    数据集合
+     * @return
+     */
+    private String QueryParentDepartments(Integer parentID, List<SmartDepartment> lists, String departmentStr) {
+
+        Optional<SmartDepartment> data = lists.stream().filter(e -> e.getId().equals(parentID)).findFirst();
+
+        if(data != null && data.isPresent()){
+            departmentStr = departmentStr == null ? data.get().getName() : data.get().getName() + "/"+ departmentStr;
+            QueryParentDepartments(data.get().getParentId(), lists, departmentStr);
+        }
+
+        return departmentStr;
+    }
 
     @Override
     public CommonResult deleteSmartUserById(int id) {
 
         SmartUser data = smartUserService.getSmartById(id);
 
-        if(data == null){
+        if (data == null) {
             return CommonResult.fail("当前数据不存在,删除失败!");
         }
 

+ 6 - 0
src/main/java/com/template/mapper/SmartUserMapper.java

@@ -2,7 +2,9 @@ package com.template.mapper;
 
 import com.template.model.pojo.SmartUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.template.model.vo.AffiliateUserVo;
+import com.template.model.vo.UserVo;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
@@ -19,4 +21,8 @@ import java.util.List;
 @Repository
 public interface SmartUserMapper extends BaseMapper<SmartUser> {
     List<AffiliateUserVo> queryAffiliateUserById(@Param("id") Integer id);
+
+    IPage<UserVo> querySmartUserPages(IPage<UserVo> page,@Param("departmentIds") List<Integer> departmentIds, @Param("name") String name);
+
+    List<SmartUser> querySmartUsers(@Param("departmentIds") List<Integer> departmentIds, @Param("name") String name);
 }

+ 32 - 0
src/main/java/com/template/model/enumModel/eFileType.java

@@ -0,0 +1,32 @@
+package com.template.model.enumModel;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/17 星期一 9:50
+ * @Description: com.repair.model.enumModel
+ * @Version: 1.0
+ */
+public enum eFileType {
+    Xls("application/vnd.ms-excel"),//非超级管理员
+    Xlsx("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//超级管理员
+
+    private String value;
+
+    eFileType(String value){
+        this.value = value;
+    }
+
+    public String getValue() {
+        return value;
+    }
+    public static eFileType typeValueOf(String value) {
+        switch (value) {
+            case "application/vnd.ms-excel":
+                return eFileType.Xls;
+            case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":
+                return eFileType.Xlsx;
+            default:
+                return null;
+        }
+    }
+}

+ 59 - 0
src/main/java/com/template/model/enumModel/eIdentityStatu.java

@@ -0,0 +1,59 @@
+package com.template.model.enumModel;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/26 星期三 14:55
+ * @Description: com.repair.model.enumModel
+ * @Version: 1.0
+ */
+public enum eIdentityStatu {
+    Parent(1),//家长
+    Student(2),//学生
+    Teacher(3);//教师
+
+    private int value;
+
+    eIdentityStatu(int value){
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+    public static eIdentityStatu valueOf(int value) {
+        switch (value) {
+            case 1:
+                return eIdentityStatu.Parent;
+            case 2:
+                return eIdentityStatu.Student;
+            case 3:
+                return eIdentityStatu.Teacher;
+            default:
+                return null;
+        }
+    }
+    public static String stringOf(Integer value) {
+        switch (value) {
+            case 1:
+                return "家长";
+            case 2:
+                return "学生";
+            case 3:
+                return "教师";
+            default:
+                return null;
+        }
+    }
+    public static Integer integerOf(String value) {
+        switch (value) {
+            case "家长":
+                return 1;
+            case "学生":
+                return 2;
+            case "教师":
+                return 3;
+            default:
+                return null;
+        }
+    }
+}

+ 32 - 0
src/main/java/com/template/model/enumModel/eLogOff.java

@@ -0,0 +1,32 @@
+package com.template.model.enumModel;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/7 星期五 15:14
+ * @Description: com.repair.model.enumModel
+ * @Version: 1.0
+ */
+public enum eLogOff {
+    Unlogout(0),//未注销
+    Logout(1);//注销
+
+    private int value;
+
+    eLogOff(int value){
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+    public static eLogOff valueOf(int value) {
+        switch (value) {
+            case 0:
+                return eLogOff.Unlogout;
+            case 1:
+                return eLogOff.Logout;
+            default:
+                return null;
+        }
+    }
+}

+ 52 - 0
src/main/java/com/template/model/enumModel/eSexStatu.java

@@ -0,0 +1,52 @@
+package com.template.model.enumModel;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/7/26 星期三 14:55
+ * @Description: com.repair.model.enumModel
+ * @Version: 1.0
+ */
+public enum eSexStatu {
+    Woman(0),//女
+    Man(1);//男
+
+    private int value;
+
+    eSexStatu(int value){
+        this.value = value;
+    }
+
+    public int getValue() {
+        return value;
+    }
+    public static eSexStatu valueOf(int value) {
+        switch (value) {
+            case 0:
+                return eSexStatu.Woman;
+            case 1:
+                return eSexStatu.Man;
+            default:
+                return null;
+        }
+    }
+    public static String stringOf(Integer value) {
+        switch (value) {
+            case 0:
+                return "女";
+            case 1:
+                return "男";
+            default:
+                return null;
+        }
+    }
+    public static Integer integerOf(String value) {
+        switch (value) {
+            case "女":
+                return 0;
+            case "男":
+                return 1;
+            default:
+                return null;
+        }
+    }
+}

+ 26 - 0
src/main/java/com/template/model/request/changeDepartmentRequest.java

@@ -0,0 +1,26 @@
+package com.template.model.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * 修改密码
+ */
+@Data
+public class changeDepartmentRequest {
+    /**
+     * 用户ID集合
+     */
+    @NotEmpty(message = "用户ID集合不能为空")
+    private List<Integer> userIds;
+
+    /**
+     * 部门ID
+     */
+    @NotNull(message = "部门ID不能为空")
+    private Integer departmentId;
+
+}

+ 152 - 0
src/main/java/com/template/model/request/insertSmartUserRequest.java

@@ -0,0 +1,152 @@
+package com.template.model.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-12-04
+ */
+@Data
+public class insertSmartUserRequest {
+
+    /**
+     * 编号
+     */
+    @NotBlank(message = "编号不能为空")
+    private String cardNo;
+
+    /**
+     * 姓名
+     */
+    @NotBlank(message = "姓名不能为空")
+    private String name;
+
+    /**
+     * 身份ID
+     */
+    @NotNull(message = "身份ID不能为空")
+    private Integer identityId;
+
+    /**
+     * 身份证
+     */
+    @NotBlank(message = "身份证不能为空")
+    private String idCard;
+
+    /**
+     * 性别
+     * 女:0
+     * 男:1
+     */
+    @NotNull(message = "性别不能为空")
+    private Integer sexId;
+
+    /**
+     * 部门ID
+     */
+    @NotNull(message = "部门ID不能为空")
+    private Integer departmentId;
+
+    /**
+     * 人脸照片
+     */
+    @NotBlank(message = "人脸照片不能为空")
+    private String headImage;
+
+    /**
+     * 年级
+     */
+    @NotBlank(message = "年级不能为空")
+    private String grade;
+
+    /**
+     * 学院
+     */
+    @NotBlank(message = "学院不能为空")
+    private String college;
+
+    /**
+     * 专业
+     */
+    @NotBlank(message = "专业不能为空")
+    private String speciality;
+
+    /**
+     * 班级
+     */
+    @NotBlank(message = "班级不能为空")
+    private String schoolClass;
+
+    /**
+     * 校区
+     */
+    @NotBlank(message = "校区不能为空")
+    private String campus;
+
+    /**
+     * 宿舍号
+      */
+    @NotBlank(message = "宿舍号不能为空")
+    private String dormitoryNumber;
+
+    /**
+     * 手机号
+     */
+    @NotBlank(message = "手机号不能为空")
+    private String phone;
+
+    /**
+     * 关联人
+     * 被关联用户的ID
+     * 多个用户用逗号隔开
+     */
+    @NotEmpty(message = "关联人不能为空")
+    private List<String> affiliate;
+
+    /**
+     * 职称
+     */
+    @NotBlank(message = "职称不能为空")
+    private String title;
+
+    /**
+     * 家庭住址
+     */
+    @NotBlank(message = "家庭住址不能为空")
+    private String address;
+
+    /**
+     * 民族
+     */
+    @NotBlank(message = "民族不能为空")
+    private String nation;
+
+    /**
+     * 生源地不能为空
+     */
+    @NotBlank(message = "生源地不能为空")
+    private String ofStudent;
+
+    /**
+     * 毕业学校
+     */
+    @NotBlank(message = "毕业学校不能为空")
+    private String graduate;
+
+    /**
+     * 职务
+     */
+    @NotBlank(message = "职务不能为空")
+    private String duties;
+
+}

+ 158 - 0
src/main/java/com/template/model/request/updateSmartUserRequest.java

@@ -0,0 +1,158 @@
+package com.template.model.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author ceshi
+ * @since 2023-12-04
+ */
+@Data
+public class updateSmartUserRequest {
+
+    /**
+     * 数据ID
+     */
+    @NotNull(message = "数据ID不能为空")
+    private Integer id;
+
+    /**
+     * 编号
+     */
+    @NotBlank(message = "编号不能为空")
+    private String cardNo;
+
+    /**
+     * 姓名
+     */
+    @NotBlank(message = "姓名不能为空")
+    private String name;
+
+    /**
+     * 身份ID
+     */
+    @NotNull(message = "身份ID不能为空")
+    private Integer identityId;
+
+    /**
+     * 身份证
+     */
+    @NotBlank(message = "身份证不能为空")
+    private String idCard;
+
+    /**
+     * 性别
+     * 女:0
+     * 男:1
+     */
+    @NotNull(message = "性别不能为空")
+    private Integer sexId;
+
+    /**
+     * 部门ID
+     */
+    @NotNull(message = "部门ID不能为空")
+    private Integer departmentId;
+
+    /**
+     * 人脸照片
+     */
+    @NotBlank(message = "人脸照片不能为空")
+    private String headImage;
+
+    /**
+     * 年级
+     */
+    @NotBlank(message = "年级不能为空")
+    private String grade;
+
+    /**
+     * 学院
+     */
+    @NotBlank(message = "学院不能为空")
+    private String college;
+
+    /**
+     * 专业
+     */
+    @NotBlank(message = "专业不能为空")
+    private String speciality;
+
+    /**
+     * 班级
+     */
+    @NotBlank(message = "班级不能为空")
+    private String schoolClass;
+
+    /**
+     * 校区
+     */
+    @NotBlank(message = "校区不能为空")
+    private String campus;
+
+    /**
+     * 宿舍号
+      */
+    @NotBlank(message = "宿舍号不能为空")
+    private String dormitoryNumber;
+
+    /**
+     * 手机号
+     */
+    @NotBlank(message = "手机号不能为空")
+    private String phone;
+
+    /**
+     * 关联人
+     * 被关联用户的ID
+     * 多个用户用逗号隔开
+     */
+    @NotEmpty(message = "关联人不能为空")
+    private List<String> affiliate;
+
+    /**
+     * 职称
+     */
+    @NotBlank(message = "职称不能为空")
+    private String title;
+
+    /**
+     * 家庭住址
+     */
+    @NotBlank(message = "家庭住址不能为空")
+    private String address;
+
+    /**
+     * 民族
+     */
+    @NotBlank(message = "民族不能为空")
+    private String nation;
+
+    /**
+     * 生源地不能为空
+     */
+    @NotBlank(message = "生源地不能为空")
+    private String ofStudent;
+
+    /**
+     * 毕业学校
+     */
+    @NotBlank(message = "毕业学校不能为空")
+    private String graduate;
+
+    /**
+     * 职务
+     */
+    @NotBlank(message = "职务不能为空")
+    private String duties;
+
+}

+ 22 - 0
src/main/java/com/template/model/vo/DepartmentVo.java

@@ -0,0 +1,22 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/12/4 星期一 15:57
+ * @Description: com.template.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class DepartmentVo {
+    /**
+     * 数据ID
+     */
+    private Integer id;
+
+    /**
+     * 校区名称
+     */
+    private String name;
+}

+ 32 - 0
src/main/java/com/template/model/vo/UserVo.java

@@ -0,0 +1,32 @@
+package com.template.model.vo;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2023/12/4 星期一 15:57
+ * @Description: com.template.model.vo
+ * @Version: 1.0
+ */
+@Data
+public class UserVo {
+    /**
+     * 数据ID
+     */
+    private Integer id;
+
+    /**
+     * 用户名称
+     */
+    private String name;
+
+    /**
+     * 用户卡号
+     */
+    private String cardNo;
+
+    /**
+     * 用户头像
+     */
+    private String headImage;
+}

+ 10 - 1
src/main/java/com/template/services/SmartUserService.java

@@ -5,6 +5,7 @@ import com.template.model.pojo.SmartUser;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.AffiliateUserVo;
+import com.template.model.vo.UserVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -22,11 +23,19 @@ public interface SmartUserService extends IService<SmartUser> {
 
     int updateSmartUser(SmartUser rns);
 
-    PageUtils<SmartUser> queryPageSmartUsers(int currentPage, int pageCount, String name);
+    PageUtils<SmartUser> queryPageSmartUsers(int currentPage, int pageCount, List<Integer> departmentIds);
+
+    List<SmartUser> getSmartUserByIds(List<Integer> ids);
+
+    boolean updateUserBatchById(List<SmartUser> users);
 
     int deleteSmartUserById(int id);
 
     SmartUser getSmartById(int id);
 
     List<AffiliateUserVo> queryAffiliateUserById(@Param("id") Integer id);
+
+    PageUtils<UserVo> querySmartUserPages(int currentPage, int pageCount, List<Integer> departmentIds, String name);
+
+    List<SmartUser> querySmartUsers(List<Integer> departmentIds, String name);
 }

+ 19 - 6
src/main/java/com/template/services/impl/SmartUploadServiceImpl.java

@@ -6,9 +6,13 @@ 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.qcloud.cos.COSClient;
+import com.qcloud.cos.ClientConfig;
+import com.qcloud.cos.auth.BasicCOSCredentials;
+import com.qcloud.cos.auth.COSCredentials;
 import com.qcloud.cos.model.CannedAccessControlList;
 import com.qcloud.cos.model.ObjectMetadata;
 import com.qcloud.cos.model.PutObjectRequest;
+import com.qcloud.cos.region.Region;
 import com.template.common.utils.TimeExchange;
 import com.template.config.CosConfig;
 import com.template.mapper.SmartUserMapper;
@@ -48,6 +52,14 @@ public class SmartUploadServiceImpl implements SmartUploadService {
 
     @Override
     public String upload(MultipartFile[] files) {
+        // 1 初始化用户身份信息(secretId, secretKey)。
+        COSCredentials cred = new BasicCOSCredentials(cosConfig.getSecretId(), cosConfig.getSecretKey());
+        // 2 设置 bucket 的区域
+        Region region = new Region(cosConfig.getRegion());
+        ClientConfig clientConfig = new ClientConfig(region);
+        // 3 生成 cos 客户端。
+        COSClient cosClientU = new COSClient(cred, clientConfig);
+
         String response = null;
         String res = "";
         try {
@@ -61,7 +73,7 @@ public class SmartUploadServiceImpl implements SmartUploadService {
                 inputStream = file.getInputStream();
                 System.out.println("运行时间4:"+ TimeExchange.DateToString(new Date()));
                 // 设置文件路径
-                String filePath = getFilePath(originalFileName, "static/");
+                String filePath = getFilePath(originalFileName, "headImage");
                 System.out.println("运行时间5:"+ TimeExchange.DateToString(new Date()));
                 // 上传文件
                 String bucketName = cosConfig.getBucketName();
@@ -74,9 +86,9 @@ public class SmartUploadServiceImpl implements SmartUploadService {
                 System.out.println("运行时间9:"+ TimeExchange.DateToString(new Date()));
                 PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, filePath, inputStream, objectMetadata);
                 System.out.println("运行时间10:"+ TimeExchange.DateToString(new Date()));
-                cosClient.putObject(putObjectRequest);
+                cosClientU.putObject(putObjectRequest);
                 System.out.println("运行时间11:"+ TimeExchange.DateToString(new Date()));
-                cosClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
+                cosClientU.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
                 System.out.println("运行时间12:"+ TimeExchange.DateToString(new Date()));
                 String url = cosConfig.getPath() + "/" + filePath;
                 System.out.println("运行时间11:"+ TimeExchange.DateToString(new Date()));
@@ -88,7 +100,7 @@ public class SmartUploadServiceImpl implements SmartUploadService {
         } catch (IOException e) {
             e.printStackTrace();
         } finally {
-            cosClient.shutdown();
+            cosClientU.shutdown();
         }
         return response;
     }
@@ -97,7 +109,7 @@ public class SmartUploadServiceImpl implements SmartUploadService {
     public void deleteByFileName(String fileName) {
         cosConfig.cosClient();
         // 文件桶内路径
-        String filePath = getDelFilePath(fileName, "static/");
+        String filePath = getDelFilePath(fileName, "headImage/");
         cosClient.deleteObject(cosConfig.getBucketName(), filePath);
     }
 
@@ -115,7 +127,8 @@ public class SmartUploadServiceImpl implements SmartUploadService {
         String filePath = folder + "/";
         // 去除文件后缀 替换所有特殊字符
         String fileStr = StrUtil.removeSuffix(originalFileName, fileType).replaceAll("[^0-9a-zA-Z\\u4e00-\\u9fa5]", "_");
-        filePath += new DateTime().toString("yyyyMMddHHmmss") + "_" + fileStr + fileType;
+        //filePath += new DateTime().toString("yyyyMMddHHmmss") + "_" + fileStr + fileType; 去除时间
+        filePath += originalFileName;
         return filePath;
     }
     /**

+ 42 - 8
src/main/java/com/template/services/impl/SmartUserServiceImpl.java

@@ -5,10 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.mapper.SmartUserMapper;
 import com.template.model.pojo.SmartUser;
-import com.template.model.pojo.SmartUser;
-import com.template.mapper.SmartUserMapper;
 import com.template.model.result.PageUtils;
 import com.template.model.vo.AffiliateUserVo;
+import com.template.model.vo.UserVo;
 import com.template.services.SmartUserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,7 +18,7 @@ import java.util.List;
 
 /**
  * <p>
- *  服务实现类
+ * 服务实现类
  * </p>
  *
  * @author ceshi
@@ -43,15 +42,47 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
     }
 
     @Override
-    public PageUtils<SmartUser> queryPageSmartUsers(int currentPage, int pageCount, String name) {
+    public PageUtils<SmartUser> queryPageSmartUsers(int currentPage, int pageCount, List<Integer> departmentIds) {
         Page<SmartUser> page = new Page<>(currentPage, pageCount);
-        QueryWrapper<SmartUser> queryWrapper = new QueryWrapper<>();
-        //queryWrapper.like(StringUtils.hasText(name), "name", name);
-        IPage<SmartUser> result = smartUserMapper.selectPage(page,queryWrapper);
+//        QueryWrapper<SmartUser> queryWrapper = new QueryWrapper<>();
+//        queryWrapper.eq(departmentId > 0, "department_id", departmentId);
+        IPage<SmartUser> result = smartUserMapper.selectPage(page, null);
         return new PageUtils<>(result);
     }
 
     @Override
+    public PageUtils<UserVo> querySmartUserPages(int currentPage, int pageCount, List<Integer> departmentIds, String name) {
+        Page<UserVo> page = new Page<>();
+        page.setCurrent(currentPage);
+        page.setSize(pageCount);
+        IPage<UserVo> result = smartUserMapper.querySmartUserPages(page, departmentIds, name);
+        return new PageUtils(result);
+    }
+
+
+    @Override
+    public List<SmartUser> querySmartUsers(List<Integer> departmentIds, String name) {
+        List<SmartUser> result = smartUserMapper.querySmartUsers(departmentIds, name);
+        return result;
+    }
+
+
+    @Override
+    public List<SmartUser> getSmartUserByIds(List<Integer> ids) {
+        QueryWrapper<SmartUser> queryWrapper = new QueryWrapper();
+        queryWrapper.in("id",ids);
+        queryWrapper.eq("is_cancel",0);
+        List<SmartUser> result = smartUserMapper.selectList(queryWrapper);
+        return  result;
+    }
+
+    @Override
+    public boolean updateUserBatchById(List<SmartUser> users) {
+        boolean result = this.updateBatchById(users);
+        return result;
+    }
+
+    @Override
     public int deleteSmartUserById(int id) {
         int result = smartUserMapper.deleteById(id);
         return result;
@@ -59,7 +90,10 @@ public class SmartUserServiceImpl extends ServiceImpl<SmartUserMapper, SmartUser
 
     @Override
     public SmartUser getSmartById(int id) {
-        SmartUser result = smartUserMapper.selectById(id);
+        QueryWrapper<SmartUser> queryWrapper = new QueryWrapper();
+        queryWrapper.eq("is_cancel",0);
+        queryWrapper.eq("id",id);
+        SmartUser result = smartUserMapper.selectById(queryWrapper);
         return result;
     }
 

+ 60 - 0
src/main/resources/mapper/template/SmartUserMapper.xml

@@ -17,4 +17,64 @@
         </if>
         )) and deleted = 0
     </select>
+
+    <resultMap type="com.template.model.vo.UserVo" id="smartUserPageMap">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="cardNo" column="card_no"/>
+        <result property="headImage" column="head_image"/>
+    </resultMap>
+    <select id="querySmartUserPages" resultType="com.template.model.vo.UserVo" resultMap="smartUserPageMap">
+        select id,name,card_no,head_image from smart_user
+        where deleted = 0 and is_cancel = 0
+        <if test="departmentIds != null and departmentIds.size() > 0">
+            and department_id in
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                ${departmentId}
+            </foreach>
+        </if>
+        <if test="name != null and name != ''">
+            and name like '%' #{name} '%'
+        </if>
+    </select>
+
+
+    <resultMap type="com.template.model.pojo.SmartUser" id="smartUsersMap">
+        <result property="cardNo" column="card_no"/>
+        <result property="name" column="name"/>
+        <result property="identityId" column="identity_id"/>
+        <result property="idCard" column="id_card"/>
+        <result property="sexId" column="sex_id"/>
+        <result property="departmentId" column="department_id"/>
+        <result property="headImage" column="head_image"/>
+        <result property="grade" column="grade"/>
+        <result property="college" column="college"/>
+        <result property="speciality" column="speciality"/>
+        <result property="schoolClass" column="school_class"/>
+        <result property="campus" column="campus"/>
+        <result property="dormitoryNumber" column="dormitory_number"/>
+        <result property="phone" column="phone"/>
+        <result property="affiliate" column="affiliate"/>
+        <result property="title" column="title"/>
+        <result property="address" column="address"/>
+        <result property="nation" column="nation"/>
+        <result property="ofStudent" column="of_student"/>
+        <result property="graduate" column="graduate"/>
+        <result property="duties" column="duties"/>
+    </resultMap>
+    <select id="querySmartUsers" resultType="com.template.model.pojo.SmartUser" resultMap="smartUsersMap">
+        select card_no,name,identity_id,id_card,sex_id,department_id,head_image,grade,college,speciality,school_class,campus,dormitory_number,
+        phone,affiliate,title,address,nation,of_student,graduate,duties from smart_user
+        where deleted = 0 and is_cancel = 0
+        <if test="departmentIds != null and departmentIds.size() > 0">
+            and department_id in
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                ${departmentId}
+            </foreach>
+        </if>
+        <if test="name != null and name != ''">
+            and name like '%' #{name} '%'
+        </if>
+    </select>
+
 </mapper>

+ 22 - 0
target/classes/mapper/template/SmartUserMapper.xml

@@ -17,4 +17,26 @@
         </if>
         )) and deleted = 0
     </select>
+
+    <resultMap type="com.template.model.vo.UserVo" id="smartUserPageMap">
+        <result property="id" column="id"/>
+        <result property="name" column="name"/>
+        <result property="cardNo" column="card_no"/>
+        <result property="headImage" column="head_image"/>
+    </resultMap>
+    <select id="querySmartUserPages" resultType="com.template.model.vo.UserVo" resultMap="smartUserPageMap">
+        select id,name,card_no,head_image from smart_user
+        where deleted = 0 and is_cancel = 0
+        <if test="departmentIds != null and departmentIds.size() > 0">
+            and department_id in
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                ${departmentId}
+            </foreach>
+        </if>
+        <if test="name != null and name != ''">
+            and name like '%' #{name} '%'
+        </if>
+    </select>
+
+
 </mapper>

+ 101 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst

@@ -1,24 +1,33 @@
 com\template\api\SmartDataSourceLogControllerAPI.class
+com\template\controller\SmartAttendanceController.class
+com\template\mapper\SmartAttendanceMapper.class
 com\template\api\SmartFreezeRecordControllerAPI.class
 com\template\controller\SmartDepartmentController.class
 com\template\services\SmartDataSourceService.class
+com\template\common\utils\DateUtils.class
 com\template\controller\SmartDataSourceLogController.class
 com\template\controller\SystemMenuController.class
 com\template\model\pojo\HomeSchoolServiceSendNoteToKidParam$Query$QueryBuilder.class
 com\template\services\impl\SmartDepartmentServiceImpl.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsParam$RequestBody$RequestBodyBuilder.class
 com\template\controller\RepairAdminController.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleResult$Data.class
 com\template\model\vo\SystemMenuVo.class
 com\template\mapper\RepairAdminMapper.class
 com\template\model\request\insertFreezeRecordRequest.class
 com\template\services\SmartDataClassService.class
 com\template\model\request\manualFreezingRequest.class
 com\template\controller\SmartMeterController.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleResult$ResponseBody.class
 com\template\services\SmartAuthorityService.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleResult.class
 com\template\controller\SmartDataClassController.class
 com\template\mapper\SmartFreezeRecordMapper.class
+com\template\common\utils\TreeRecordsUtil.class
 com\template\common\exception\MyCustomException.class
 com\template\controller\LoginController.class
 com\template\services\impl\SystemUserServiceImpl.class
+com\template\model\request\insertSmartUserRequest.class
 com\template\services\SmartFreezeRecordService.class
 com\template\mapper\SmartWarningMapper.class
 com\template\model\result\PageUtils.class
@@ -31,25 +40,40 @@ com\template\services\SmartScreenshotRecordService.class
 com\template\model\vo\ApplyVo.class
 com\template\api\SmartDataTaskControllerAPI.class
 com\template\model\result\CommonResult.class
+com\template\config\ScheduleConfig.class
 com\template\model\pojo\SmartAuthorGroup.class
 com\template\api\SmartVisitorControllerAPI.class
 com\template\controller\SmartAuthorityController.class
 com\template\services\impl\SmartUploadServiceImpl.class
 com\template\MybatisPlusApplication.class
+com\template\common\utils\HttpClientUtils.class
+com\template\controller\WechatScanLoginController.class
 com\template\services\impl\SmartAuthorityServiceImpl.class
 com\template\common\result\Code.class
 com\template\api\SmartIdentityControllerAPI.class
+com\template\common\utils\Base64Util.class
 com\template\controller\SmsCodeController.class
 com\template\api\SmartMeterDetailControllerAPI.class
+com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullRequest.class
 com\template\model\pojo\HomeSchoolServiceSendNoteToKidParam$Query.class
+com\template\api\SmartClassControllerAPI.class
 com\template\model\pojo\RepairAdmin.class
+com\template\controller\SmartGradeController.class
+com\template\common\utils\HttpClientUtils$LazyHolder.class
 com\template\model\vo\LoginVO.class
+com\template\mapper\SmartGradeMapper.class
+com\template\model\weixin\WechatUserUnionID.class
+com\template\model\tongji\EnergyTj.class
 com\template\api\SmartUserControllerAPI.class
+com\template\config\ParkConfig.class
 com\template\api\LoginControllerAPI.class
+com\template\common\utils\PropertiesUtil.class
 com\template\mapper\SmartDataSourceLogMapper.class
 com\template\handle\NonStaticResourceHttpRequestHandler.class
 com\template\model\request\queryAccountPageRequest.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleParam$RequestBody$RequestBodyBuilder.class
 com\template\model\pojo\SmartDepartment.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleParam$AttendanceRuleListSchoolAttendRuleParamBuilder.class
 com\template\model\request\insertIdentityRequest.class
 com\template\aop\LoginCheckAspect.class
 com\template\model\pojo\SystemUser.class
@@ -60,49 +84,71 @@ com\template\common\utils\SendSms.class
 com\template\model\vo\AffiliateUserVo.class
 com\template\services\impl\SmartApplyServiceImpl.class
 com\template\controller\SmartFreezeRecordController.class
+com\template\model\pojo\SmartGrade.class
 com\template\services\impl\SmartScreenshotServiceImpl.class
 com\template\annotation\PassToken.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsResult$ResponseBody.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleParam$Query.class
+com\template\services\SmartGradeService.class
 com\template\common\exception\EmsExceptionHandler.class
 com\template\mapper\SmartUserMapper.class
 com\template\api\SmartAuthorGroupControllerAPI.class
+com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullParam.class
+com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullParam$JSONRequestBody.class
 com\template\model\enumModel\eVisitorType.class
 com\template\model\enumModel\eApproveStatu.class
+com\template\common\utils\HttpClientUtils$1.class
 com\template\services\impl\SmartUserServiceImpl.class
 com\template\mapper\SmsCodeMapper.class
 com\template\api\ExcelControllerAPI.class
 com\template\controller\SmartWarningController.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsParam$Query$QueryBuilder.class
 com\template\services\impl\SmartVisitorServiceImpl.class
 com\template\api\SmartDataSourceControllerAPI.class
+com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullResult.class
+com\template\model\vo\DepartmentTreeVo$DepartmentTreeVoBuilder.class
 com\template\model\pojo\SmartFreezeRecord.class
+com\template\common\utils\RandomTrackAlgorithm.class
 com\template\controller\SmartVisitorController.class
 com\template\handler\MyMetaObjectHandler.class
 com\template\mapper\SmartBuildMapper.class
 com\template\api\SmartWarningControllerAPI.class
 com\template\common\utils\CommonUtil.class
 com\template\api\SystemMenuControllerAPI.class
+com\template\controller\SmartClassController.class
 com\template\model\request\updateScreenshotRequest.class
 com\template\controller\SmartUserController.class
 com\template\mapper\SmartScreenshotMapper.class
 com\template\model\enumModel\ePunish.class
 com\template\controller\SmartSchoolController.class
 com\template\model\pojo\SmartMeterDetail.class
+com\template\model\request\insertDepartmentRequest.class
 com\template\controller\SmartApplyController.class
 com\template\mapper\SmartDepartmentMapper.class
 com\template\services\SmartDataTaskService.class
+com\template\services\impl\SmartClassServiceImpl.class
+com\template\common\constanst\Constanst.class
 com\template\mapper\SmartVisitorMapper.class
+com\template\model\pojo\SmartAttendance.class
 com\template\model\pojo\SmartVisitor.class
 com\template\model\vo\SmartEnumVo.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleParam$Query$QueryBuilder.class
+com\template\services\impl\WechatScanLoginServiceImpl.class
 com\template\model\request\loginRequest.class
 com\template\controller\Task.class
 com\template\model\pojo\SmsCode.class
 com\template\api\SmartAuthorityControllerAPI.class
 com\template\services\SmartScreenshotService.class
 com\template\model\request\changePasswordRequest.class
+com\template\model\tongji\All.class
+com\template\mapper\WechatScanLoginMapper.class
 com\template\services\impl\SystemMenuServiceImpl.class
 com\template\services\SmartBuildService.class
 com\template\mapper\SmartScreenshotRecordMapper.class
+com\template\common\utils\DataBliu.class
 com\template\controller\UploadController.class
 com\template\api\SmartDataClassControllerAPI.class
+com\template\services\SmartClassService.class
 com\template\services\SmartWarningService.class
 com\template\mapper\SmartBuildMeterMapper.class
 com\template\model\vo\SmartFreezeRecordPageVo.class
@@ -114,8 +160,10 @@ com\template\services\impl\SmartMeterServiceImpl.class
 com\template\services\impl\SmartAuthorGroupServiceImpl.class
 com\template\common\utils\smsUtil.class
 com\template\config\SeewoConfig.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsParam$RequestBody.class
 com\template\services\impl\SmartDataClassServiceImpl.class
 com\template\model\pojo\SmartScreenshotRecord.class
+com\template\services\impl\SmartGradeServiceImpl.class
 com\template\controller\SmartBuildMeterController.class
 com\template\mapper\SmartAuthorGroupMapper.class
 com\template\mapper\SmartAuthorityMapper.class
@@ -127,32 +175,52 @@ com\template\annotation\UserLoginCheck.class
 com\template\model\pojo\SystemMenu.class
 com\template\controller\SmartIdentityController.class
 com\template\services\SmsCodeService.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleParam.class
+com\template\services\SmartAttendanceService.class
 META-INF\spring-configuration-metadata.json
 com\template\model\pojo\SmartDataTask.class
 com\template\common\utils\JWTUtil.class
+com\template\model\enumModel\eLogOff.class
 com\template\model\request\updateIdentityRequest.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsResult$RecordsItem.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleParam$RequestBody.class
 com\template\services\impl\SmartWarningServiceImpl.class
 com\template\common\exception\EmsException.class
 com\template\controller\ExcelController.class
+com\template\controller\ScheduleController.class
 com\template\services\impl\SmartMeterDetailServiceImpl.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleRequest.class
 com\template\core\JwtlnterceptorConfig.class
 com\template\model\request\insertScreenshotRequest.class
 com\template\services\impl\SmartSchoolServiceImpl.class
+com\template\model\request\updateSmartUserRequest.class
 com\template\services\SmartDataSourceLogService.class
+com\template\mapper\SmartClassMapper.class
+com\template\model\pojo\SmartClass.class
 com\template\common\utils\ValidateCode.class
 com\template\api\SmartScreenshotRecordControllerAPI.class
 com\template\api\SmsCodeControllerAPI.class
 com\template\controller\SmartBuildController.class
 com\template\model\pojo\SmartDataSourceLog.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsResult.class
+com\template\model\weixin\userAuthor.class
+com\template\model\tongji\DayMeterDetail.class
+com\template\model\vo\DepartmentVo.class
 com\template\services\SmartAuthorGroupService.class
+com\template\model\request\updateDepartmentRequest.class
+com\template\model\weixin\HttpParame.class
 com\template\services\SmartSchoolService.class
 com\template\model\pojo\UnitTimeHelpModel.class
 com\template\api\UploadControllerAPI.class
 com\template\controller\SmartMeterDetailController.class
 com\template\core\CORSConfiguration$1.class
+com\template\services\impl\SmartAttendanceServiceImpl.class
+com\template\model\vo\UserVo.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsResult$Data.class
 com\template\annotation\ControllerIsShow.class
 com\template\model\vo\ClassSettingDateVo.class
 com\template\model\request\UpdateSmartSchoolRequest.class
+com\template\model\tongji\MonthMeterDetail.class
 com\template\model\pojo\HomeSchoolServiceSendNoteToKidParam.class
 com\template\model\enumModel\eFreezeRecord.class
 com\template\model\pojo\HomeSchoolServiceSendNoteToKidResult.class
@@ -163,8 +231,16 @@ com\template\config\CosConfig.class
 com\template\model\enumModel\eIsSuper.class
 com\template\model\pojo\SmartApply.class
 com\template\mapper\SmartDataSourceMapper.class
+com\template\model\enumModel\eSexStatu.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsParam$AttendanceServiceListAttendClassRecordsParamBuilder.class
 com\template\services\SmartDepartmentService.class
+com\template\model\pojo\AttendanceRuleListSchoolAttendRuleResult$Result.class
+com\template\model\weixin\AuthorListGroup.class
 com\template\api\SmartSchoolControllerAPI.class
+com\template\model\weixin\AccessToken.class
+com\template\api\WechatScanLoginControllerAPI.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsParam.class
+com\template\model\weixin\AuthorAndGroup2.class
 com\template\mapper\SmartIdentityMapper.class
 com\template\model\pojo\SystemRole.class
 com\template\model\vo\VisitorPageVo.class
@@ -178,18 +254,25 @@ com\template\core\JwtAuthenticationInterceptor.class
 com\template\mapper\SmartMeterMapper.class
 com\template\mapper\SmartApplyMapper.class
 com\template\services\SmartUploadService.class
+com\template\model\tongji\Tj.class
 com\template\controller\SmartScreenshotController.class
 com\template\model\vo\SystemMenuTreeVo.class
+com\template\model\enumModel\eIdentityStatu.class
 com\template\controller\SmartDataTaskController.class
 com\template\model\enumModel\eExamineStatu.class
+com\template\model\weixin\AuthorAndGroup.class
 com\template\controller\LogInfoController.class
+com\template\common\utils\TimeExchange2.class
 com\template\services\impl\SmartDataTaskServiceImpl.class
+com\template\api\SmartAttendanceControllerAPI.class
 com\template\model\vo\SystemMenuTreeVo$SystemMenuTreeVoBuilder.class
+com\template\common\utils\RequestUtils.class
 com\template\model\pojo\HomeSchoolServiceSendNoteToKidResult$ResponseBody.class
 com\template\controller\SmartDataSourceController.class
 com\template\model\result\BaseResult.class
 com\template\api\SmartScreenshotControllerAPI.class
 com\template\services\SmartBuildMeterService.class
+com\template\model\weixin\Result.class
 com\template\core\CORSConfiguration.class
 com\template\api\LogInfoControllerAPI.class
 com\template\services\SmartMeterService.class
@@ -197,41 +280,59 @@ com\template\model\vo\SystemMenuVo$SystemMenuVoBuilder.class
 com\template\services\impl\SmsCodeServiceImpl.class
 com\template\services\SmartApplyService.class
 com\template\controller\SmartScreenshotRecordController.class
+com\template\common\utils\HttpUtils.class
 com\template\model\pojo\SmartWarning.class
 com\template\services\impl\SmartBuildServiceImpl.class
 com\template\services\SmartUserService.class
+com\template\model\tongji\DAll.class
+com\template\model\vo\VisitorCountVo.class
 com\template\common\utils\AesUtils.class
 com\template\services\impl\SmartBuildMeterServiceImpl.class
 com\template\common\result\ResponseStatusEnum.class
+com\template\model\weixin\AuthorListGroup$AuthorListGroupBuilder.class
 com\template\mapper\SmartDataTaskMapper.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsParam$Query.class
 com\template\AutoCode.class
 com\template\model\pojo\SmartBuildMeter.class
+com\template\model\tongji\MeterMonthData.class
+com\template\common\utils\AesUtil.class
+com\template\api\SmartGradeControllerAPI.class
 com\template\model\pojo\SmartScreenshot.class
 com\template\model\pojo\SmartIdentity.class
+com\template\common\utils\UUIDUtil.class
 com\template\mapper\SystemMenuMapper.class
+com\template\model\enumModel\eFileType.class
+com\template\services\WechatScanLoginService.class
 com\template\model\request\updateRepairAdminRequest.class
 com\template\model\request\otherAppointmentRequest.class
 com\template\services\impl\SmartIdentityServiceImpl.class
 com\template\services\SystemMenuService.class
+com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullParam$JSONRequestBody$JSONRequestBodyBuilder.class
 com\template\api\SmartBuildControllerAPI.class
 com\template\model\enumModel\eWeekStatu.class
 com\template\api\SmartApplyControllerAPI.class
+com\template\model\pojo\AttendanceServiceListAttendClassRecordsRequest.class
 com\template\api\RepairAdminControllerAPI.class
 com\template\model\enumModel\eStatu.class
 com\template\services\SmartVisitorService.class
 com\template\model\pojo\HomeSchoolServiceSendNoteToKidParam$RequestBody$RequestBodyBuilder.class
 com\template\mapper\SmartMeterDetailMapper.class
+com\template\model\vo\DepartmentTreeVo.class
 com\template\mapper\SmartDataClassMapper.class
 com\template\model\pojo\SmartDataClass.class
 com\template\model\pojo\SmartSchool.class
 com\template\services\impl\SmartDataSourceLogServiceImpl.class
 com\template\core\SwaggerConfiguration.class
+com\template\common\utils\FileUtils.class
 com\template\services\SystemUserService.class
 com\template\config\MyBatisPlusConfig.class
 com\template\common\utils\RSAUtils.class
+com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullParam$OrgClassOpenSeewoUcOpenV1ClassFullParamBuilder.class
 com\template\services\impl\SmartFreezeRecordServiceImpl.class
+com\template\model\request\changeDepartmentRequest.class
 com\template\model\pojo\HomeSchoolServiceSendNoteToKidParam$RequestBody.class
 com\template\model\pojo\SmartDataSource.class
 com\template\config\MySecurity.class
+com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullResult$JSONResponseBody.class
 com\template\controller\SmartAuthorGroupController.class
 com\template\services\impl\SmartScreenshotRecordServiceImpl.class

+ 77 - 0
target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst

@@ -8,6 +8,8 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartDataSourceLogControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\exception\MyCustomException.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\ExcelController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\AttendanceRuleListSchoolAttendRuleParam.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\AttendanceServiceListAttendClassRecordsRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartAuthority.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eVisitorType.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartDataSourceController.java
@@ -15,7 +17,9 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\AutoCode.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\ExcelControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartDataTaskController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\AuthorListGroup.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartUploadServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartGrade.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartAuthorityControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartIdentityService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartBuildMeterControllerAPI.java
@@ -26,28 +30,42 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartScreenshotControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartDataTaskControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartAuthorGroupServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\Base64Util.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\SmartEnumVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartSchool.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\MybatisPlusApplication.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\VisitorCountVo.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartGradeService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartMeterControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartAttendanceControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartBuildMeterMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\HttpClientUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SystemMenuMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\HomeSchoolServiceSendNoteToKidResult.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\WechatScanLoginService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\parentsAppointmentRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartDataSourceLogServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\RequestUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\TimeExchange.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\HomeSchoolServiceSendNoteToKidParam.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SystemRole.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\DayMeterDetail.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartBuildMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartMeterDetailServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\constanst\Constanst.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartDataSourceControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartMeterService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartDataSourceMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartClass.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartScreenshotController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartBuild.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SystemMenuService.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\MeterMonthData.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eIdentityStatu.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartDataClassController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\insertDepartmentRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\UploadControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\HttpUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDataTask.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\RepairAdminMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartIdentityControllerAPI.java
@@ -55,28 +73,43 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\AesUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\paramUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\LogInfoController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\AttendanceServiceListAttendClassRecordsResult.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartDepartmentService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\insertScreenshotRequest.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\WechatScanLoginMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartWarningControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartVisitorController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartScreenshotRecordService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartMeterDetailService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartApply.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SystemMenuControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartAttendanceController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullParam.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\UserVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SystemMenuServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\PropertiesUtil.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartWarningMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\AuthorAndGroup2.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartApplyController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\ParkConfig.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartBuildController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\WechatScanLoginController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\result\PageUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\CosConfig.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartIdentityMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartFreezeRecordService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\smsUtil.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\UUIDUtil.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartAttendanceService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmsCode.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\EnergyTj.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartDepartmentMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\DAll.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartDataSourceLogController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullResult.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartApplyControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eIsSuper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eFileType.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDepartment.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartUploadService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\MySecurity.java
@@ -84,7 +117,9 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\JWTUtil.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\RepairAdminController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\SystemMenuTreeVo.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\AttendanceRuleListSchoolAttendRuleRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\RSAUtils.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\ScheduleConfig.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartScreenshotService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartAuthorityController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartSchoolMapper.java
@@ -94,14 +129,19 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\ClassSettingDateVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartScreenshotServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDataSourceLog.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\DepartmentTreeVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmsCodeService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartMeterDetailMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartDataSource.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartScreenshotRecord.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\insertSmartUserRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\RepairAdminService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartDepartmentServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\WechatScanLoginServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\RepairAdminServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartClassControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartVisitorControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartClassController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\annotation\UserLoginCheck.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\LogInfoControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartApplyService.java
@@ -122,6 +162,7 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartBuildService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartAuthorityService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartFreezeRecordMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\AttendanceServiceListAttendClassRecordsParam.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartAuthorGroup.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartDataClassControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\result\BaseResult.java
@@ -131,23 +172,35 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartMeterDetailControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartAuthorityServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartApplyMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\FileUtils.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\HttpParame.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\AttendanceRuleListSchoolAttendRuleResult.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\core\JwtlnterceptorConfig.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\queryAccountPageRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartWarningService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\otherAppointmentRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\Task.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\All.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\RandomTrackAlgorithm.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\SeewoConfig.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\insertIdentityRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartIdentityServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartAttendanceMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\TimeExchange2.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartClassService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\smsConfig.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\ScheduleController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartAuthorityMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmsCodeMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\AesUtil.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartMeter.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartVisitorMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartDataTaskMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartDataSourceLogService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\updateIdentityRequest.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\MonthMeterDetail.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\handler\MyMetaObjectHandler.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eLogOff.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartUserService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\EncryptionUtil.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\loginRequest.java
@@ -155,25 +208,35 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\ApplyVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\exception\EmsExceptionHandler.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\config\MyBatisPlusConfig.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\OrgClassOpenSeewoUcOpenV1ClassFullRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\aop\LoginCheckAspect.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartWarningServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\RepairAdminControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\updateDepartmentRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\SystemMenuVo.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartGradeControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartSchoolController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartIdentity.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\LoginVO.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\LoginController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\core\JwtAuthenticationInterceptor.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eApproveStatu.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\changeDepartmentRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\LoginControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\DataBliu.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\UpdateSmartSchoolRequest.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\userAuthor.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartGradeServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SystemUserService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmsCodeControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartSchoolServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartScreenshotRecordServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\AffiliateUserVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartDepartmentControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\WechatScanLoginControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartSchoolService.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartGradeMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\DepartmentVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\SmartFreezeRecordPageVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartDataClassService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartMeterMapper.java
@@ -192,32 +255,46 @@ D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\templa
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\updateScreenshotRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartVisitorServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartIdentityController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\updateSmartUserRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartAuthorGroupController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\vo\VisitorPageVo.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\request\freezeRepairAdminRequest.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\QuartzJobUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eExamineStatu.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\Result.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SystemUserServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartFreezeRecordController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartUserControllerAPI.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\DateUtils.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartVisitor.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartAuthorGroupMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\SendSms.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eSexStatu.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\WechatUserUnionID.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartAuthorGroupService.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\api\SmartAuthorGroupControllerAPI.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\annotation\PassToken.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartAttendance.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\AuthorAndGroup.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\tongji\Tj.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartMeterController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\SmartBuildMeterService.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartClassMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\enumModel\eWeekStatu.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\core\CORSConfiguration.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartUserController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartDataSourceServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SmartDataSourceLogMapper.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartDataTaskServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\utils\TreeRecordsUtil.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmsCodeController.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\weixin\AccessToken.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartUser.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartClassServiceImpl.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\services\impl\SmartAttendanceServiceImpl.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartMeterDetail.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\mapper\SystemUserMapper.java
+D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartGradeController.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\common\result\ResponseStatusEnum.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\model\pojo\SmartFreezeRecord.java
 D:\Bingo\Desktop\工作内容\万载三中\backend_code\src\main\java\com\template\controller\SmartDepartmentController.java

BIN
target/mybatis_plus-0.0.1-SNAPSHOT.jar.original