发表于: 2018-03-18 23:49:35

3 661


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

完成了常用工具类的编写.

腾讯COS云存储FileUtil

package com.ptteng.polyFinance.lgd.utils;

import com.qcloud.cos.COSClient;
import com.qcloud.cos.ClientConfig;
import com.qcloud.cos.auth.BasicCOSCredentials;
import com.qcloud.cos.auth.COSCredentials;
import com.qcloud.cos.exception.CosServiceException;
import com.qcloud.cos.http.HttpMethodName;
import com.qcloud.cos.model.GeneratePresignedUrlRequest;
import com.qcloud.cos.model.PutObjectRequest;
import com.qcloud.cos.region.Region;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Date;
import java.util.UUID;

/**
* @author lujing
* Create_at 2018/3/17 9:54
*/
public class FilesUtil {

private static final Logger logger = Logger.getLogger(FilesUtil.class);
   
   // 1 初始化用户身份信息(secretId, secretKey)
   static COSCredentials cred = new BasicCOSCredentials("AKID1wskR7t8MPI1kNuj9ayDH8nGcophKwHQ", "DID6pMkw9RL8mHepobGm6KPL5i9RvIWY");
   // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224
   static ClientConfig clientConfig = new ClientConfig(new Region("ap-chengdu"));
   // 3 生成cos客户端
   static COSClient cosClient = new COSClient(cred, clientConfig);
   // bucket的命名规则为{name}-{appid} ,此处填写的存储桶名称必须为此格式
   static String bucketName = "lujing0613-1255932852";
   
   //服务器根目录
   static String rootPATH = "https://lujing0613-1255932852.cos.ap-chengdu.myqcloud.com/";
   
   /**
    * @param picFile springmvc上传的图片流
    * @return 云储存路径(非访问路径)
    * @throws IOException
    */
   public static String upLoadFile(MultipartFile picFile) throws IOException {


if (picFile != null) {
//获得文件的原始名字
           String originalFileName = picFile.getOriginalFilename();
           //新的文件名称=uuid+原始名字的后缀.xxx
           String newFlieName = UUID.randomUUID() + originalFileName.substring(originalFileName.indexOf("."));
           
           //储存地址
           String key = "student/" + newFlieName;
           
           //将MultipartFile转换为file.
           
           try {
//创建一个临时文件
               File temp = File.createTempFile("temp", null);
               //将MultipartFile 写入临时文件
               picFile.transferTo(temp);
               
               PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, temp);
               cosClient.putObject(putObjectRequest);
               
               logger.info("成功:上传地址:" + key);
               temp.delete();
               temp.deleteOnExit();
               cosClient.shutdown();
               return key;
           } catch (IOException e) {
e.printStackTrace();
               logger.info("......图片上传失败");
           }
}
return null;
   }

/**
    * @param file 普通的文件流
    * @return 云储存路径(非访问路径)
    * @throws IOException
    */
   public static String upLoadFile(File file) throws IOException {

//获得文件的原始名字
       String originalFileName = file.getName();
       //新的文件名称=uuid+原始名字的后缀.xxx
       String newFlieName = UUID.randomUUID() + originalFileName.substring(originalFileName.indexOf("."));
       
       //储存地址
       String key = "student/" + newFlieName;
       
       PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, file);
       cosClient.putObject(putObjectRequest);
       
       cosClient.shutdown();
       
       return key;
       
   }

/**
    * @param FilePath 数据库储存路径
    * @throws CosServiceException
    */
   
   public static void deleteObject(String FilePath) throws CosServiceException {
//        //处理字符串,去掉  rootPATH
//        String cosPath = oldFilePath.replace(rootPATH, "");
       cosClient.deleteObject(bucketName, FilePath);
       cosClient.shutdown();
   }

public static String getUrl(String FilePath) {
//处理字符串,去掉  rootPATH
//        String cosPath = oldFilePath.replace(rootPATH, "");
       
       String key = FilePath;
       GeneratePresignedUrlRequest req =
new GeneratePresignedUrlRequest(bucketName, key, HttpMethodName.GET);
       
       Date expirationDate = new Date(System.currentTimeMillis() + 30 * 60 * 1000);
       req.setExpiration(expirationDate);
       URL downloadUrl = cosClient.generatePresignedUrl(req);
       String downloadUrlStr = downloadUrl.toString();
       
       return downloadUrlStr;
   }


}

jwt加密工具 JwtUtils

package com.ptteng.polyFinance.lgd.utils;

import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;


/**
* @author lujing
* Create_at 2018/1/6 13:37
*/
public class JwtUtils {
/**
    * @param siginKey  签名部分生成的密钥
    * @param subject   需要加密的部分
    * @param TtlMillis 过期时间(毫秒)
    * @return 生成的一个TOKEN字符串
    */
   public static String generateToken(String siginKey, String subject, Long TtlMillis) {

long nowMillis = System.currentTimeMillis();
       Date now = new Date(nowMillis);
       Date exp = new Date(nowMillis + TtlMillis);
       
       
       JwtBuilder builder = Jwts.builder();
       builder.setSubject(subject);
       builder.setIssuedAt(now);
       builder.signWith(SignatureAlgorithm.HS256, siginKey);
       builder.setExpiration(exp);
       
       return builder.compact();
   }

/**
    * 解密token得到subject
    *
    * @param token    cookie中的token
    * @param siginKey 签名密钥
    * @return
    */
   public static String getSubject(String token, String siginKey) {


if (null == token) {
return null;
       }

//根据token得到被加密的subject
       String subject = Jwts.parser().setSigningKey(siginKey).parseClaimsJws(token).getBody().getSubject();
       return subject;
   }

}

加密工具,SecureUtil:

package com.ptteng.polyFinance.lgd.utils;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Random;

/**
* @author lujing
* Create_at 2018/3/18 13:57
*/
public class SecureUtil {
/**
    * @return 长度20的盐值
    */
   public static String getSalt() {
Random random = new SecureRandom();
       byte[] key = new byte[10];
       random.nextBytes(key);
       return byteToString(key);
   }


public static void main(String[] args) {
//        System.out.println(getSalt());
       System.out.println(messageDigest("1234"));
       
   }

/**
    * 将字节数组转换为固定长度字符串
    *
    * @param bytes 字节数组
    * @return
    */
   public static String byteToString(byte[] bytes) {
StringBuffer buffer = new StringBuffer();
       
       for (byte aByte : bytes) {
String temp = Integer.toHexString(aByte & 0xff);
           
           buffer.append(temp);
       }

return buffer.toString();
   }

/**
    * 加密字符串
    *
    * @param message 待加密的密文
    * @return 加密后密文
    */
   public static String messageDigest(String message) {

MessageDigest md;
       
       try {
md = MessageDigest.getInstance("SHA-256");
           byte[] digest = md.digest(message.getBytes("GBK"));
           
           return byteToString(digest);
           
       } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
       } catch (UnsupportedEncodingException e) {
e.printStackTrace();
       }
return "";
   }
}

短信工具SMSUtil

package com.ptteng.polyFinance.lgd.utils;

import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.SmsVoiceVerifyCodeSender;
import com.github.qcloudsms.SmsVoiceVerifyCodeSenderResult;

import java.util.ArrayList;

/**
* @author lujing
* Create_at 2018/3/17 11:47
*/
public class SMSutil {


/**
    * 用于发送短信验证码,已通过测试.
    * @param code  6位随机生成的验证码.
    * @param phoneNum 手机号码.
    */
   public static void sendSms(String code,String phoneNum) {
//假设短信模板 id 为 123,模板内容为:测试短信,{1},{2},{3},上学。
       SmsSingleSender sender = null;
       try {
sender = new SmsSingleSender(1400064448, "52f2139dcae50b8973e72c884652b808");
           ArrayList<String> params = new ArrayList<String>();
           params.add(code);
           params.add("15");
           SmsSingleSenderResult result = sender.sendWithParam("86", phoneNum, 96383, params, "", "", "");
           System.out.println(result);
       } catch (Exception e) {
e.printStackTrace();
       }
}

/**
    * 用于发送语音验证码(不过因为权限原因,个人用户无法使用,所以弃用.)
    * @param code  6位数验证码
    * @param phoneNum  手机号码
    */
   public static void sendVoiceSms(String code,String phoneNum){
//语音验证码发送
       SmsVoiceVerifyCodeSender smsVoiceVerifyCodeSender = new SmsVoiceVerifyCodeSender(1400064448, "52f2139dcae50b8973e72c884652b808");
       SmsVoiceVerifyCodeSenderResult smsVoiceVerifyCodeSenderResult = null;
       try {
smsVoiceVerifyCodeSenderResult = smsVoiceVerifyCodeSender.send("86",
                   phoneNum, code,2,"");
       } catch (Exception e) {
e.printStackTrace();
       }
System.out.println(smsVoiceVerifyCodeSenderResult);
   }

public static void main(String[] args) {
//        sendSms("123456","18008082290");
       sendVoiceSms("123456","18008082290");
   }
}


明天计划的事情:(一定要写非常细致的内容) 

进行前台登陆和后台登陆的操作.
遇到的问题:(遇到什么困难,怎么解决的) 

语音验证无法使用.
收获:(通过今天的学习,学到了什么知识)

将任务过程中学习的东西运用到了代码里.


返回列表 返回列表
评论

    分享到