提交 b035dfc7 authored 作者: Whispa's avatar Whispa

commit commit

上级 4bc1e550
......@@ -71,8 +71,6 @@ public class TbCfItemOrderR {
private String shopId;
@JsonIgnore @ManyToOne
private TbCfOrder order;
......
......@@ -3,6 +3,7 @@ package com.example.afrishop_v3.models;
import com.example.afrishop_v3.base.StateConstant;
import com.example.afrishop_v3.enums.OrderStatusEnum;
import com.example.afrishop_v3.util.IdUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.annotations.Where;
......@@ -156,6 +157,11 @@ public class TbCfOrder {
*/
private String remarkInfo;
@JsonIgnore
@JoinColumn(columnDefinition = "user_id",name = "user_id")
@ManyToOne(fetch = FetchType.LAZY)
private TbCfUserInfo userInfo;
@Transient
private TbCfExpressTemplate defaultTemplate;
......@@ -170,6 +176,12 @@ public class TbCfOrder {
@OneToMany(mappedBy = "orderId", cascade = CascadeType.ALL)
private List<TbCfItemOrderR> itemOrderList = new ArrayList<>();
@JsonIgnore
public TbCfUserInfo getUserInfo() {
return userInfo;
}
/**
* 设置:订单id
*/
......
package com.example.afrishop_v3.models;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
......@@ -77,6 +77,10 @@ public class TbCfPlatformOrder {
*/
private Integer logisticsStatus;
@JsonIgnore @JoinColumn(columnDefinition = "order_id",name = "order_id")
@ManyToOne(fetch = FetchType.LAZY)
private TbCfOrder order;
/**
* 设置:对应id
*/
......@@ -97,6 +101,12 @@ public class TbCfPlatformOrder {
this.orderId = orderId;
}
@JsonIgnore
public TbCfOrder getOrder() {
return order;
}
/**
* 获取:订单id
*/
......
package com.example.afrishop_v3.models;
/**
* @Auther: wudepeng
* @Date: 2020/05/25
* @Description:
*/
public class Time {
private String startTime;
private String endTime;
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
}
package com.example.afrishop_v3.quartz;
import com.example.afrishop_v3.enums.DeliveryStatusEnum;
import com.example.afrishop_v3.models.TbCfOrder;
import com.example.afrishop_v3.models.TbCfPlatformOrder;
import com.example.afrishop_v3.models.Time;
import com.example.afrishop_v3.repository.TbCfOrderRepository;
import com.example.afrishop_v3.repository.TbCfPlatformOrderRepository;
import com.example.afrishop_v3.util.HttpClientUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* @Author : wudepeng
* @Date: 2020/05/25
* @Description:物流任务
*/
@Component
public class LogisticsTask {
private static Logger logger = LoggerFactory.getLogger(LogisticsTask.class);
private final TbCfOrderRepository orderRepository;
private final TbCfPlatformOrderRepository platformOrderRepository;
@Value("${logistics.track}")
private String TRACK_API;
@Value("${logistics.sign}")
private String SIGN_API;
@Value("${logistics.stock}")
private String STOCK_API;
@Value("${logistics.user}")
private String USER_NO;
@Value("${logistics.token}")
private String TOKEN;
@Value("${logistics.add_order}")
private String ADD_ORDER_API;
public LogisticsTask(TbCfOrderRepository orderRepository, TbCfPlatformOrderRepository platformOrderRepository) {
this.orderRepository = orderRepository;
this.platformOrderRepository = platformOrderRepository;
}
//===================================================
//
//##定时查询意境通物流订单,然后将数据库订单进行相应的修改
//##物流状态 20:已到达中国仓 40:已到达非洲仓 50:已签收
//
//===================================================
/**
* 调用意境通API,查询已到达中国仓的订单,修改数据库订单状态为20
*
* @throws Exception
*/
@Scheduled(cron = "0 0 0/2 * * ? ")
public void chainaWarehouse() throws Exception {
//封装请求参数
Map<String, Object> paramMap = getParamMap();
paramMap.put("incomeid", 855);
//发送请求
afterLogistics(STOCK_API, paramMap, DeliveryStatusEnum.ON_LOAD.getValue());
}
/**
* 调用意境通API,查询已到达非洲的订单,修改数据库订单状态为40
*
* @throws Exception
*/
@Scheduled(cron = "0 0 0/2 * * ? ")
public void africanWarehouse() throws Exception {
//封装请求参数
Map<String, Object> paramMap = getParamMap();
paramMap.put("incomeid", 1170);
//发送请求
afterLogistics(STOCK_API, paramMap, DeliveryStatusEnum.ON_AFRICA.getValue());
}
/**
* 调用意境通API,查询已签收的订单,修改数据库订单状态为50
*
* @throws Exception
*/
@Scheduled(cron = "0 0 0/2 * * ? ")
public void signed() throws Exception {
Map<String, Object> paramMap = getParamMap();
afterLogistics(SIGN_API, paramMap, DeliveryStatusEnum.ARRIVALS.getValue());
}
//公共处理方法
public void afterLogistics(String API, Map paramMap, Integer status) throws Exception {
String body = HttpClientUtil.sendPostWithBodyParameter(API, paramMap);
JSONObject jsonObject = JSONObject.fromObject(body);
System.out.println(jsonObject);
JSONArray jsonArray = jsonObject.getJSONObject("content").getJSONArray("data");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
//快递单号
String expressNumber = object.getString("sid");
Optional<TbCfPlatformOrder> platformOrder = platformOrderRepository.findFirstByPExpressNumber(expressNumber);
if (platformOrder.isPresent()) {
TbCfPlatformOrder cfPlatformOrder = platformOrder.get();
Optional<TbCfOrder> order = orderRepository.findById(cfPlatformOrder.getOrderId());
if (order.isPresent()) {
TbCfOrder cfOrder = order.get();
cfOrder.setDeliveryFlag(status);
orderRepository.save(cfOrder);
}
}
}
}
//封装公共的请求参数
public Map<String, Object> getParamMap() throws ParseException {
Map<String, Object> paramMap = new HashMap<>();
Time time = getTime();
paramMap.put("user_no", USER_NO);
paramMap.put("token", TOKEN);
logger.info("开始时间:" + time.getStartTime());
logger.info("结束时间:" + time.getEndTime());
paramMap.put("startime", time.getStartTime());
paramMap.put("endtime", time.getEndTime());
return paramMap;
}
//封装时间
public Time getTime() throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Time time = new Time();
Date date = dateFormat.parse(dateFormat.format(new Date()));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, -2);
time.setStartTime(dateFormat.format(calendar.getTime()));
time.setEndTime(dateFormat.format(new Date()));
return time;
}
}
package com.example.afrishop_v3.quartz;
import com.example.afrishop_v3.repository.TbCfExchangeRepository;
import com.example.afrishop_v3.repository.UserRepository;
import com.example.afrishop_v3.util.HttpClientUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URISyntaxException;
@Component
public class QuartzMethod {
private final UserRepository userRepository;
private final TbCfExchangeRepository exchangeRepository;
public QuartzMethod(UserRepository userRepository, @Qualifier("tbCfExchangeRepository") TbCfExchangeRepository exchangeRepository) {
this.userRepository = userRepository;
this.exchangeRepository = exchangeRepository;
}
// //@Scheduled(cron = "0 0/1 * * * ? ")
// public void sendEmail() throws EmailException, TemplateException, IOException {
// System.out.println("////////////////////////////////////////////////////");
// String email= tbCfUserInfoService.findEmails();
// // String email= "1203063316@qq.com";
// if(email!=null){
// String s = tbCfUserInfoService.sendRegister(email);
// if(s!=null){
// System.out.println("已发送邮件:"+email);
// }
// }
// }
/**
* 美元-克瓦查
* @throws IOException
* @throws URISyntaxException
*/
@Scheduled(cron = "0 0 3 * * ?")
public void getRent() throws IOException, URISyntaxException {
String content = HttpClientUtil.getContentByUrl("https://cn.valutafx.com/USD-ZMW.htm?amount=1", "rent");
// 解析为 Document 对象
Document document = Jsoup.parse(content);
String rent = document.select("div[class=rate-value]").text();
BigDecimal rate=new BigDecimal(rent);
String type="USD-ZMW";
exchangeRepository.updateByType(type,rate);
}
/**
* 美元-人民币
* @throws IOException
* @throws URISyntaxException
*/
@Scheduled(cron = "0 0 3 * * ?")
public void getRate() throws IOException, URISyntaxException {
String content = HttpClientUtil.getContentByUrl("https://cn.valutafx.com/USD-CNY.htm?amount=1", "rent");
// 解析为 Document 对象
Document document = Jsoup.parse(content);
String rent = document.select("div[class=rate-value]").text();
BigDecimal rate=new BigDecimal(rent);
String type="USD-CNY";
exchangeRepository.updateByType(type,rate);
}
}
package com.example.afrishop_v3.repository;
import com.example.afrishop_v3.models.TbCfExchange;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
@Service("tbCfExchangeRepository")
public interface TbCfExchangeRepository extends PagingAndSortingRepository<TbCfExchange,String> {
TbCfExchange findByExchangeCurrency(String exchangeCurrency);
@Transactional
@Query(value = "update tb_cf_exchange WHERE type=:type SET exchange_rate = :rate ",nativeQuery = true)
@Modifying
void updateByType(@Param("type") String type,@Param("rate") BigDecimal rate);
}
......@@ -3,5 +3,8 @@ package com.example.afrishop_v3.repository;
import com.example.afrishop_v3.models.TbCfItemOrderR;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
public interface TbCfItemOrderRepository extends PagingAndSortingRepository<TbCfItemOrderR,String> {
List<TbCfItemOrderR> findAllByOrderId(String orderId);
}
......@@ -4,7 +4,9 @@ import com.example.afrishop_v3.models.TbCfItemSkus;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Optional;
public interface TbCfItemSkuRepository extends PagingAndSortingRepository<TbCfItemSkus,String> {
List<TbCfItemSkus> findAllByItemIdOrderByOrderNumAsc(String itemId);
Optional<TbCfItemSkus> findFirstByItemId(String itemId);
}
......@@ -3,8 +3,15 @@ package com.example.afrishop_v3.repository;
import com.example.afrishop_v3.models.TbCfOrder;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import java.util.Date;
import java.util.List;
public interface TbCfOrderRepository extends PagingAndSortingRepository<TbCfOrder,String> {
Page<TbCfOrder> findAllByUserId(String userId, Pageable pageable);
@Query(value = "select a from #{#entityName} a where :now > SUBDATE(a.orderTime,interval -1 day) and order_status=10")
List<TbCfOrder> getTimeoutOrders(@Param("now") Date date);
}
......@@ -3,5 +3,10 @@ package com.example.afrishop_v3.repository;
import com.example.afrishop_v3.models.TbCfPlatformOrder;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.util.List;
import java.util.Optional;
public interface TbCfPlatformOrderRepository extends PagingAndSortingRepository<TbCfPlatformOrder,String> {
Optional<TbCfPlatformOrder> findFirstByPExpressNumber(String pExpressNumber);
List<TbCfPlatformOrder> findAllByLogisticsStatus(Integer logisticsStatus);
}
......@@ -52,9 +52,9 @@ dpo:
#服务类型
service_type: 5525
#回调地址
notify_url: http://165.22.82.105:7000/zion/dpo/notify
notify_url: http://159.138.48.71:8080/zion/dpo/notify
#取消地址
back_url: http://165.22.82.105:7000/zion/dpo/cancel
back_url: http://159.138.48.71:8080/zion/dpo/cancel
#支付成功页面
success_url: https://dev.diaosaas.com/afrishop_web/payment_successful
#支付失败页面
......@@ -69,7 +69,7 @@ dpo:
flutter:
pay_url: https://ravesandboxapi.flutterwave.com/flwv3-pug/getpaidx/api/v2/verify
refund_url: https://api.ravepay.co/gpx/merchant/transactions/refund
redirect_url: http://165.22.82.105:7000/zion/flutterwave/notify
redirect_url: http://159.138.48.71:8080/zion/flutterwave/notify
public_key: FLWPUBK_TEST-e3cc948e7cb24b2128fca3b781f6fce0-X
secret_key: FLWSECK_TEST-f88371ca63a989a4af95625475a0d22d-X
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论