diff --git a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java index 9043a1c..c46a526 100644 --- a/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java +++ b/api-mapper/src/main/java/com/heyu/api/data/dao/vv/VvSkuPropertyValueDao.java @@ -51,8 +51,6 @@ public interface VvSkuPropertyValueDao extends BaseMapper selectVvSkuPropertyValueBySkuIds(@IN List skuId); } diff --git a/api-mapper/src/main/java/com/heyu/api/data/utils/MethodSumDTO.java b/api-mapper/src/main/java/com/heyu/api/data/utils/MethodSumDTO.java new file mode 100644 index 0000000..dc5ff21 --- /dev/null +++ b/api-mapper/src/main/java/com/heyu/api/data/utils/MethodSumDTO.java @@ -0,0 +1,19 @@ +package com.heyu.api.data.utils; + + +import lombok.Data; + +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +@Data +public class MethodSumDTO { + + private Method method; + + + private List itemList = new ArrayList<>(); + +} 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 ee177b5..ee3f002 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 @@ -19,12 +19,13 @@ import java.util.concurrent.*; @Slf4j public class SanUtils { - public static Map list2Map(List values, LBiFunction0 function) { + public static Map groupByFiled2Map(List values, LBiFunction0 function) { try { if (CollectionUtils.isEmpty(values)) { return new HashMap<>(); } + Map map = new HashMap<>(); Method method = getMethod(function); for (V value : values) { @@ -39,7 +40,7 @@ public class SanUtils { public static List list2listFilterNull(List values, LBiFunction0 function) { - List list = list2list(values, function); + List list = list2FieldList(values, function); List result = new ArrayList<>(); @@ -60,9 +61,7 @@ public class SanUtils { try { if (CollectionUtils.isEmpty(values)) { return list; - } - for (LBiFunction0 function : functions) { Method method = getSetMethod(function); for (V value : values) { @@ -78,7 +77,7 @@ public class SanUtils { } - public static List convert2list(List values, Class clazz) { + public static List convert2List(List values, Class clazz) { List list = new ArrayList<>(); if (CollectionUtils.isEmpty(values)) { return new ArrayList<>(); @@ -95,7 +94,7 @@ public class SanUtils { return list; } - public static List list2list(List values, LBiFunction0 function) { + public static List list2FieldList(List values, LBiFunction0 function) { List list = new ArrayList<>(); try { if (CollectionUtils.isEmpty(values)) { @@ -113,10 +112,34 @@ public class SanUtils { return list; } - public static Map> groupBy(List values, LBiFunction0 function) { + public static List field2Set2List(List values, LBiFunction0 function) { + List list = new ArrayList<>(); + List set = new ArrayList<>(); + try { + if (CollectionUtils.isEmpty(values)) { + return list; + } + Method method = getMethod(function); + for (V value : values) { + set.add((R) method.invoke(value)); + } + + + for (R r : set) { + list.add(r); + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return list; + } + + public static Map> groupByFiled2MapList(List values, LBiFunction0 function) { if (CollectionUtils.isEmpty(values)) { return new HashMap<>(); } + Map> listmap = new HashMap<>(); Method method = getMethod(function); try { @@ -180,6 +203,51 @@ public class SanUtils { } + + public static Map groupAndSum(LBiFunction0 groupKeyFunction,List values,LBiFunction0 function) { + Map map = new HashMap<>(); + try { + if (CollectionUtils.isEmpty(values)) { + return new HashMap<>(); + } + for (V value : values) { + Method groupKeyMethod = getMethod(groupKeyFunction); + P p = (P) groupKeyMethod.invoke(value); + + Method method = getMethod(function); + R r = (R) method.invoke(value); + + if (r != null) { + BigDecimal bigDecimalR = NumberUtils.objToBigDecimalDefault(r, BigDecimal.ZERO); + MethodSumDTO methodSumDTO = map.get(p); + if(methodSumDTO == null){ + methodSumDTO = new MethodSumDTO(); + } + methodSumDTO.getItemList().add(bigDecimalR); + methodSumDTO.setMethod(method); + map.put(p, methodSumDTO); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + Map result = new HashMap<>(); + for (Map.Entry entry : map.entrySet()) { + + MethodSumDTO methodSumDTO = entry.getValue(); + if (methodSumDTO.getItemList().size() > 0) { + BigDecimal sum = BigDecimal.ZERO; + for (BigDecimal bigDecimal : methodSumDTO.getItemList()) { + sum = sum.add(bigDecimal); + } + Class clazz = methodSumDTO.getMethod().getReturnType(); + result.put(entry.getKey(), (R) parseBasicTypeWrapper(clazz, sum)); + } + } + return result; + } + + public static List getFieldList(List values, LBiFunction0 tlBiFunction0) { List list = new ArrayList<>(); if (CollectionUtils.isEmpty(values)) { @@ -202,9 +270,9 @@ public class SanUtils { return list; } - public static List groupByMerge2List(LBiFunction0 groupByFunction, List values, LBiFunction0... functionArray) { + public static List groupMerge2List(LBiFunction0 groupByFunction, List values, LBiFunction0... functionArray) { List vList = new ArrayList<>(); - Map map = groupByMerge2Map(groupByFunction, values, functionArray); + Map map = groupMerge2Map(groupByFunction, values, functionArray); if (map != null) { for (Map.Entry entry : map.entrySet()) { vList.add(entry.getValue()); @@ -213,7 +281,7 @@ public class SanUtils { return vList; } - public static Map groupByMerge2Map(LBiFunction0 groupByFunction, List values, LBiFunction0... functionArray) { + public static Map groupMerge2Map(LBiFunction0 groupByFunction, List values, LBiFunction0... functionArray) { Map> mapData = new HashMap<>(); if (CollectionUtils.isEmpty(values)) { return new HashMap<>(); @@ -249,6 +317,9 @@ public class SanUtils { return result; } + + + public static V merge(List values, LBiFunction0... functionArray) { try { if (CollectionUtils.isEmpty(values)) { @@ -326,7 +397,6 @@ public class SanUtils { } - private static Method getSetMethod(LBiFunction0 function) { try { Method method = function.getClass().getDeclaredMethods()[1]; @@ -334,13 +404,11 @@ public class SanUtils { SerializedLambda serializedLambda = (SerializedLambda) method.invoke(function); String methodName = serializedLambda.getImplMethodName(); String className = serializedLambda.getImplClass().replace("/", "."); - - methodName = "set" + methodName.substring(3); - Class clazz = Class.forName(className); - - Method methods[] = clazz.getDeclaredMethods(); - for (Method m : methods) { + methodName = "set" + methodName.substring(3); + List methodList = new ArrayList<>(); + getAllDeclaredMethods(methodList, clazz); + for (Method m : methodList) { if (m.getName().equals(methodName)) { return m; } @@ -348,11 +416,9 @@ public class SanUtils { } catch (Exception e) { e.printStackTrace(); } - return null; } - private static Method getMethod(LBiFunction0 function) { try { Method method = function.getClass().getDeclaredMethods()[1]; @@ -361,9 +427,9 @@ public class SanUtils { String methodName = serializedLambda.getImplMethodName(); String className = serializedLambda.getImplClass().replace("/", "."); Class clazz = Class.forName(className); - - Method methods[] = clazz.getDeclaredMethods(); - for (Method m : methods) { + List methodList= new ArrayList<>(); + getAllDeclaredMethods(methodList, clazz); + for (Method m : methodList) { if (m.getName().equals(methodName)) { return m; } @@ -398,6 +464,8 @@ public class SanUtils { return null; } + + private static Method getRealMethod(List methods, Class paramClazz) { for (Method method : methods) { Class[] parameterTypes = method.getParameterTypes(); @@ -410,6 +478,7 @@ public class SanUtils { return null; } + public static List convert(List list, LBiFunction0 function) { List methods = getMethods(function); List result = new ArrayList<>(); diff --git a/api-third/src/main/java/com/heyu/api/service/impl/ReverseOrderServiceImpl.java b/api-third/src/main/java/com/heyu/api/service/impl/ReverseOrderServiceImpl.java index 9cbf32c..fab11b0 100644 --- a/api-third/src/main/java/com/heyu/api/service/impl/ReverseOrderServiceImpl.java +++ b/api-third/src/main/java/com/heyu/api/service/impl/ReverseOrderServiceImpl.java @@ -44,8 +44,8 @@ public class ReverseOrderServiceImpl implements ReverseOrderService { @Override public R createReverseOrder(List vvTradeOrderLineEntityList, AppliyReverseRequest appliyReverseRequest) { - List tradeOrderLineIds = SanUtils.list2list(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId); - Map vvTradeOrderLineEntityMap = SanUtils.list2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId); + List tradeOrderLineIds = SanUtils.list2FieldList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId); + Map vvTradeOrderLineEntityMap = SanUtils.groupByFiled2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId); Long tradeOrderId = SanUtils.findAnyNotNull(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTradeOrderId); VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(tradeOrderId); VvReverseOrderEntity vvReverseOrderEntity = new VvReverseOrderEntity(); 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 c859f5d..0f373af 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 @@ -38,23 +38,23 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic List list,boolean isApp) { List trackNumbers = SanUtils.list2listFilterNull(list, VvTradeOrderLineEntity::getTrackNumber); List packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers); - Map vvPackageEntityMap = SanUtils.list2Map(packageEntities, VvPackageEntity::getTrackNumber); + Map vvPackageEntityMap = SanUtils.groupByFiled2Map(packageEntities, VvPackageEntity::getTrackNumber); - Map> groupByTradeOrderIdMap = SanUtils.groupBy(list,VvTradeOrderLineEntity::getTradeOrderId ); + Map> groupByTradeOrderIdMap = SanUtils.groupByFiled2MapList(list,VvTradeOrderLineEntity::getTradeOrderId ); List vvOrderListResps = new ArrayList<>(); for (VvTradeOrderEntity vvTradeOrderEntity : vvTradeOrderEntities) { VVOrderListResp vvOrderListResp = new VVOrderListResp(); BeanUtils.copyProperties(vvTradeOrderEntity, vvOrderListResp); List vvTradeOrderLineEntityList = groupByTradeOrderIdMap.get(vvTradeOrderEntity.getId()); - Map> groupByTrackNumberMap = SanUtils.groupBy(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTrackNumber); + Map> groupByTrackNumberMap = SanUtils.groupByFiled2MapList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTrackNumber); 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( + List vvTradeOrderLineDOList = SanUtils.convert2List(vvTradeOrderLineTrackNumberList,VvTradeOrderLineDO.class); + List mergeTradeOrderLine = SanUtils.groupMerge2List( VvTradeOrderLineEntity::getSkuId, vvTradeOrderLineDOList, VvTradeOrderLineEntity::getPromotionPrice, diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminBuyerController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminBuyerController.java index 824f026..d4d7605 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminBuyerController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminBuyerController.java @@ -83,10 +83,10 @@ public class AdminBuyerController { } List vvBuyerAddressEntities = vvBuyerAddressDao.selectMapByBuyerIds(buyerIds); - Map> listMap = SanUtils.groupBy(vvBuyerAddressEntities, VvBuyerAddressEntity::getBuyerId); + Map> listMap = SanUtils.groupByFiled2MapList(vvBuyerAddressEntities, VvBuyerAddressEntity::getBuyerId); List vvPromoterEntities = vvPromoterDao.selectVvPromoterByPromoteIds(promoterIds); - Map> vvPromoterGroupBy = SanUtils.groupBy(vvPromoterEntities, VvPromoterEntity::getPromoterId); + Map> vvPromoterGroupBy = SanUtils.groupByFiled2MapList(vvPromoterEntities, VvPromoterEntity::getPromoterId); List buyerDTOs = new ArrayList<>(); for (VvBuyerEntity vvBuyerAddressEntity : vvBuyerEntities) { VvBuyerDTO vvBuyerDTO = new VvBuyerDTO(); 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 5f29dc8..9fd7c2f 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 @@ -130,7 +130,7 @@ public class AdminOrderController { List tradeOrderEntities = vvTradeOrderDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds); // 对订单进行排序,必须按照子单的顺序 - Map vvTradeOrderEntityMap = SanUtils.list2Map(tradeOrderEntities, VvTradeOrderEntity::getId); + Map vvTradeOrderEntityMap = SanUtils.groupByFiled2Map(tradeOrderEntities, VvTradeOrderEntity::getId); List vvTradeOrderEntities = new ArrayList<>(); for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) { vvTradeOrderEntities.add(vvTradeOrderEntityMap.get(vvTradeOrderLineEntity.getTradeOrderId())); @@ -175,7 +175,7 @@ public class AdminOrderController { List tradeOrderLineIdList = SanUtils.getFieldList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId); List vvTradeOrderLineStatusLogList = vvTradeOrderLineStatusLogDao.selectVvTradeOrderLineStatusLogByIdList(tradeOrderLineIdList); - Map> tradeOrderLineStatusLogMap = SanUtils.groupBy(vvTradeOrderLineStatusLogList, VvTradeOrderLineStatusLogEntity::getTradeOrderLineId); + Map> tradeOrderLineStatusLogMap = SanUtils.groupByFiled2MapList(vvTradeOrderLineStatusLogList, VvTradeOrderLineStatusLogEntity::getTradeOrderLineId); List vvTradeOrderEntities = SanUtils.asList(vvTradeOrderEntity); List vvOrderListResps = vvTradeOrderConvertService.convertTradeOrderLineResp(vvTradeOrderEntities, vvTradeOrderLineEntityList, false); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminProductController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminProductController.java index f1e3161..3b74749 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminProductController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminProductController.java @@ -228,7 +228,7 @@ public class AdminProductController { Map> groupbyProductDetail = - SanUtils.groupBy(vvProductDTO.getVvProductDetailList(), VvProductDetailEntity::getId); + SanUtils.groupByFiled2MapList(vvProductDTO.getVvProductDetailList(), VvProductDetailEntity::getId); // 1. 如果传过来的参数存在,则更新 ,如果不存在 ,则直接物理删除掉 for (VvProductDetailEntity productDetailEntity : productDetailEntities) { @@ -247,7 +247,7 @@ public class AdminProductController { List vvSkuDTOS = vvProductDTO.getVvSkuList(); List vvSkuEntities = vvSkuDao.selectVvSkuByProductId(productId); - Map> groupbySkuDTOs = SanUtils.groupBy(vvSkuDTOS, VvSkuDTO::getId); + Map> groupbySkuDTOs = SanUtils.groupByFiled2MapList(vvSkuDTOS, VvSkuDTO::getId); for (VvSkuEntity vvSkuEntity : vvSkuEntities) { if (CollectionUtils.notContainsKey(groupbySkuDTOs, vvSkuEntity.getId())) { vvSkuPropertyValueDao.deleteVvSkuPropertyValueRealBySkuId(vvSkuEntity.getId()); @@ -271,7 +271,7 @@ public class AdminProductController { if (skuId != null) { // 更新 Map> groupbySkuPropertyValue = - SanUtils.groupBy(vvSkuPropertyValueEntities, VvSkuPropertyValueEntity::getId); + SanUtils.groupByFiled2MapList(vvSkuPropertyValueEntities, VvSkuPropertyValueEntity::getId); List vvSkuPropertyValueDB = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuId(vvSkuDTO.getId()); for (VvSkuPropertyValueEntity vvSkuPropertyValueDb : vvSkuPropertyValueDB) { // 如果不存在 ,则直接删除 @@ -291,7 +291,7 @@ public class AdminProductController { List vvProductPropertyEntities = vvProductPropertyDao.selectVvProductPropertyByProductId(productId); Map> groupbyProductProperty = - SanUtils.groupBy(vvProductPropertyDTOS, VvProductPropertyDTO::getId); + SanUtils.groupByFiled2MapList(vvProductPropertyDTOS, VvProductPropertyDTO::getId); for (VvProductPropertyEntity vvProductProperty : vvProductPropertyEntities) { // 对他进行编辑 @@ -308,7 +308,7 @@ public class AdminProductController { List vvProductPropertyValueEntities = vvProductPropertyDTO.getVvProductPropertyValueList(); Map> groupbyProductPropertyValue = - SanUtils.groupBy(vvProductPropertyValueEntities, VvProductPropertyValueEntity::getId); + SanUtils.groupByFiled2MapList(vvProductPropertyValueEntities, VvProductPropertyValueEntity::getId); // 对他进行编辑 if (productPropertyId != null) { diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java index a09ebcc..1e68b80 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/mm/AdminReverseController.java @@ -88,9 +88,9 @@ public class AdminReverseController { List vvReverseOrderEntities = pageUtils.getRows(); List reverseOrderIds = SanUtils.list2listFilterNull(vvReverseOrderEntities, VvReverseOrderEntity::getId); List reverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderIds(reverseOrderIds); - Map> vvReverseOrderLineEntityMap = SanUtils.groupBy(reverseOrderLineEntities, VvReverseOrderLineEntity::getReverseOrderId); + Map> vvReverseOrderLineEntityMap = SanUtils.groupByFiled2MapList(reverseOrderLineEntities, VvReverseOrderLineEntity::getReverseOrderId); List vvReverseOrderProveEntities = vvReverseOrderProveDao.selectVvReverseOrderProveByReverseOrderId(reverseOrderIds); - Map> vvProveMap = SanUtils.groupBy(vvReverseOrderProveEntities, VvReverseOrderProveEntity::getReverseOrderId); + Map> vvProveMap = SanUtils.groupByFiled2MapList(vvReverseOrderProveEntities, VvReverseOrderProveEntity::getReverseOrderId); List trackNumbers = new ArrayList<>(); for (VvReverseOrderEntity vvReverseOrderEntity : vvReverseOrderEntities) { if (StringUtils.isNotEmpty(vvReverseOrderEntity.getTrackNumber())) { @@ -212,7 +212,7 @@ public class AdminReverseController { } List vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvApproveRequest.getReverseOrderId()); - List tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId); + List tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId); List vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds); for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) { vvTradeOrderLineEntity.setReverseStatus(vvReverseOrderEntity.getStatus()); 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 3ce2aa7..71ae75f 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 @@ -130,6 +130,7 @@ public class AppOrderController { ); } }); + // 获取子单 List vvTradeOrderLineEntitiesGroupByTradeOrderId = pageUtils.getRows(); // 获取订单 @@ -166,31 +167,11 @@ public class AppOrderController { @RequestMapping("/add") public R add(@RequestBody VvTradeOrderDTO vvOrderRequest) { List vvTradeOrderLineEntityList = new ArrayList<>(); + List skuIds = SanUtils.getFieldList( vvOrderRequest.getVvTradeOrderLineDTOList(),VvTradeOrderLineDTO::getSkuId); - List skuIds = new ArrayList<>(); - for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) { - skuIds.add(vvTradeOrderLineDTO.getSkuId()); - } - - Set productIds = new HashSet<>(); List vvSkuPropertyValueList = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuIds(skuIds); - Map> vvSkuPropertyValueMap = new HashMap<>(); - for (VvSkuPropertyValueEntity vvSkuPropertyValueEntity : vvSkuPropertyValueList) { - List vvSkuPropertyValueEntities = vvSkuPropertyValueMap.get(vvSkuPropertyValueEntity.getSkuId()); - if (vvSkuPropertyValueEntities == null) { - vvSkuPropertyValueEntities = new ArrayList<>(); - } - vvSkuPropertyValueEntities.add(vvSkuPropertyValueEntity); - vvSkuPropertyValueMap.put(vvSkuPropertyValueEntity.getSkuId(), vvSkuPropertyValueEntities); - productIds.add(vvSkuPropertyValueEntity.getProductId()); - } - - Map skuEntityMap = new HashMap<>(); - List vvSkuEntities = vvSkuDao.selectVvSkuBySkuIds(skuIds); - for (VvSkuEntity vvSkuEntity : vvSkuEntities) { - skuEntityMap.put(vvSkuEntity.getId(), vvSkuEntity); // 如果库存少于 0 ,则显示库存不足 if (vvSkuEntity.getStock() <= 0) { OrderSkuDTO orderSkuDTO = new OrderSkuDTO(); @@ -200,43 +181,26 @@ public class AppOrderController { } } - List productIdList = new ArrayList<>(); - productIdList.addAll(productIds); + Map skuEntityMap = SanUtils.groupByFiled2Map(vvSkuEntities,VvSkuEntity::getId); + Map> vvSkuPropertyValueMap = SanUtils.groupByFiled2MapList(vvSkuPropertyValueList, VvSkuPropertyValueEntity::getSkuId); + + List productIdList = SanUtils.field2Set2List(vvSkuEntities,VvSkuEntity::getProductId); List vvProductList = vvProductDao.selectVvProductByProductIds(productIdList); - - Map vvProductMap = new HashMap<>(); - for (VvProductEntity vvProductEntity : vvProductList) { - vvProductMap.put(vvProductEntity.getId(), vvProductEntity); - } - - Map productNumMap = new HashMap<>(); - + Map vvProductMap = SanUtils.groupByFiled2Map(vvProductList,VvProductEntity::getId); VvBuyerAddressEntity vvBuyerAddress = vvBuyerAddressDao.selectVvBuyerAddressById(vvOrderRequest.getBuyerAddressId()); + for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) { VvSkuEntity vvSkuEntity = skuEntityMap.get(vvTradeOrderLineDTO.getSkuId()); - Integer saleCount = productNumMap.get(vvSkuEntity.getProductId()); - if (saleCount == null) { - saleCount = 0; - } - - saleCount = saleCount + vvTradeOrderLineDTO.getNum(); - - productNumMap.put(vvSkuEntity.getProductId(), saleCount); - - allNum = allNum + vvTradeOrderLineDTO.getNum(); - List vvSkuPropertyValueEntities = vvSkuPropertyValueMap.get(vvTradeOrderLineDTO.getSkuId()); - VvProductEntity vvProduct = vvProductMap.get(vvSkuEntity.getProductId()); - List propertyNameValues = new ArrayList<>(); + for (VvSkuPropertyValueEntity vvSkuPropertyValueEntity : vvSkuPropertyValueEntities) { PropertyNameValue propertyNameValue = new PropertyNameValue(); propertyNameValue.setPropertyName(vvSkuPropertyValueEntity.getProductPropertyName()); propertyNameValue.setPropertyValue(vvSkuPropertyValueEntity.getProductPropertyValue()); propertyNameValues.add(propertyNameValue); } - for (int i = 0; i < vvTradeOrderLineDTO.getNum(); i++) { VvTradeOrderLineEntity vvTradeOrderLineEntity = new VvTradeOrderLineEntity(); vvTradeOrderLineEntity.setSkuId(vvTradeOrderLineDTO.getSkuId()); @@ -284,7 +248,6 @@ public class AppOrderController { vvTradeOrderEntity.setDistrict(vvBuyerAddress.getDistrict()); vvTradeOrderEntity.setBuyerDetailAddress(vvBuyerAddress.getDetail()); - BigDecimal tradeOrderPromotionPrice = SanUtils.sum(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getPromotionPrice); vvTradeOrderEntity.setPromotionPrice(tradeOrderPromotionPrice); @@ -304,14 +267,17 @@ public class AppOrderController { vvSkuDao.updateVvSkuStockSaleCountById(vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getNum(), vvTradeOrderLineDTO.getSkuId()); } + Map productNumMap = SanUtils.groupAndSum(VvTradeOrderLineEntity::getProductId, vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getNum); for (Map.Entry map : productNumMap.entrySet()) { vvProductDao.updateShowSaleCountAndSaleCount(map.getValue(), map.getValue(), map.getKey()); } + DirectAPIv3JsapiPrepayResponse jsapiPrepayResponse = jsapiPrepay.prePay(vvTradeOrderEntity.getId(), BigDecimalUtil.multiply(vvTradeOrderEntity.getPayAmount(), new BigDecimal(100)).longValue(), vvBuyerEntity.getOpenid() ); + String prepay_id = jsapiPrepayResponse.getPrepayId(); if (jsapiPrepayResponse != null && jsapiPrepayResponse.getPrepayId() != null) { List vvTradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByTradeOrderId(vvTradeOrderEntity.getId()); @@ -346,7 +312,6 @@ public class AppOrderController { String nonceStr = UUID.randomUUID().toString().replaceAll("-", "").substring(0, 32); String signatureStr = Stream.of(appid, String.valueOf(timeStamp), nonceStr, "prepay_id=" + prepay_id) .collect(Collectors.joining("\n", "", "\n")); - // "timeStamp": "1414561699", // "nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS", // "package": "prepay_id=wx201410272009395522657a690389285100", @@ -359,7 +324,6 @@ public class AppOrderController { vo.setMchid(mchid); vo.setPaySign(sign); vo.setPrepayId("prepay_id=" + prepay_id); - return R.ok().setData(vo); } diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java index f038957..d9847d2 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppReverseController.java @@ -141,7 +141,7 @@ public class AppReverseController { vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity); List vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(request.getReverseOrderId()); - List tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId); + List tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId); List tradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds); for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) { tradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.close.getStatus()); diff --git a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppScrollController.java b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppScrollController.java index 7ced800..1c7bfd2 100644 --- a/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppScrollController.java +++ b/api-web/api-interface/src/main/java/com/heyu/api/controller/vv/AppScrollController.java @@ -29,7 +29,7 @@ public class AppScrollController { @RequestMapping("/list") public R query(@RequestBody AppBaseRequest request) { List vvScrollConfigEntityList = vvScrollConfigDao.selectVvScrollConfigAll(); - Map> configMap = SanUtils.groupBy(vvScrollConfigEntityList, VvScrollConfigEntity::getType); + Map> configMap = SanUtils.groupByFiled2MapList(vvScrollConfigEntityList, VvScrollConfigEntity::getType); return R.ok().setData(configMap); } 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 383ac5e..c07bdc8 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 @@ -66,10 +66,10 @@ public class Test4 { //System.out.println(JSON.toJSONString(vvTradeOrderLine)); - List vvTradeOrderLineDOList = SanUtils.convert2list(vvTradeOrderLineEntityList, VvTradeOrderLineDO.class); + List vvTradeOrderLineDOList = SanUtils.convert2List(vvTradeOrderLineEntityList, VvTradeOrderLineDO.class); - Map vvTradeOrderLineMap = SanUtils.groupByMerge2Map(VvTradeOrderLineEntity::getSkuId, + Map vvTradeOrderLineMap = SanUtils.groupMerge2Map(VvTradeOrderLineEntity::getSkuId, vvTradeOrderLineDOList, VvTradeOrderLineEntity::getSalePrice, VvTradeOrderLineEntity::getPromotionPrice,