嘉士利订单服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

155 lines
5.9 KiB

3 years ago
package com.qs.cost.module.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.cost.common.consts.ApiUrlConst;
3 years ago
import com.qs.cost.common.dto.HttpResult;
import com.qs.cost.common.dto.R;
import com.qs.cost.common.utils.*;
3 years ago
import com.qs.cost.module.domain.GetListEntity;
import com.qs.cost.module.domain.LzOrder;
import com.qs.cost.module.domain.LzResponseLog;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
3 years ago
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
3 years ago
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
3 years ago
/**
* @author YenHex
* @since 2022/7/6
*/
@Slf4j
3 years ago
public class JiaJinService {
@Autowired LzResponseLogService responseLogService;
@Autowired LzOrderService lzOrderService;
3 years ago
/**
* 请求量子app获取订单
* @param page
*/
3 years ago
public void query(Integer page){
if(page==null){
page = 1;
}
Date now = new Date();
Date lastMonth = DateUtil.getAfterSomedate(now,-1, Calendar.MONTH);
String date = DateUtil.formatDate(now,DateUtil.FORMAT_SIMPLE_DATE2)+"-"+DateUtil.formatDate(lastMonth,DateUtil.FORMAT_SIMPLE_DATE2);
String pageSize = "10";
String params = "date="+date+"&page="+page+"&page_size="+pageSize;
String signParam = ApiUrlConst.lzyunli + params + ApiUrlConst.lzyunli;
3 years ago
String sign = SecureUtil.md5(signParam);
params = params+"&sign="+sign;
String url = "http://wsapp6.lzyunli.com/index.php/getOrder?"+params;
HttpResult httpResult = HttpUtil.get(url);
if(httpResult.getCode()==200){
String json = httpResult.getData();
GetListEntity getListEntity = JsonUtil.jsonToPojo(json,GetListEntity.class);
if(getListEntity==null){
return;
}
//保存请求json
LzResponseLog responseLog = new LzResponseLog();
responseLog.setJson(json);
responseLogService.save(responseLog);
GetListEntity.OtherEntity otherEntity = getListEntity.getOther();
//解析请求json,并保存订单到数据库
for (GetListEntity.OrderEntity orderEntity : getListEntity.getList()) {
LzOrder lzOrder = new LzOrder();
lzOrder.setOrderNo(orderEntity.getOrderNo());
lzOrder.setOrderAmount(orderEntity.getOrderAmount());
lzOrder.setShippingFare(orderEntity.getShippingFare());
lzOrder.setConsignee(orderEntity.getConsignee());
lzOrder.setConsigneeMobile(orderEntity.getConsigneeMobile());
lzOrder.setProvinces(orderEntity.getProvinces());
lzOrder.setDetailedAddress(orderEntity.getDetailedAddress());
lzOrder.setSaleType(otherEntity.getSalesType());
lzOrder.setSaleDept(otherEntity.getSalesClass());
lzOrder.setSaleMan(otherEntity.getSalesMan());
String itemJson = orderEntity.getItems().toString();
lzOrder.setItems(itemJson);
lzOrder.setCheckStatus(0);
List<GetListEntity.ItemEntity> items = JsonUtil.jsonToList(itemJson,GetListEntity.ItemEntity.class);
if(items!=null&&items.size()>0){
for (GetListEntity.ItemEntity item : items) {
if(StringUtil.isEmpty(item.getInvCode())){
lzOrder.setCheckStatus(1);
break;
}
}
}else {
lzOrder.setCheckStatus(2);
}
try {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime orderCreateTime = LocalDateTime.parse(orderEntity.getCreateTime(),df);
lzOrder.setOrderCreateTime(orderCreateTime);
} catch (Exception e) {
log.error(e.getMessage());
}
lzOrderService.save(lzOrder);
}
3 years ago
Integer pageCount = getListEntity.getPageCount();
if(pageCount!=null&&pageCount.equals(page)){
return;
}else {
query(page+1);
}
}
System.out.println();
}
public void task(){
//获取未同步订单,调用U8服务
LambdaQueryWrapper<LzOrder> lqw = new LambdaQueryWrapper<>();
lqw.eq(LzOrder::getStatus,0);
lqw.eq(LzOrder::getCheckStatus,0);
List<LzOrder> orders = lzOrderService.list(lqw);
for (LzOrder order : orders) {
//TODO 发起U8服务中台
order.setStatus(1);
order.setUpdateTime(LocalDateTime.now());
}
lzOrderService.updateBatchById(orders);
}
3 years ago
/**
* U8中台回调接口
* @return
*/
public R<?> callback(){
//
3 years ago
//接收U8请求
String orderNo = "";
LambdaQueryWrapper<LzOrder> lqw = new LambdaQueryWrapper<>();
lqw.eq(LzOrder::getOrderNo,orderNo);
LzOrder lzOrder = lzOrderService.getOne(lqw,false);
//发送量子App更新订单状态
String params = "orderNos="+orderNo;
String signParam = ApiUrlConst.lzyunli + params + ApiUrlConst.lzyunli;
String sign = SecureUtil.md5(signParam);
String url = "http://wsapp6.lzyunli.com/index.php/upOrder";
Map<String, Object> paramMap = new HashMap<>(10);
paramMap.put("orderNos",orderNo);
paramMap.put("sign",sign);
HttpResult httpResult = HttpUtil.post(url,paramMap);
lzOrder.setCallBackStatus(2);
if(httpResult.getCode()==200){
if(httpResult.getData().contains("true")){
lzOrder.setCheckStatus(1);
}
}
lzOrderService.updateById(lzOrder);
3 years ago
return R.ok();
}
}