Browse Source

init from phab

xielq 4 years ago
parent
commit
1d113bb0a6

+ 0 - 0
README.md


+ 51 - 0
build.gradle

@@ -0,0 +1,51 @@
+buildscript {
+    ext {
+        springBootVersion = '1.4.4.RELEASE'
+    }
+    repositories {
+        mavenLocal()
+        mavenCentral()
+    }
+    dependencies {
+        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
+    }
+}
+
+group 'com.uas.mall.cloud'
+version '1.0-SNAPSHOT'
+
+
+apply plugin: 'java'
+apply plugin: 'org.springframework.boot'
+
+repositories {
+    mavenLocal()
+    jcenter()
+    maven {
+        url 'http://10.10.101.21:8081/artifactory/libs-release'
+    }
+    maven {
+        url 'http://10.10.101.21:8081/artifactory/libs-snapshot'
+    }
+    mavenCentral()
+}
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+
+dependencyManagement {
+    imports {
+        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Camden.SR5'
+    }
+}
+
+dependencies {
+    compile("org.springframework.boot:spring-boot-starter-web")
+    compile("org.springframework.boot:spring-boot-starter-data-jpa")
+    compile("com.uas.cloud.mall:commons:0.0.1"){
+        exclude(module: 'servlet-api')
+    }
+    compile ("io.springfox:springfox-swagger2:2.4.0")
+    compile ("io.springfox:springfox-swagger-ui:2.4.0")
+    runtime("com.oracle:ojdbc6:11.2.0")
+}

+ 2 - 0
settings.gradle

@@ -0,0 +1,2 @@
+rootProject.name = 'pub-logistics-service'
+

+ 12 - 0
src/main/java/com/uas/cloud/pub/logictics/LogisticsApplication.java

@@ -0,0 +1,12 @@
+package com.uas.cloud.pub.logictics;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+
+@SpringBootApplication
+public class LogisticsApplication {
+
+    public static void main(String[] args) throws Exception {
+        new SpringApplicationBuilder(LogisticsApplication.class).web(true).run(args);
+    }
+}

+ 42 - 0
src/main/java/com/uas/cloud/pub/logictics/api/LogisticsController.java

@@ -0,0 +1,42 @@
+package com.uas.cloud.pub.logictics.api;
+
+import com.uas.cloud.pub.logictics.service.LogisticsService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+@RestController
+@RequestMapping("/logistics")
+public class LogisticsController {
+
+    @Autowired
+    LogisticsService logisticsService;
+
+    /*
+    *   快递鸟预约下单API
+    *
+    *   @param  orderid      订单号
+    *   @param  shipperCode  快递公司编码
+    *   @param  goodsName    商品名称
+    *   @param  receiverJson 收件人信息(姓名:name, 电话:tel, 省:provinceName,市: cityName, 区、县: expAreaName, 详细地址: address )
+    *   @param  senderJson   发件人信息(姓名:name, 电话:tel, 省:provinceName,市: cityName, 区、县: expAreaName, 详细地址: address )
+    *
+    * */
+    @RequestMapping(value = "/booking", method = RequestMethod.POST)
+    public String logisticsBooking(@RequestParam("orderid") String orderid,@RequestParam("shipperCode") String shipperCode,@RequestParam("goodsName") String goodsName,@RequestParam("receiverJson") String receiverJson,@RequestParam("senderJson") String senderJson) throws Exception {
+        return  logisticsService.logisticsBooking(orderid, shipperCode, goodsName, receiverJson, senderJson);
+    }
+
+    /*
+    *   快递鸟查询物流API
+    *
+    *   @param  shipperCode   快递公司编码
+    *   @param  logisticsCode  物流单号
+    *
+    * */
+    @RequestMapping(value = "/query", method = RequestMethod.GET)
+    public Map<String, String> logisticsQuery(@RequestParam String shipperCode, @RequestParam String logisticsCode) throws Exception {
+        return logisticsService.logisticsQuery(shipperCode, logisticsCode);
+    }
+}

+ 138 - 0
src/main/java/com/uas/cloud/pub/logictics/domain/LogisticsInfo.java

@@ -0,0 +1,138 @@
+package com.uas.cloud.pub.logictics.domain;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "trade$logistics_inf")
+public class LogisticsInfo {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 1L;
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trade$logistics_inf_gen")
+    @SequenceGenerator(name = "trade$logistics_inf_gen", sequenceName = "trade$logistics_inf_seq", allocationSize = 1)
+    @Column(name = "id")
+    private Long id;
+
+    /**
+     *  订单号码
+     */
+    @Column(name = "log_orderid")
+    private String orderid;
+
+    /**
+     *  快递公司编码
+     */
+    @Column(name = "log_shipperCode")
+    private String shipperCode;
+
+    /**
+     *  快递类型
+     */
+    @Column(name = "log_expType")
+    private String expType;
+
+    /**
+     *  邮费支付方式
+     */
+    @Column(name = "log_Type")
+    private String payType;
+
+    /**
+     *  商品名称
+     */
+    @Column(name = "log_goodsName")
+    private String goodsName;
+
+    /**
+     *  收件人信息json
+     */
+    @Column(name = "log_receiverJson")
+    private String receiverJson;
+
+    /**
+     *  发件人信息json
+     */
+    @Column(name = "senderJson")
+    private String senderJson;
+
+    public String getOrderid() {
+        return orderid;
+    }
+
+    public void setOrderid(String orderid) {
+        this.orderid = orderid;
+    }
+
+    public String getShipperCode() {
+        return shipperCode;
+    }
+
+    public void setShipperCode(String shipperCode) {
+        this.shipperCode = shipperCode;
+    }
+
+    public String getExpType() {
+        return expType;
+    }
+
+    public void setExpType(String expType) {
+        this.expType = expType;
+    }
+
+    public String getPayType() {
+        return payType;
+    }
+
+    public void setPayType(String payType) {
+        this.payType = payType;
+    }
+
+    public String getGoodsName() {
+        return goodsName;
+    }
+
+    public void setGoodsName(String goodsName) {
+        this.goodsName = goodsName;
+    }
+
+    public String getReceiverJson() {
+        return receiverJson;
+    }
+
+    public void setReceiverJson(String receiverJson) {
+        this.receiverJson = receiverJson;
+    }
+
+    public String getSenderJson() {
+        return senderJson;
+    }
+
+    public void setSenderJson(String senderJson) {
+        this.senderJson = senderJson;
+    }
+
+    public LogisticsInfo(String orderid, String shipperCode, String goodsName, String receiverJson, String senderJson){
+      this.orderid =orderid;
+      this.shipperCode = shipperCode;
+      this.goodsName = goodsName;
+      this.receiverJson = receiverJson;
+      this.senderJson = senderJson;
+    };
+
+    @Override
+    public String toString() {
+        return "LogisticsInfo{" +
+                "orderid='" + orderid + '\'' +
+                ", shipperCode='" + shipperCode + '\'' +
+                ", expType='" + expType + '\'' +
+                ", payType='" + payType + '\'' +
+                ", goodsName='" + goodsName + '\'' +
+                ", receiverJson='" + receiverJson + '\'' +
+                ", senderJson='" + senderJson + '\'' +
+                '}';
+    }
+}

+ 83 - 0
src/main/java/com/uas/cloud/pub/logictics/domain/ReveiverInfo.java

@@ -0,0 +1,83 @@
+package com.uas.cloud.pub.logictics.domain;
+
+
+public class ReveiverInfo {
+
+    // 收件人姓名
+    private String name;
+
+    // 收件人电话
+    private String tel;
+
+    // 收件人所在省
+    private String provinceName;
+
+    // 收件人所在市
+    private String cityName;
+
+    // 收件人所在区、县
+    private String expAreaName;
+
+    // 收件人详细地址
+    private String address;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getProvinceName() {
+        return provinceName;
+    }
+
+    public void setProvinceName(String provinceName) {
+        this.provinceName = provinceName;
+    }
+
+    public String getCityName() {
+        return cityName;
+    }
+
+    public void setCityName(String cityName) {
+        this.cityName = cityName;
+    }
+
+    public String getExpAreaName() {
+        return expAreaName;
+    }
+
+    public void setExpAreaName(String expAreaName) {
+        this.expAreaName = expAreaName;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    @Override
+    public String toString() {
+        return "ReveiverInfo{" +
+                "name='" + name + '\'' +
+                ", tel='" + tel + '\'' +
+                ", provinceName='" + provinceName + '\'' +
+                ", cityName='" + cityName + '\'' +
+                ", expAreaName='" + expAreaName + '\'' +
+                ", address='" + address + '\'' +
+                '}';
+    }
+}

+ 82 - 0
src/main/java/com/uas/cloud/pub/logictics/domain/SenderInfo.java

@@ -0,0 +1,82 @@
+package com.uas.cloud.pub.logictics.domain;
+
+public class SenderInfo {
+
+    // 发件人姓名
+    private String name;
+
+    // 发件人电话
+    private String tel;
+
+    // 发件人所在省
+    private String provinceName;
+
+    // 发件人所在市
+    private String cityName;
+
+    // 发件人所在区、县
+    private String expAreaName;
+
+    // 发件人详细地址
+    private String address;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getProvinceName() {
+        return provinceName;
+    }
+
+    public void setProvinceName(String provinceName) {
+        this.provinceName = provinceName;
+    }
+
+    public String getCityName() {
+        return cityName;
+    }
+
+    public void setCityName(String cityName) {
+        this.cityName = cityName;
+    }
+
+    public String getExpAreaName() {
+        return expAreaName;
+    }
+
+    public void setExpAreaName(String expAreaName) {
+        this.expAreaName = expAreaName;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    @Override
+    public String toString() {
+        return "SenderInfo{" +
+                "name='" + name + '\'' +
+                ", tel='" + tel + '\'' +
+                ", provinceName='" + provinceName + '\'' +
+                ", cityName='" + cityName + '\'' +
+                ", expAreaName='" + expAreaName + '\'' +
+                ", address='" + address + '\'' +
+                '}';
+    }
+}

+ 12 - 0
src/main/java/com/uas/cloud/pub/logictics/repository/LogisticsInfoRepository.java

@@ -0,0 +1,12 @@
+package com.uas.cloud.pub.logictics.repository;
+
+import com.uas.cloud.pub.logictics.domain.LogisticsInfo;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface LogisticsInfoRepository extends JpaSpecificationExecutor<LogisticsInfo>, JpaRepository<LogisticsInfo, Long> {
+
+    public LogisticsInfo findByOrderid(String orderid);
+}

+ 30 - 0
src/main/java/com/uas/cloud/pub/logictics/service/LogisticsService.java

@@ -0,0 +1,30 @@
+package com.uas.cloud.pub.logictics.service;
+
+
+import com.uas.cloud.pub.logictics.domain.LogisticsInfo;
+
+import java.util.Map;
+
+public interface LogisticsService {
+
+    /*
+    *   快递鸟预约下单API
+    *
+    *   @param  orderid      订单号
+    *   @param  shipperCode  快递公司编码
+    *   @param  goodsName    商品名称
+    *   @param  receiverJson 收件人信息(姓名:name, 电话:tel, 省:provinceName,市: cityName, 区、县:expAreaName, 详细地址: address )
+    *   @param  senderJson   发件人信息(姓名:name, 电话:tel, 省:provinceName,市: cityName, 区、县:expAreaName, 详细地址: address )
+    *
+    * */
+    String logisticsBooking(String orderid, String shipperCode, String goodsName, String receiverJson, String senderJson) throws  Exception;
+
+    /*
+    *   快递鸟查询物流API
+    *
+    *   @param  shipperCode   快递公司编码
+    *   @param  logisticCode  物流单号
+    *
+    * */
+    Map<String, String> logisticsQuery(String shipperCode, String logicsticsCode) throws Exception;
+}

+ 135 - 0
src/main/java/com/uas/cloud/pub/logictics/service/impl/LogisticsServiceImpl.java

@@ -0,0 +1,135 @@
+package com.uas.cloud.pub.logictics.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.uas.cloud.commons.util.FastjsonUtils;
+import com.uas.cloud.commons.util.OkHttpUtils;
+import com.uas.cloud.pub.logictics.domain.LogisticsInfo;
+import com.uas.cloud.pub.logictics.domain.ReveiverInfo;
+import com.uas.cloud.pub.logictics.domain.SenderInfo;
+import com.uas.cloud.pub.logictics.repository.LogisticsInfoRepository;
+import com.uas.cloud.pub.logictics.service.LogisticsService;
+import com.uas.cloud.pub.logictics.util.LogisticsConfig;
+import okhttp3.Response;
+import org.apache.commons.collections.map.HashedMap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import com.uas.cloud.pub.logictics.util.LogisticsUtils;
+
+@Service
+public class LogisticsServiceImpl implements LogisticsService {
+
+    @Autowired
+    private LogisticsInfoRepository logisticsInfoRepository;
+
+    @Override
+    public String logisticsBooking(String orderid, String shipperCode, String goodsName, String receiverJson, String senderJson) throws Exception {
+        // 收件人信息
+        JSONObject reveiver = FastjsonUtils.parseObject(receiverJson);
+        ReveiverInfo receiverInfo = new ReveiverInfo();
+        receiverInfo.setName(reveiver.getString("name"));
+        receiverInfo.setTel(reveiver.getString("tel"));
+        receiverInfo.setProvinceName(reveiver.getString("provinceName"));
+        receiverInfo.setCityName(reveiver.getString("cityName"));
+        receiverInfo.setExpAreaName(reveiver.getString("expAreaName"));
+        receiverInfo.setAddress(reveiver.getString("address"));
+        // 发件人信息
+        JSONObject sender = FastjsonUtils.parseObject(senderJson);
+        SenderInfo senderInfo = new SenderInfo();
+        senderInfo.setName(sender.getString("name"));
+        senderInfo.setTel(sender.getString("tel"));
+        senderInfo.setProvinceName(sender.getString("provinceName"));
+        senderInfo.setCityName(sender.getString("cityName"));
+        senderInfo.setExpAreaName(sender.getString("expAreaName"));
+        senderInfo.setAddress(sender.getString("address"));
+        // 商品信息
+        Map<String, String> goodsMap = new HashMap<>();
+        goodsMap.put("GoodsName",goodsName);
+        List goodsList = new ArrayList();
+        goodsList.add(goodsMap);
+        // requestData请求参数
+        Map<String, Object> map = new HashedMap();
+        map.put("ShipperCode", shipperCode);
+        map.put("OrderCode", orderid);
+        map.put("PayType", LogisticsConfig.PAY_TYPE);
+        map.put("ExpType", LogisticsConfig.EXP_TYPE);
+        map.put("Receiver", receiverInfo);
+        map.put("Sender", senderInfo);
+        map.put("Commodity",goodsList);
+        String requestData = FastjsonUtils.toJson(map).toString();
+        // 系统级请求参数
+        Map<String, String> params = new HashMap();
+        params.put("EBusinessID", LogisticsConfig.E_BUSINESS_ID);
+        params.put("RequestType", LogisticsConfig.REQUEST_TYPE_BOOKING);
+        params.put("DataType", LogisticsConfig.DATA_TYPE);
+        String dataSign=LogisticsUtils.encrypt(requestData, LogisticsConfig.APP_KEY, "UTF-8");
+        params.put("DataSign", LogisticsUtils.urlEncoder(dataSign, "UTF-8"));
+        params.put("RequestData",LogisticsUtils.urlEncoder(requestData, "UTF-8"));
+        // 向快递鸟发请求
+        try {
+            Response response = OkHttpUtils.sendPost(LogisticsConfig.PROD_BOOKING_URL, params);
+            String reponseText = response.body().string();
+            System.out.println("reponseText==" + reponseText);
+            JSONObject reponse = FastjsonUtils.parseObject(reponseText);
+            String result = reponse.getString("Success");
+            if("true".equals(result)){
+                LogisticsInfo logisticsInfo = new LogisticsInfo(orderid, shipperCode, goodsName, receiverJson ,senderJson);
+                logisticsInfoRepository.save(logisticsInfo);
+                return "success";
+            }else{
+                return "fail";
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "fail";
+    }
+
+    @Override
+    public Map<String, String> logisticsQuery(String shipperCode, String logisticsCode) throws Exception {
+        // requestData 请求参数
+        Map<String, Object> map = new HashedMap();
+        map.put("ShipperCode", shipperCode);
+        map.put("LogisticCode", logisticsCode);
+        String requestData = FastjsonUtils.toJson(map).toString();
+        // 系统级请求参数
+        Map<String, String> params = new HashMap();
+        params.put("EBusinessID", LogisticsConfig.E_BUSINESS_ID);
+        params.put("RequestType", LogisticsConfig.REQUEST_TYPE_QUERY);
+        params.put("DataType", LogisticsConfig.DATA_TYPE);
+        String dataSign=LogisticsUtils.encrypt(requestData, LogisticsConfig.APP_KEY, "UTF-8");
+        params.put("DataSign", LogisticsUtils.urlEncoder(dataSign, "UTF-8"));
+        params.put("RequestData",requestData);
+        System.out.println("param" + params.toString());
+        // 向快递鸟发请求
+        Map<String, String > info = new HashMap<>();
+        try {
+            Response response = OkHttpUtils.sendPost(LogisticsConfig.QUERY_URL, params);
+            String reponseText = response.body().string();
+            System.out.println("reponseText==" + reponseText);
+            JSONObject reponse = FastjsonUtils.parseObject(reponseText);
+            String result = reponse.getString("Success");
+            if("true".equals(result)){
+                String traces = reponse.getString("Traces");
+                info.put("traces", traces);
+                return info;
+            }else{
+                String reason = reponse.getString("Reason");
+                info.put("errorInfo", reason);
+                return info;
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            info.put("errorInfo", "程序异常");
+        }
+
+        return info;
+    }
+
+}

+ 45 - 0
src/main/java/com/uas/cloud/pub/logictics/util/LogisticsConfig.java

@@ -0,0 +1,45 @@
+package com.uas.cloud.pub.logictics.util;
+
+public class LogisticsConfig {
+
+    // 商户ID
+    public static final String E_BUSINESS_ID = "1279748";
+
+    // 商户私钥
+    public static final String APP_KEY = "7e71a4ed-84e7-45c6-9e4f-8843d9048b88";
+
+    // 返回数据类型,只支持json-2
+    public static final String DATA_TYPE = "2";
+
+    // 付款方式 2-到付
+    public static final String PAY_TYPE = "2";
+
+    // 快递类型 1-标准快件
+    public static final String EXP_TYPE = "1";
+
+    /*********************************  不同API配置  **********************************************/
+
+    // 请求指令类型——预约下单
+    public static final String REQUEST_TYPE_BOOKING = "1001";
+
+    // 预约取件API测试地址
+    public static final String TEST_BOOKING_URL = "http://testapi.kdniao.cc:8081/api/oorderservice";
+
+    // 预约取件API正式地址
+    public static final String PROD_BOOKING_URL = "http://api.kdniao.cc/api/OOrderService";
+
+    // 请求指令类型——即时查询
+    public static final String REQUEST_TYPE_QUERY = "1002";
+
+    // 即时查询API地址
+    public static final String  QUERY_URL = "http://api.kdniao.cc/Ebusiness/EbusinessOrderHandle.aspx";
+
+    // 请求指令类型——电子面单
+    public static final String REQUEST_TYPE_EORDER = "1007";
+
+    // 电子面单API测试地址
+    public static final String TEST_EORDER_URL = "http://testapi.kdniao.cc:8081/api/Eorderservice";
+
+    //  电子面单API正式地址
+    public static final String PROD_EORDER_URL = "http://api.kdniao.cc/api/Eorderservice";
+}

+ 107 - 0
src/main/java/com/uas/cloud/pub/logictics/util/LogisticsUtils.java

@@ -0,0 +1,107 @@
+package com.uas.cloud.pub.logictics.util;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.security.MessageDigest;
+
+public class LogisticsUtils {
+
+    /**
+     * 电商Sign签名生成
+     * @param content 内容
+     * @param keyValue Appkey
+     * @param charset 编码方式
+     * @throws UnsupportedEncodingException ,Exception
+     * @return DataSign签名
+     */
+    @SuppressWarnings("unused")
+    public static String encrypt (String content, String keyValue, String charset) throws UnsupportedEncodingException, Exception
+    {
+        if (keyValue != null)
+        {
+            return base64(MD5(content + keyValue, charset), charset);
+        }
+        return base64(MD5(content, charset), charset);
+    }
+
+    @SuppressWarnings("unused")
+    public static String urlEncoder(String str, String charset) throws UnsupportedEncodingException{
+        String result = URLEncoder.encode(str, charset);
+        return result;
+    }
+
+    /**
+     * base64编码
+     * @param str 内容
+     * @param charset 编码方式
+     * @throws UnsupportedEncodingException
+     */
+    private static String base64(String str, String charset) throws UnsupportedEncodingException{
+        String encoded = base64Encode(str.getBytes(charset));
+        return encoded;
+    }
+
+    /**
+     * MD5加密
+     * @param str 内容
+     * @param charset 编码方式
+     * @throws Exception
+     */
+    @SuppressWarnings("unused")
+    private static String MD5(String str, String charset) throws Exception {
+        MessageDigest md = MessageDigest.getInstance("MD5");
+        md.update(str.getBytes(charset));
+        byte[] result = md.digest();
+        StringBuffer sb = new StringBuffer(32);
+        for (int i = 0; i < result.length; i++) {
+            int val = result[i] & 0xff;
+            if (val <= 0xf) {
+                sb.append("0");
+            }
+            sb.append(Integer.toHexString(val));
+        }
+        return sb.toString().toLowerCase();
+    }
+
+    private static String base64Encode(byte[] data) {
+        StringBuffer sb = new StringBuffer();
+        int len = data.length;
+        int i = 0;
+        int b1, b2, b3;
+        while (i < len) {
+            b1 = data[i++] & 0xff;
+            if (i == len)
+            {
+                sb.append(base64EncodeChars[b1 >>> 2]);
+                sb.append(base64EncodeChars[(b1 & 0x3) << 4]);
+                sb.append("==");
+                break;
+            }
+            b2 = data[i++] & 0xff;
+            if (i == len)
+            {
+                sb.append(base64EncodeChars[b1 >>> 2]);
+                sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);
+                sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);
+                sb.append("=");
+                break;
+            }
+            b3 = data[i++] & 0xff;
+            sb.append(base64EncodeChars[b1 >>> 2]);
+            sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);
+            sb.append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]);
+            sb.append(base64EncodeChars[b3 & 0x3f]);
+        }
+        return sb.toString();
+    }
+
+    private static char[] base64EncodeChars = new char[] {
+            'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
+            'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
+            'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+            'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
+            'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
+            'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
+            'w', 'x', 'y', 'z', '0', '1', '2', '3',
+            '4', '5', '6', '7', '8', '9', '+', '/' };
+}

+ 20 - 0
src/main/resources/application.yml

@@ -0,0 +1,20 @@
+spring:
+  appliction:
+    name: pub-logistics-service
+  jpa:
+    properties :
+      hibernate :
+        hbm2ddl :
+          auto : update
+  datasource:
+    url: jdbc:oracle:thin:@192.168.253.6:1521:orcl
+    username: uuplatformdemo
+    password: selectuuplatform
+    driver-class-name: oracle.jdbc.driver.OracleDriver
+
+server:
+  port: 20200
+
+security:
+  basic:
+    enabled: false

+ 7 - 0
src/main/resources/bootstrap-dev.yml

@@ -0,0 +1,7 @@
+spring:
+  cloud:
+    config:
+      profile: dev
+      label: master
+      uri: http://configserver:28001/
+

+ 6 - 0
src/main/resources/bootstrap-prod.yml

@@ -0,0 +1,6 @@
+spring:
+  cloud:
+    config:
+      profile: prod
+      label: master
+      uri: http://configserver:28001/

+ 6 - 0
src/main/resources/bootstrap-test.yml

@@ -0,0 +1,6 @@
+spring:
+  cloud:
+    config:
+      profile: test
+      label: master
+      uri: http://configserver:28001/

+ 9 - 0
src/main/resources/bootstrap.yml

@@ -0,0 +1,9 @@
+spring:
+  application:
+    name: pub-logistics-service
+  cloud:
+#    config:
+#      profile: dev
+#      label: master
+#      uri: http://10.10.100.23:28001/
+