package com.tanpu.community.controller;

import com.fasterxml.jackson.core.type.TypeReference;
import com.tanpu.common.api.CommonResp;
import com.tanpu.common.auth.AuthLogin;
import com.tanpu.common.auth.UserHolder;
import com.tanpu.common.util.JsonUtil;
import com.tanpu.community.api.beans.qo.ThemeQo;
import com.tanpu.community.api.beans.resp.FileUploadResp;
import com.tanpu.community.api.enums.OssDirEnum;
import com.tanpu.community.cache.RedisCache;
import com.tanpu.community.manager.FileManager;
import com.tanpu.community.service.RankLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

@RestController
@Slf4j
@RequestMapping(value = "/api/file")
public class FileController {

    @Autowired
    private FileManager fileManager;

    @Autowired
    private RankLogService rankLogService;

    @Resource
    private UserHolder userHolder;

    @PostMapping("/uploadFile")
    @ResponseBody
    @AuthLogin
    public CommonResp<FileUploadResp> uploadToRemote(@RequestParam(value = "file") MultipartFile file) {
        String userId = userHolder.getUserId();
        return CommonResp.success(fileManager.uploadFile(file, OssDirEnum.Others, userId));
    }

    @PostMapping("/uploadThemePic")
    @ResponseBody
    @AuthLogin
    public CommonResp<FileUploadResp> uploadThemePic(@RequestParam(value = "file") MultipartFile file) {
        String userId = userHolder.getUserId();
        return CommonResp.success(fileManager.uploadFile(file, OssDirEnum.Theme_Pic, userId));
    }

    @GetMapping("/clearRankLog")
    public String clearRankLog() {
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                rankLogService.clearRankLog();
            }
        });

        t.start();
        return "success";
    }
}