liu 2 days ago
parent
commit
bf296d25b8

+ 6 - 0
src/main/java/com/template/api/BlacklistControllerAPI.java

@@ -4,6 +4,7 @@ import com.template.model.dto.BlacklistDeleteDto;
 import com.template.model.result.CommonResult;
 import com.template.model.result.CommonResult;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 
 @RequestMapping("/auto/blacklist")
 @RequestMapping("/auto/blacklist")
 public interface BlacklistControllerAPI {
 public interface BlacklistControllerAPI {
@@ -17,4 +18,9 @@ public interface BlacklistControllerAPI {
     @ApiOperation(value = "黑名单订单移除", notes = "黑名单订单移除", httpMethod = "POST")
     @ApiOperation(value = "黑名单订单移除", notes = "黑名单订单移除", httpMethod = "POST")
     CommonResult delete(@RequestBody BlacklistDeleteDto dto);
     CommonResult delete(@RequestBody BlacklistDeleteDto dto);
 
 
+
+    @PostMapping("/uploadBlacklist")
+    @ApiOperation(value = "导入黑名单", notes = "导入黑名单", httpMethod = "POST")
+    CommonResult uploadBlacklist(@RequestParam("file") MultipartFile file) throws Exception;
+
 }
 }

+ 17 - 16
src/main/java/com/template/controller/AdminController.java

@@ -155,12 +155,12 @@ public class AdminController implements AdminAPI {
         }
         }
 
 
 //        通过用户id找管理端用户,如果有就不能在绑定
 //        通过用户id找管理端用户,如果有就不能在绑定
-        LambdaQueryWrapper<Admin> wrapperA=new LambdaQueryWrapper<>();
-        wrapperA.eq(Admin::getUsersId,users.getId());
-        Admin one = adminService.getOne(wrapperA);
-        if (ObjectUtils.isNotEmpty(one)) {
-            return CommonResult.fail("该用户已绑定,请更换绑定用户");
-        }
+//        LambdaQueryWrapper<Admin> wrapperA=new LambdaQueryWrapper<>();
+//        wrapperA.eq(Admin::getUsersId,users.getId());
+//        Admin one = adminService.getOne(wrapperA);
+//        if (ObjectUtils.isNotEmpty(one)) {
+//            return CommonResult.fail("该用户已绑定,请更换绑定用户");
+//        }
 
 
 
 
 //  密码加密
 //  密码加密
@@ -222,17 +222,18 @@ public class AdminController implements AdminAPI {
             }
             }
         }
         }
 
 
+//        当前可以重复
 //        用户不能重复绑定
 //        用户不能重复绑定
-        String usersId = admin.getUsersId();
-        String usersId1 = byId.getUsersId();
-        if (!usersId.equals(usersId1)) {
-            LambdaQueryWrapper<Admin> wrapperA=new LambdaQueryWrapper<>();
-            wrapperA.eq(Admin::getUsersId,users.getId());
-            Admin one = adminService.getOne(wrapperA);
-            if (ObjectUtils.isNotEmpty(one)) {
-                return CommonResult.fail("该用户已绑定,请更换绑定用户");
-            }
-        }
+//        String usersId = admin.getUsersId();
+//        String usersId1 = byId.getUsersId();
+//        if (!usersId.equals(usersId1)) {
+//            LambdaQueryWrapper<Admin> wrapperA=new LambdaQueryWrapper<>();
+//            wrapperA.eq(Admin::getUsersId,users.getId());
+//            Admin one = adminService.getOne(wrapperA);
+//            if (ObjectUtils.isNotEmpty(one)) {
+//                return CommonResult.fail("该用户已绑定,请更换绑定用户");
+//            }
+//        }
 
 
         try {
         try {
             String passWord = admin.getPassWord();
             String passWord = admin.getPassWord();

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

@@ -207,6 +207,7 @@ public class AppletLoginController implements AppletLoginControllerAPI {
     }
     }
 
 
     @Override
     @Override
+    @PassToken
     public CommonResult getOpenid(String code) throws Exception {
     public CommonResult getOpenid(String code) throws Exception {
         String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + "wxd87cbe1db0437303" + "&secret=" + "18e17f97e674e1c03fc255f12d12ca4d" + "&code=" + code + "&grant_type=authorization_code";
         String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + "wxd87cbe1db0437303" + "&secret=" + "18e17f97e674e1c03fc255f12d12ca4d" + "&code=" + code + "&grant_type=authorization_code";
 
 

+ 2 - 2
src/main/java/com/template/controller/ApplicationProcedureTemporaryController.java

@@ -86,7 +86,7 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
         String startDto=applicationProcedureDto.getStartTime();
         String startDto=applicationProcedureDto.getStartTime();
         String endDto=applicationProcedureDto.getEndTime();
         String endDto=applicationProcedureDto.getEndTime();
         //周日-周1为上周
         //周日-周1为上周
-        int dtoCount=this.checkWeek(startDto,endDto);
+        int dtoCount=checkWeek(startDto,endDto);
         if(startDto.compareTo(endDto)>=0){
         if(startDto.compareTo(endDto)>=0){
             log.info("开始时间不能大于结束时间");
             log.info("开始时间不能大于结束时间");
             return CommonResult.fail("开始时间不能大于结束时间");
             return CommonResult.fail("开始时间不能大于结束时间");
@@ -110,7 +110,7 @@ public class ApplicationProcedureTemporaryController implements ApplicationProce
                     log.info("相同日期已有待审批申请,请勿重复申请");
                     log.info("相同日期已有待审批申请,请勿重复申请");
                     return CommonResult.fail("相同日期已有待审批申请,请勿重复申请");
                     return CommonResult.fail("相同日期已有待审批申请,请勿重复申请");
                 }
                 }
-                 aa=this.checkWeek(apt.getStartTime(),apt.getEndTime())+aa;
+                 aa=checkWeek(apt.getStartTime(),apt.getEndTime())+aa;
                 //已申请+本次大于配置数量则不能申请
                 //已申请+本次大于配置数量则不能申请
                if(countConfig<aa+dtoCount){
                if(countConfig<aa+dtoCount){
                    log.info("总申请天数超过本周限额");
                    log.info("总申请天数超过本周限额");

+ 72 - 3
src/main/java/com/template/controller/BlacklistController.java

@@ -1,23 +1,37 @@
 package com.template.controller;
 package com.template.controller;
 
 
 
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.template.api.BlacklistControllerAPI;
 import com.template.api.BlacklistControllerAPI;
+import com.template.common.utils.ExcelUtils;
 import com.template.model.dto.BlacklistDeleteDto;
 import com.template.model.dto.BlacklistDeleteDto;
-import com.template.model.pojo.Blacklist;
-import com.template.model.pojo.BlacklistOrder;
+import com.template.model.excel.UploadBlackList;
+import com.template.model.pojo.*;
 import com.template.model.result.CommonResult;
 import com.template.model.result.CommonResult;
+import com.template.model.vo.ClassScheduleExportVo;
 import com.template.services.BlacklistOrderService;
 import com.template.services.BlacklistOrderService;
 import com.template.services.BlacklistService;
 import com.template.services.BlacklistService;
+import com.template.services.UsersService;
+import org.apache.poi.ss.usermodel.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -39,6 +53,8 @@ public class BlacklistController implements BlacklistControllerAPI {
     @Autowired
     @Autowired
     BlacklistOrderService blacklistOrderService;
     BlacklistOrderService blacklistOrderService;
 
 
+    @Autowired
+    UsersService usersService;
 
 
     @Override
     @Override
     public CommonResult list(Integer page, Integer size, String reserveName, String phone, String cardNumber, String startTime, String endTime) {
     public CommonResult list(Integer page, Integer size, String reserveName, String phone, String cardNumber, String startTime, String endTime) {
@@ -91,6 +107,56 @@ public class BlacklistController implements BlacklistControllerAPI {
 
 
     }
     }
 
 
+    @Override
+    public CommonResult uploadBlacklist(MultipartFile file) throws Exception {
+        List<UploadBlackList> dtos = ExcelUtils.readMultipartFile(file, UploadBlackList.class);
+
+
+        ArrayList<Blacklist> blacklists = new ArrayList<>();
+        for (int i = 0; i < dtos.size(); i++) {
+            UploadBlackList uploadBlackList = dtos.get(i);
+
+            //            判断姓名工号身份证是否存在
+            String name = uploadBlackList.getName();
+            String cardNumber = uploadBlackList.getCardNumber();
+            String idCard = uploadBlackList.getIdCard();
+
+            LambdaQueryWrapper<Users> wrapperB = new LambdaQueryWrapper<>();
+            wrapperB.eq(Users::getUserName, name)
+                    .eq(Users::getCardNumber, cardNumber)
+                    .eq(Users::getIdCard, idCard);
+            Users users = usersService.getOne(wrapperB);
+            if (ObjectUtils.isEmpty(users)) {
+                System.out.println("第" + (i + 2) + "行," + "姓名" + name + "/工号" + cardNumber + "/身份证号" + idCard + "还为登入");
+            } else {
+
+//            判断该用户是否已在永久黑名单中
+                LambdaQueryWrapper<Blacklist> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(Blacklist::getReserveUserId, users.getId())
+                        .eq(Blacklist::getCount, 100);
+                List<Blacklist> blacklist = blacklistService.list(wrapper);
+
+                if (blacklist.size()==0) {
+                    Blacklist blacklist1 = new Blacklist();
+                    blacklist1.setReserveUserId(users.getId());
+                    blacklist1.setReserveName(users.getUserName());
+                    blacklist1.setPhone(users.getPhone());
+                    blacklist1.setCardNumber(users.getCardNumber());
+                    blacklist1.setCount(100);
+                    blacklists.add(blacklist1);
+                }
+
+
+            }
+        }
+        boolean b = blacklistService.saveBatch(blacklists);
+        if (b) {
+            return CommonResult.ok();
+        }
+
+        return CommonResult.fail();
+    }
+
 
 
     //    每月定期清空黑名单表
     //    每月定期清空黑名单表
     @Scheduled(cron = "0 0 2 1 * ? ")
     @Scheduled(cron = "0 0 2 1 * ? ")
@@ -99,9 +165,12 @@ public class BlacklistController implements BlacklistControllerAPI {
 //        先删除黑名单订单
 //        先删除黑名单订单
         blacklistOrderService.remove(new LambdaQueryWrapper<>());
         blacklistOrderService.remove(new LambdaQueryWrapper<>());
 //        删除黑名单
 //        删除黑名单
-        blacklistService.remove(new LambdaQueryWrapper<>());
+        LambdaQueryWrapper<Blacklist> wrapper=new LambdaQueryWrapper<>();
+        wrapper.ne(Blacklist::getCount,100);
+        blacklistService.remove(wrapper);
 
 
     }
     }
 
 
+    
 }
 }
 
 

+ 27 - 11
src/main/java/com/template/controller/HouseOrderController.java

@@ -3585,6 +3585,7 @@ public class HouseOrderController implements HouseOrderAPI {
     }
     }
 
 
     @Override
     @Override
+    @PassToken
     public CommonResult getPayOpenId(String wxcode) throws Exception {
     public CommonResult getPayOpenId(String wxcode) throws Exception {
         String tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token";
         String tokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token";
         tokenUrl = tokenUrl + "?code=" + wxcode + "&appid=" + wxPayV3Config.getAppId() + "&secret=" + wxPayV3Config.getSecret() + "&grant_type=authorization_code";
         tokenUrl = tokenUrl + "?code=" + wxcode + "&appid=" + wxPayV3Config.getAppId() + "&secret=" + wxPayV3Config.getSecret() + "&grant_type=authorization_code";
@@ -3593,6 +3594,7 @@ public class HouseOrderController implements HouseOrderAPI {
         log.info("获取openid结果" + tokenResponse);
         log.info("获取openid结果" + tokenResponse);
         JSONObject jsonObject1 = JSONObject.parseObject(tokenResponse);
         JSONObject jsonObject1 = JSONObject.parseObject(tokenResponse);
         String openId = (String) jsonObject1.getString("openid");
         String openId = (String) jsonObject1.getString("openid");
+        log.info("openId:{}",openId);
         if (openId == null || openId == "") {
         if (openId == null || openId == "") {
             return CommonResult.fail("openid查询失败:" + tokenResponse);
             return CommonResult.fail("openid查询失败:" + tokenResponse);
         }
         }
@@ -3767,10 +3769,10 @@ public class HouseOrderController implements HouseOrderAPI {
             long until = state1.until(end2, ChronoUnit.DAYS);
             long until = state1.until(end2, ChronoUnit.DAYS);
             dayDiff = dayDiff + until;
             dayDiff = dayDiff + until;
         }
         }
-
+        System.out.println("已入住的天数 = " + dayDiff);
         //   计算2个时间差
         //   计算2个时间差
         long until = state.until(end, ChronoUnit.DAYS);
         long until = state.until(end, ChronoUnit.DAYS);
-
+        System.out.println("需要入住的天数 = " + until);
         Integer count = 1;
         Integer count = 1;
         List<String> idList =new ArrayList<>();
         List<String> idList =new ArrayList<>();
         if (dayDiff + until > 2) {
         if (dayDiff + until > 2) {
@@ -3822,6 +3824,8 @@ public class HouseOrderController implements HouseOrderAPI {
                 String houseCount = applicationProcedureTemporary.getHouseCount();
                 String houseCount = applicationProcedureTemporary.getHouseCount();
                 String startTime = applicationProcedureTemporary.getStartTime();
                 String startTime = applicationProcedureTemporary.getStartTime();
                 String endTime1 = applicationProcedureTemporary.getEndTime();
                 String endTime1 = applicationProcedureTemporary.getEndTime();
+//                System.out.println("endTime1 = " + endTime1);
+//                endTime1=endTime1.replace("00:00:00", "23:59:59");
 //            计算开始到结束时间有多少订单
 //            计算开始到结束时间有多少订单
                 LambdaQueryWrapper<HouseOrder> wrapper = new LambdaQueryWrapper<>();
                 LambdaQueryWrapper<HouseOrder> wrapper = new LambdaQueryWrapper<>();
                 wrapper.eq(HouseOrder::getReserveUserId, userId)
                 wrapper.eq(HouseOrder::getReserveUserId, userId)
@@ -3954,15 +3958,27 @@ public class HouseOrderController implements HouseOrderAPI {
 
 
 
 
         //      入住天数
         //      入住天数
-        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        LocalDateTime start = LocalDateTime.parse("2024-12-31 15:17:27", dateTimeFormatter);
-        LocalDateTime end = LocalDateTime.parse("2025-01-01 13:00:00", dateTimeFormatter);
-
-        LocalDate startDate = start.toLocalDate();
-        LocalDate endDate = end.toLocalDate();
-
-        int daysBetween = (int) startDate.until(endDate, ChronoUnit.DAYS);
-        System.out.println("daysBetween = " + daysBetween);
+//        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+//        LocalDateTime start = LocalDateTime.parse("2024-12-31 15:17:27", dateTimeFormatter);
+//        LocalDateTime end = LocalDateTime.parse("2025-01-01 13:00:00", dateTimeFormatter);
+//
+//        LocalDate startDate = start.toLocalDate();
+//        LocalDate endDate = end.toLocalDate();
+//
+//        int daysBetween = (int) startDate.until(endDate, ChronoUnit.DAYS);
+//        System.out.println("daysBetween = " + daysBetween);
+//        String start="2025-11-08 13:00:00";
+//        String end1="2025-11-10 12:00:00";
+//        DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+//        LocalDateTime stateTime = LocalDateTime.parse(start, dateTimeFormatter1);
+//        LocalDateTime endTime = LocalDateTime.parse(end1, dateTimeFormatter1);
+//        LocalDate state = stateTime.toLocalDate();
+//        LocalDate end = endTime.toLocalDate();
+//        long until = state.until(end, ChronoUnit.DAYS);
+//        System.out.println("until = " + until);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = sdf.format(new Date());
+        System.out.println("format = " + format);
     }
     }
 
 
     /**
     /**

+ 21 - 2
src/main/java/com/template/controller/TbCourseSchedulingController.java

@@ -42,10 +42,29 @@ public class TbCourseSchedulingController {
     private ClassScheduleService classScheduleService;
     private ClassScheduleService classScheduleService;
 
 
 
 
-
+    public static void main(String[] args) {
+        Calendar calendar = Calendar.getInstance();
+        // 获取当前年
+        int year = calendar.get(Calendar.YEAR);
+        // 获取当前月
+        int month = calendar.get(Calendar.MONTH) + 1;
+        String xuenian="2024-2025";
+        String xueqi="1";
+        //上半年月份第二学期 2-7月 下半年月份8-1月
+        if(month<8&&month>=2){
+            xueqi="2";
+            xuenian=(year-1)+"-"+year;
+        }else if(month<2){
+            xuenian=(year-1)+"-"+year;
+        }else{
+            xuenian=year+"-"+(year+1);
+        }
+        System.out.println("xueqi = " + xueqi);
+        System.out.println("xuenian = " + xuenian);
+    }
     @GetMapping("/queryGridPreDetail")
     @GetMapping("/queryGridPreDetail")
     @Scheduled(cron="0 30 4 * * ?")
     @Scheduled(cron="0 30 4 * * ?")
-//    @Scheduled(cron="0/20 * * * * ?")
+//    @Scheduled(cron="0 0/5 * * * ? ")
     public void energyConsumption() {
     public void energyConsumption() {
         Calendar calendar = Calendar.getInstance();
         Calendar calendar = Calendar.getInstance();
         // 获取当前年
         // 获取当前年

+ 67 - 25
src/main/java/com/template/controller/UploadServlet.java

@@ -4,10 +4,13 @@ package com.template.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.template.common.utils.FileUtil;
 import com.template.common.utils.FileUtil;
 import com.template.model.result.CommonResult;
 import com.template.model.result.CommonResult;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.ServletException;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
@@ -17,9 +20,13 @@ import java.io.File;
 import java.io.IOException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
 import java.nio.file.Files;
 import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.logging.Logger;
 
 
 @RestController
 @RestController
 @RequestMapping("/auto/upload")
 @RequestMapping("/auto/upload")
+@Slf4j
 public class UploadServlet {
 public class UploadServlet {
 
 
     @Value("${image.url}")
     @Value("${image.url}")
@@ -28,32 +35,67 @@ public class UploadServlet {
     @Value("${image.path}")
     @Value("${image.path}")
     private String imagePath;
     private String imagePath;
 
 
+//    @PostMapping("/save")
+//    protected CommonResult doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+//        // 获取文件内容
+//        Part filePart = request.getPart("file");
+//        InputStream fileContent = filePart.getInputStream();
+//
+//        String fileNameWithPath = FileUtil.getFileNameWithPath() + ".jpg";
+//
+////        线下
+////        FileUtil.makeDirs(fileNameWithPath, "E://image3");
+////        String imgFilePath = "E://image3/" + fileNameWithPath;
+//
+////        线上
+//        FileUtil.makeDirs(fileNameWithPath, imagePath);
+//        String imgFilePath = imagePath+"/" + fileNameWithPath;
+//
+////        上传图片
+//        Files.copy(fileContent,new File(imgFilePath).toPath());
+//
+//        // 保存文件到指定目录
+////        String fileName = filePart.getSubmittedFileName();
+////        OutputStream out = new FileOutputStream(imgFilePath);
+////        byte[] buffer = new byte[1024];
+////        int bytesRead;
+////        while ((bytesRead = fileContent.read(buffer)) != -1) {
+////            out.write(buffer, 0, bytesRead);
+////        }
+////        out.close();
+//        String url=imageUrl+"/image/"+fileNameWithPath;
+//        log.info("上次的图片链接:{}",url);
+//
+////        response.getWriter().println(url);
+//        JSONObject jsonObject = new JSONObject();
+//        jsonObject.put("url",url);
+//        return CommonResult.ok(jsonObject);
+//    }
+
     @PostMapping("/save")
     @PostMapping("/save")
-    protected CommonResult doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-        // 获取文件内容
-        Part filePart = request.getPart("file");
-        InputStream fileContent = filePart.getInputStream();
-
-        String fileNameWithPath = FileUtil.getFileNameWithPath() + ".jpg";
-//        FileUtil.makeDirs(fileNameWithPath, "E://image3");
-//        String imgFilePath = "E://image3/" + fileNameWithPath;
-        FileUtil.makeDirs(fileNameWithPath, imagePath);
-        String imgFilePath = imagePath+"/" + fileNameWithPath;
-
-//        上传图片
-        Files.copy(fileContent,new File(imgFilePath).toPath());
-
-        // 保存文件到指定目录
-//        String fileName = filePart.getSubmittedFileName();
-//        OutputStream out = new FileOutputStream(imgFilePath);
-//        byte[] buffer = new byte[1024];
-//        int bytesRead;
-//        while ((bytesRead = fileContent.read(buffer)) != -1) {
-//            out.write(buffer, 0, bytesRead);
-//        }
-//        out.close();
-        String url=imageUrl+"/image/"+fileNameWithPath;
-//        response.getWriter().println(url);
+    protected CommonResult doPost(@RequestParam("file") MultipartFile file) throws ServletException, IOException {
+        // 1. 校验空文件
+        if (file == null || file.isEmpty()) {
+            return CommonResult.fail("上传文件不能为空");
+        }
+
+        // 2. 保留原始扩展名,无扩展名时默认 .jpg
+        String originalFilename = file.getOriginalFilename();
+        String ext = (originalFilename != null && originalFilename.contains("."))
+                ? originalFilename.substring(originalFilename.lastIndexOf("."))
+                : ".jpg";
+
+        // 3. 生成文件名 + 确保目录存在
+        String fileNameWithPath = FileUtil.getFileNameWithPath() + ext;
+        Path targetPath = Paths.get(imagePath, fileNameWithPath);
+        Files.createDirectories(targetPath.getParent());
+
+        // 4. 写入文件(transferTo 内部自动关闭流)
+        file.transferTo(targetPath.toFile());
+
+        // 5. 返回可访问 URL
+        String url = imageUrl + "/image/" + fileNameWithPath;
+        log.info("上传图片链接:{}", url);
         JSONObject jsonObject = new JSONObject();
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("url",url);
         jsonObject.put("url",url);
         return CommonResult.ok(jsonObject);
         return CommonResult.ok(jsonObject);

+ 1 - 1
src/main/java/com/template/core/JwtAuthenticationInterceptor.java

@@ -1,12 +1,12 @@
 package com.template.core;
 package com.template.core;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.auth0.jwt.interfaces.Claim;
 import com.auth0.jwt.interfaces.Claim;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.template.annotation.PassToken;
 import com.template.annotation.PassToken;
 import com.template.common.exception.MyCustomException;
 import com.template.common.exception.MyCustomException;
 import com.template.common.result.ResponseStatusEnum;
 import com.template.common.result.ResponseStatusEnum;
 import com.template.common.utils.JWTUtil;
 import com.template.common.utils.JWTUtil;
-import org.springframework.boot.configurationprocessor.json.JSONObject;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.method.HandlerMethod;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.HandlerInterceptor;

+ 1 - 1
src/main/java/com/template/core/JwtlnterceptorConfig.java

@@ -14,7 +14,7 @@ public class JwtlnterceptorConfig implements WebMvcConfigurer {
         //目前测试下来 使用 /**所有的话,response.sendError浏览器获取不到响应的信息
         //目前测试下来 使用 /**所有的话,response.sendError浏览器获取不到响应的信息
         //默认拦截所有路径
         //默认拦截所有路径
         registry.addInterceptor(authenticationInterceptor())
         registry.addInterceptor(authenticationInterceptor())
-                .addPathPatterns("/auto0/**");
+                .addPathPatterns("/auto/**");
         //endregion
         //endregion
     }
     }
 
 

File diff suppressed because it is too large
+ 9 - 3
src/main/java/com/template/mapper/TbCourseSchedulingMapper.java


+ 20 - 0
src/main/java/com/template/model/excel/UploadBlackList.java

@@ -0,0 +1,20 @@
+package com.template.model.excel;
+
+import com.template.annotation.ExcelImport;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class UploadBlackList {
+    @ExcelImport(value = "姓名")
+    private String name;
+
+
+    @ExcelImport(value = "工号")
+    private String cardNumber;
+
+
+    @ExcelImport(value = "身份证号")
+    private String idCard;
+
+}

+ 5 - 5
src/main/resources/application-dev.yml

@@ -19,8 +19,8 @@ spring:
       datasource:
       datasource:
         master:
         master:
           username: root
           username: root
-          password: Chuanghai_test
-          url: jdbc:mysql://172.16.20.80:3306/ihotel_test?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+          password: Chuanghai2026@iHotel
+          url: jdbc:mysql://172.16.20.71:3306/ihotel_test?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
         readOnly:
         readOnly:
           username: queryUser
           username: queryUser
@@ -47,11 +47,11 @@ spring:
         max-wait: 60000s
         max-wait: 60000s
 mybatis-plus:
 mybatis-plus:
   mapper-locations: classpath:/mapper/template/*.xml
   mapper-locations: classpath:/mapper/template/*.xml
-#  configuration:
+  configuration:
   #    #开启sql打印
   #    #开启sql打印
 #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
   #    #关闭sql打印
   #    #关闭sql打印
-  #  log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
   global-config:
   global-config:
     db-config:
     db-config:
       logic-delete-value: 1
       logic-delete-value: 1
@@ -110,7 +110,7 @@ mqtt:
 wechat:
 wechat:
   pay:
   pay:
     v3:
     v3:
-      appId: wxd87cbe1db0437303
+      appId:
 #      keyPath: F:\项目资料\创海项目资料\iHotel_student_houtai\src\main\resources\cert\apiclient_key.pem
 #      keyPath: F:\项目资料\创海项目资料\iHotel_student_houtai\src\main\resources\cert\apiclient_key.pem
 #      certPath: F:\项目资料\创海项目资料\iHotel_student_houtai\src\main\resources\cert\apiclient_cert.pem
 #      certPath: F:\项目资料\创海项目资料\iHotel_student_houtai\src\main\resources\cert\apiclient_cert.pem
 #      certP12Path: F:\项目资料\创海项目资料\iHotel_student_houtai\src\main\resources\cert\apiclient_cert.p12
 #      certP12Path: F:\项目资料\创海项目资料\iHotel_student_houtai\src\main\resources\cert\apiclient_cert.p12

+ 2 - 2
src/main/resources/application-prod.yml

@@ -14,8 +14,8 @@ spring:
       max-request-size: 10MB
       max-request-size: 10MB
   datasource:
   datasource:
     username: root
     username: root
-    password: Chuanghai_test
-    url: jdbc:mysql://172.16.20.80:3306/ihotel_test?characterEncoding=UTF-8&share_videosuseSSL=false&useUnicode=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+    password: Chuanghai2026@iHotel
+    url: jdbc:mysql://172.16.20.71:3306/ihotel_test?characterEncoding=UTF-8&share_videosuseSSL=false&useUnicode=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
     driver-class-name: com.mysql.cj.jdbc.Driver
     driver-class-name: com.mysql.cj.jdbc.Driver
     cache:
     cache:
       type: redis
       type: redis

+ 9 - 9
src/main/resources/application-test.yml

@@ -1,6 +1,6 @@
 #测试环境配置
 #测试环境配置
 server:
 server:
-  port: 8091
+  port: 8090
   servlet:
   servlet:
     context-path: /ihotel
     context-path: /ihotel
     
     
@@ -22,13 +22,13 @@ spring:
       datasource:
       datasource:
         master:
         master:
           username: root
           username: root
-          password: Chuanghai_test
-          url: jdbc:mysql://172.16.20.80:3306/ihotel_dev?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+          password: root
+          url: jdbc:mysql://127.0.0.1:3306/ihotel_test?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
         readOnly:
         readOnly:
-          username: queryUser
-          password: fcBtkT2EwCjiTdc4
-          url: jdbc:mysql://172.16.20.77:3306/memdb?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+          username: root
+          password: root
+          url: jdbc:mysql://127.0.0.1:3306/memdb?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
       enabled: true
       enabled: true
     cache:
     cache:
@@ -53,9 +53,9 @@ mybatis-plus:
   mapper-locations: classpath:/mapper/template/*.xml
   mapper-locations: classpath:/mapper/template/*.xml
   configuration:
   configuration:
       #开启sql打印
       #开启sql打印
-      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
   #    #关闭sql打印
   #    #关闭sql打印
-  #    log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
+      log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl
   global-config:
   global-config:
     db-config:
     db-config:
       logic-delete-value: 1
       logic-delete-value: 1
@@ -133,5 +133,5 @@ wechat:
       serialNum: 61A33563F6158C1B921A27A23A4E94E963DD53DD
       serialNum: 61A33563F6158C1B921A27A23A4E94E963DD53DD
 #图片上传地址
 #图片上传地址
 image:
 image:
-  url: https://chtech.ncjti.edu.cn/testingServer
+  url: https://chtech.ncjti.edu.cn/hotel
   path: /home/nginx/html/image
   path: /home/nginx/html/image

+ 2 - 2
src/main/resources/application.yml

@@ -20,8 +20,8 @@ spring:
       datasource:
       datasource:
         master:
         master:
           username: root
           username: root
-          password: Chuanghai_test
-          url: jdbc:mysql://172.16.20.80:3306/ihotel_test?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+          password: Chuanghai2026@iHotel
+          url: jdbc:mysql://172.16.20.71:3306/ihotel_test?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
         readOnly:
         readOnly:
           username: queryUser
           username: queryUser