package com.template.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.template.annotation.DESRespondSecret; import com.template.annotation.PassToken; import com.template.api.SmartFaceDiscernTestControllerAPI; import com.template.common.utils.Message2; import com.template.common.utils.MultipartFileUtils; import com.template.model.pojo.*; import com.template.services.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.InputStreamReader; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; /** *
* 前端控制器 *
* * @author ceshi * @since 2024-05-20 */ @RestController public class SmartFaceDiscernTestController implements SmartFaceDiscernTestControllerAPI { @Autowired SmartFaceDiscernTestService smartFaceDiscernTestService; @Autowired SmartUserService smartUserService; @Autowired SmartDeviceService smartDeviceService; @Autowired SmartUploadService smartUploadService; @Autowired SmartNotificationService smartNotificationService; @Override @PassToken @DESRespondSecret(validated = false) public String callBack(HttpServletRequest request, HttpServletResponse response) { try { BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8")); StringBuilder responseStrBuilder = new StringBuilder(); String inputStr; while ((inputStr = streamReader.readLine()) != null) { responseStrBuilder.append(inputStr); } JSONObject jsonObject = JSONObject.parseObject(responseStrBuilder.toString()); // 比对结果 Integer resultStatus = jsonObject.getInteger("resultStatus"); if (1 == resultStatus) { // 比对时间 String time = jsonObject.getString("time"); // 设备sn String sn = jsonObject.getString("sn"); SmartDevice smartDevice = smartDeviceService.getNum(sn); String address = ""; String type = ""; if (ObjectUtils.isNotEmpty(smartDevice)) { // 地点 address = smartDevice.getAddress(); // 类型 type = smartDevice.getName(); } // 名字,学生会加班级[] String name = jsonObject.getString("name"); System.out.println("name = " + name); String[] split = name.split("\\["); String s = split[0]; System.out.println("s = " + s); // 百胜门禁编号 String idNum = jsonObject.getString("idNum"); System.out.println("idNum = " + idNum); SmartUser smartUser = smartUserService.getBsStudentNo(idNum); Integer userId = 0; if (ObjectUtils.isNotEmpty(smartUser)) { userId = smartUser.getId(); } else { userId = 0; } // 抓拍的照片 base64字符串 String scenePhoto = jsonObject.getString("scenePhoto"); scenePhoto = "data:image/jpeg;base64," + scenePhoto; // base64转文件 MultipartFile multipartFile = MultipartFileUtils.base64ToMultipartFile(scenePhoto); // 上传到cos桶,并生成图片地址 String image = smartUploadService.upload(new MultipartFile[]{multipartFile}); SmartFaceDiscernTest smartFaceDiscernTest = new SmartFaceDiscernTest(); smartFaceDiscernTest.setImage(image); smartFaceDiscernTest.setName(s); smartFaceDiscernTest.setLocation(address); smartFaceDiscernTest.setType(type); smartFaceDiscernTest.setUserId(userId); smartFaceDiscernTest.setDateTime(time); if (userId != 0) { // 判断是否已经添加 LambdaQueryWrapper