diff --git a/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java b/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java index 32bfd43..3b92fd9 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java +++ b/api-mapper/src/main/java/com/heyu/api/data/utils/SanUtils.java @@ -1,13 +1,12 @@ package com.heyu.api.data.utils; -import com.alibaba.fastjson.JSON; import com.heyu.api.common.LBiFunction0; import com.heyu.api.common.test.AriseUser; -import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.ClassUtils; import org.junit.Test; +import org.springframework.beans.BeanUtils; import java.lang.invoke.SerializedLambda; import java.lang.reflect.Method; @@ -55,9 +54,6 @@ public class SanUtils { } - - - public static List setNull(List values, LBiFunction0... functions) { List list = new ArrayList<>(); try { @@ -81,6 +77,23 @@ public class SanUtils { } + public static List convert2list(List values, Class clazz) { + List list = new ArrayList<>(); + if (CollectionUtils.isEmpty(values)) { + return new ArrayList<>(); + } + try { + for (V value : values) { + Object o = clazz.newInstance(); + BeanUtils.copyProperties(value, o); + list.add((R) o); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + return list; + } + public static List list2list(List values, LBiFunction0 function) { List list = new ArrayList<>(); try { @@ -100,7 +113,7 @@ public class SanUtils { } public static Map> groupBy(List values, LBiFunction0 function) { - if(CollectionUtils.isEmpty(values)){ + if (CollectionUtils.isEmpty(values)) { return new HashMap<>(); } Map> listmap = new HashMap<>(); @@ -123,7 +136,6 @@ public class SanUtils { } - public static R findAnyNotNull(List values, LBiFunction0 function) { try { if (CollectionUtils.isEmpty(values)) { @@ -167,67 +179,147 @@ public class SanUtils { } - public static List merge(List values, LBiFunction0... functionArray) { - List list = new ArrayList<>(); - try { - if (CollectionUtils.isEmpty(values)) { - return list; - } - V v = values.get(0); - for (LBiFunction0 tlBiFunction0 : functionArray) { - Method method = getMethod(tlBiFunction0); - Class returnClazz = method.getReturnType(); + public static List getFieldList(List values, LBiFunction0 tlBiFunction0) { + List list = new ArrayList<>(); + if (CollectionUtils.isEmpty(values)) { - BigDecimal sum = new BigDecimal(0); - for (V value : values) { - Object r = method.invoke(value); - if (r != null) { - sum = NumberUtils.objToBigDecimalDefault(r, BigDecimal.ZERO).add(sum); - } - } - String getMethodName = method.getName(); - String setMethodName = "set" + getMethodName.substring(3); - Method methods[] = v.getClass().getDeclaredMethods(); - for (Method m : methods) { - if (m.getName().equals(setMethodName)) { - Object obj = parseBasicTypeWrapper(returnClazz, sum); - m.invoke(v,new Object[]{obj}); - } + return list; + } + Method method = getMethod(tlBiFunction0); + + for (V value : values) { + try { + Object r = method.invoke(value); + if (r != null) { + list.add((R) r); } + } catch (Exception e) { + e.printStackTrace(); } - list.add(v); - } catch (Exception e) { - e.printStackTrace(); + } return list; } + public static List groupByMerge2List(LBiFunction0 groupByFunction, List values, LBiFunction0... functionArray) { + List vList = new ArrayList<>(); + Map map = groupByMerge2Map(groupByFunction, values, functionArray); + if (map != null) { + for (Map.Entry entry : map.entrySet()) { + vList.add(entry.getValue()); + } + } + return vList; + } + public static Map groupByMerge2Map(LBiFunction0 groupByFunction, List values, LBiFunction0... functionArray) { + Map> mapData = new HashMap<>(); + if (CollectionUtils.isEmpty(values)) { + return new HashMap<>(); + } + for (V value : values) { + try { + Method method = getMethod(groupByFunction); + Object object = method.invoke(value); + R r = null; + if (object != null) { + r = (R) object; + } + List list = mapData.get(r); + if (list == null) { + list = new ArrayList<>(); + } + list.add(value); + mapData.put(r, list); + } catch (Exception e) { + e.printStackTrace(); + } + } + Map result = new HashMap<>(); + if (!mapData.isEmpty()) { + for (Map.Entry> map : mapData.entrySet()) { + List list = map.getValue(); + if (com.heyu.api.data.utils.CollectionUtils.isNotEmpty(list)) { + V v = merge(list, functionArray); + result.put(map.getKey(), v); + } + } + } + return result; + } - public static void main(String[] args) { + public static V merge(List values, LBiFunction0... functionArray) { + try { + if (CollectionUtils.isEmpty(values)) { + return null; + } + V v = values.get(0); + for (LBiFunction0 tlBiFunction0 : functionArray) { + Method method = getMethod(tlBiFunction0); + Class returnClazz = method.getReturnType(); + BigDecimal sum = new BigDecimal(0); + StringBuffer sb = new StringBuffer(); + List list = new ArrayList<>(); + if (returnClazz == String.class) { + for (V value : values) { + Object r = method.invoke(value); + sb.append(r).append("_"); + } + } else if (isNumberTypes(returnClazz)) { + for (V value : values) { + Object r = method.invoke(value); + if (r != null) { + sum = NumberUtils.objToBigDecimalDefault(r, BigDecimal.ZERO).add(sum); + } + } + } + for (V value : values) { + Object r = method.invoke(value); + list.add(r); + } + String getMethodName = method.getName(); + String setMethodName = "set" + getMethodName.substring(3); + String setMethodNameList = "setMerge" + getMethodName.substring(3) + "List"; + Method setMehtod = null; - VvTradeOrderLineEntity vvTradeOrderLineEntity1 = new VvTradeOrderLineEntity(); - VvTradeOrderLineEntity vvTradeOrderLineEntity2 = new VvTradeOrderLineEntity(); + List methods = new ArrayList<>(); + getAllDeclaredMethods(methods,v.getClass()); + for (Method m : methods) { + if (m.getName().equals(setMethodNameList)) { + setMehtod = m; + m.invoke(v, new Object[]{list}); + } + } + if (setMehtod == null) { + for (Method m : methods) { + if (m.getName().equals(setMethodName)) { + if (returnClazz == String.class) { + m.invoke(v, new Object[]{sb}); + } else if (isNumberTypes(returnClazz)) { + Object obj = parseBasicTypeWrapper(returnClazz, sum); + m.invoke(v, new Object[]{obj}); + } + } + } + } + } + return v; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } - vvTradeOrderLineEntity1.setSalePrice(new BigDecimal(10)); - vvTradeOrderLineEntity2.setSalePrice(new BigDecimal(15)); - - - - vvTradeOrderLineEntity1.setPromotionPrice(new BigDecimal(3)); - vvTradeOrderLineEntity2.setPromotionPrice(new BigDecimal(2)); - - - List vvTradeOrderLineEntityList = new ArrayList<>(); - vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity1); - vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity2); - List vvTradeOrderLine = merge(vvTradeOrderLineEntityList,VvTradeOrderLineEntity::getSalePrice, - VvTradeOrderLineEntity::getPromotionPrice, - VvTradeOrderLineEntity::getRefundCount - ); - System.out.println(JSON.toJSONString(vvTradeOrderLine)); - + public static void getAllDeclaredMethods(List list ,Class clazz) { + if(clazz==Object.class){ + return ; + } + Method methods[] = clazz.getDeclaredMethods(); + for (Method m : methods) { + list.add(m); + } + getAllDeclaredMethods(list,clazz.getSuperclass()); } @@ -340,7 +432,7 @@ public class SanUtils { public static List asList(R r) { List result = new ArrayList<>(); - if(r != null){ + if (r != null) { result.add(r); } return result; @@ -404,6 +496,7 @@ public class SanUtils { public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; private static final List> primitiveTypes = new ArrayList<>(32); + private static final List> isNumberTypes = new ArrayList<>(32); static { primitiveTypes.add(Boolean.class); @@ -426,12 +519,35 @@ public class SanUtils { primitiveTypes.add(short.class); primitiveTypes.add(String.class); primitiveTypes.add(Date.class); + + + isNumberTypes.add(Byte.class); + isNumberTypes.add(Double.class); + isNumberTypes.add(Float.class); + isNumberTypes.add(Integer.class); + isNumberTypes.add(Long.class); + isNumberTypes.add(Short.class); + isNumberTypes.add(BigDecimal.class); + + + isNumberTypes.add(byte.class); + isNumberTypes.add(char.class); + isNumberTypes.add(double.class); + isNumberTypes.add(float.class); + isNumberTypes.add(int.class); + isNumberTypes.add(long.class); + isNumberTypes.add(short.class); + } public static boolean isBasicDataTypes(Class clazz) { return primitiveTypes.contains(clazz) ? true : false; } + public static boolean isNumberTypes(Class clazz) { + return isNumberTypes.contains(clazz) ? true : false; + } + public static T get(Future t) { @@ -564,7 +680,7 @@ public class SanUtils { return (R) object; } catch (Exception e) { - log.error("线程池异常",e); + log.error("线程池异常", e); } finally { } @@ -574,8 +690,7 @@ public class SanUtils { } - - private static Callable getAsynRun(Runnable runnable) { + private static Callable getAsynRun(Runnable runnable) { return new Callable() { @Override public R call() throws Exception { @@ -585,7 +700,7 @@ public class SanUtils { runnable.run(); } catch (Exception e) { - log.error("线程池异常",e); + log.error("线程池异常", e); } return null; } @@ -593,8 +708,7 @@ public class SanUtils { } - - public static AsynRunDTO build(Runnable ... target){ + public static AsynRunDTO build(Runnable... target) { Map> map = new HashMap<>(); for (int i = 0; i < target.length; i++) { Runnable v = target[i]; @@ -602,28 +716,25 @@ public class SanUtils { map.put(i + "", countFuture); } - AsynRunDTO asynRunDTO = new AsynRunDTO(); + AsynRunDTO asynRunDTO = new AsynRunDTO(); asynRunDTO.setMap(map); return asynRunDTO; } @Test - public void test(){ + public void test() { build( - ()->{ + () -> { System.out.println("1"); }, - ()->{ + () -> { System.out.println("2"); } - ).run(); + ).run(); } - - - public static AriseUser getName(AriseUser ariseUser) { return ariseUser; diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AdminPackageDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AdminPackageDTO.java new file mode 100644 index 0000000..45b48b7 --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AdminPackageDTO.java @@ -0,0 +1,17 @@ +package com.heyu.api.alibaba.request.mm.order.resp; + +import com.heyu.api.data.entity.vv.VvPackageEntity; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + + +@Data +public class AdminPackageDTO extends VvPackageEntity { + + private List vvTradeOrderLineDOList = new ArrayList<>(); + + + private List orderActionList; +} diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AppPackageDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AppPackageDTO.java new file mode 100644 index 0000000..3ef7c31 --- /dev/null +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AppPackageDTO.java @@ -0,0 +1,28 @@ +package com.heyu.api.alibaba.request.mm.order.resp; + +import com.heyu.api.data.entity.vv.VvPackageEntity; +import com.heyu.api.data.entity.vv.VvTradeOrderEntity; +import lombok.Data; + +import java.util.List; + + +@Data +public class AppPackageDTO extends VvPackageEntity { + + /*** + * 子单信息 + */ + private List vvTradeOrderLineDOList; + + /*** + * 操作相关的信息 + */ + private List orderActionList; + /*** + * 订单信息 + */ + private VvTradeOrderEntity vvTradeOrderEntity; + + +} diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AppTradeOrderLineDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AppTradeOrderLineDTO.java index 187ea91..4000a5d 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AppTradeOrderLineDTO.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/AppTradeOrderLineDTO.java @@ -3,25 +3,18 @@ package com.heyu.api.alibaba.request.mm.order.resp; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import lombok.Data; -import java.math.BigDecimal; import java.util.List; @Data public class AppTradeOrderLineDTO extends VvTradeOrderLineEntity { - - /**** * 子订单列表信息 */ private List tradeOrderLineIdList; - /*** - * 实际支付金额 - */ - private BigDecimal realPayAmount; } diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/PackageDTO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/PackageDTO.java deleted file mode 100644 index 0ed70c4..0000000 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/PackageDTO.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.heyu.api.alibaba.request.mm.order.resp; - -import com.heyu.api.data.entity.vv.VvPackageEntity; -import lombok.Data; - -import java.util.List; - - -@Data -public class PackageDTO extends VvPackageEntity { - - private List vvTradeOrderLineDOList; -} diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VVOrderListResp.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VVOrderListResp.java index 15770ae..c187319 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VVOrderListResp.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VVOrderListResp.java @@ -9,17 +9,10 @@ import java.util.List; @Data public class VVOrderListResp extends VvTradeOrderEntity { - - /*** - * 订单行信息 - */ - private List vvTradeOrderLineDOList; - - /*** * 包裹信息 */ - private List packageList; + private List packageList; } diff --git a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VvTradeOrderLineDO.java b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VvTradeOrderLineDO.java index c819d0e..90e6a17 100644 --- a/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VvTradeOrderLineDO.java +++ b/api-third/src/main/java/com/heyu/api/alibaba/request/mm/order/resp/VvTradeOrderLineDO.java @@ -3,11 +3,22 @@ package com.heyu.api.alibaba.request.mm.order.resp; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import lombok.Data; +import java.math.BigDecimal; import java.util.List; @Data public class VvTradeOrderLineDO extends VvTradeOrderLineEntity { - private List orderActionList; + /*** + * 订单id + */ + private List mergeIdList ; + + + /*** + * 数据合并 + */ + private List mergeSalePriceList ; + } diff --git a/api-third/src/main/java/com/heyu/api/service/impl/AbstractAction.java b/api-third/src/main/java/com/heyu/api/service/impl/AbstractAction.java index 5ae821b..1d6068f 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/AbstractAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/AbstractAction.java @@ -3,7 +3,7 @@ package com.heyu.api.service.impl; import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; -import com.heyu.api.service.impl.impl.*; +import com.heyu.api.service.impl.order.*; import java.util.ArrayList; import java.util.Arrays; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java b/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java index c939a4d..f07a6c0 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/VvTradeOrderConvertServiceImpl.java @@ -1,8 +1,8 @@ package com.heyu.api.service.impl; import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO; +import com.heyu.api.alibaba.request.mm.order.resp.AdminPackageDTO; import com.heyu.api.alibaba.request.mm.order.resp.OrderActionDTO; -import com.heyu.api.alibaba.request.mm.order.resp.PackageDTO; import com.heyu.api.alibaba.request.mm.order.resp.VVOrderListResp; import com.heyu.api.alibaba.request.mm.order.resp.VvTradeOrderLineDO; import com.heyu.api.data.dao.vv.VvPackageDao; @@ -32,21 +32,23 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic List packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers); Map vvPackageEntityMap = SanUtils.list2Map(packageEntities, VvPackageEntity::getTrackNumber); - Map> groupBytraderOrderIdSkuId = groupBytraderOrderIdSkuId(list); + Map> groupByTradeOrderIdMap = SanUtils.groupBy(list,VvTradeOrderLineEntity::getTradeOrderId ); List vvOrderListResps = new ArrayList<>(); for (VvTradeOrderEntity vvTradeOrderEntity : vvTradeOrderEntities) { VVOrderListResp vvOrderListResp = new VVOrderListResp(); BeanUtils.copyProperties(vvTradeOrderEntity, vvOrderListResp); - Map vvTradeOrderLineEntityMap = groupBytraderOrderIdSkuId.get(vvTradeOrderEntity.getId()); - List packageList = new ArrayList<>(); - List vvTradeOrderLineDOList = new ArrayList<>(); + List vvTradeOrderLineEntityList = groupByTradeOrderIdMap.get(vvTradeOrderEntity.getId()); + Map> groupByTrackNumberMap = SanUtils.groupBy(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTrackNumber); - for (Map.Entry vvTradeOrderLineTrackNumber : vvTradeOrderLineEntityMap.entrySet()) { - VvTradeOrderLineTrackNumberDTO vvTradeOrderLineTrackNumberDTO = vvTradeOrderLineTrackNumber.getValue(); - List vvTradeOrderLines = vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities(); - List mergeTradeOrderLineList = SanUtils.merge( - vvTradeOrderLines, + List packageList = new ArrayList<>(); + for (Map.Entry> vvTradeOrderLineTrackNumber : groupByTrackNumberMap.entrySet()) { + List vvTradeOrderLineTrackNumberList = vvTradeOrderLineTrackNumber.getValue(); + String trackNumber = vvTradeOrderLineTrackNumber.getKey(); + List vvTradeOrderLineDOList = SanUtils.convert2list(vvTradeOrderLineTrackNumberList,VvTradeOrderLineDO.class); + List mergeTradeOrderLine = SanUtils.groupByMerge2List( + VvTradeOrderLineEntity::getSkuId, + vvTradeOrderLineDOList, VvTradeOrderLineEntity::getPromotionPrice, VvTradeOrderLineEntity::getSalePrice, VvTradeOrderLineEntity::getNum, @@ -54,33 +56,22 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic VvTradeOrderLineEntity::getShippingAmount, VvTradeOrderLineEntity::getRefundAmount, VvTradeOrderLineEntity::getRefundCount, - VvTradeOrderLineEntity::getProfitAmount - + VvTradeOrderLineEntity::getProfitAmount, + VvTradeOrderLineEntity::getId ); - List vvTradeOrderLineRespList = new ArrayList<>(); - for (VvTradeOrderLineEntity vvTradeOrderLine : mergeTradeOrderLineList) { - VvTradeOrderLineDO vvTradeOrderLineDO = new VvTradeOrderLineDO(); - BeanUtils.copyProperties(vvTradeOrderLine, vvTradeOrderLineDO); + AdminPackageDTO adminPackageDTO = new AdminPackageDTO(); + VvPackageEntity vvPackage = vvPackageEntityMap.get(trackNumber); + if(vvPackage != null){ + BeanUtils.copyProperties(vvPackage,adminPackageDTO); + } + + adminPackageDTO.setVvTradeOrderLineDOList(mergeTradeOrderLine); + List orderActionList = AbstractAction.getOrderActionDTO(mergeTradeOrderLine.get(0), false); + adminPackageDTO.setOrderActionList(orderActionList); + packageList.add(adminPackageDTO); - List orderActionList = AbstractAction.getOrderActionDTO(vvTradeOrderLine, false); - vvTradeOrderLineDO.setOrderActionList(orderActionList); - vvTradeOrderLineRespList.add(vvTradeOrderLineDO); - } - String trackNumber = vvTradeOrderLineTrackNumberDTO.getTrackNumber(); - if (StringUtils.isNotEmpty(trackNumber)) { - VvPackageEntity vvPackage = vvPackageEntityMap.get(trackNumber); - if (vvPackage != null) { - PackageDTO packageDTO = new PackageDTO(); - BeanUtils.copyProperties(vvPackage, packageDTO); - packageDTO.setVvTradeOrderLineDOList(vvTradeOrderLineRespList); - packageList.add(packageDTO); - } - } else { - vvTradeOrderLineDOList.addAll(vvTradeOrderLineRespList); - } } vvOrderListResp.setPackageList(packageList); - vvOrderListResp.setVvTradeOrderLineDOList(vvTradeOrderLineDOList); vvOrderListResps.add(vvOrderListResp); } return vvOrderListResps; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/ApplyRefund.java b/api-third/src/main/java/com/heyu/api/service/impl/order/ApplyRefund.java similarity index 93% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/ApplyRefund.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/ApplyRefund.java index 4011626..96d3431 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/ApplyRefund.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/ApplyRefund.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/ApplyReturnRefund.java b/api-third/src/main/java/com/heyu/api/service/impl/order/ApplyReturnRefund.java similarity index 94% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/ApplyReturnRefund.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/ApplyReturnRefund.java index 5453da0..da614b9 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/ApplyReturnRefund.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/ApplyReturnRefund.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/CancelAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/CancelAction.java similarity index 94% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/CancelAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/CancelAction.java index 6d62771..c4e9db3 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/CancelAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/CancelAction.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/CloseAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/CloseAction.java similarity index 94% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/CloseAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/CloseAction.java index a57ff29..b82bde3 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/CloseAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/CloseAction.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/DeleteAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/DeleteAction.java similarity index 96% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/DeleteAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/DeleteAction.java index acd5866..d43d9da 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/DeleteAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/DeleteAction.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/DeliveredAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/DeliveredAction.java similarity index 94% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/DeliveredAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/DeliveredAction.java index 9bb04e4..e94ee59 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/DeliveredAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/DeliveredAction.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/ShippedAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/ShippedAction.java similarity index 94% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/ShippedAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/ShippedAction.java index 2a11ba1..734ffcc 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/ShippedAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/ShippedAction.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/ToShippingAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/ToShippingAction.java similarity index 93% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/ToShippingAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/ToShippingAction.java index cc73f94..39f38ac 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/ToShippingAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/ToShippingAction.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.enums.OrderActionEnums; diff --git a/api-third/src/main/java/com/heyu/api/service/impl/impl/UnShippingAction.java b/api-third/src/main/java/com/heyu/api/service/impl/order/UnShippingAction.java similarity index 93% rename from api-third/src/main/java/com/heyu/api/service/impl/impl/UnShippingAction.java rename to api-third/src/main/java/com/heyu/api/service/impl/order/UnShippingAction.java index 75c411e..acfbd91 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/impl/UnShippingAction.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/order/UnShippingAction.java @@ -1,4 +1,4 @@ -package com.heyu.api.service.impl.impl; +package com.heyu.api.service.impl.order; import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java index 7e5d5ca..70a471c 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminOrderController.java @@ -140,9 +140,7 @@ public class AdminOrderController { for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) { vvTradeOrderEntities.add(vvTradeOrderEntityMap.get(vvTradeOrderLineEntity.getTradeOrderId())); } - vvOrderRequest.setTradeOrderIds(tradeOrderIds); - // 重新获取子单 List list = vvTradeOrderLineDao.selectByAdminConditionList( vvOrderRequest.getTradeOrderIds(), diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java index 9ef02b3..108b958 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppOrderController.java @@ -3,7 +3,6 @@ package com.heyu.api.controller.vv; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.heyu.api.data.enums.OrderStatusEnums; import com.heyu.api.alibaba.request.mm.order.AppCloseDTO; import com.heyu.api.alibaba.request.mm.order.AppDeliveredDTO; import com.heyu.api.alibaba.request.mm.order.VvTradeOrderLineTrackNumberDTO; @@ -14,6 +13,7 @@ import com.heyu.api.data.dao.vv.*; import com.heyu.api.data.dto.WeiXinPayDelayDTO; import com.heyu.api.data.entity.vv.*; import com.heyu.api.data.enums.DelayTypeEnums; +import com.heyu.api.data.enums.OrderStatusEnums; import com.heyu.api.data.enums.PayTypeEnums; import com.heyu.api.data.enums.RoleEnums; import com.heyu.api.data.utils.*; @@ -26,7 +26,6 @@ import com.heyu.api.utils.PPageUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.core.MessageDeliveryMode; import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestBody; @@ -129,22 +128,19 @@ public class AppOrderController { } }); + // 获取子单 List vvTradeOrderLineEntitiesGroupByTradeOrderId = pageUtils.getRows(); // 获取订单 List tradeOrderIds = SanUtils.list2listFilterNull(vvTradeOrderLineEntitiesGroupByTradeOrderId, VvTradeOrderLineEntity::getTradeOrderId); // 拿到订单的顺序 List tradeOrderEntities = vvTradeOrderDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds); - // 拿到所有的子订单 List vvTradeOrderLineEntities = vvTradeOrderLineDao.selectAppTradeOrderByTradeOrderIds(tradeOrderIds); - // 对订单进行排序,必须按照子单的顺序 Map vvTradeOrderEntityMap = SanUtils.list2Map(tradeOrderEntities, VvTradeOrderEntity::getId); - // 拿到所有的trackNumbers List trackNumbers = SanUtils.list2listFilterNull(vvTradeOrderLineEntities, VvTradeOrderLineEntity::getTrackNumber); - List packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers); Map vvPackageEntityMap = SanUtils.list2Map(packageEntities, VvPackageEntity::getTrackNumber); @@ -155,42 +151,44 @@ public class AppOrderController { for (Long tradeOrderId : tradeOrderIds) { Map stringVvTradeOrderLineTrackNumberDTOMap = groupBytraderOrderIdSkuId.get(tradeOrderId); VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderEntityMap.get(tradeOrderId); - AppTradeOrderPackageDTO appTradeOrderPackageDTO = new AppTradeOrderPackageDTO(); - VvPackageEntity packageDTO = null; - List appTradeOrderLineDTOList = new ArrayList<>(); + + for (Map.Entry mapEntry : stringVvTradeOrderLineTrackNumberDTOMap.entrySet()) { + AppTradeOrderPackageDTO appTradeOrderPackageDTO = new AppTradeOrderPackageDTO(); VvTradeOrderLineTrackNumberDTO vvTradeOrderLineTrackNumberDTO = mapEntry.getValue(); - VvTradeOrderLineEntity vvTradeOrderLineEntity = vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities().get(0); - AppTradeOrderLineDTO appTradeOrderLineResp = new AppTradeOrderLineDTO(); - - BeanUtils.copyProperties(vvTradeOrderLineEntity, appTradeOrderLineResp); List vvTradeOrderLineEntityList = vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities(); - // 设置促销价格和销售价格 - BigDecimal promotionPrice = BigDecimal.ZERO; - BigDecimal salePrice = BigDecimal.ZERO; - List tradeOrderLineIdList = new ArrayList<>(); - for (VvTradeOrderLineEntity tradeOrderLineEntity : vvTradeOrderLineEntityList) { - //当时促销价 - promotionPrice = BigDecimalUtil.add(promotionPrice, tradeOrderLineEntity.getPromotionPrice()); - salePrice = BigDecimalUtil.add(salePrice, tradeOrderLineEntity.getSalePrice()); - tradeOrderLineIdList.add(tradeOrderLineEntity.getId()); - } + List tradeOrderLineIdList = SanUtils.getFieldList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId); + VvPackageEntity packageDTO = null; + + VvTradeOrderLineEntity vvTradeOrderLine = SanUtils.merge(vvTradeOrderLineEntityList, + VvTradeOrderLineEntity::getSalePrice, + VvTradeOrderLineEntity::getPromotionPrice, + VvTradeOrderLineEntity::getNum + ); + + List appTradeOrderLineDTOList = new ArrayList<>(); + + // for (VvTradeOrderLineEntity vvTradeOrderLine : vvTradeOrderLineEntityList) { + // AppTradeOrderLineDTO appTradeOrderLineResp = new AppTradeOrderLineDTO(); + // BeanUtils.copyProperties(vvTradeOrderLine, appTradeOrderLineResp); + // appTradeOrderLineResp.setTradeOrderLineIdList(tradeOrderLineIdList); + // appTradeOrderLineDTOList.add(appTradeOrderLineResp); + // } - vvTradeOrderLineEntity.setPromotionPrice(promotionPrice); - vvTradeOrderLineEntity.setSalePrice(salePrice); // 如果有tracknumber ,则以 trader_order_id_sku_id 分组, 如果有trackNumber ,则以 trader_order_id_track_number_sku_id 分组 if (StringUtils.isNotEmpty(vvTradeOrderLineTrackNumberDTO.getTrackNumber())) { packageDTO = vvPackageEntityMap.get(vvTradeOrderLineTrackNumberDTO.getTrackNumber()); } - appTradeOrderLineResp.setNum(vvTradeOrderLineTrackNumberDTO.getVvTradeOrderLineEntities().size()); - appTradeOrderLineResp.setTradeOrderLineIdList(tradeOrderLineIdList); - appTradeOrderLineDTOList.add(appTradeOrderLineResp); + + appTradeOrderPackageDTO.setAppTradeOrderLineDTOList(appTradeOrderLineDTOList); + + appTradeOrderPackageDTO.setVvPackageEntity(packageDTO); + + appTradeOrderPackageDTO.setTradeOrderEntity(vvTradeOrderEntity); + + appTradeOrderPackageDTOList.add(appTradeOrderPackageDTO); } - appTradeOrderPackageDTO.setAppTradeOrderLineDTOList(appTradeOrderLineDTOList); - appTradeOrderPackageDTO.setVvPackageEntity(packageDTO); - appTradeOrderPackageDTO.setTradeOrderEntity(vvTradeOrderEntity); - appTradeOrderPackageDTOList.add(appTradeOrderPackageDTO); } return R.ok().setData(appTradeOrderPackageDTOList); } diff --git a/api-web/api-interface/src/test/java/com/api/test/Test4.java b/api-web/api-interface/src/test/java/com/api/test/Test4.java index 7eeb918..383ac5e 100644 --- a/api-web/api-interface/src/test/java/com/api/test/Test4.java +++ b/api-web/api-interface/src/test/java/com/api/test/Test4.java @@ -1,6 +1,16 @@ package com.api.test; +import com.alibaba.fastjson.JSON; +import com.heyu.api.alibaba.request.mm.order.resp.VvTradeOrderLineDO; +import com.heyu.api.data.entity.vv.VvTradeOrderLineEntity; import com.heyu.api.data.utils.MD5Utils; +import com.heyu.api.data.utils.SanUtils; +import org.junit.Test; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; public class Test4 { public static void main(String[] args) { @@ -13,4 +23,61 @@ public class Test4 { System.out.println(code2); } -} + + + @Test + public void test1() { + + VvTradeOrderLineEntity vvTradeOrderLineEntity1 = new VvTradeOrderLineEntity(); + VvTradeOrderLineEntity vvTradeOrderLineEntity2 = new VvTradeOrderLineEntity(); + VvTradeOrderLineEntity vvTradeOrderLineEntity3 = new VvTradeOrderLineEntity(); + + vvTradeOrderLineEntity1.setId(1L); + vvTradeOrderLineEntity2.setId(2L); + vvTradeOrderLineEntity3.setId(3L); + + + vvTradeOrderLineEntity1.setSkuId(1L); + vvTradeOrderLineEntity2.setSkuId(2L); + vvTradeOrderLineEntity3.setSkuId(2L); + + + vvTradeOrderLineEntity1.setSalePrice(new BigDecimal(10)); + vvTradeOrderLineEntity2.setSalePrice(new BigDecimal(15)); + vvTradeOrderLineEntity3.setSalePrice(new BigDecimal(18)); + + + vvTradeOrderLineEntity1.setPromotionPrice(new BigDecimal(3)); + vvTradeOrderLineEntity2.setPromotionPrice(new BigDecimal(2)); + vvTradeOrderLineEntity3.setPromotionPrice(new BigDecimal(19)); + + + List vvTradeOrderLineEntityList = new ArrayList<>(); + vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity1); + vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity2); + vvTradeOrderLineEntityList.add(vvTradeOrderLineEntity3); + + + // VvTradeOrderLineEntity vvTradeOrderLine = merge(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getSalePrice, + // VvTradeOrderLineEntity::getPromotionPrice, + // VvTradeOrderLineEntity::getRefundCount + // ); + + //System.out.println(JSON.toJSONString(vvTradeOrderLine)); + + + List vvTradeOrderLineDOList = SanUtils.convert2list(vvTradeOrderLineEntityList, VvTradeOrderLineDO.class); + + + Map vvTradeOrderLineMap = SanUtils.groupByMerge2Map(VvTradeOrderLineEntity::getSkuId, + vvTradeOrderLineDOList, + VvTradeOrderLineEntity::getSalePrice, + VvTradeOrderLineEntity::getPromotionPrice, + VvTradeOrderLineEntity::getRefundCount, + VvTradeOrderLineEntity::getId + ); + + System.out.println(JSON.toJSONString(vvTradeOrderLineMap)); + + } +} \ No newline at end of file