Merge remote-tracking branch 'origin/master'

This commit is contained in:
songmingsong
2024-12-06 11:14:41 +08:00
17 changed files with 821 additions and 21 deletions

View File

@ -1,5 +1,7 @@
package com.ycwl.basic.service;
import cn.hutool.core.util.StrUtil;
import com.ycwl.basic.exception.BaseException;
import com.ycwl.basic.utils.OssUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -20,7 +22,12 @@ public class FileService {
private OssUtil ossUtil;
public String uploadFile(MultipartFile file) throws IOException {
return ossUtil.uploadFile(file.getInputStream(), Objects.requireNonNull(file.getOriginalFilename()));
String originalFilename = file.getOriginalFilename();
if (StrUtil.isBlank(originalFilename)) {
throw new BaseException("文件上传失败,文件名不能为空");
}
String fileName=System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
return ossUtil.uploadFile(file.getInputStream(), fileName);
}
public Boolean delete(String fileName) {

View File

@ -0,0 +1,52 @@
package com.ycwl.basic.service.impl.mobile;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.mapper.pc.DeviceMapper;
import com.ycwl.basic.mapper.pc.ScenicMapper;
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
import com.ycwl.basic.service.mobile.AppScenicService;
import com.ycwl.basic.utils.ApiResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Authorlongbinbin
* @Date2024/12/6 10:23
*/
@Slf4j
@Service
public class AppScenicServiceImpl implements AppScenicService {
@Autowired
private ScenicMapper scenicMapper;
@Autowired
private DeviceMapper deviceMapper;
@Override
public ApiResponse<PageInfo<ScenicAppVO>> pageQuery(ScenicReqQuery scenicReqQuery) {
PageHelper.startPage(scenicReqQuery.getPageNum(), scenicReqQuery.getPageSize());
List<ScenicAppVO> list = scenicMapper.appList(scenicReqQuery);
PageInfo<ScenicAppVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo);
}
@Override
public ApiResponse<ScenicDeviceCountVO> deviceCountByScenicId(Long scenicId) {
String userId = BaseContextHandler.getUserId();
ScenicDeviceCountVO scenicDeviceCountVO=deviceMapper.deviceCountByScenicId(scenicId,userId);
return ApiResponse.success(scenicDeviceCountVO);
}
@Override
public ApiResponse<ScenicRespVO> getDetails(Long id) {
return scenicMapper.getAppById(id);
}
}

View File

@ -2,26 +2,36 @@ package com.ycwl.basic.service.impl.pc;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.exception.BaseException;
import com.ycwl.basic.mapper.pc.FaceMapper;
import com.ycwl.basic.model.jwt.JwtInfo;
import com.ycwl.basic.model.pc.face.entity.FaceEntity;
import com.ycwl.basic.model.pc.face.req.FaceReqQuery;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.service.pc.FaceService;
import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.SnowFlakeUtil;
import com.ycwl.basic.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
/**
* @Authorlongbinbin
* @Date2024/12/2 16:39
*/
@Slf4j
@Service
public class FaceServiceImpl implements FaceService {
@Autowired
private FaceMapper faceMapper;
@Autowired
private OssUtil ossUtil;
@Override
public ApiResponse<PageInfo<FaceRespVO>> pageQuery(FaceReqQuery faceReqQuery) {
@ -77,4 +87,72 @@ public class FaceServiceImpl implements FaceService {
}
return ApiResponse.success(i);
}
@Override
public ApiResponse faceUPload(MultipartFile file) {
//TODO 获取用户信息
String userId = BaseContextHandler.getUserId();
//1、上传人脸照片
String facaeUrl = uploadFileALiOss(file, userId);
//TODO 2、人脸照片有效性校验
Boolean isValid=true;
if(isValid){
//校验成功,保存用户人脸信息,将访问人脸照片访问地址响应给前端
FaceEntity faceEntity = new FaceEntity();
faceEntity.setId(SnowFlakeUtil.getLongId());
faceEntity.setMemberId(Long.parseLong(userId));
faceEntity.setFaceUrl(facaeUrl);
// faceEntity.setScore();
// faceEntity.setMatchSampleIds();
// faceEntity.setFirstMatchRate();
// faceEntity.setMatchResult();
//TODO 人脸数据存库
faceMapper.add(faceEntity);
return ApiResponse.success(facaeUrl);
}else {
//校验失败,删除,提示重新上传
ossUtil.deleteFile(facaeUrl);
throw new BaseException("人脸照片校验失败,请重新上传");
}
}
/**
* 阿里oss图片上传
*
* @param file file
* @param userId 用户id
* @return 地址
*/
private String uploadFileALiOss(MultipartFile file,String userId) {
if (file.isEmpty()) {
throw new RuntimeException("文件不存在!");
}
String originalFilename = file.getOriginalFilename();
//获取文件名后缀
String suffix = originalFilename.split("\\.")[1];
if ("Jpeg".equals(suffix)) {
suffix = "jpg";
}
//文件储存路径
String filePath="";
String dateStr = DateUtils.format(new Date(),"yyyy-MM-dd");
filePath=filePath+dateStr+"/";
// 生成文件名
String fileName= userId+"." + suffix;
InputStream inputStream ;
try {
inputStream = file.getInputStream();
} catch (IOException e) {
log.error("文件上传失败!", e);
return null;
}
return ossUtil.uploadFile(inputStream,filePath+fileName) ;
}
}

View File

@ -0,0 +1,20 @@
package com.ycwl.basic.service.mobile;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.model.mobile.scenic.ScenicAppVO;
import com.ycwl.basic.model.mobile.scenic.ScenicDeviceCountVO;
import com.ycwl.basic.model.pc.scenic.req.ScenicReqQuery;
import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
import com.ycwl.basic.utils.ApiResponse;
/**
* @Authorlongbinbin
* @Date2024/12/6 10:23
*/
public interface AppScenicService {
ApiResponse<PageInfo<ScenicAppVO>> pageQuery(ScenicReqQuery scenicReqQuery);
ApiResponse<ScenicDeviceCountVO> deviceCountByScenicId(Long scenicId);
ApiResponse<ScenicRespVO> getDetails(Long id);
}

View File

@ -5,6 +5,7 @@ import com.ycwl.basic.model.pc.face.entity.FaceEntity;
import com.ycwl.basic.model.pc.face.req.FaceReqQuery;
import com.ycwl.basic.model.pc.face.resp.FaceRespVO;
import com.ycwl.basic.utils.ApiResponse;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@ -21,4 +22,5 @@ public interface FaceService {
ApiResponse<Integer> deleteByIds(List<Long> ids);
ApiResponse<Integer> update(FaceEntity face);
ApiResponse faceUPload(MultipartFile file);
}