Browse Source

消息队列相关代码恢复

wuyx 5 years ago
parent
commit
bf20aae2ac

+ 3 - 1
build.gradle

@@ -31,7 +31,7 @@ jar {
     version = ''
     version = ''
 }
 }
 
 
-sourceCompatibility = 1.7
+sourceCompatibility = 1.8
 
 
 repositories {
 repositories {
     mavenLocal()
     mavenLocal()
@@ -59,6 +59,8 @@ dependencies {
     compile "com.uas.api:b2c-erp-api:$mallApiVersion"
     compile "com.uas.api:b2c-erp-api:$mallApiVersion"
     compile "org.projectlombok:lombok:1.18.4"
     compile "org.projectlombok:lombok:1.18.4"
     compile "commons-io:commons-io:2.6"
     compile "commons-io:commons-io:2.6"
+    //compile('org.springframework.boot:spring-boot-starter-amqp')
+    compile "com.usoft.framework:usoft-mq-utils:dev-1.0-SNAPSHOT"
     compile "com.usoft.framework:usoft-security-utils:dev-1.0-SNAPSHOT"
     compile "com.usoft.framework:usoft-security-utils:dev-1.0-SNAPSHOT"
    	compile "usoft-sdk-fin:usoft-sdk-fin:4.0"
    	compile "usoft-sdk-fin:usoft-sdk-fin:4.0"
     //compile "com.usoft:ufin:1.0.0:dependencies"
     //compile "com.usoft:ufin:1.0.0:dependencies"

+ 67 - 0
src/main/java/com/uas/erp/schedular/entity/MqConfig.java

@@ -0,0 +1,67 @@
+package com.uas.erp.schedular.entity;
+
+public class MqConfig {
+    private boolean ma_mqdynamiccreate;
+    private String ma_mqhost;
+    private int ma_mqport;
+    private String ma_mqvirtualhost;
+    private String ma_mqusername;
+    private String ma_mqpassword;
+    private String ma_mqqueuename;
+
+    public boolean isMa_mqdynamiccreate() {
+        return ma_mqdynamiccreate;
+    }
+
+    public void setMa_mqdynamiccreate(boolean ma_mqdynamiccreate) {
+        this.ma_mqdynamiccreate = ma_mqdynamiccreate;
+    }
+
+    public String getMa_mqhost() {
+        return ma_mqhost;
+    }
+
+    public void setMa_mqhost(String ma_mqhost) {
+        this.ma_mqhost = ma_mqhost;
+    }
+
+    public int getMa_mqport() {
+        return ma_mqport;
+    }
+
+    public void setMa_mqport(int ma_mqport) {
+        this.ma_mqport = ma_mqport;
+    }
+
+    public String getMa_mqvirtualhost() {
+        return ma_mqvirtualhost;
+    }
+
+    public void setMa_mqvirtualhost(String ma_mqvirtualhost) {
+        this.ma_mqvirtualhost = ma_mqvirtualhost;
+    }
+
+    public String getMa_mqusername() {
+        return ma_mqusername;
+    }
+
+    public void setMa_mqusername(String ma_mqusername) {
+        this.ma_mqusername = ma_mqusername;
+    }
+
+    public String getMa_mqpassword() {
+        return ma_mqpassword;
+    }
+
+    public void setMa_mqpassword(String ma_mqpassword) {
+        this.ma_mqpassword = ma_mqpassword;
+    }
+
+    public String getMa_mqqueuename() {
+        return ma_mqqueuename;
+    }
+
+    public void setMa_mqqueuename(String ma_mqqueuename) {
+        this.ma_mqqueuename = ma_mqqueuename;
+    }
+}

+ 144 - 0
src/main/java/com/uas/erp/schedular/finance/mq/RabbitReceiveServiceImpl.java

@@ -0,0 +1,144 @@
+package com.uas.erp.schedular.finance.mq;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.uas.erp.schedular.database.RestJdbcTemplate;
+import com.uas.erp.schedular.entity.Master;
+import com.uas.erp.schedular.entity.MqConfig;
+import com.uas.erp.schedular.util.ContextHolder;
+import com.uas.erp.schedular.util.HmacUtils;
+import com.uas.erp.schedular.web.ResultWrap;
+import com.usoft.mq.utils.BaseRabbitReceiveService;
+import com.usoft.mq.utils.MessageInfo;
+import com.usoft.security.utils.OpenApiSignUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.DefaultUriTemplateHandler;
+
+import javax.annotation.PostConstruct;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+public class RabbitReceiveServiceImpl extends BaseRabbitReceiveService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+    @Autowired
+    private RestJdbcTemplate jdbcTemplate;
+
+    private final static String SECRETKEY = "600d3f07955ba67fe050007f01002db2";
+    private final static String BASEPATH = "https://finrest.usoftchina.com";
+    private final static String UASURL = "http://218.18.115.198:8888/ERP";
+    private final static String MASTERNAME = "YITOA_BL";
+
+    @PostConstruct
+    public void init() throws InterruptedException {
+        Master master = new Master();
+        master.setMa_user("YITOA_DATACENTER");
+        master.setMa_uu(10050002L);
+        master.setMa_accesssecret(SECRETKEY);
+        master.setMa_env("prod");
+        ContextHolder.setMaster(master);
+        MqConfig mqConfig = null;
+        try {
+            mqConfig = jdbcTemplate.queryForBean("select MA_MQDYNAMICCREATE ,MA_MQHOST, MA_MQPORT, MA_MQVIRTUALHOST, MA_MQUSERNAME, MA_MQPASSWORD, MA_MQQUEUENAME from master where ma_user='" + MASTERNAME + "'", MqConfig.class);
+        }catch (Exception e){
+
+        }
+        if(mqConfig != null){
+            isDynamicCreate = mqConfig.isMa_mqdynamiccreate();
+            host = mqConfig.getMa_mqhost();
+            port = mqConfig.getMa_mqport();
+            virtualHost = mqConfig.getMa_mqvirtualhost();
+            username = mqConfig.getMa_mqusername();
+            password = mqConfig.getMa_mqpassword();
+            queueName = mqConfig.getMa_mqqueuename();
+        }
+    }
+
+    @Override
+    public void processMessage(MessageInfo messageInfo) throws Exception {
+        switch (messageInfo.getAppId()){
+            case "1001":                //应收宝
+                processMessageForReceivable(messageInfo.getBizId(), messageInfo.getBizType());
+                break;
+            default:
+                break;
+        }
+    }
+
+    private void processMessageForReceivable(String bizId, String bizType) throws Exception {
+        String url = "";
+        String uasURL = "";
+        String codeName = "";
+        switch (bizType){
+            case "1":                   //额度申请
+                url = BASEPATH + "/api/credit/get?";
+                uasURL = "/openapi/receivable/getCreditApplyInfoReq.action";
+                codeName = "creditApplyCode";
+                break;
+            case "2":                   //提款申请
+                url = BASEPATH + "/api/draw/get?";
+                uasURL = "/openapi/receivable/getDrawInfoResp.action";
+                codeName = "code";
+                break;
+            case "3":                   //增额申请
+                url = BASEPATH + "/api/addCredit/get?";
+                uasURL = "/openapi/receivable/getAddCreditApplyInfoReq.action";
+                codeName = "creditApplyCode";
+                break;
+            default:
+                break;
+        }
+        Execute(url, bizId, uasURL, codeName);
+    }
+
+    private void Execute(String requestURL, String bizId, String uasURL, String codeName) throws Exception {
+        String paramStr = "secretId=" + 10046945 + "&"+ codeName +"=" + URLEncoder.encode(bizId,"UTF-8");
+        //进行签名
+        String signatureValue = OpenApiSignUtil.sign(paramStr,SECRETKEY);
+        signatureValue = URLEncoder.encode(signatureValue, "UTF-8");
+        String signatureKV = OpenApiSignUtil.SIGNATURE_KEY + "=" + signatureValue;
+        paramStr += "&" + signatureKV;
+        requestURL = requestURL + paramStr;
+
+        DefaultUriTemplateHandler uriTemplateHandler = new DefaultUriTemplateHandler();
+        uriTemplateHandler.setStrictEncoding(true);
+
+        RestTemplate restTemp = new RestTemplate(new HttpsClientRequestFactory());
+        restTemp.setUriTemplateHandler(uriTemplateHandler);
+        String result = restTemp.getForObject(requestURL, String.class);
+
+        String UASurl = UASURL + uasURL;
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("data", result);
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+        headers.add("referer", getSignature(codeName));
+        MultiValueMap<String, Object> formData = new LinkedMultiValueMap<>();
+        formData.setAll(map);
+        HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(formData, headers);
+        String returnStr = restTemplate.postForEntity(UASurl, request, String.class).getBody();
+        ResultWrap<String> wrap = JSON.parseObject(returnStr, new TypeReference<ResultWrap<String>>(){});
+    }
+
+    public String getSignature(String code) {
+        String url = "_timestamp=" + System.currentTimeMillis() + "&master=";
+        if("code".equals(code)){
+            url += "YITOA_BL";
+        }else{
+            url += "YITOA_DATACENTER";
+        }
+        // 签名
+        return url + "&_signature=" + HmacUtils.encode(url);
+    }
+}