UploadHelp.java 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package com.qxgmat.help;
  2. import com.qxgmat.data.constants.SessionKey;
  3. import com.qxgmat.dto.response.UploadInfoDto;
  4. import com.qxgmat.dto.SmsSessionDto;
  5. import com.nuliji.tools.exception.ParameterException;
  6. import com.nuliji.tools.third.aliyuncs.Aliyun;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.stereotype.Service;
  11. import javax.servlet.http.HttpSession;
  12. import java.time.ZonedDateTime;
  13. import java.time.format.DateTimeFormatter;
  14. import java.util.Date;
  15. import java.util.UUID;
  16. import static com.nuliji.tools.Tools.encodeBase64;
  17. import static com.nuliji.tools.Tools.getHmacSha1;
  18. /**
  19. * Created by GaoJie on 2017/11/3.
  20. */
  21. @Service
  22. public class UploadHelp {
  23. private static final Logger logger = LoggerFactory.getLogger(UploadHelp.class);
  24. private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  25. private static String format = "{\"expiration\":\"%s\",\"conditions\":[[\"content-length-range\",0,%d],[\"starts-with\",\"$key\",\"%s\"]]}";
  26. final public String UPLOAD_IMAGE = "nuliji-edu-all-files.oss-cn-beijing.aliyuncs.com";
  27. final public String UPLOAD_FILE = "nuliji-edu-all-image.oss-cn-beijing.aliyuncs.com";
  28. // @Value("${third.aliyuncs.accessKeyId}")
  29. private String accessKeyId;
  30. // @Value("${third.aliyuncs.accessKeySecret}")
  31. private String accessKeySecret;
  32. public UploadInfoDto authorize(String type, String module, int size){
  33. if(!type.equals(UPLOAD_FILE) && !type.equals(UPLOAD_IMAGE))
  34. throw new ParameterException("上传文件类型错误");
  35. UploadInfoDto dto = new UploadInfoDto();
  36. dto.setHost("https://"+type);
  37. dto.setOSSAccessKeyId(accessKeyId);
  38. dto.setSuccess_action_status("200");
  39. ZonedDateTime ldt = ZonedDateTime.now();
  40. dto.setKey(module + "/" + ldt.format(dtf) + "/" + UUID.randomUUID().toString());
  41. String policy = String.format(format,
  42. ldt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'")),
  43. size,
  44. dto.getKey()
  45. );
  46. dto.setPolicy(encodeBase64(policy));
  47. dto.setSignature(encodeBase64(getHmacSha1(encodeBase64(policy), accessKeySecret)));
  48. logger.debug("{}", dto);
  49. return dto;
  50. }
  51. public boolean key(String mobile, String code, HttpSession session) {
  52. SmsSessionDto dto = (SmsSessionDto) session.getAttribute(SessionKey.SMS_KEY);
  53. if(dto == null){
  54. throw new ParameterException("手机验证码错误!");
  55. }
  56. session.removeAttribute(SessionKey.SMS_KEY);
  57. String originCode = dto.getCode();
  58. String originMobile = dto.getMobile();
  59. Date expireTime = dto.getExpireTime();
  60. if (originCode.equalsIgnoreCase(code) && originMobile.equalsIgnoreCase(mobile)) {
  61. if (new Date().getTime() > expireTime.getTime()) {
  62. throw new ParameterException("验证码已过期!");
  63. }
  64. return true;
  65. }
  66. return false;
  67. }
  68. }