Commit 661008eb by yao.xiao

增加-经纪人设置保存(未完成),阿里部分代码(oss)

parent 65854245
......@@ -94,7 +94,7 @@
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<!--
<!--
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
......@@ -115,6 +115,12 @@
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.8.2</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
......
......@@ -5,8 +5,7 @@ import com.yd.api.practitioner.vo.login.PractitionerLoginRequestVO;
import com.yd.api.practitioner.vo.login.PractitionerLoginResponseVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO;
import com.yd.api.practitioner.vo.setting.SettingQueryRequestVO;
import com.yd.api.practitioner.vo.setting.SettingQueryResponseVO;
import com.yd.api.practitioner.vo.setting.*;
import com.yd.api.result.JsonResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
......@@ -69,25 +68,25 @@ public class PractitionerController {
* @param requestVO
* @return responseVO
*/
// @RequestMapping("/settingSave")
// public Object mySettingSave(@RequestBody SettingSaveRequestVO requestVO) throws Exception {
// JsonResult result = new JsonResult();
// SettingSaveResponseVO responseVO = practitionerService.settingSave(requestVO);
// result.setData(responseVO);
// result.addResult(responseVO);
// return result;
// }
@RequestMapping("/settingSave")
public Object mySettingSave(@RequestBody SettingSaveRequestVO requestVO) throws Exception {
JsonResult result = new JsonResult();
SettingSaveResponseVO responseVO = practitionerService.settingSave(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
/**
* 删除经纪人照片
*/
// @RequestMapping("/imgDelete")
// public Object imgDelete(@RequestBody ImgDeleteRequestVO requestVO){
// JsonResult result = new JsonResult();
// ImgDeleteResponseVO responseVO = practitionerService.imgDelete(requestVO);
// result.setData(responseVO);
// result.addResult(responseVO);
// return result;
// }
@RequestMapping("/imgDelete")
public Object imgDelete(@RequestBody ImgDeleteRequestVO requestVO){
JsonResult result = new JsonResult();
ImgDeleteResponseVO responseVO = practitionerService.imgDelete(requestVO);
result.setData(responseVO);
result.addResult(responseVO);
return result;
}
}
......@@ -4,8 +4,7 @@ import com.yd.api.practitioner.vo.login.PractitionerLoginRequestVO;
import com.yd.api.practitioner.vo.login.PractitionerLoginResponseVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO;
import com.yd.api.practitioner.vo.setting.SettingQueryRequestVO;
import com.yd.api.practitioner.vo.setting.SettingQueryResponseVO;
import com.yd.api.practitioner.vo.setting.*;
import org.springframework.stereotype.Service;
@Service("practitionerService")
......@@ -31,4 +30,18 @@ public interface PractitionerService {
* @return
*/
SettingQueryResponseVO settingQuery(SettingQueryRequestVO requestVO);
/**
* 经纪人删除头像生活照
* @param requestVO
* @return
*/
ImgDeleteResponseVO imgDelete(ImgDeleteRequestVO requestVO);
/**
* 保存经纪人设置头像,生活照
* @param requestVO
* @return
*/
SettingSaveResponseVO settingSave(SettingSaveRequestVO requestVO) throws Exception;
}
......@@ -6,9 +6,7 @@ import com.yd.api.practitioner.vo.rank.AclCustomerFortuneStatistics;
import com.yd.api.practitioner.vo.rank.PractitionerRankRequestVO;
import com.yd.api.practitioner.vo.rank.PractitionerRankResponseVO;
import com.yd.api.practitioner.vo.rank.PractitionerInfoForAchievement;
import com.yd.api.practitioner.vo.setting.LifeImg;
import com.yd.api.practitioner.vo.setting.SettingQueryRequestVO;
import com.yd.api.practitioner.vo.setting.SettingQueryResponseVO;
import com.yd.api.practitioner.vo.setting.*;
import com.yd.api.result.CommonResult;
import com.yd.dal.entity.customer.AclCustomerLog;
import com.yd.dal.entity.customer.AclFileUpload;
......@@ -19,6 +17,9 @@ import com.yd.dal.service.customer.AclFileUploadDALService;
import com.yd.dal.service.meta.MdCodeDALService;
import com.yd.dal.service.practitioner.PractitionerDALService;
import com.yd.dal.service.practitioner.PractitionerSubordinateDALService;
import com.yd.rmi.ali.oss.service.OssService;
import com.yd.util.CommonUtil;
import com.yd.util.HttpUtil;
import com.yd.util.config.ZHBErrorConfig;
import org.apache.commons.beanutils.BeanPropertyValueEqualsPredicate;
import org.apache.commons.collections.CollectionUtils;
......@@ -26,11 +27,15 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.google.common.base.Strings;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
@Service("practitionerService")
public class PractitionerServiceImpl implements com.yd.api.practitioner.service.PractitionerService {
......@@ -45,6 +50,8 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
private PractitionerSubordinateDALService practitionerSubordinateDALService;
@Autowired
private AclCustomerLogDALService aclCustomerLogDALService;
@Autowired
private OssService ossService;
@Override
public PractitionerLoginResponseVO practitionerLogin(PractitionerLoginRequestVO requestVO) {
......@@ -267,4 +274,227 @@ public class PractitionerServiceImpl implements com.yd.api.practitioner.service.
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO;
}
@Override
public ImgDeleteResponseVO imgDelete(ImgDeleteRequestVO requestVO) {
ImgDeleteResponseVO responseVO = new ImgDeleteResponseVO();
Long fileId = requestVO.getFileId();
AclFileUpload fileUpload = new AclFileUpload();
fileUpload.setId(fileId);
fileUpload.setIsActive(0);
aclFileUploadDALService.updateFileUpload(fileUpload);
responseVO.setPractitionerId(requestVO.getPractitionerId());
responseVO.setCommonResult(new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000")));
return responseVO;
}
@Override
@Transactional
public SettingSaveResponseVO settingSave(SettingSaveRequestVO requestVO) throws Exception {
SettingSaveResponseVO responseVO = new SettingSaveResponseVO();
//入参判断
CommonResult commonResult = paramCheck(requestVO);
if (!commonResult.isSuccess()){
responseVO.setCommonResult(commonResult);
return responseVO;
}
//保存经纪人自我介绍及设置
practitionerMySettingSave(requestVO);
String settingSave = requestVO.getSettingSave();
if (settingSave.equalsIgnoreCase("img")){
String message;
//保存头像
message = practitionerHeadImgSave(requestVO);
if (!CommonUtil.isNullOrBlank(message)){
responseVO.setCommonResult(new CommonResult(false,message));
return responseVO;
}
//保存生活照
message = practitionerLifeImgSave(requestVO);
if (!CommonUtil.isNullOrBlank(message)){
responseVO.setCommonResult(new CommonResult(false,message));
return responseVO;
}
//保存二维码
message = practitionerWXQRImgSave(requestVO);
if (!CommonUtil.isNullOrBlank(message)){
responseVO.setCommonResult(new CommonResult(false,message));
return responseVO;
}
}
responseVO.setCommonResult(commonResult);
return responseVO;
}
private CommonResult paramCheck(SettingSaveRequestVO requestVO) {
//检查入参判断
Long practitionerId = requestVO.getPractitionerId();
if (CommonUtil.isNullOrZero(practitionerId)){
String[] params = {"practitionerId"};
return new CommonResult(false, ZHBErrorConfig.getErrorInfo("610001",params));
}
//生活照至多三张
List<String> lifeImgUrls = requestVO.getLifeImgUrls();
if (lifeImgUrls != null){
if (!lifeImgUrls.isEmpty()){
AclFileUpload aclFileUpload = new AclFileUpload();
aclFileUpload.setTargetType(1);
aclFileUpload.setTargetId(practitionerId);
aclFileUpload.setTargetUseFor(2);
aclFileUpload.setIsActive(1);
List<AclFileUpload> fileUploads = aclFileUploadDALService.findByAclFileUpload(aclFileUpload);
if (!fileUploads.isEmpty()){
int size = lifeImgUrls.size()+fileUploads.size();
if (size>=4){
return new CommonResult(false, ZHBErrorConfig.getErrorInfo("830019"));
}
}
}
}
return new CommonResult(true, ZHBErrorConfig.getErrorInfo("800000"));
}
private void practitionerMySettingSave(SettingSaveRequestVO requestVO) {
//修改个人设置,个人介绍
String settingSave = requestVO.getSettingSave();
if (settingSave.equalsIgnoreCase("isShow")||settingSave.equalsIgnoreCase("intro")){
Long practitionerId = requestVO.getPractitionerId();
AclPractitionerInfo practitioner = practitionerDALService.findPractitionerById(practitionerId);
if (settingSave.equalsIgnoreCase("intro")){
practitioner.setBioIntro(requestVO.getBioIntro());
}else if (settingSave.equalsIgnoreCase("isShow")){
practitioner.setIsNameShow(requestVO.getIsNameShow());
practitioner.setIsMobileShow(requestVO.getIsMobileShow());
}
practitionerDALService.updatePractitioner(practitioner);
}
}
private String practitionerHeadImgSave(SettingSaveRequestVO requestVO) throws Exception {
String headImgUrl = requestVO.getHeadImgUrl();
if (CommonUtil.isNullOrBlank(headImgUrl)){
//如果头像没有地址,则认为没有上传
return null;
}
//上传图片
return uploadImage(headImgUrl,requestVO.getPractitionerId(),1);
}
private String practitionerLifeImgSave(SettingSaveRequestVO requestVO) throws Exception {
List<String> lifeImgUrls = requestVO.getLifeImgUrls();
StringBuilder message = new StringBuilder(" ");
int i = 1;
for (String lifeImgUrl: lifeImgUrls){
String resp = uploadImage(lifeImgUrl, requestVO.getPractitionerId(), 2);
if (!CommonUtil.isNullOrBlank(resp)){
message.append(i).append(",");
}
i++;
}
if (!CommonUtil.isNullOrBlank(message.toString())){
return "此次上传第"+message+"张图片尺寸不符合要求!!";
}
return null;
}
private String practitionerWXQRImgSave(SettingSaveRequestVO requestVO) throws Exception{
String wxQRImgUrl = requestVO.getWxQRImgUrl();
if (CommonUtil.isNullOrBlank(wxQRImgUrl)){
//如果头像没有地址,则认为没有上传
return null;
}
//上传图片
return uploadImage(wxQRImgUrl,requestVO.getPractitionerId(),9);
}
private String uploadImage(String headImgUrl, Long practitionerId,Integer targetUseFor) throws Exception{
Map<String, Object> input = HttpUtil.getInput(headImgUrl);
if (!(boolean)input.get("success")){
if (targetUseFor==1){
//地址转流失败
return ZHBErrorConfig.getErrorInfo("830056");
}else if(targetUseFor==2){
return ZHBErrorConfig.getErrorInfo("830057");
}else if(targetUseFor==9){
return ZHBErrorConfig.getErrorInfo("830058");
}
}
//获取头像流
InputStream inputStream = (InputStream) input.get("is");
//判断图像尺寸
BufferedImage img = ImageIO.read(inputStream);
if (img == null || img.getWidth(null) <= 0 || img.getHeight(null) <= 0) {
return ZHBErrorConfig.getErrorInfo("830014");
}else {
double width = img.getWidth(null);
double height = img.getHeight(null);
double value =height/width;
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(img, "jpg", os);
inputStream = new ByteArrayInputStream(os.toByteArray());
if (value !=1&&(targetUseFor == 1 || targetUseFor == 9)){
//上传头像尺寸比例为1:1
return ZHBErrorConfig.getErrorInfo("830016");
}else if(value !=0.75 && targetUseFor == 2){
return ZHBErrorConfig.getErrorInfo("830015");
}
}
//上传图片至阿里云
String prefix = "broker/"+practitionerId+"/";
String originalFilename = generateKey(targetUseFor);
String key = prefix + originalFilename;
String putFileToOss = ossService.putFileToOss(null,key,inputStream);
//将之前头像设置为不启用
if (targetUseFor==1||targetUseFor==9){
updateImgOld(practitionerId,targetUseFor);
}
//保存到数据库
AclPractitionerInfo practitioner = practitionerDALService.findPractitionerById(practitionerId);
AclFileUpload aclFileUpload = new AclFileUpload();
aclFileUpload.setTargetType(1);
aclFileUpload.setTargetId(practitioner.getId());
String practitionerCode = practitioner.getPractitionerCode();
aclFileUpload.setTargetNo(practitionerCode);
aclFileUpload.setFileType("jpg");
aclFileUpload.setFileName(originalFilename);
aclFileUpload.setFilePath(putFileToOss);
aclFileUpload.setTargetUseFor(targetUseFor);
aclFileUpload.setFileSize(String.valueOf(inputStream.available()));
aclFileUpload.setOssKey(key);
aclFileUpload.setIsActive(1);
aclFileUpload.setUploadedAt(new Date());
aclFileUpload.setUploadedBy(-1L);
aclFileUpload.setTargetSeq(getTargetSeq(practitioner.getId(),targetUseFor));
aclFileUploadDALService.saveFileUpload(aclFileUpload);
return null;
}
private String generateKey(int targetUseFor) {
SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
return targetUseFor+sdf.format(new Date()) + CommonUtil.getRandomNum(3)+".jpg";
}
private void updateImgOld(Long practitionerId, int targetUseFor) {
AclFileUpload aclFileUpload = new AclFileUpload();
aclFileUpload.setTargetId(practitionerId);
aclFileUpload.setTargetType(1);
aclFileUpload.setIsActive(1);
aclFileUpload.setTargetUseFor(targetUseFor);
List<AclFileUpload> uploads = aclFileUploadDALService.findByAclFileUpload(aclFileUpload);
if (!uploads.isEmpty()){
for (AclFileUpload fileUpload :uploads){
fileUpload.setIsActive(0);
aclFileUploadDALService.updateFileUpload(fileUpload);
}
}
}
private Integer getTargetSeq(Long practitionerId, Integer targetUseFor) {
AclFileUpload aclFileUpload = new AclFileUpload();
aclFileUpload.setTargetType(1);
aclFileUpload.setTargetId(practitionerId);
aclFileUpload.setTargetUseFor(targetUseFor);
List<AclFileUpload> aclFileUploadList = aclFileUploadDALService.findByAclFileUpload(aclFileUpload);
return aclFileUploadList.size()+1;
}
}
......@@ -23,4 +23,23 @@ public interface AclFileUploadDALService {
* @return
*/
List<AclFileUpload> findByAclFileUpload(AclFileUpload fileUpload);
/**
* 通过id查找ag_acl_file_upload信息
* @param fileId
* @return
*/
AclFileUpload findFileUploadById(Long fileId);
/**
* 通过id更新ag_acl_file_upload
* @param fileUpload
*/
void updateFileUpload(AclFileUpload fileUpload);
/**
* 保存ag_acl_file_upload
* @param aclFileUpload
*/
void saveFileUpload(AclFileUpload aclFileUpload);
}
......@@ -32,4 +32,19 @@ public class AclFileUploadDALServiceImpl implements AclFileUploadDALService {
public List<AclFileUpload> findByAclFileUpload(AclFileUpload fileUpload) {
return aclFileUploadMapper.findByAclFileUpload(fileUpload);
}
@Override
public AclFileUpload findFileUploadById(Long fileId) {
return aclFileUploadMapper.selectByPrimaryKey(fileId);
}
@Override
public void updateFileUpload(AclFileUpload fileUpload) {
aclFileUploadMapper.updateByPrimaryKeySelective(fileUpload);
}
@Override
public void saveFileUpload(AclFileUpload aclFileUpload) {
aclFileUploadMapper.insertSelective(aclFileUpload);
}
}
package com.yd.dal.service.practitioner;
import com.yd.dal.entity.customer.AclFileUpload;
import com.yd.dal.entity.practitioner.AclPractitionerInfo;
import com.yd.dal.entity.practitioner.PractitionerBasicInfo;
import com.yd.dal.entity.practitioner.PractitionerInfo;
......@@ -55,4 +56,11 @@ public interface PractitionerDALService {
* @return
*/
AclPractitionerInfo findPractitionerById(Long practitionerId);
/**
* 通过id更新practitioner
* @param practitioner
*/
void updatePractitioner(AclPractitionerInfo practitioner);
}
......@@ -71,4 +71,10 @@ public class PractitionerDALServiceImpl implements PractitionerDALService {
public AclPractitionerInfo findPractitionerById(Long practitionerId) {
return aclPractitionerMapper.selectByPrimaryKey(practitionerId);
}
@Override
@TargetDataSource(dataSourceKey = DataSourceKey.DB_MASTER)
public void updatePractitioner(AclPractitionerInfo practitioner) {
aclPractitionerMapper.updateByPrimaryKeySelective(practitioner);
}
}
package com.yd.rmi.ali.oss.service;
import com.yd.rmi.ali.oss.vo.OssRequestVO;
import com.yd.rmi.ali.oss.vo.OssResponseVO;
import java.io.InputStream;
public interface OssService {
String putFileToOss(String string, String key, InputStream is) throws Exception;
}
package com.yd.rmi.ali.oss.service.impl;
import com.aliyun.oss.model.*;
import com.yd.api.result.CommonResult;
import com.yd.rmi.ali.oss.service.OssService;
import com.yd.rmi.ali.oss.vo.OssOperateTypeEnum;
import com.yd.rmi.ali.oss.vo.OssRequestVO;
import com.yd.rmi.ali.oss.vo.OssResponseVO;
import com.yd.rmi.ali.ossinterf.service.AliOssInterfService;
import com.yd.util.CommonUtil;
import com.yd.util.config.ZHBErrorConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
@Service("ossService")
public class OssServiceImpl implements OssService {
// @Autowired
// private SystemConfigService systemConfigService;
@Autowired
private AliOssInterfService aliOssInterfService;
public boolean doesBucketExist(String bucketName){
// String endpoint = systemConfigService.getSingleConfigValue("ALI_OSS_ENDPOINT");
// String accessKeyId = systemConfigService.getSingleConfigValue("ALI_OSS_ACCESS_KEY_ID");
// String accessKeySecret = systemConfigService.getSingleConfigValue("ALI_OSS_ACCESS_KEY_SECRET");
// aliOssInterfService.initAttribute(endpoint, accessKeyId, accessKeySecret);
return aliOssInterfService.doesBucketExist(bucketName);
}
/**
* 上传文件到OSS
* @param bucketName
* @param key
* @param is
* @return
*/
@Override
public String putFileToOss(String bucketName, String key, InputStream is) throws Exception{
String url = null;
if(CommonUtil.isNullOrBlank(key) || is == null){
return null;
}
// if(CommonUtil.isNullOrBlank(bucketName)){
// bucketName = systemConfigService.getSingleConfigValue("ALI_OSS_BUCKET_NAME");
// }
OssRequestVO ossRequestVO = new OssRequestVO();
File file = null;
OutputStream os = null;
try{
file = File.createTempFile("tmp", null);
// System.out.println("文件是否存在:"+file.exists()+"---------------临时文件路径:"+file.getAbsolutePath());
os = new FileOutputStream(file);
int len = 0;
byte[] bytes = new byte[1024];
while((len = is.read(bytes) ) > 0){
os.write(bytes, 0, len);
os.flush();
}
ossRequestVO.setOperateType(OssOperateTypeEnum.PUT_OBJECT.getCode());
ossRequestVO.setBucketName(bucketName);
ossRequestVO.setKey(key);
ossRequestVO.setFile(file);
OssResponseVO ossResponseVO = ossOperate(ossRequestVO);
ossRequestVO.setOperateType(OssOperateTypeEnum.GENERATE_URL.getCode());
ossResponseVO = ossOperate(ossRequestVO);
url = ossResponseVO.getUrl();
}catch(Exception e){
throw e;
}finally{
if(os != null){try{os.close();}catch(Exception e){e.printStackTrace();}}
if(is != null){try{is.close();}catch(Exception e){e.printStackTrace();}}
if(file != null){file.delete();}
// System.out.println("文件是否存在:"+file.exists());
}
return url;
}
private OssResponseVO ossOperate(OssRequestVO ossRequestVO) {
OssResponseVO ossResponseVO = new OssResponseVO();
boolean success = true;
String message = ZHBErrorConfig.getErrorInfo("800000");
if(ossRequestVO == null || CommonUtil.isNullOrBlank(ossRequestVO.getOperateType())){
String[] params = {"operateType"};
ossResponseVO.setCommonResult(new CommonResult(false,ZHBErrorConfig.getErrorInfo("610001", params)));
return ossResponseVO;
}
String operateType = ossRequestVO.getOperateType();
String bucketName = ossRequestVO.getBucketName();
CannedAccessControlList cannedAccessControlList = ossRequestVO.getCannedAccessControlList();
String key = ossRequestVO.getKey();
File file = ossRequestVO.getFile();
String checkMessage = "";
if(OssOperateTypeEnum.DOES_BUCKET_EXIST.getCode().equals(operateType)
|| OssOperateTypeEnum.GET_BUCKET_ACL.getCode().equals(operateType)
|| OssOperateTypeEnum.CREATE_BUCKET.getCode().equals(operateType)
|| OssOperateTypeEnum.SET_BUCKET_ACL.getCode().equals(operateType)
|| OssOperateTypeEnum.DOES_OBJECT_EXIST.getCode().equals(operateType)
|| OssOperateTypeEnum.GET_OBJECT_ACL.getCode().equals(operateType)
|| OssOperateTypeEnum.PUT_OBJECT.getCode().equals(operateType)
|| OssOperateTypeEnum.SET_OBJECT_ACL.getCode().equals(operateType)
|| OssOperateTypeEnum.GET_OBJECT.getCode().equals(operateType)
|| OssOperateTypeEnum.LIST_OBJECTS.getCode().equals(operateType)
|| OssOperateTypeEnum.GENERATE_URL.getCode().equals(operateType)
|| OssOperateTypeEnum.DELETE_OBJECTS.getCode().equals(operateType)){
if(CommonUtil.isNullOrBlank(bucketName)){
String[] params = {"bucketName"};
checkMessage += ZHBErrorConfig.getErrorInfo("610001", params);
}
if(OssOperateTypeEnum.DOES_OBJECT_EXIST.getCode().equals(operateType)
|| OssOperateTypeEnum.GET_OBJECT_ACL.getCode().equals(operateType)
|| OssOperateTypeEnum.PUT_OBJECT.getCode().equals(operateType)
|| OssOperateTypeEnum.SET_OBJECT_ACL.getCode().equals(operateType)
|| OssOperateTypeEnum.GET_OBJECT.getCode().equals(operateType)
|| OssOperateTypeEnum.GENERATE_URL.getCode().equals(operateType)
|| OssOperateTypeEnum.DELETE_OBJECTS.getCode().equals(operateType)){
if(CommonUtil.isNullOrBlank(key)){
String[] params = {"key"};
checkMessage += ZHBErrorConfig.getErrorInfo("610001", params);
}
}
if(OssOperateTypeEnum.SET_BUCKET_ACL.getCode().equals(operateType)
|| OssOperateTypeEnum.SET_OBJECT_ACL.getCode().equals(operateType)){
if(cannedAccessControlList == null){
String[] params = {"cannedAccessControlList"};
checkMessage += ZHBErrorConfig.getErrorInfo("610001", params);
}
}
if(OssOperateTypeEnum.PUT_OBJECT.getCode().equals(operateType)){
if(file == null){
String[] params = {"file"};
checkMessage += ZHBErrorConfig.getErrorInfo("610001", params);
}
}
}
if(!CommonUtil.isNullOrBlank(checkMessage)){
ossResponseVO.setCommonResult(new CommonResult(false,checkMessage));
return ossResponseVO;
}
if(OssOperateTypeEnum.DOES_BUCKET_EXIST.getCode().equals(operateType)){
boolean isExists = aliOssInterfService.doesBucketExist(bucketName);
ossResponseVO.setExists(isExists);
}else if(OssOperateTypeEnum.GET_BUCKET_ACL.getCode().equals(operateType)){
AccessControlList accessControlList = aliOssInterfService.getBucketAcl(bucketName);
ossResponseVO.setAccessControlList(accessControlList);
}else if(OssOperateTypeEnum.CREATE_BUCKET.getCode().equals(operateType)){
aliOssInterfService.createBucket(bucketName, cannedAccessControlList);
}else if(OssOperateTypeEnum.SET_BUCKET_ACL.getCode().equals(operateType)){
aliOssInterfService.setBucketAcl(bucketName, cannedAccessControlList);
}else if(OssOperateTypeEnum.LIST_BUCKETS.getCode().equals(operateType)){
BucketList bucketList = aliOssInterfService.listBuckets();
ossResponseVO.setBucketList(bucketList);
}else if(OssOperateTypeEnum.DOES_OBJECT_EXIST.getCode().equals(operateType)){
boolean isExists = aliOssInterfService.doesObjectExist(bucketName, key);
ossResponseVO.setExists(isExists);
}else if(OssOperateTypeEnum.GET_OBJECT_ACL.getCode().equals(operateType)){
ObjectAcl objectAcl = aliOssInterfService.getObjectAcl(bucketName, key);
ossResponseVO.setObjectAcl(objectAcl);
}else if(OssOperateTypeEnum.PUT_OBJECT.getCode().equals(operateType)){
aliOssInterfService.putObject(bucketName, key, file);
}else if(OssOperateTypeEnum.SET_OBJECT_ACL.getCode().equals(operateType)){
aliOssInterfService.setObjectAcl(bucketName, key, cannedAccessControlList);
}else if(OssOperateTypeEnum.GET_OBJECT.getCode().equals(operateType)){
OSSObject ossObject = aliOssInterfService.getObject(bucketName, key);
ossResponseVO.setOssObject(ossObject);
}else if(OssOperateTypeEnum.LIST_OBJECTS.getCode().equals(operateType)){
ObjectListing objectListing = aliOssInterfService.listObjects(bucketName, ossRequestVO.getPrefix());
ossResponseVO.setObjectListing(objectListing);
}else if(OssOperateTypeEnum.GENERATE_URL.getCode().equals(operateType)){
String url = aliOssInterfService.generateUrl(bucketName, key);
ossResponseVO.setUrl(url);
}else if(OssOperateTypeEnum.DELETE_OBJECTS.getCode().equals(operateType)){
List<String> keys = new ArrayList<String>();
keys.add(key);
aliOssInterfService.deleteObjects(bucketName, keys);
}
ossResponseVO.setCommonResult(new CommonResult(success,message));
return ossResponseVO;
}
}
package com.yd.rmi.ali.oss.vo;
public enum OssOperateTypeEnum {
/**
* 判断存储空间是否存在
*/
DOES_BUCKET_EXIST("doesBucketExist","判断存储空间是否存在"),
/**
* 获取存储空间访问权限
*/
GET_BUCKET_ACL("getBucketAcl","获取存储空间访问权限"),
/**
* 创建存储空间
*/
CREATE_BUCKET("createBucket","创建存储空间"),
/**
* 列出当前访问域名下的所有存储空间
*/
LIST_BUCKETS("listBuckets","列出当前访问域名下的所有存储空间"),
/**
* 设置存储空间访问权限
*/
SET_BUCKET_ACL("setBucketAcl","设置存储空间访问权限"),
/**
* 判断对象是否存在
*/
DOES_OBJECT_EXIST("doesObjectExist","判断对象是否存在"),
/**
* 获取对象的访问权限
*/
GET_OBJECT_ACL("getObjectAcl","获取对象的访问权限"),
/**
* 上传文件
*/
PUT_OBJECT("putObject","上传文件"),
/**
* 设置对象访问权限
*/
SET_OBJECT_ACL("setObjectAcl","设置对象访问权限"),
/**
* 下载对象
*/
GET_OBJECT("getObject","下载对象"),
/**
* 列出当前访问域名下的所有对象
*/
LIST_OBJECTS("listObjects","列出当前访问域名下的所有对象"),
/**
* 获取对象外网访问URL
*/
GENERATE_URL("generateUrl","获取对象外网访问URL"),
/**
* 删除文件
*/
DELETE_OBJECTS("deleteObjects","删除文件");
private String code;
private String message;
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
private OssOperateTypeEnum(String code,String message) {
this.code=code;
this.message=message;
}
}
package com.yd.rmi.ali.oss.vo;
import com.aliyun.oss.model.CannedAccessControlList;
import java.io.File;
public class OssRequestVO {
private String operateType;//操作类型,详见OssOperateTypeEnum
private String endpoint;//访问域名
private String accessKeyId;//accessKeyId
private String accessKeySecret;//accessKeySecret
private String bucketName;//存储空间名
private CannedAccessControlList cannedAccessControlList;//权限
private String key;//对象名
private File file;//文件
private String prefix;//获取对象列表时的前缀
private Long idBegin;//起始ID
private Long idEnd;//终止ID
/**
* 获取属性 operateType 操作类型,详见OssOperateTypeEnum
* @return operateType
*/
public String getOperateType(){
return this.operateType;
}
/**
* 属性赋值 operateType 操作类型,详见OssOperateTypeEnum
* @param operateType
*/
public void setOperateType(String operateType){
this.operateType = operateType;
}
/**
* 获取属性 endpoint 访问域名
* @return endpoint
*/
public String getEndpoint(){
return this.endpoint;
}
/**
* 属性赋值 endpoint 访问域名
* @param endpoint
*/
public void setEndpoint(String endpoint){
this.endpoint = endpoint;
}
/**
* 获取属性 accessKeyId accessKeyId
* @return accessKeyId
*/
public String getAccessKeyId(){
return this.accessKeyId;
}
/**
* 属性赋值 accessKeyId accessKeyId
* @param accessKeyId
*/
public void setAccessKeyId(String accessKeyId){
this.accessKeyId = accessKeyId;
}
/**
* 获取属性 accessKeySecret accessKeySecret
* @return accessKeySecret
*/
public String getAccessKeySecret(){
return this.accessKeySecret;
}
/**
* 属性赋值 accessKeySecret accessKeySecret
* @param accessKeySecret
*/
public void setAccessKeySecret(String accessKeySecret){
this.accessKeySecret = accessKeySecret;
}
/**
* 获取属性 bucketName 存储空间名
* @return bucketName
*/
public String getBucketName(){
return this.bucketName;
}
/**
* 属性赋值 bucketName 存储空间名
* @param bucketName
*/
public void setBucketName(String bucketName){
this.bucketName = bucketName;
}
/**
* 获取属性 cannedAccessControlList 权限
* @return cannedAccessControlList
*/
public CannedAccessControlList getCannedAccessControlList(){
return this.cannedAccessControlList;
}
/**
* 属性赋值 cannedAccessControlList 权限
* @param cannedAccessControlList
*/
public void setCannedAccessControlList(CannedAccessControlList cannedAccessControlList){
this.cannedAccessControlList = cannedAccessControlList;
}
/**
* 获取属性 key 对象名
* @return key
*/
public String getKey(){
return this.key;
}
/**
* 属性赋值 key 对象名
* @param key
*/
public void setKey(String key){
this.key = key;
}
/**
* 获取属性 file 文件
* @return file
*/
public File getFile(){
return this.file;
}
/**
* 属性赋值 file 文件
* @param file
*/
public void setFile(File file){
this.file = file;
}
/**
* 获取属性 prefix 获取对象列表时的前缀
* @return prefix
*/
public String getPrefix(){
return this.prefix;
}
/**
* 属性赋值 prefix 获取对象列表时的前缀
* @param prefix
*/
public void setPrefix(String prefix){
this.prefix = prefix;
}
/**
* 获取属性 idBegin 起始ID
* @return idBegin
*/
public Long getIdBegin(){
return this.idBegin;
}
/**
* 属性赋值 idBegin 起始ID
* @param idBegin
*/
public void setIdBegin(Long idBegin){
this.idBegin = idBegin;
}
/**
* 获取属性 idEnd 终止ID
* @return idEnd
*/
public Long getIdEnd(){
return this.idEnd;
}
/**
* 属性赋值 idEnd 终止ID
* @param idEnd
*/
public void setIdEnd(Long idEnd){
this.idEnd = idEnd;
}
}
package com.yd.rmi.ali.oss.vo;
import com.aliyun.oss.model.*;
import com.yd.api.result.CommonResult;
public class OssResponseVO {
private String operateType;//操作类型,详见OssOperateTypeEnum
private boolean exists;//存储空间、对象是否存在
private BucketList bucketList;//存储空间列表
private AccessControlList accessControlList;//存储空间、对象权限入参
private ObjectAcl objectAcl;//对象权限出参
private OSSObject ossObject;//对象下载出参
private ObjectListing objectListing;//对象列表
private String url;//对象外网访问URL
private CommonResult commonResult;
public String getOperateType() {
return operateType;
}
public void setOperateType(String operateType) {
this.operateType = operateType;
}
public boolean isExists() {
return exists;
}
public void setExists(boolean exists) {
this.exists = exists;
}
public BucketList getBucketList() {
return bucketList;
}
public void setBucketList(BucketList bucketList) {
this.bucketList = bucketList;
}
public AccessControlList getAccessControlList() {
return accessControlList;
}
public void setAccessControlList(AccessControlList accessControlList) {
this.accessControlList = accessControlList;
}
public ObjectAcl getObjectAcl() {
return objectAcl;
}
public void setObjectAcl(ObjectAcl objectAcl) {
this.objectAcl = objectAcl;
}
public OSSObject getOssObject() {
return ossObject;
}
public void setOssObject(OSSObject ossObject) {
this.ossObject = ossObject;
}
public ObjectListing getObjectListing() {
return objectListing;
}
public void setObjectListing(ObjectListing objectListing) {
this.objectListing = objectListing;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public CommonResult getCommonResult() {
return commonResult;
}
public void setCommonResult(CommonResult commonResult) {
this.commonResult = commonResult;
}
}
package com.yd.rmi.ali.ossinterf.service;
import com.aliyun.oss.model.*;
import java.io.File;
import java.util.List;
public interface AliOssInterfService {
public void initAttribute();
/**
* 初始化相关链接参数
* @param endpoint
* @param accessKeyId
* @param accessKeySecret
*/
public void initAttribute(String endpoint,String accessKeyId,String accessKeySecret);
/**
* 判断存储空间是否存在
* @param bucketName 存储空间名
* @return
*/
public boolean doesBucketExist(String bucketName);
/**
* 获取存储空间访问权限
* @param bucketName 存储空间名
* @return
*/
public AccessControlList getBucketAcl(String bucketName);
/**
* 创建存储空间
* @param bucketName 存储空间名
* @param cannedACL 访问权限
*/
public void createBucket(String bucketName, CannedAccessControlList cannedACL);
/**
* 设置存储空间访问权限
* @param bucketName 存储空间名
* @param cannedACL 访问权限
*/
public void setBucketAcl(String bucketName,CannedAccessControlList cannedACL);
/**
* 列出当前访问域名下的所有存储空间
* @return
*/
public BucketList listBuckets();
/**
* 判断对象是否存在
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public boolean doesObjectExist(String bucketName,String key);
/**
* 获取对象的访问权限
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public ObjectAcl getObjectAcl(String bucketName, String key);
/**
* 上传文件
* @param bucketName 存储空间名
* @param key 对象名
* @param file 文件
*/
public void putObject(String bucketName,String key,File file);
/**
* 设置对象访问权限
* @param bucketName 存储空间名
* @param key 对象名
* @param cannedACL 访问权限
*/
public void setObjectAcl(String bucketName,String key, CannedAccessControlList cannedACL);
/**
* 下载对象
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public OSSObject getObject(String bucketName, String key);
/**
* 列出当前访问域名下的所有对象
* @param bucketName 存储空间名
* @param prefix
* @return
*/
public ObjectListing listObjects(String bucketName, String prefix);
/**
* 获取对象外网访问URL
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public String generateUrl(String bucketName,String key);
/**
* 删除对象
* @param bucketName 存储空间名
* @param keys 对象名列表
*/
public void deleteObjects(String bucketName,List<String> keys);
}
package com.yd.rmi.ali.ossinterf.service.impl;
import com.aliyun.oss.HttpMethod;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.*;
import com.yd.rmi.ali.ossinterf.service.AliOssInterfService;
import com.yd.util.CommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.File;
import java.net.URL;
import java.util.Date;
import java.util.List;
@Service("aliOssInterfService")
public class AliOssInterfServiceImpl implements AliOssInterfService {
private String endpoint = null;//SystemConstants.ALI_OSS_ENDPOINT;
private String accessKeyId = null;//SystemConstants.ALI_OSS_ACCESS_KEY_ID;
private String accessKeySecret = null;//SystemConstants.ALI_OSS_ACCESS_KEY_SECRET;
// @Autowired
// private SystemConfigService systemConfigService;
//
public void initAttribute(){
// if(CommonUtil.isNullOrBlank(this.endpoint)){
// this.endpoint = systemConfigService.getSingleConfigValue("ALI_OSS_ENDPOINT");
// }
// if(CommonUtil.isNullOrBlank(this.accessKeyId)){
// this.accessKeyId = systemConfigService.getSingleConfigValue("ALI_OSS_ACCESS_KEY_ID");
// }
// if(CommonUtil.isNullOrBlank(this.accessKeySecret)){
// this.accessKeySecret = systemConfigService.getSingleConfigValue("ALI_OSS_ACCESS_KEY_SECRET");
// }
}
/**
* 初始化相关链接参数
* @param endpoint
* @param accessKeyId
* @param accessKeySecret
*/
public void initAttribute(String endpoint,String accessKeyId,String accessKeySecret){
if(!CommonUtil.isNullOrBlank(endpoint)){
this.endpoint = endpoint;
}
if(!CommonUtil.isNullOrBlank(accessKeyId)){
this.accessKeyId = accessKeyId;
}
if(!CommonUtil.isNullOrBlank(accessKeySecret)){
this.accessKeySecret = accessKeySecret;
}
}
/**
* 判断存储空间是否存在
* @param bucketName 存储空间名
* @return
*/
public boolean doesBucketExist(String bucketName){
boolean result = false;
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
result = ossClient.doesBucketExist(bucketName);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return result;
}
/**
* 获取存储空间访问权限
* @param bucketName 存储空间名
* @return
*/
public AccessControlList getBucketAcl(String bucketName){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
AccessControlList accessControlList = null;
try{
accessControlList = ossClient.getBucketAcl(bucketName);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return accessControlList;
}
/**
* 创建存储空间
* @param bucketName 存储空间名
* @param cannedACL 访问权限
*/
public void createBucket(String bucketName,CannedAccessControlList cannedACL){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
createBucketRequest.setCannedACL(cannedACL);
ossClient.createBucket(createBucketRequest);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
}
/**
* 设置存储空间访问权限
* @param bucketName 存储空间名
* @param cannedACL 访问权限
*/
public void setBucketAcl(String bucketName,CannedAccessControlList cannedACL){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
ossClient.setBucketAcl(bucketName, cannedACL);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
}
/**
* 列出当前访问域名下的所有存储空间
* @return
*/
public BucketList listBuckets(){
BucketList bucketList = null;
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
listBucketsRequest.setMaxKeys(500);
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
bucketList = ossClient.listBuckets(listBucketsRequest);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return bucketList;
}
/**
* 判断对象是否存在
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public boolean doesObjectExist(String bucketName,String key){
boolean result = false;
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
result = ossClient.doesObjectExist(bucketName, key);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return result;
}
/**
* 获取对象的访问权限
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public ObjectAcl getObjectAcl(String bucketName,String key){
ObjectAcl objectAcl = null;
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
objectAcl = ossClient.getObjectAcl(bucketName, key);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return objectAcl;
}
/**
* 上传文件
* @param bucketName 存储空间名
* @param key 对象名
* @param file 文件
*/
public void putObject(String bucketName,String key,File file){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
ossClient.putObject(new PutObjectRequest(bucketName, key, file));
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
}
/**
* 设置对象访问权限
* @param bucketName 存储空间名
* @param key 对象名
* @param cannedACL 访问权限
*/
public void setObjectAcl(String bucketName,String key, CannedAccessControlList cannedACL){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
ossClient.setObjectAcl(bucketName, key, cannedACL);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
}
/**
* 下载对象
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public OSSObject getObject(String bucketName,String key){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
OSSObject object = null;
try{
object = ossClient.getObject(bucketName, key);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return object;
}
/**
* 列出当前访问域名下的所有对象
* @param bucketName 存储空间名
* @param prefix
* @return
*/
public ObjectListing listObjects(String bucketName, String prefix){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ObjectListing objectListing = null;
try{
objectListing = ossClient.listObjects(bucketName, prefix);
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return objectListing;
}
/**
* 获取对象外网访问URL
* @param bucketName 存储空间名
* @param key 对象名
* @return
*/
public String generateUrl(String bucketName,String key){
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
String url = null;
try{
ObjectAcl objectAcl = ossClient.getObjectAcl(bucketName, key);
boolean isPrivate = false;
if((objectAcl.getPermission().toString()).equals(CannedAccessControlList.Private.toString())){
isPrivate = true;
}if((objectAcl.getPermission().toString()).equals(CannedAccessControlList.Default.toString())){
AccessControlList accessControlList = ossClient.getBucketAcl(bucketName);
if( (accessControlList.getCannedACL().toString()).equals(CannedAccessControlList.Private.toString()) ){
isPrivate = true;
}
}
if(isPrivate){
Date expiration = CommonUtil.dateOperation(new Date(), "ADD", "H", 2);
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, key, HttpMethod.GET);
request.setExpiration(expiration);
URL signedUrl = ossClient.generatePresignedUrl(request);
url = signedUrl.toString();
}else{
url = endpoint.replace("https://", "https://"+bucketName+".")+"/"+key;
}
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
ossClient.shutdown();
}
return url;
}
/**
* 删除对象
* @param bucketName 存储空间名
* @param keys 对象名列表
*/
public void deleteObjects(String bucketName,List<String> keys){
OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try{
client.deleteObjects(new DeleteObjectsRequest(bucketName).withKeys(keys));
}catch (Exception e) {
e.printStackTrace();
// CommonUtil.parseExceptionStack(e);
}finally {
client.shutdown();
}
}
}
package com.yd.rmi.tencent;
public class test {
}
package com.yd.util;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class HttpUtil {
/**
* 通过url取得文件返回InputStream类型数据
*
*/
public static Map<String,Object> getInput(String path) {
URL url = null;
InputStream is =null;
boolean success=true;
String message="下载文件成功";
Map<String,Object> resp=new HashMap<>();
try {
url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();//利用HttpURLConnection对象,我们可以从网络中获取网页数据.
conn.setDoInput(true);
conn.connect();
is = conn.getInputStream(); //得到网络返回的输入流
} catch (IOException e) {
success=false;
message="下载文件失败";
} finally {
resp.put("is",is);
resp.put("message",message);
resp.put("success",success);
return resp;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment