package com.taoke.autopay.factory;
|
|
import com.google.gson.Gson;
|
import com.taoke.autopay.entity.ClientInfo;
|
import com.taoke.autopay.entity.KeyOrder;
|
import com.taoke.autopay.entity.OrderChannelEnum;
|
import com.taoke.autopay.entity.WxUserOrderCount;
|
import com.taoke.autopay.entity.agent.ChannelAgent;
|
import com.taoke.autopay.utils.Constant;
|
import com.taoke.autopay.utils.IPUtil;
|
import com.taoke.autopay.utils.StringUtil;
|
import com.taoke.autopay.utils.TimeUtil;
|
import com.taoke.autopay.utils.order.OrderChannelUtil;
|
import com.taoke.autopay.vo.AgentOrderVO;
|
import com.taoke.autopay.vo.UserInfoVO;
|
import com.taoke.autopay.vo.admin.AdminOrderVO;
|
import com.taoke.autopay.vo.KeyOrderVO;
|
|
import java.math.BigDecimal;
|
|
/**
|
* @author hxh
|
* @title: OrderFactory
|
* @description:
|
* @date 2024/6/14 17:42
|
*/
|
public class OrderFactory {
|
|
public static String createId(String key) {
|
String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyMMdd");
|
return StringUtil.Md5(day + key);
|
}
|
|
public static KeyOrderVO create(KeyOrder order) {
|
KeyOrderVO vo = new KeyOrderVO();
|
vo.setCreateTime(order.getCreateTime());
|
vo.setId(order.getId());
|
vo.setKey(order.getKey());
|
switch (order.getState()) {
|
case KeyOrder.STATE_NOT_PROCESS:
|
vo.setState(KeyOrderVO.STATE_NOT_PROCESS);
|
break;
|
case KeyOrder.STATE_NOT_PAY:
|
vo.setState(KeyOrderVO.STATE_PROCESS_ERROR);
|
break;
|
case KeyOrder.STATE_PAY:
|
vo.setState(KeyOrderVO.STATE_PROCESSED);
|
break;
|
case KeyOrder.STATE_REJECT_PAY:
|
vo.setState(KeyOrderVO.STATE_PROCESSED);
|
break;
|
}
|
vo.setPayType(order.getPayType());
|
return vo;
|
}
|
|
public static AgentOrderVO createAgentOrder(KeyOrder order, BigDecimal money) {
|
|
String time=TimeUtil.getGernalTime(order.getCreateTime().getTime(), "yyyy.MM.dd HH:mm:ss");
|
time = time.replace(" ","<br>");
|
return AgentOrderVO.builder()
|
.payMoney(order.getOrderMoney()!=null?order.getOrderMoney().toString():"未知")
|
.settleMoney(money.toString())
|
.createTime(time)
|
.valid(order.getPayTime() != null && order.getState() == KeyOrder.STATE_PAY)
|
.user(order.getUser() != null ? UserInfoVO.builder().id(order.getUser().getId()).nickName(order.getUser().getNickName()).portrait(order.getUser().getPortrait()).build() : null)
|
.build();
|
}
|
|
private static String getOrderStateDesc(Integer orderState, Integer orderType) {
|
|
if (orderState == null || orderType == null) {
|
return "未知";
|
}
|
if (orderType == Constant.ORDER_TYPE_DY) {
|
// 1 待确认/待支付-订单创建完毕:105-已支付;2-备货中;101-部分发货;3-已发货(全部发货):4-已取消:5 已完成(已收货);
|
|
switch (orderState) {
|
case 1:
|
return "待确认/待支付";
|
case 105:
|
return "已支付";
|
case 2:
|
return "备货中";
|
case 101:
|
return "已发货(全部发货)";
|
case 4:
|
return "已取消";
|
case 5:
|
return " 已完成(已收货);";
|
default:
|
return "状态码:" + orderState;
|
}
|
}
|
return "未知";
|
|
}
|
|
public static AdminOrderVO createAdminVO(KeyOrder order, ClientInfo info, ChannelAgent agent) {
|
AdminOrderVO vo = new AdminOrderVO();
|
vo.setCreateTime(order.getCreateTime());
|
vo.setId(order.getId());
|
vo.setKey(order.getKey());
|
vo.setState(order.getState());
|
vo.setStateDesc(order.getStateDesc());
|
vo.setOrderStateDesc(getOrderStateDesc(order.getOrderState(), order.getOrderType()));
|
vo.setExcutePayTime(order.getExcutePayTime());
|
vo.setPayTime(order.getPayTime());
|
vo.setOrderNo(order.getOrderNo());
|
vo.setOrderType(order.getOrderType());
|
vo.setDistributedTime(order.getDistributeTime());
|
vo.setDistributedClientInfo(info);
|
vo.setUid(order.getUid());
|
OrderChannelEnum orderChannel=OrderChannelUtil.getChannelByKey(order.getOrderChannel());
|
vo.setOrderChannel(orderChannel==null?"未知":orderChannel.getName());
|
vo.setPayMerchant(order.getPayMerchant());
|
vo.setIp(order.getIp());
|
vo.setIgnore(order.getIgnore());
|
if(!StringUtil.isNullOrEmpty(order.getIpInfo())){
|
vo.setIpInfo(new Gson().fromJson(order.getIpInfo(), IPUtil.IPInfo.class));
|
}
|
if(agent!=null){
|
vo.setAgent(agent.getName());
|
}else{
|
vo.setAgent("");
|
}
|
|
return vo;
|
}
|
|
public static String createId(WxUserOrderCount orderCountInfo) {
|
return String.format("%s-%s-%s-%s", orderCountInfo.getDay(), orderCountInfo.getUid(), orderCountInfo.getOrderType(),orderCountInfo.getOrderChannel()==null?"": orderCountInfo.getOrderChannel().name());
|
}
|
|
|
}
|