wujianwei
2026-02-02 7865c2a70e8cf9d0f44e66131bdc98bcea089c7c
service/src/main/java/com/ruoyi/cwgl/service/impl/GdpaasApiService.java
@@ -1,143 +1,143 @@
package com.ruoyi.cwgl.service.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.sign.Md5Utils;
import com.ruoyi.cwgl.domain.InvoicingVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
 * 谷神开发的应用系统调用api
 * @author wjw
 */
@Service
public class GdpaasApiService {
    protected final Logger logger = LoggerFactory.getLogger(getClass());
    @Autowired
    private RedisCache redisCache;
    private final String tokenKey = "GDPAAS_API_TOKEN_KEY";
   // private  String ROOT_PATH = "http://172.16.24.46:9080/";
    @Value("${custom.gdpaasApi.path}")
    private String ROOT_PATH;
    @Value("${custom.gdpaasApi.appid}")
    private String appId;
    @Value("${custom.gdpaasApi.sign}")
    private String sign;
    /**
     * 获取token
     * @param appId
     * @param sign
     * @param time
     * @return
     */
    public String getToken(String appId, String sign, String time) {
        Object token = redisCache.getCacheObject(tokenKey);
        if (token == null) {
            //签名摘要
            String hash = Md5Utils.hash(appId + time + sign);
            String urlString = ROOT_PATH + "/gdpaas/apis/getAccessToken.htm" ;
            Map<String, Object> parm = new HashMap<>();
            parm.put("appId", appId);
            parm.put("sign", hash);
            parm.put("t", time);
            String json = null;
            logger.info("获取第三方token请求参数{}",parm);
            try {
                json = HttpUtil.get(urlString, parm);
            } catch (Exception e) {
                e.printStackTrace();
                logger.error("请求获取第三方token接口失败");
            }
            if (json == null) {
                return null;
            }
            logger.info("获取第三方token响应参数{}",json);
            JSONObject jsonObject = JSONObject.parseObject(json);
            Integer code = (Integer) jsonObject.get("code");
            if (code.equals(0)) {
                String data = jsonObject.getString("data");
                JSONObject dataJson = JSONObject.parseObject(data);
                String accessToken = dataJson.getString("accessToken");
                Integer expiresIn = (Integer) dataJson.get("expiresIn");
                redisCache.setCacheObject(tokenKey,accessToken,expiresIn, TimeUnit.SECONDS);
                return  accessToken;
            }
            return null;
        }
        return (String) token;
    }
    /**
     *  发票开具接口
     */
    public String invoicingApi(InvoicingVo order){
        String accessToken = getToken(appId, sign, System.currentTimeMillis() + "");
        if (accessToken==null){
            throw new ServiceException("获取令牌失败");
        }
        String urlString = ROOT_PATH + "/gdpaas/apis/invoke.htm?appId="+appId+"&accessToken="+accessToken+"&method=com.golden.bdp.cwzx.invoice.submitInvoice" ;
        String body = JSONObject.toJSONString(order);
        String json = null;
        try {
             json = HttpUtil.post(urlString, body);
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("发票开具接口接口失败");
        }
        logger.info("开票响应{}",json);
        return  json;
//        String code =  jsonObject.getString("code");
//        if (json == null) {
//            logger.info("开票失败");
//package com.ruoyi.cwgl.service.impl;
//
//
//import cn.hutool.http.HttpUtil;
//
//import com.alibaba.fastjson2.JSONObject;
//import com.ruoyi.common.core.redis.RedisCache;
//import com.ruoyi.common.exception.ServiceException;
//import com.ruoyi.common.utils.sign.Md5Utils;
//
//import com.ruoyi.cwgl.domain.InvoicingVo;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import java.util.HashMap;
//import java.util.Map;
//import java.util.concurrent.TimeUnit;
//
///**
// * 谷神开发的应用系统调用api
// * @author wjw
// */
//@Service
//public class GdpaasApiService {
//    protected final Logger logger = LoggerFactory.getLogger(getClass());
//
//    @Autowired
//    private RedisCache redisCache;
//    private final String tokenKey = "GDPAAS_API_TOKEN_KEY";
//   // private  String ROOT_PATH = "http://172.16.24.46:9080/";
//    @Value("${custom.gdpaasApi.path}")
//    private String ROOT_PATH;
//    @Value("${custom.gdpaasApi.appid}")
//    private String appId;
//    @Value("${custom.gdpaasApi.sign}")
//    private String sign;
//    /**
//     * 获取token
//     * @param appId
//     * @param sign
//     * @param time
//     * @return
//     */
//    public String getToken(String appId, String sign, String time) {
//        Object token = redisCache.getCacheObject(tokenKey);
//        if (token == null) {
//            //签名摘要
//            String hash = Md5Utils.hash(appId + time + sign);
//            String urlString = ROOT_PATH + "/gdpaas/apis/getAccessToken.htm" ;
//            Map<String, Object> parm = new HashMap<>();
//            parm.put("appId", appId);
//            parm.put("sign", hash);
//            parm.put("t", time);
//            String json = null;
//            logger.info("获取第三方token请求参数{}",parm);
//            try {
//                json = HttpUtil.get(urlString, parm);
//            } catch (Exception e) {
//                e.printStackTrace();
//                logger.error("请求获取第三方token接口失败");
//            }
//            if (json == null) {
//                return null;
//            }
//            logger.info("获取第三方token响应参数{}",json);
//
//            JSONObject jsonObject = JSONObject.parseObject(json);
//            Integer code = (Integer) jsonObject.get("code");
//            if (code.equals(0)) {
//                String data = jsonObject.getString("data");
//                JSONObject dataJson = JSONObject.parseObject(data);
//                String accessToken = dataJson.getString("accessToken");
//                Integer expiresIn = (Integer) dataJson.get("expiresIn");
//                redisCache.setCacheObject(tokenKey,accessToken,expiresIn, TimeUnit.SECONDS);
//                return  accessToken;
//            }
//            return null;
//        }
//        if ("0".equals(code)) {
//            String data = jsonObject.getString("data");
//        return (String) token;
//    }
//
//            JSONObject dataJson = JSONObject.parseObject(data);
//            String invoiceSerialNum = dataJson.getString("invoiceSerialNum");
//            logger.info("开票成功发票序列号为{}",invoiceSerialNum);
//            return invoiceSerialNum;
//    /**
//     *  发票开具接口
//     */
//    public String invoicingApi(InvoicingVo order){
//        String accessToken = getToken(appId, sign, System.currentTimeMillis() + "");
//        if (accessToken==null){
//            throw new ServiceException("获取令牌失败");
//        }
//    return null;
    }
    /**
     *  发票开具接口
     */
    public String invoicingApi(String body){
        String accessToken = getToken(appId, sign, System.currentTimeMillis() + "");
        if (accessToken==null){
            throw new ServiceException("获取令牌失败");
        }
        String urlString = ROOT_PATH + "/gdpaas/apis/invoke.htm?appId="+appId+"&accessToken="+accessToken+"&method=com.golden.bdp.cwzx.invoice.submitInvoice" ;
//        String urlString = ROOT_PATH + "/gdpaas/apis/invoke.htm?appId="+appId+"&accessToken="+accessToken+"&method=com.golden.bdp.cwzx.invoice.submitInvoice" ;
//        String body = JSONObject.toJSONString(order);
        String json = null;
        try {
            json = HttpUtil.post(urlString, body);
        } catch (Exception e) {
            e.printStackTrace();
            logger.error("发票开具接口接口失败");
        }
        logger.info("开票响应{}",json);
        return  json;
    }
}
//        String json = null;
//
//        try {
//             json = HttpUtil.post(urlString, body);
//        } catch (Exception e) {
//            e.printStackTrace();
//            logger.error("发票开具接口接口失败");
//        }
//        logger.info("开票响应{}",json);
//        return  json;
////        String code =  jsonObject.getString("code");
////        if (json == null) {
////            logger.info("开票失败");
////            return null;
////        }
////        if ("0".equals(code)) {
////            String data = jsonObject.getString("data");
////
////            JSONObject dataJson = JSONObject.parseObject(data);
////            String invoiceSerialNum = dataJson.getString("invoiceSerialNum");
////            logger.info("开票成功发票序列号为{}",invoiceSerialNum);
////            return invoiceSerialNum;
////        }
////    return null;
//    }
//
//    /**
//     *  发票开具接口
//     */
//    public String invoicingApi(String body){
//        String accessToken = getToken(appId, sign, System.currentTimeMillis() + "");
//        if (accessToken==null){
//            throw new ServiceException("获取令牌失败");
//        }
//        String urlString = ROOT_PATH + "/gdpaas/apis/invoke.htm?appId="+appId+"&accessToken="+accessToken+"&method=com.golden.bdp.cwzx.invoice.submitInvoice" ;
////        String body = JSONObject.toJSONString(order);
//        String json = null;
//
//        try {
//            json = HttpUtil.post(urlString, body);
//        } catch (Exception e) {
//            e.printStackTrace();
//            logger.error("发票开具接口接口失败");
//        }
//        logger.info("开票响应{}",json);
//        return  json;
//    }
//
//}