- Предыстория проекта: у компании есть новый розничный магазин, арендодатель должен взимать арендную плату в соответствии с ежедневными продажами и должен в фоновом режиме передавать данные о ежедневных заказах третьей стороне. Ключевым моментом является то, что эти данные находятся не в нашем закулисье, а в закулисье Youzan.Из-за нехватки рабочей силы в компании руководитель напрямую устроил мне это, ладно! Загрузка Андроида не насыщена, а бэкенд грядет!
- пройти через
Http
Запросить сторонние необработанные данные, а затем сшить необработанные данные в нужныеjson
, затем используйтеWebServices
Пуш на третьих лиц!Это просто такой процесс.
1. Стыковка с группой WeChat, стыковка документов
-
какого хрена? ? ? черный знак вопроса,
WebServices
В первый раз, когда вы проводите внутренний код, вы можете дать мне егоWebServices
Да как мне играть? Выпейте немного воды, успокойтесь и поблагодарите главного босса компании Хунчжэня за его идеи! -
Здесь есть эпизод.Документ стыковки,предоставленный другими,неверный.Меня это реально убивает,новичка.Хочется тут поругать людей.Мне на несколько секунд жалко малыша,который не младенец!
-
Найдите интерфейс, предоставленный документом, если к нему можно получить доступ, то первый шаг должен быть в порядке.
2. Создайте соответствующий пакет jar
- Спасибо за статьюСоздайте WebServiceClient (клиент WS) в Intellij Idea
- Получил тестовый адрес, доступ нормальный.
ide
Сгенерируйте код, чтобы начать движение, следующие шаги
- Я столкнулся с проблемой, спасибо за этоОбходной путь для пакета junit.framework не существует
- Если все пойдет хорошо, вы увидите этот интерфейс
3. Теперь проблема состоит в том, чтобы превратить эту кучу кода в банку
- Спасибо этому блогу за помощьИдея превращает java-файл в недавно написанном проекте в метод пакета jar
- Генерируются следующие файлы
-
нажмите
Build
-
Затем перейдите в выходной каталог, чтобы найти пакет jar.
-
Это то, что я могу использовать
jar
, Если позже вам потребуется перейти на формальный адрес, вам также необходимо сгенерировать формальный адресjar
3, сгенерированныйjar
помещатьMaven Nexus3
-
У меня нет разрешения! Привет
-
К счастью, наш архитектор помог мне загрузить его.
-
настроить
pom
<dependency>
<groupId>net.ticp.asiatic</groupId>
<artifactId>ftp-pingan-sdk</artifactId>
<version>1.0.0</version>
</dependency>
- запустить проект,
what fuck ???
- Блин, я не знаю этой ошибки! Спросите босса, еще раз спасибо за вашу помощь.
4. Напишите логику кода
- Еще раз спасибо другому большому человеку в компании, Мао Мао, потому что этот процесс заключается в том, что я запрашиваю серверную часть третьей стороны для получения ключевых данных, а затем интегрирую ключевые данные через
WebServices
передать третьим лицам. Я человек Android, у которого мало опыта в этой области, и он выполнил небольшой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
, общий объем данных, переданных третьей стороне, неверен. - Общая сумма товарных чеков по каждому заказу не равна сумме подзаказов в нем!
- Наконец добрался до этого шага, жду когда выпустят версию
6. Несколько заключительных замечаний
- Спасибо боссу компании за помощь
- Особая благодарность Hongzhen за вашу поддержку
- Спасибо за блог за мою помощь
- Эта статья генерирует данные
- В то же время, я хотел бы поблагодарить моего хорошего одноклассника Бого за его большую помощь, а также предоставленную
Demo
,большое спасибо! - Информация от Бого