- 項(xiàng)目背景: 公司有家新零售店,出租方是要根據(jù)每天的銷售額度去收取租金,需要把后臺的每天的訂單數(shù)據(jù)給推送到第三方。關(guān)鍵這個(gè)數(shù)據(jù)不在我們的后臺,是在有贊后臺,由于公司人手緊張,領(lǐng)導(dǎo)直接安排我做,好吧!安卓工作量不飽和,后端來湊!
- 通過
Http請求獲取第三方原始數(shù)據(jù),然后把原始數(shù)據(jù)拼接成想要的json,然后使用WebServices推送到第三方!就是這么的一個(gè)過程。
1、對接微信群,對接文檔開干


what fuck???黑人問號,
WebServices第一次擼后端代碼,你就給我來個(gè)WebServices的,我怎么玩?喝點(diǎn)水,冷靜下,在此感謝公司的后端大佬宏真哥給出的思路!-
在這里有個(gè)插曲,別人提供的對接文檔是錯誤,真的是搞死我這個(gè)小白了,在這里想罵人,心疼寶寶幾秒,誰不是個(gè)寶寶啊!
image.png -
找到文檔提供的接口,如果能夠正常的訪問的話,那么第一步就應(yīng)該可以了
正常訪問的結(jié)果
2、生成對應(yīng)的jar包
- 感謝文章 Intellij Idea 下 生成WebServiceClient (WS客戶端)
- 拿到測試的地址了,訪問也正常了,使用
ide生成代碼,來開始動起來,如下步驟
1

- 我遇到了一個(gè)問題,在此感謝 軟件包 junit.framework 不存在的解決方法
-
如果一切順利的話,那么就會看到這個(gè)界面
3
4
3、那么現(xiàn)在的問題是把這堆代碼打成jar
- 感謝這個(gè)博客對我的幫助 Idea 將新寫的項(xiàng)目中的一個(gè)java文件搞成jar包方法
1

-
生成了如下的文件
3

-
點(diǎn)擊
Build
5 -
接下來就去輸出目錄找jar包了
6 這就是我可以使用的
jar,如果后續(xù)需要改為正式的地址,還需要生成一個(gè)正式的jar
3、把生成的 jar放到Maven Nexus3
-
我沒有權(quán)限!哎哎
image.png -
還好我們架構(gòu)師幫我上傳了
2 配置
pom
<dependency>
<groupId>net.ticp.asiatic</groupId>
<artifactId>ftp-pingan-sdk</artifactId>
<version>1.0.0</version>
</dependency>
- 開始運(yùn)行項(xiàng)目,
what fuck ???
問題 -
完蛋,這個(gè)錯誤不認(rèn)識??!問大佬,再次感謝大佬的相助。
1
4、寫代碼邏輯
- 再次感謝公司的另外一個(gè)大佬毛毛,因?yàn)檫@個(gè)流程是我請求第三方的后臺然后獲取關(guān)鍵數(shù)據(jù),然后把關(guān)鍵數(shù)據(jù)整合通過
WebServices推送給第三方。我一個(gè)做安卓的在這方面經(jīng)驗(yàn)不足,他這邊完成了一個(gè)小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;
/**
* 每頁數(shù)量
*/
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);
// 總頁數(shù)
Long pages = parsePages(result.getPaginator().getTotalCount());
int j=0;
int k=0;
OrderPushUtils.m=0;
// 分頁查詢
for (long pageNo = 1; pageNo <= pages ; pageNo++) {
// 設(shè)置分頁
setPage(youzanRetailOpenDeliveryorderQuery,pageNo);
// 查詢結(jié)果
result = yzClientService.invoke(youzanRetailOpenDeliveryorderQuery);
// 處理查詢結(jié)果
YouzanRetailOpenDeliveryorderQueryResult.OpenDeliveryOrderDTO[] deliveryOrders = result.getDeliveryOrders();
if (deliveryOrders!=null&&deliveryOrders.length>0){
for (int i=0;i<deliveryOrders.length;i++){
//平安店的數(shù)據(jù) 這樣才能正確 而且還是線下店才好
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() {
// 當(dāng)前時(shí)間前一天的時(shí)間
Date currentDate = new Date(System.currentTimeMillis()-86400*1000*i);
i++;
// 查詢開始時(shí)間
Date queryStart = DateUtils.getDateStart(currentDate);
// 查詢結(jié)束時(shí)間
Date queryEnd = DateUtils.getDateEnd(currentDate);
String queryEndTime = DateUtils.formatDateTime(queryEnd);
String queryStartTime = DateUtils.formatDateTime(queryStart);
logger.info("查詢有贊后臺的開始時(shí)間"+queryStartTime);
logger.info("查詢有贊后臺的結(jié)束時(shí)間"+queryEndTime);
Date date = new Date();
String nowTime = DateUtils.formatDateTime(date);
logger.info("當(dāng)前查詢的時(shí)間"+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]);這個(gè)方法我要去區(qū)分是哪家零售店的數(shù)據(jù),同時(shí)在組裝json數(shù)據(jù),就不貼出來了
5、萬萬沒有想到
- 第三方接口有
bug,導(dǎo)致推送到第三方的數(shù)據(jù)總額不正確,我這一口老血啊,吐你一臉。 -
每個(gè)訂單的銷售收款總額竟然不等于里面的子訂單的總和!
問題


-
最后到了這一步,等待他們發(fā)版本
image.png -
2018.10.16 感動天,感動地,最后感動了自己,真心覺得,少扯皮的程序員太少了,不懂就問嘛,又不丟人,數(shù)據(jù)結(jié)果正確,等待發(fā)包了
一張無比可愛的圖 -
2018.10.18 為啥調(diào)通了,今天簽名失敗了!日了狗了
error

20181107更新上面的問題
由于最近在開發(fā)后臺,就一直忘了更新,簽名失敗的原因,是我電腦的問題,由于在加密
token的時(shí)候,獲取時(shí)間戳的時(shí)候,我的電腦時(shí)間快了2分鐘左右,哈哈雖然后續(xù)檢查出來,改正了,但是也給別人趙成了麻煩!希望后面的開發(fā)之旅越來越順利
-
20181205
-
由于對方的服務(wù)器宕機(jī)了,我也不知道他們?yōu)樯栋堰@個(gè)服務(wù)器給關(guān)閉了,然后一直推送不成功,我只好跑了本地的程序給他們推送
image.png
-
-
記錄下
cron表達(dá)式- */5 * * * * ? 每隔5秒執(zhí)行一次
- 0 */1 * * * ? 每隔1分鐘執(zhí)行一次
- 0 0 5-15 * * ? 每天5-15點(diǎn)整點(diǎn)觸發(fā)
- 0 0/3 * * * ? 每三分鐘觸發(fā)一次
- 0 0-5 14 * * ? 在每天下午2點(diǎn)到下午2:05期間的每1分鐘觸發(fā)
- 0 0/5 14 * * ? 在每天下午2點(diǎn)到下午2:55期間的每5分鐘觸發(fā)
- 0 0/5 14,18 * * ? 在每天下午2點(diǎn)到2:55期間和下午6點(diǎn)到6:55期間的每5分鐘觸發(fā)
- 0 0/30 9-17 * * ? 朝九晚五工作時(shí)間內(nèi)每半小時(shí)
- 0 0 10,14,16 * * ? 每天上午10點(diǎn),下午2點(diǎn),4點(diǎn)
作者:bigabo_1993
來源:CSDN
原文:https://blog.csdn.net/weixin_40426638/article/details/78959972
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!

















