package com.qxueyou.scc.base.service.impl; import java.io.File; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.qxueyou.scc.base.model.Result; import com.qxueyou.scc.base.service.IFileUploadService; import com.qxueyou.scc.base.util.CollectionUtils; import com.qxueyou.scc.base.util.TraceUtils; import com.qxueyou.scc.base.util.UUIDUtils; import com.qxueyou.scc.sys.model.SysFileUploadTrace; import com.qxueyou.scc.sys.model.SysLog; import com.qxueyou.scc.sys.service.IOssService; import com.qxueyou.scc.sys.service.IOssVideoService; import com.qxueyou.scc.sys.service.ISysLogService; /** * 所有文件上传的操作,单独到文件上传工程后,后续业务操作需要下载文件调用的方法 * @author ody.yuan * */ @Service(value = "FileUploadService") public class FileUploadService extends CommonAppService implements IFileUploadService { private final Logger log = LogManager.getLogger(FileUploadService.class); @Autowired ISysLogService syslogService; @Autowired IOssService ossService; @Autowired IOssVideoService ossVideoService; @Autowired ISysLogService logService ; @Override public File doGetOssFile(String key, String directory,String module,String userId) { File file = null ; try{ file = ossService.getObject(key, directory); return file; }catch( Exception e ){ log.error(userId + "失败:OSS下载路径:" + key + " ;应用服务器路径:" + directory + " ; errMsg=" + e.getMessage() , e ); return file ; } } @Override public File doGetOssVideoFile(String key, String directory,String module,String userId) { File file = null ; try{ file = ossVideoService.getObject(key, directory); return file; }catch( Exception e ){ log.error(userId + "失败:OSSVideo下载路径:" + key + " ;应用服务器路径:" + directory + " ; errMsg=" + e.getMessage() , e ); return file ; } } @Override public Result doDeleteTempOssFile(String directory,String module,String userId) { Boolean result = FileUtils.deleteQuietly(new File(directory)); if( result ){ this.insertUploadLog(userId,"成功删除:OSS-OSSVideo0:" + directory , module ); return new Result(true); }else{ return new Result(false); } } @Override public Result doDeleteTempOssFile(File file,String module,String userId) { Boolean result = FileUtils.deleteQuietly(file); if( result ){ this.insertUploadLog(userId,"成功删除:OSS-OSSVideo1:" + file.getAbsolutePath() , module ); return new Result(true); }else{ log.error(userId + "失败:OSS-OSSVideo删除本地文件1:" + file.getAbsolutePath() ); this.insertUploadLog(userId,"失败删除:OSS-OSSVideo1:" + file.getAbsolutePath() , module ); return new Result(false); } } /** * 插入本地文件下载日志 * @param content 内容 * @param desp 上传模块 * @return */ private Result insertUploadLog(String userId ,String content, String desp ){ SysLog log = new SysLog(); TraceUtils.setCreateTrace(log); log.setUserId(userId); log.setContent(content); log.setModule("FILE_UPLOAD_APPLICATION"); log.setDesp(desp.length() > 120 ? desp.substring(0,120) : desp); log.setDeleteFlag(false); log.setType(SysLog.LOG_TYPE_BUSINESS); this.syslogService.insertLog(log); return new Result(true); } /** * 更新上传文件使用轨迹 * @param fullPath 路径 * @param module * @param useFlag 使用状态 * @param bussinessId 业务ID * @return */ public Result updateUploadTrace(String fullPath,String module,int useFlag,String bussinessId){ String hql = " from SysFileUploadTrace where fullPath = ? and module = ?"; SysFileUploadTrace trace = findUnique(hql, CollectionUtils.newList(fullPath,module), SysFileUploadTrace.class); if(trace == null){ return new Result(false); } TraceUtils.setUpdateTrace(trace); trace.setBussinessId(bussinessId); trace.setUseFlag(useFlag); return save(trace); } /** * 通过路径下载微信图像到服务器 * @return */ @SuppressWarnings("unused") @Override public String downloadWxImg(String strUrl,String openId){ if(StringUtils.isBlank(strUrl)){ return null; } try { URL url = new URL(strUrl); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5 * 1000); InputStream inStream = conn.getInputStream();//通过输入流获取图片数据 String uuid = UUIDUtils.generateUUID(); String imgPath = "/web/res/img/user/"+uuid+"/" + openId + ".png"; // Result result = ossService.uplpadImage(inStream, "png", imgPath); // if (result.isSuccess()) { // return imgPath; // } } catch (Exception e) { e.printStackTrace(); log.error("微信头像上传失败" + e); } return null; } }