Преглед изворни кода

Merge branch 'dev' of trick9191/wlyy2.0 into dev

trick9191 пре 5 година
родитељ
комит
7892f6ae5c

+ 5 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/oauth2/provider/endpoint/WlyyLoginEndpoint.java

@ -694,6 +694,11 @@ public class WlyyLoginEndpoint extends AbstractEndpoint {
        return ObjEnvelop.getSuccess("success", oauthYlzConfigService.getOauthQRCode());
    }
    @RequestMapping(value = "/oauth/getOauthQRCodeImg", method = RequestMethod.GET)
    public ObjEnvelop getOauthQRCodeImg(){
        return ObjEnvelop.getSuccess("success", oauthYlzConfigService.getOauthQRCodeImg());
    }
    @RequestMapping(value = "/oauth/checkQRCodeLogin", method = RequestMethod.POST)
    public ObjEnvelop checkQRCodeLogin(String no,String client_id,String login_type){

+ 42 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/service/OauthYlzConfigService.java

@ -6,6 +6,7 @@ import com.yihu.jw.entity.ylzinfo.OauthYlzConfigDO;
import com.yihu.jw.restmodel.iot.common.UploadVO;
import com.yihu.jw.security.dao.OauthYlzConfigDao;
import com.yihu.jw.security.dao.patient.BasePatientDao;
import com.yihu.jw.security.utils.ByteToInputStream;
import com.yihu.jw.security.utils.DateUtil;
import com.yihu.jw.security.utils.QrcodeUtil;
import com.yihu.utils.security.MD5;
@ -20,6 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import sun.misc.BASE64Encoder;
import java.io.InputStream;
import java.util.Date;
@ -88,6 +90,46 @@ public class OauthYlzConfigService {
        return null;
    }
    public Map<String,Object> getOauthQRCodeImg(){
        try {
            OauthYlzConfigDO oauthYlzConfigDO = oauthYlzConfigDao.findOne("ylz_config");
            logger.info("getOauthQRCode:",oauthYlzConfigDO.toString());
            TransRequest e = new TransRequest();
            e.setMethod("ehc.ehealthcard.authurl");
            e.setApp_id(oauthYlzConfigDO.getAppId());
            e.setTerm_id(oauthYlzConfigDO.getTermId());
            e.setVersion(oauthYlzConfigDO.getVersion());
            e.setTimestamp(DateUtil.dateToStr(new Date(),"yyyyMMddHHmmss"));
            e.setSign_type(oauthYlzConfigDO.getSignType());
            e.setEnc_type(oauthYlzConfigDO.getEncType());
            com.alibaba.fastjson.JSONObject bizContent = new com.alibaba.fastjson.JSONObject();
            String no = UUID.randomUUID().toString().substring(0,30);
            bizContent.put("out_authorize_no", no);
            bizContent.put("out_authorize_time", DateUtils.getOutTradeTime());
            e.setBiz_content(JSON.toJSONString(bizContent));
            EhcHandler ehcHandler = new EhcHandler(oauthYlzConfigDO.getUrl(), oauthYlzConfigDO.getAppId(), oauthYlzConfigDO.getTermId(), oauthYlzConfigDO.getAppKey());
            TransResponse re = ehcHandler.execute(e);
            String rs = com.alibaba.fastjson.JSONObject.toJSONString(re);
            logger.info("TransResponse:"+rs);
            com.alibaba.fastjson.JSONObject json = (com.alibaba.fastjson.JSONObject) com.alibaba.fastjson.JSONObject.parse(rs);
            com.alibaba.fastjson.JSONObject biz = json.getJSONObject("biz_content");
            InputStream qrcode = QrcodeUtil.createQrcode(biz.getString("ehealth_authurl"),300,"jpg");
            String QRCodeImg = ByteToInputStream.getBase64FromInputStream(qrcode);
            Map<String,Object> map = new HashedMap();
            map.put("QRCodeImg",QRCodeImg);
            map.put("out_authorize_no",no);
            return map;
        } catch (Exception var5) {
            var5.printStackTrace();
        }
        return null;
    }
    /**
     * 验证电子健康卡授权
     * @param authorizeNo

+ 69 - 0
server/svr-authentication/src/main/java/com/yihu/jw/security/utils/ByteToInputStream.java

@ -0,0 +1,69 @@
package com.yihu.jw.security.utils;
import org.apache.commons.codec.binary.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
 * Created by Trick on 2019/8/26.
 */
public class ByteToInputStream {
    private static final Logger logger = LoggerFactory.getLogger(ByteToInputStream.class);
    public static final InputStream byte2Input(byte[] buf) {
        return new ByteArrayInputStream(buf);
    }
    public static final byte[] input2byte(InputStream inStream)
            throws IOException {
        ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
        byte[] in2b = null;
        try {
            byte[] buff = new byte[100];
            int rc = 0;
            while ((rc = inStream.read(buff, 0, 100)) > 0) {
                swapStream.write(buff, 0, rc);
            }
            in2b = swapStream.toByteArray();
        }catch (Exception e){
            logger.error(e.toString());
        }finally {
            swapStream.close();
        }
        return in2b;
    }
    public static String getBase64FromInputStream(InputStream in) {
        // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        byte[] data = null;
        // 读取图片字节数组
        try {
            ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
            byte[] buff = new byte[100];
            int rc = 0;
            while ((rc = in.read(buff, 0, 100)) > 0) {
                swapStream.write(buff, 0, rc);
            }
            data = swapStream.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return new String(Base64.encodeBase64(data));
    }
}