我的第一个正式的Java后端程序(一)

  • 项目背景: 公司有家新零售店,出租方是要根据每天的销售额度去收取租金,需要把后台的每天的订单数据给推送到第三方。关键这个数据不在我们的后台,是在有赞后台,由于公司人手紧张,领导直接安排我做,好吧!安卓工作量不饱和,后端来凑!
  • 通过Http请求获取第三方原始数据,然后把原始数据拼接成想要的json,然后使用WebServices推送到第三方!就是这么的一个过程。

1、对接微信群,对接文档开干

微信群

image.png
  • what fuck???黑人问号, WebServices 第一次撸后端代码,你就给我来个WebServices的,我怎么玩?喝点水,冷静下,在此感谢公司的后端大佬宏真哥给出的思路!

  • 在这里有个插曲,别人提供的对接文档是错误,真的是搞死我这个小白了,在这里想骂人,心疼宝宝几秒,谁不是个宝宝啊!


    image.png
  • 找到文档提供的接口,如果能够正常的访问的话,那么第一步就应该可以了


    正常访问的结果

2、生成对应的jar包

2

3、那么现在的问题是把这堆代码打成jar

2
  • 生成了如下的文件


    3
4
  • 点击 Build

    5

  • 接下来就去输出目录找jar包了


    6
  • 这就是我可以使用的 jar,如果后续需要改为正式的地址,还需要生成一个正式的jar

3、把生成的 jar放到Maven Nexus3

  • 我没有权限!哎哎


    image.png
  • 还好我们架构师帮我上传了


    2
  • 配置pom

       <dependency>
            <groupId>net.ticp.asiatic</groupId>
            <artifactId>ftp-pingan-sdk</artifactId>
            <version>1.0.0</version>
        </dependency>
  • 开始运行项目, what fuck ???
    问题
  • 完蛋,这个错误不认识啊!问大佬,再次感谢大佬的相助。


    1

4、写代码逻辑

  • 再次感谢公司的另外一个大佬毛毛,因为这个流程是我请求第三方的后台然后获取关键数据,然后把关键数据整合通过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数据,就不贴出来了

5、万万没有想到

  • 第三方接口有bug,导致推送到第三方的数据总额不正确,我这一口老血啊,吐你一脸。
  • 每个订单的销售收款总额竟然不等于里面的子订单的总和!


    问题
image.png
image.png
  • 最后到了这一步,等待他们发版本


    image.png
  • 2018.10.16 感动天,感动地,最后感动了自己,真心觉得,少扯皮的程序员太少了,不懂就问嘛,又不丢人,数据结果正确,等待发包了


    一张无比可爱的图
  • 2018.10.18 为啥调通了,今天签名失败了!日了狗了


    error
哎哎
  • 20181107更新上面的问题

  • 由于最近在开发后台,就一直忘了更新,签名失败的原因,是我电脑的问题,由于在加密token的时候,获取时间戳的时候,我的电脑时间快了2分钟左右,哈哈

  • 虽然后续检查出来,改正了,但是也给别人赵成了麻烦!希望后面的开发之旅越来越顺利

  • 20181205

    • 由于对方的服务器宕机了,我也不知道他们为啥把这个服务器给关闭了,然后一直推送不成功,我只好跑了本地的程序给他们推送


      image.png
  • 记录下 cron表达式

    • */5 * * * * ? 每隔5秒执行一次
    • 0 */1 * * * ? 每隔1分钟执行一次
    • 0 0 5-15 * * ? 每天5-15点整点触发
    • 0 0/3 * * * ? 每三分钟触发一次
    • 0 0-5 14 * * ? 在每天下午2点到下午2:05期间的每1分钟触发
    • 0 0/5 14 * * ? 在每天下午2点到下午2:55期间的每5分钟触发
    • 0 0/5 14,18 * * ? 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
    • 0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
    • 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点

作者:bigabo_1993
来源:CSDN
原文:https://blog.csdn.net/weixin_40426638/article/details/78959972
版权声明:本文为博主原创文章,转载请附上博文链接!

6、最后说明几点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容