个人第一个正式的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

六、最后说明几点

相关文章
相关标签/搜索