Ver Fonte

oss上传图片

change há 4 anos atrás
pai
commit
2da67c094d

+ 16 - 1
zhongzheng-admin/src/main/java/com/zhongzheng/controller/alioss/OssController.java

@@ -1,6 +1,7 @@
 package com.zhongzheng.controller.alioss;
 
 
+import com.zhongzheng.common.core.controller.BaseController;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.modules.alioss.bo.OssRequest;
 import com.zhongzheng.modules.alioss.service.OssService;
@@ -13,8 +14,10 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.FileNotFoundException;
 import java.util.Map;
 
 /**
@@ -27,7 +30,7 @@ import java.util.Map;
 @RequiredArgsConstructor(onConstructor_ = @Autowired)
 @RestController
 @RequestMapping("/aliyun/oss")
-public class OssController {
+public class OssController extends BaseController {
 
     private static Logger log = LoggerFactory.getLogger(OssController.class);
 
@@ -55,4 +58,16 @@ public class OssController {
         return ossCallbackResult;
     }
 
+
+    /**
+     * upload上传文件
+     */
+    @ApiOperation("上传base64图片")
+    @PostMapping("/upload")
+    public AjaxResult<Void> upload(OssRequest file) throws Exception {
+        Boolean result = ossService.upload(file);
+        log.info("服务端生成签名:{}",result);
+        return toAjax(result);
+    }
+
 }

+ 1 - 1
zhongzheng-common/pom.xml

@@ -64,7 +64,7 @@
         <dependency>
             <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>
-            <version>2.5.0</version>
+            <version>3.10.2</version>
         </dependency>
 
         <!-- 阿里JSON解析器 -->

+ 74 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/activity/service/impl/ActivityTaskUserServiceImpl.java

@@ -2,10 +2,13 @@ package com.zhongzheng.modules.activity.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.activity.bo.ActivityTaskUserAddBo;
 import com.zhongzheng.modules.activity.service.IActivityGradeService;
+import com.zhongzheng.modules.activity.service.IActivityTaskService;
 import com.zhongzheng.modules.activity.vo.ActivityGradeVo;
+import com.zhongzheng.modules.activity.vo.ActivityTaskVo;
 import com.zhongzheng.modules.user.service.IUserService;
 import com.zhongzheng.modules.user.vo.UserVo;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,7 +23,9 @@ import com.zhongzheng.modules.activity.domain.ActivityTaskUser;
 import com.zhongzheng.modules.activity.mapper.ActivityTaskUserMapper;
 import com.zhongzheng.modules.activity.vo.ActivityTaskUserVo;
 import com.zhongzheng.modules.activity.service.IActivityTaskUserService;
+import org.springframework.util.CollectionUtils;
 
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -40,6 +45,9 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
     @Autowired
     private IActivityGradeService activityGradeService;
 
+    @Autowired
+    private IActivityTaskService activityTaskService;
+
 
     @Override
     public ActivityTaskUserVo queryById(Long userId){
@@ -119,8 +127,7 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
         add.setUpdateTime(DateUtils.getNowTime());
         //增加用户积分,并判断是否达到对应等级,更新等级
         UserVo userVo = userService.queryById(bo.getUserId());
-        ActivityGradeVo activityGradeVo = activityGradeService.queryById(bo.getTaskId());
-
+        ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
 
         return this.save(add);
     }
@@ -129,8 +136,72 @@ public class ActivityTaskUserServiceImpl extends ServiceImpl<ActivityTaskUserMap
         switch (bo.getTaskType()){
             //每日签到逻辑,当日有领取即无法签到
             case 0:
-
+                LambdaQueryChainWrapper<ActivityTaskUser> lqw = lambdaQuery();
+                lqw.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
+                lqw.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
+                lqw.between(ActivityTaskUser::getCreateTime,getTimesmorning(),getTimesnight());
+                List<ActivityTaskUser> list = this.list(lqw);
+                if (!CollectionUtils.isEmpty(list) && list.size() > 0){
+                    throw new IllegalArgumentException("已签到请勿重复签到");
+                }
+                break;
+                //完善信息  按照百分比求得乘以分数得到奖励分数
+            case 1:
+                LambdaQueryChainWrapper<ActivityTaskUser> useWan = lambdaQuery();
+                useWan.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
+                useWan.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
+                List<ActivityTaskUser> listWan = this.list(useWan);
+                if (!CollectionUtils.isEmpty(listWan) && listWan.size() > 0){
+                    throw new IllegalArgumentException("已完善信息领取完成,无法再次领取");
+                }
+                break;
+            case 2:
+                break;
+            case 3:
+                LambdaQueryChainWrapper<ActivityTaskUser> useMei = lambdaQuery();
+                useMei.eq(bo.getTaskType() !=null,ActivityTaskUser::getTaskType,bo.getTaskType());
+                useMei.eq(bo.getUserId() !=null,ActivityTaskUser::getUserId,bo.getUserId());
+                List<ActivityTaskUser> listMei = this.list(useMei);
+                ActivityTaskVo activityTaskVo = activityTaskService.queryById(bo.getTaskId());
+                if (!CollectionUtils.isEmpty(listMei) && listMei.size() > 0){
+                    throw new IllegalArgumentException("");
+                }
                 break;
         }
     }
+
+
+    //获得今天时间的0点
+    public static int getTimesmorning(){
+        Calendar cal = Calendar.getInstance();
+
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+
+        cal.set(Calendar.SECOND, 0);
+
+        cal.set(Calendar.MINUTE, 0);
+
+        cal.set(Calendar.MILLISECOND, 0);
+
+        return (int) (cal.getTimeInMillis()/1000);
+
+    }
+
+    //获得当天24点时间
+    public static int getTimesnight(){
+        Calendar cal = Calendar.getInstance();
+
+        cal.set(Calendar.HOUR_OF_DAY, 24);
+
+        cal.set(Calendar.SECOND, 0);
+
+        cal.set(Calendar.MINUTE, 0);
+
+        cal.set(Calendar.MILLISECOND, 0);
+
+        return (int) (cal.getTimeInMillis()/1000);
+
+    }
+
+
 }

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/bo/OssRequest.java

@@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiParam;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.validation.constraints.NotNull;
 
@@ -21,4 +22,8 @@ public class OssRequest{
     @ApiModelProperty(value = "上传图片标识 0头像 1身份证 2题库 3指南指引图片 4广告图片 5身份证或学信网图片 6文件excel,word,zip等",required = true)
     @NotNull(message = "上传图片标识不能为空")
     private Integer ImageStatus;
+
+    /** 上传图片 */
+    @ApiModelProperty("MultipartFile上传文件")
+    private MultipartFile file;
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/OssService.java

@@ -4,12 +4,16 @@ package com.zhongzheng.modules.alioss.service;
 
 import com.zhongzheng.modules.alioss.bo.OssRequest;
 import com.zhongzheng.modules.alioss.vo.ResultBean;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.FileNotFoundException;
 import java.util.Map;
 
 public interface OssService {
     ResultBean getPolicy(OssRequest ossRequest);
 
     ResultBean callback(HttpServletRequest request);
+
+    Boolean upload(OssRequest base) throws Exception;
 }

+ 44 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/alioss/service/impl/OssServiceImpl.java

@@ -3,10 +3,14 @@ package com.zhongzheng.modules.alioss.service.impl;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 
+import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClient;
+import com.aliyun.oss.OSSClientBuilder;
 import com.aliyun.oss.common.utils.BinaryUtil;
 import com.aliyun.oss.model.MatchMode;
 import com.aliyun.oss.model.PolicyConditions;
+import com.aliyun.oss.model.PutObjectRequest;
+import com.aliyun.oss.model.PutObjectResult;
 import com.zhongzheng.common.constant.Constants;
 import com.zhongzheng.common.core.domain.AjaxResult;
 import com.zhongzheng.common.exception.CustomException;
@@ -14,13 +18,20 @@ import com.zhongzheng.modules.alioss.bo.OssCallbackParam;
 import com.zhongzheng.modules.alioss.bo.OssRequest;
 import com.zhongzheng.modules.alioss.service.OssService;
 import com.zhongzheng.modules.alioss.vo.ResultBean;
+import org.apache.commons.io.IOUtils;
+import org.apache.xmlbeans.impl.values.XmlValueNotNillableException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Base64Utils;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.sql.rowset.serial.SerialBlob;
+import java.awt.*;
+import java.io.*;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
@@ -42,10 +53,15 @@ public class OssServiceImpl implements OssService {
     private String ALIYUN_OSS_ENDPOINT;
     @Value("${aliyun.oss.dir.prefix}")
     private String ALIYUN_OSS_DIR_PREFIX;
+    @Value("${aliyun.oss.accessKeyId}")
+    private String ALIYUN_OSS_ACCESSKEYID;
+    @Value("${aliyun.oss.accessKeySecret}")
+    private String ALIYUN_OSS_ACCESSKEYSECRET;
 
     @Autowired
     private OSSClient ossClient;
 
+
     @Override
     public ResultBean getPolicy(OssRequest ossRequest) {
         JSONObject resultBean = new JSONObject();
@@ -129,7 +145,7 @@ public class OssServiceImpl implements OssService {
 
     @Override
     public ResultBean callback(HttpServletRequest request) {
-        net.sf.json.JSONObject resultBean = new net.sf.json.JSONObject();
+        JSONObject resultBean = new JSONObject();
         String filename = request.getParameter("filename");
         filename = ALIYUN_OSS_ENDPOINT.concat("/").concat(filename);
         resultBean.put("filename",filename);
@@ -139,4 +155,31 @@ public class OssServiceImpl implements OssService {
         resultBean.put("height",request.getParameter("height"));
         return new ResultBean(resultBean);
     }
+
+    @Override
+    public Boolean upload(OssRequest file){
+        try{
+            //获取上传文件输入流
+            InputStream inputStream = file.getFile().getInputStream();
+            String originalFilename = file.getFile().getOriginalFilename();
+            String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
+
+            String fileName = ALIYUN_OSS_DIR_PREFIX+generateRandomFilename(file)+"."+suffix;
+
+            //调用oss方法实现上传
+            //第一个参数  Bucket名称
+            //第二个参数  上传到oss文件路径和文件名称   aa/bb/1.jpg
+            //第三个参数  上传文件输入流
+             PutObjectResult putObjectResult = ossClient.putObject(ALIYUN_OSS_BUCKET_NAME, fileName, inputStream);
+             // 关闭OSSClient。
+            ossClient.shutdown();
+
+                System.out.println(fileName);
+            return true;
+        }catch(Exception e) {
+            e.printStackTrace();
+            throw new IllegalStateException("上传失败");
+        }
+    }
+
 }