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; /** *

* 前端控制器 *

* * @author zh * @since 2022-05-12 */ @Tag(name = "工具中心") @RestController @RequestMapping("/util") public class UtilsController { @Autowired private RedisTemplate 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); // } }