发表于: 2019-11-06 23:43:45

1 1092


今天完成的事情:

今天把假数据写完了,继续写接口。不过写接口请弄下上传图片和视频。


这是其中一位组员弄的第三方对象存储。这个在任务里做过,不过,感觉上比我的简单。

public class OSSServer {

   private static final String ACCESS_KEY_ID = "LTAI4FnTLeAPpi4nx5RCPvL*";
   private static final String ACCESS_KEY_SECRET = "tFcA6z3QXr0yHU89jKP4Jof3hCk2u*";

   /**
    * @Description: 普通图片上传,
    */
   public String upAvatar(MultipartFile multipartFile) {

       String endpoint = "http://oss-cn-beijing.aliyuncs.com";
       String fileName = UUID.randomUUID().toString();

       // 创建OSSClient实例。
       OSS ossClient = new OSSClientBuilder().build(endpoint, ACCESS_KEY_ID, ACCESS_KEY_SECRET);

       // 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
       try {
           ossClient.putObject("qxdzzfeedback", "img/" + fileName + multipartFile.getOriginalFilename(), new ByteArrayInputStream(multipartFile.getBytes()));
           return "https://qxdzzfeedback.oss-cn-beijing.aliyuncs.com/img/" + fileName + multipartFile.getOriginalFilename();
       } catch (IOException e) {
           return null;
       } finally {
           // 关闭OSSClient。
           ossClient.shutdown();
       }
   }
}

使用的时候,用post把要上传的图片传过来就好了。

@RestController
public class UploadFilesController {
   private final Logger log = LogManager.getLogger(this.getClass());

   @PostMapping("/a/u/img")
   public Map<String, Object> studySelect(MultipartFile file){
       HashMap<String, Object> result = new HashMap<>(16);
       try {
           log.info("上传文件大小:{}字节", file.getSize());
           OSSServer ossServer=new OSSServer();
           String imgUrl=ossServer.upAvatar(file);
           result.put("code", SUCCESS.getCode());
           result.put("msg", SUCCESS.getMsg());
           result.put("imgUrl",imgUrl);
           return result;
       } catch (Exception e) {
           e.printStackTrace();
           result.put("code", REQUEST_FAILED.getCode());
           result.put("msg", REQUEST_FAILED.getMsg());
           return result;
       }
   }
}

测试的时候用postman测试

注意body里传参,在参数后面选择File就可以上传你要传的文件了。

这里会返回上传到每三方存储的文件地址。嗯,其实是自己拼的。


这里要注意的是,其他上传文件可以统一管理,不用把上传图片和视频分开。反正都是文件。



下面是写前台的收藏接口,呃,没写完,要查询两张表,三个参数。逻辑是:根据用户ID查询当前用户收藏表里某个类型的学习对象列表。

想过查两次,但是分页我解决不了,后面问师兄,第一种,用in语句。

先查出这个用户收藏的所有学习对象ID,再用in语句查这些学习对象ID里类型等于自己需要的数据。还可以用分页。


后面呢,马哥有提供了一个语句:union all

网上看了下:

对于索引列来最好使用union all,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描
非索引字段用or或者in


在正常的 情况下,我要查的这几个字段都是要加索引的,所有,用union all


明天计划的事情:

使用 union all完成收藏列表查询


遇到的问题:

先解决在mapper.xml文件里写sql语句


收获:

多表查询的一种方法



返回列表 返回列表
评论

    分享到