|
|
|
|
package com.zh.project0512.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
//import com.zh.project0512.service.IUserService;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
import com.zh.project0512.mapper.QywxDepartmentUserLinkMapper;
|
|
|
|
|
import com.zh.project0512.mapper.RankMapper;
|
|
|
|
|
import com.zh.project0512.mapper.UserMapper;
|
|
|
|
|
import com.zh.project0512.model.Rank;
|
|
|
|
|
import com.zh.project0512.model.Task;
|
|
|
|
|
import com.zh.project0512.model.UserPointsRecords;
|
|
|
|
|
import com.zh.project0512.model.Video;
|
|
|
|
|
import com.zh.project0512.model.dto.RankListDTO;
|
|
|
|
|
import com.zh.project0512.model.vo.RankListVo;
|
|
|
|
|
import com.zh.project0512.service.IRewardRuleService;
|
|
|
|
|
import com.zh.project0512.service.ITaskService;
|
|
|
|
|
import com.zh.project0512.service.IUserPointsRecordsService;
|
|
|
|
|
import com.zh.project0512.service.IVideoService;
|
|
|
|
|
import com.zh.project0512.utils.AliyunOss;
|
|
|
|
|
import com.zh.project0512.utils.FileTypeUtil;
|
|
|
|
|
import com.zh.project0512.utils.result.HttpStatusEnum;
|
|
|
|
|
import com.zh.project0512.utils.result.Result;
|
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
import org.jsoup.helper.StringUtil;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
import ws.schild.jave.MultimediaObject;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.time.ZoneOffset;
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <p>
|
|
|
|
|
* 前端控制器
|
|
|
|
|
* </p>
|
|
|
|
|
*
|
|
|
|
|
* @author zh
|
|
|
|
|
* @since 2022-05-12
|
|
|
|
|
*/
|
|
|
|
|
@Tag(name = "工具中心")
|
|
|
|
|
@RestController
|
|
|
|
|
@RequestMapping("/util")
|
|
|
|
|
public class UtilsController {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private RedisTemplate<String, String> redisTemplate;
|
|
|
|
|
@Autowired
|
|
|
|
|
private AliyunOss aliyunOss;
|
|
|
|
|
|
|
|
|
|
@Value("${web.uploadPath}")
|
|
|
|
|
private String path;
|
|
|
|
|
@Value("${web.cdn}")
|
|
|
|
|
private String cdn;
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "上传")
|
|
|
|
|
@PostMapping("/upload")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result upload(@RequestParam("file") MultipartFile file, @RequestParam(required = false) String name) {
|
|
|
|
|
if (file.isEmpty()) {
|
|
|
|
|
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION, "请选择文件");
|
|
|
|
|
}
|
|
|
|
|
String fileName = file.getOriginalFilename();//文件名
|
|
|
|
|
String newFileName = UUID.randomUUID().toString().replace("-", "") + LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli() + fileName.substring(fileName.lastIndexOf("."));
|
|
|
|
|
//String path = System.getProperty("user.home"); //文件存储位置 我放在了我的项目下
|
|
|
|
|
// //获取jar包所在目录
|
|
|
|
|
// ApplicationHome h = new ApplicationHome(getClass());
|
|
|
|
|
// File jarF = h.getSource();
|
|
|
|
|
// //在jar包所在目录下生成一个upload文件夹用来存储上传的图片
|
|
|
|
|
// String dirPath = jarF.getParentFile().toString()+"/upload/";
|
|
|
|
|
// System.out.println(dirPath);
|
|
|
|
|
// System.out.println(path);
|
|
|
|
|
// File dest = new File(dirPath+fileName);
|
|
|
|
|
File dest = new File(path + "/" + newFileName);
|
|
|
|
|
if (!dest.getParentFile().exists()) {
|
|
|
|
|
dest.getParentFile().mkdirs();
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
file.transferTo(dest);
|
|
|
|
|
JSONObject res = new JSONObject();
|
|
|
|
|
int fileTypeNum = FileTypeUtil.getcontentTypeNum((fileName.substring(fileName.lastIndexOf("."))));
|
|
|
|
|
res.put("fileUrl", "/upload/" + newFileName);
|
|
|
|
|
res.put("fileName", fileName);
|
|
|
|
|
res.put("fileType", FileTypeUtil.getcontentType((fileName.substring(fileName.lastIndexOf(".")))));
|
|
|
|
|
res.put("fileTypeNum", fileTypeNum);
|
|
|
|
|
if (fileTypeNum == 1) {
|
|
|
|
|
res.put("duration", new MultimediaObject(dest).getInfo().getDuration());
|
|
|
|
|
}
|
|
|
|
|
return Result.success(res, "上传完成");
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
return Result.fail(HttpStatusEnum.CUSTOM_EXCEPTION, "上传失败");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @PostMapping("/uploadImg")
|
|
|
|
|
// public Result uploadImg(@RequestParam("file") MultipartFile file, @RequestParam(value = "name", defaultValue = "name") String name) {
|
|
|
|
|
// try {
|
|
|
|
|
// String homeImage = aliyunOss.checkImage(file);//此处是调用上传服务接口
|
|
|
|
|
// String fileUrl = aliyunOss.getImgUrl(homeImage);
|
|
|
|
|
// String fileType = FileTypeUtil.getcontentType((fileUrl.substring(fileUrl.lastIndexOf("."))));
|
|
|
|
|
// System.out.println(fileType == "video/mp4" ? 1 : (fileType == "image/jpg" ? 2 : (fileType == "text/plain" ? 3 : 0)));
|
|
|
|
|
// Result result = Result.success("上传成功!");
|
|
|
|
|
// return result;
|
|
|
|
|
// } catch (Exception e) {
|
|
|
|
|
// e.printStackTrace();
|
|
|
|
|
// return Result.fail(HttpStatusEnum.NOT_FOUND);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "编辑器内上传")
|
|
|
|
|
@PostMapping("/upload2")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public JSONObject upload2(@RequestParam("file") MultipartFile file, @RequestParam(required = false) String name) {
|
|
|
|
|
JSONObject res = new JSONObject();
|
|
|
|
|
res.put("errno", 1);
|
|
|
|
|
if (file.isEmpty()) {
|
|
|
|
|
res.put("message", "请选择文件");
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
String fileName = file.getOriginalFilename();//文件名
|
|
|
|
|
String newFileName = UUID.randomUUID().toString().replace("-", "") + LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli() + fileName.substring(fileName.lastIndexOf("."));
|
|
|
|
|
File dest = new File(path + "/" + newFileName);
|
|
|
|
|
if (!dest.getParentFile().exists()) {
|
|
|
|
|
dest.getParentFile().mkdirs();
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
file.transferTo(dest);
|
|
|
|
|
res.replace("errno", 0);
|
|
|
|
|
JSONObject obj = new JSONObject();
|
|
|
|
|
obj.put("alt", fileName);
|
|
|
|
|
obj.put("url", cdn + "/upload/" + newFileName);
|
|
|
|
|
res.put("data", obj);
|
|
|
|
|
return res;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
res.put("message", "上传失败");
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private ITaskService taskService;
|
|
|
|
|
@Resource
|
|
|
|
|
QywxDepartmentUserLinkMapper qywxDepartmentUserLinkMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
RankMapper rankMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private IVideoService videoService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/test")
|
|
|
|
|
@ResponseBody
|
|
|
|
|
public Result test() {
|
|
|
|
|
String url ="http://www.baidu.com/#wd=%E6%88%91%E6%98%AF%E6%AD%8C%E6%89%8B&rsv_bp=0&tn=baidu&rsv_spt=3&ie=utf-8&rsv_sug3=11&rsv_sug4=643&rsv_sug1=11&inputT=5484&rsv_sug2=0";
|
|
|
|
|
Pattern p = Pattern.compile("(http://|https://)?([^/]*)",Pattern.CASE_INSENSITIVE);
|
|
|
|
|
|
|
|
|
|
Matcher m = p.matcher(url);
|
|
|
|
|
|
|
|
|
|
String a= m.find()?m.group(2):url;
|
|
|
|
|
// (https://)+\S*\s
|
|
|
|
|
return Result.success(a);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// public static void main(String[] args) {
|
|
|
|
|
// String url ="9.20 tRK:/ 男人第一天上班就被当成修电脑的,谁知他竟然是总经理%好剧推荐 %全集解说%幸福一家人%关于爱情%宅家dou剧 %持续关注持续精彩 https://v.kuaishou.com/Yh4DwM9/ 复制此链接,打开Dou音搜索,直接观看视频!";
|
|
|
|
|
// Pattern p = Pattern.compile("((https://)+\\S*\\s)",Pattern.CASE_INSENSITIVE);
|
|
|
|
|
//
|
|
|
|
|
// Matcher m = p.matcher(url);
|
|
|
|
|
//System.out.println(m);
|
|
|
|
|
// String a= m.find()?m.group(1):url;
|
|
|
|
|
// System.out.println(a);
|
|
|
|
|
// int b = StringUtils.countOccurrencesOf(a,"https://v.douyin");
|
|
|
|
|
// System.out.println(b);
|
|
|
|
|
// }
|
|
|
|
|
}
|