個人第一個正式的Java後端程序

  • 項目背景: 公司有家新零售店,出租方是要根據天天的銷售額度去收取租金,須要把後臺的天天的訂單數據給推送到第三方。關鍵這個數據不在咱們的後臺,是在有贊後臺,因爲公司人手緊張,領導直接安排我作,好吧!安卓工做量不飽和,後端來湊!
  • 經過Http請求獲取第三方原始數據,而後把原始數據拼接成想要的json,而後使用WebServices推送到第三方!就是這麼的一個過程。

一、對接微信羣,對接文檔開幹

微信羣
image.png

  • what fuck???黑人問號, WebServices 第一次擼後端代碼,你就給我來個WebServices的,我怎麼玩?喝點水,冷靜下,在此感謝公司的後端大佬宏真哥給出的思路!java

  • 在這裏有個插曲,別人提供的對接文檔是錯誤,真的是搞死我這個小白了,在這裏想罵人,心疼寶寶幾秒,誰不是個寶寶啊! git

    image.png

  • 找到文檔提供的接口,若是可以正常的訪問的話,那麼第一步就應該能夠了 github

    正常訪問的結果

二、生成對應的jar包

2

三、那麼如今的問題是把這堆代碼打成jar

2

  • 生成了以下的文件
    3

4

  • 點擊 Build json

    5

  • 接下來就去輸出目錄找jar包了 後端

    6

  • 這就是我能夠使用的 jar,若是後續須要改成正式的地址,還須要生成一個正式的jarbash

三、把生成的 jar放到Maven Nexus3

  • 我沒有權限!哎哎 微信

    image.png

  • 還好咱們架構師幫我上傳了 架構

    2

  • 配置pomide

<dependency>
            <groupId>net.ticp.asiatic</groupId>
            <artifactId>ftp-pingan-sdk</artifactId>
            <version>1.0.0</version>
        </dependency>
複製代碼
  • 開始運行項目, what fuck ???
    問題
  • 完蛋,這個錯誤不認識啊!問大佬,再次感謝大佬的相助。
    1

四、寫代碼邏輯

  • 再次感謝公司的另一個大佬毛毛,由於這個流程是我請求第三方的後臺而後獲取關鍵數據,而後把關鍵數據整合經過WebServices推送給第三方。我一個作安卓的在這方面經驗不足,他這邊完成了一個小Demo,也沒叫我看,我本身看他的代碼,改動的邏輯,啊哈哈
/**
 * author: Created by shiming on 2018/9/30 17:14
 * mailbox:lamshiming@sina.com
 */
@Service
@ElasticJobConf(name="YouzanPushOrderPingAnSynJob",cron = "*/5 * * * * ?")
 public class YouzanPushOrderPingAnSynJob implements SimpleJob {

    @Resource
    private YZClientService yzClientService;
    /**
     * 每頁數量
     */
    private static final Long PAGE_SIZE = 20L;

    private static final Logger logger = LoggerFactory.getLogger(YouzanPushOrderPingAnSynJob.class);
    @Override
    public void execute(ShardingContext shardingContext) {
        YouzanRetailOpenDeliveryorderQuery youzanRetailOpenDeliveryorderQuery = buildQueryApi();
        YouzanRetailOpenDeliveryorderQueryResult result = yzClientService.invoke(youzanRetailOpenDeliveryorderQuery);
        // 總頁數
        Long pages = parsePages(result.getPaginator().getTotalCount());
        int j=0;
        int k=0;
        OrderPushUtils.m=0;
        // 分頁查詢
        for (long pageNo = 1; pageNo <= pages ; pageNo++) {
            // 設置分頁
            setPage(youzanRetailOpenDeliveryorderQuery,pageNo);
            // 查詢結果
            result = yzClientService.invoke(youzanRetailOpenDeliveryorderQuery);
            // 處理查詢結果
            YouzanRetailOpenDeliveryorderQueryResult.OpenDeliveryOrderDTO[] deliveryOrders = result.getDeliveryOrders();
            if (deliveryOrders!=null&&deliveryOrders.length>0){
                for (int i=0;i<deliveryOrders.length;i++){
                    //平安店的數據 這樣才能正確 並且仍是線下店纔好
                    if (YouzanConst.ORDER_FORM_PINGANDIAN.equals(deliveryOrders[i].getWarehouseCode())&&YouzanConst.SALE_WAY_OFFLINE.equals(deliveryOrders[i].getSaleWay())) {
                        // 這裏就是知足平安店的訂單
                        OrderPushUtils.pushOrder(deliveryOrders[i]);
                        j++;
                        System.out.println("一共有多少平安店的單 ::"+j);

                        if (i==2){
                            String s = new Gson().toJson(result);
                            System.out.println("result=="+s);
                        }
                    }
                    if (YouzanConst.ORDER_FORM_CHEGONGMIAO.equals(deliveryOrders[i].getWarehouseCode())&&YouzanConst.SALE_WAY_OFFLINE.equals(deliveryOrders[i].getSaleWay())) {
                        k++;
                        System.out.println("一共有車公廟的單 ::"+k);
                    }
                }
            }
        }
    }
    int i=1;

    private YouzanRetailOpenDeliveryorderQuery buildQueryApi() {
        // 當前時間前一天的時間
        Date currentDate = new Date(System.currentTimeMillis()-86400*1000*i);
        i++;
        // 查詢開始時間
        Date queryStart = DateUtils.getDateStart(currentDate);
        // 查詢結束時間
        Date queryEnd = DateUtils.getDateEnd(currentDate);
        String queryEndTime = DateUtils.formatDateTime(queryEnd);
        String queryStartTime = DateUtils.formatDateTime(queryStart);
        logger.info("查詢有贊後臺的開始時間"+queryStartTime);
        logger.info("查詢有贊後臺的結束時間"+queryEndTime);
        Date date = new Date();
        String nowTime = DateUtils.formatDateTime(date);
        logger.info("當前查詢的時間"+nowTime);
        YouzanRetailOpenDeliveryorderQueryParams youzanRetailOpenDeliveryorderQueryParams = new YouzanRetailOpenDeliveryorderQueryParams();
        youzanRetailOpenDeliveryorderQueryParams.setPageNo(1L);
        youzanRetailOpenDeliveryorderQueryParams.setPageSize(1L);
        youzanRetailOpenDeliveryorderQueryParams.setCreateTimeStart(DateUtils.formatDate(queryStart));
        youzanRetailOpenDeliveryorderQueryParams.setCreateTimeEnd(DateUtils.formatDate(queryEnd));
        youzanRetailOpenDeliveryorderQueryParams.setCreateTimeStart(queryStartTime);
        youzanRetailOpenDeliveryorderQueryParams.setCreateTimeEnd(queryEndTime);
        YouzanRetailOpenDeliveryorderQuery youzanRetailOpenDeliveryorderQuery = new YouzanRetailOpenDeliveryorderQuery();
        youzanRetailOpenDeliveryorderQuery.setAPIParams(youzanRetailOpenDeliveryorderQueryParams);
       return youzanRetailOpenDeliveryorderQuery;
    }

    private void setPage(YouzanRetailOpenDeliveryorderQuery queryApi,Long pageNo){
        YouzanRetailOpenDeliveryorderQueryParams queryAPIParams = (YouzanRetailOpenDeliveryorderQueryParams)queryApi.getAPIParams();
        queryAPIParams.setPageNo(pageNo);
        queryAPIParams.setPageSize(PAGE_SIZE);
    }

    private Long parsePages(long totalCount){
        if (totalCount == -1) {
            return 1L;
        }
        return totalCount / PAGE_SIZE + ((totalCount % PAGE_SIZE == 0) ? 0 : 1);
    }
}

複製代碼
  • OrderPushUtils.pushOrder(deliveryOrders[i]); 這個方法我要去區分是哪家零售店的數據,同時在組裝json數據,就不貼出來了

五、萬萬沒有想到

  • 第三方接口有bug,致使推送到第三方的數據總額不正確,我這一口老血啊,吐你一臉。
  • 每一個訂單的銷售收款總額居然不等於裏面的子訂單的總和!
    問題

image.png

image.png

  • 最後到了這一步,等待他們發版本
    image.png

六、最後說明幾點

相關文章
相關標籤/搜索