新增订单状态获取
This commit is contained in:
@ -3,6 +3,8 @@ package co.yixiang.enums;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hupeng
|
* @author hupeng
|
||||||
* 订单操作相关枚举
|
* 订单操作相关枚举
|
||||||
@ -23,6 +25,7 @@ public enum OrderLogEnum {
|
|||||||
CREATE_ORDER_SUCCESS("SUCCESS","订单创建成功"),
|
CREATE_ORDER_SUCCESS("SUCCESS","订单创建成功"),
|
||||||
CREATE_ORDER("yshop_create_order","订单生成"),
|
CREATE_ORDER("yshop_create_order","订单生成"),
|
||||||
NONE_ORDER("NONE","订单OK"),
|
NONE_ORDER("NONE","订单OK"),
|
||||||
|
DELIVERY_GOODS("delivery_goods", "订单发货"),
|
||||||
EXTEND_ORDER("EXTEND_ORDER","订单已生成");
|
EXTEND_ORDER("EXTEND_ORDER","订单已生成");
|
||||||
|
|
||||||
|
|
||||||
@ -31,5 +34,15 @@ public enum OrderLogEnum {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static OrderLogEnum toType(String value) {
|
||||||
|
return Stream.of(OrderLogEnum.values())
|
||||||
|
.filter(p -> p.value.equals(value))
|
||||||
|
.findAny()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDesc(String value) {
|
||||||
|
return toType(value) == null ? null : toType(value).desc;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import org.apache.commons.lang3.time.DateFormatUtils;
|
|||||||
import java.lang.management.ManagementFactory;
|
import java.lang.management.ManagementFactory;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -135,4 +136,19 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
|
|||||||
// long sec = diff % nd % nh % nm / ns;
|
// long sec = diff % nd % nh % nm / ns;
|
||||||
return day + "天" + hour + "小时" + min + "分钟";
|
return day + "天" + hour + "小时" + min + "分钟";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 秒转换为指定格式的日期
|
||||||
|
*
|
||||||
|
* @param second
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String secondToDate(long second) {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTimeInMillis(second * 1000);//转换为毫秒
|
||||||
|
Date date = calendar.getTime();
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
|
||||||
|
String dateString = format.format(date);
|
||||||
|
return dateString;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,50 @@
|
|||||||
|
package co.yixiang.modules.order.service.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import lombok.Data;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author :LionCity
|
||||||
|
* @date :Created in 2020-05-29 11:16
|
||||||
|
* @description:
|
||||||
|
* @modified By:
|
||||||
|
* @version:
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class YxOrderNowOrderStatusDto implements Serializable {
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(
|
||||||
|
pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8"
|
||||||
|
)
|
||||||
|
private Date cache_key_create_order;
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(
|
||||||
|
pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8"
|
||||||
|
)
|
||||||
|
private Date pay_success;
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(
|
||||||
|
pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8"
|
||||||
|
)
|
||||||
|
private Date delivery_goods;
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(
|
||||||
|
pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8"
|
||||||
|
)
|
||||||
|
private Date order_verific;
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(
|
||||||
|
pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8"
|
||||||
|
)
|
||||||
|
private Date user_take_delivery;
|
||||||
|
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||||
|
@JsonFormat(
|
||||||
|
pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8"
|
||||||
|
)
|
||||||
|
private Date check_order_over;
|
||||||
|
private int size;
|
||||||
|
}
|
@ -15,21 +15,23 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import co.yixiang.annotation.AnonymousAccess;
|
import co.yixiang.annotation.AnonymousAccess;
|
||||||
import co.yixiang.dozer.service.IGenerator;
|
import co.yixiang.dozer.service.IGenerator;
|
||||||
import co.yixiang.enums.OrderInfoEnum;
|
import co.yixiang.enums.OrderInfoEnum;
|
||||||
|
import co.yixiang.enums.OrderLogEnum;
|
||||||
import co.yixiang.enums.ShopCommonEnum;
|
import co.yixiang.enums.ShopCommonEnum;
|
||||||
import co.yixiang.exception.BadRequestException;
|
import co.yixiang.exception.BadRequestException;
|
||||||
import co.yixiang.logging.aop.log.Log;
|
import co.yixiang.logging.aop.log.Log;
|
||||||
import co.yixiang.modules.aop.ForbidSubmit;
|
import co.yixiang.modules.aop.ForbidSubmit;
|
||||||
import co.yixiang.modules.order.domain.YxStoreOrder;
|
import co.yixiang.modules.order.domain.YxStoreOrder;
|
||||||
|
import co.yixiang.modules.order.domain.YxStoreOrderStatus;
|
||||||
import co.yixiang.modules.order.param.ExpressParam;
|
import co.yixiang.modules.order.param.ExpressParam;
|
||||||
import co.yixiang.modules.order.service.YxStoreOrderService;
|
import co.yixiang.modules.order.service.YxStoreOrderService;
|
||||||
import co.yixiang.modules.order.service.YxStoreOrderStatusService;
|
import co.yixiang.modules.order.service.YxStoreOrderStatusService;
|
||||||
import co.yixiang.modules.order.service.dto.OrderCountDto;
|
import co.yixiang.modules.order.service.dto.*;
|
||||||
import co.yixiang.modules.order.service.dto.YxStoreOrderDto;
|
|
||||||
import co.yixiang.modules.order.service.dto.YxStoreOrderQueryCriteria;
|
|
||||||
import co.yixiang.tools.express.ExpressService;
|
import co.yixiang.tools.express.ExpressService;
|
||||||
import co.yixiang.tools.express.config.ExpressAutoConfiguration;
|
import co.yixiang.tools.express.config.ExpressAutoConfiguration;
|
||||||
import co.yixiang.tools.express.dao.ExpressInfo;
|
import co.yixiang.tools.express.dao.ExpressInfo;
|
||||||
|
import co.yixiang.utils.DateUtils;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@ -53,8 +55,10 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author hupeng
|
* @author hupeng
|
||||||
@ -132,8 +136,48 @@ public class StoreOrderController {
|
|||||||
public ResponseEntity getYxStoreOrders(@PathVariable Long id) {
|
public ResponseEntity getYxStoreOrders(@PathVariable Long id) {
|
||||||
return new ResponseEntity<>(yxStoreOrderService.getOrderDetail(id), HttpStatus.OK);
|
return new ResponseEntity<>(yxStoreOrderService.getOrderDetail(id), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
@ApiOperation(value = "查询订单当前状态流程")
|
||||||
|
@GetMapping(value = "/getNowOrderStatus/{id}")
|
||||||
|
public ResponseEntity getNowOrderStatus(@PathVariable Long id) {
|
||||||
|
List<String> statusList = new ArrayList<>();
|
||||||
|
statusList.add(OrderLogEnum.CREATE_ORDER.getValue());
|
||||||
|
statusList.add(OrderLogEnum.PAY_ORDER_SUCCESS.getValue());
|
||||||
|
statusList.add(OrderLogEnum.DELIVERY_GOODS.getValue());
|
||||||
|
statusList.add(OrderLogEnum.TAKE_ORDER_DELIVERY.getValue());
|
||||||
|
statusList.add(OrderLogEnum.EVAL_ORDER.getValue());
|
||||||
|
List<YxStoreOrderStatus> orderStatusLogList = yxStoreOrderStatusService.list(new LambdaQueryWrapper<YxStoreOrderStatus>().eq(YxStoreOrderStatus::getOid, id).in(YxStoreOrderStatus::getChangeType, statusList).orderByDesc(YxStoreOrderStatus::getChangeTime));
|
||||||
|
List<YxStoreOrderStatusDto> dtoList = getOrderStatusDto(orderStatusLogList);
|
||||||
|
YxOrderNowOrderStatusDto yxOrderNowOrderStatusDto = new YxOrderNowOrderStatusDto();
|
||||||
|
yxOrderNowOrderStatusDto.setSize(dtoList.size());
|
||||||
|
dtoList.forEach(dto -> {
|
||||||
|
if (OrderLogEnum.CREATE_ORDER.getDesc().equals(dto.getChangeType())) {
|
||||||
|
yxOrderNowOrderStatusDto.setCache_key_create_order(dto.getChangeTime());
|
||||||
|
}
|
||||||
|
if (OrderLogEnum.PAY_ORDER_SUCCESS.getDesc().equals(dto.getChangeType())) {
|
||||||
|
yxOrderNowOrderStatusDto.setPay_success(dto.getChangeTime());
|
||||||
|
}
|
||||||
|
if (OrderLogEnum.DELIVERY_GOODS.getDesc().equals(dto.getChangeType())) {
|
||||||
|
yxOrderNowOrderStatusDto.setDelivery_goods(dto.getChangeTime());
|
||||||
|
}
|
||||||
|
if (OrderLogEnum.TAKE_ORDER_DELIVERY.getDesc().equals(dto.getChangeType())) {
|
||||||
|
yxOrderNowOrderStatusDto.setUser_take_delivery(dto.getChangeTime());
|
||||||
|
yxOrderNowOrderStatusDto.setOrder_verific(dto.getChangeTime());
|
||||||
|
}
|
||||||
|
if (OrderLogEnum.EVAL_ORDER.getDesc().equals(dto.getChangeType())) {
|
||||||
|
yxOrderNowOrderStatusDto.setCheck_order_over(dto.getChangeTime());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return new ResponseEntity(yxOrderNowOrderStatusDto, HttpStatus.OK);
|
||||||
|
}
|
||||||
|
public List<YxStoreOrderStatusDto> getOrderStatusDto(List<YxStoreOrderStatus> orderStatusLogList) {
|
||||||
|
List<YxStoreOrderStatusDto> dtoList = orderStatusLogList.stream().map(log -> {
|
||||||
|
YxStoreOrderStatusDto dto = generator.convert(log, YxStoreOrderStatusDto.class);
|
||||||
|
dto.setChangeType(OrderLogEnum.getDesc(dto.getChangeType()));
|
||||||
|
dto.setChangeTime(log.getChangeTime());
|
||||||
|
return dto;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
return dtoList;
|
||||||
|
}
|
||||||
@ApiOperation(value = "发货")
|
@ApiOperation(value = "发货")
|
||||||
@PutMapping(value = "/yxStoreOrder")
|
@PutMapping(value = "/yxStoreOrder")
|
||||||
@PreAuthorize("hasAnyRole('admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT')")
|
@PreAuthorize("hasAnyRole('admin','YXSTOREORDER_ALL','YXSTOREORDER_EDIT')")
|
||||||
|
Reference in New Issue
Block a user