提交修改

This commit is contained in:
quyixiao 2025-11-17 09:46:47 +08:00
parent f9cfef17ea
commit 0b25695a47
13 changed files with 145 additions and 95 deletions

View File

@ -51,8 +51,6 @@ public interface VvSkuPropertyValueDao extends BaseMapper<VvSkuPropertyValueEnti
@Realy
int deleteVvSkuPropertyValueRealById(Long id);
List<VvSkuPropertyValueEntity> selectVvSkuPropertyValueBySkuIds(@IN List<Long> skuId);
}

View File

@ -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<BigDecimal> itemList = new ArrayList<>();
}

View File

@ -19,12 +19,13 @@ import java.util.concurrent.*;
@Slf4j
public class SanUtils {
public static <T, R, V> Map<R, V> list2Map(List<V> values, LBiFunction0<T, R> function) {
public static <T, R, V> Map<R, V> groupByFiled2Map(List<V> values, LBiFunction0<T, R> function) {
try {
if (CollectionUtils.isEmpty(values)) {
return new HashMap<>();
}
Map<R, V> map = new HashMap<>();
Method method = getMethod(function);
for (V value : values) {
@ -39,7 +40,7 @@ public class SanUtils {
public static <T, R, V> List<R> list2listFilterNull(List<V> values, LBiFunction0<T, R> function) {
List<R> list = list2list(values, function);
List<R> list = list2FieldList(values, function);
List<R> result = new ArrayList<>();
@ -60,9 +61,7 @@ public class SanUtils {
try {
if (CollectionUtils.isEmpty(values)) {
return list;
}
for (LBiFunction0<T, R> function : functions) {
Method method = getSetMethod(function);
for (V value : values) {
@ -78,7 +77,7 @@ public class SanUtils {
}
public static <T, V, R> List<R> convert2list(List<V> values, Class clazz) {
public static <T, V, R> List<R> convert2List(List<V> values, Class clazz) {
List<R> list = new ArrayList<>();
if (CollectionUtils.isEmpty(values)) {
return new ArrayList<>();
@ -95,7 +94,7 @@ public class SanUtils {
return list;
}
public static <T, R, V> List<R> list2list(List<V> values, LBiFunction0<T, R> function) {
public static <T, R, V> List<R> list2FieldList(List<V> values, LBiFunction0<T, R> function) {
List<R> list = new ArrayList<>();
try {
if (CollectionUtils.isEmpty(values)) {
@ -113,10 +112,34 @@ public class SanUtils {
return list;
}
public static <T, R, V> Map<R, List<V>> groupBy(List<V> values, LBiFunction0<T, R> function) {
public static <T, R, V> List<R> field2Set2List(List<V> values, LBiFunction0<T, R> function) {
List<R> list = new ArrayList<>();
List<R> 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 <T, R, V> Map<R, List<V>> groupByFiled2MapList(List<V> values, LBiFunction0<T, R> function) {
if (CollectionUtils.isEmpty(values)) {
return new HashMap<>();
}
Map<R, List<V>> listmap = new HashMap<>();
Method method = getMethod(function);
try {
@ -180,6 +203,51 @@ public class SanUtils {
}
public static <T,P , V,R> Map<P,R> groupAndSum(LBiFunction0<T, P> groupKeyFunction,List<V> values,LBiFunction0<T, R> function) {
Map<P,MethodSumDTO> 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<P, R> result = new HashMap<>();
for (Map.Entry<P, MethodSumDTO> 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 <T, V, R> List<R> getFieldList(List<V> values, LBiFunction0<T, R> tlBiFunction0) {
List<R> list = new ArrayList<>();
if (CollectionUtils.isEmpty(values)) {
@ -202,9 +270,9 @@ public class SanUtils {
return list;
}
public static <T, V, R> List<V> groupByMerge2List(LBiFunction0<T, R> groupByFunction, List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
public static <T, V, R> List<V> groupMerge2List(LBiFunction0<T, R> groupByFunction, List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
List<V> vList = new ArrayList<>();
Map<R, V> map = groupByMerge2Map(groupByFunction, values, functionArray);
Map<R, V> map = groupMerge2Map(groupByFunction, values, functionArray);
if (map != null) {
for (Map.Entry<R, V> entry : map.entrySet()) {
vList.add(entry.getValue());
@ -213,7 +281,7 @@ public class SanUtils {
return vList;
}
public static <T, V, R> Map<R, V> groupByMerge2Map(LBiFunction0<T, R> groupByFunction, List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
public static <T, V, R> Map<R, V> groupMerge2Map(LBiFunction0<T, R> groupByFunction, List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
Map<R, List<V>> mapData = new HashMap<>();
if (CollectionUtils.isEmpty(values)) {
return new HashMap<>();
@ -249,6 +317,9 @@ public class SanUtils {
return result;
}
public static <T, V> V merge(List<V> values, LBiFunction0<T, ? extends Object>... functionArray) {
try {
if (CollectionUtils.isEmpty(values)) {
@ -326,7 +397,6 @@ public class SanUtils {
}
private static <T, R> Method getSetMethod(LBiFunction0<T, R> 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<Method> 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 <T, R> Method getMethod(LBiFunction0<T, R> 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<Method> 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<Method> methods, Class paramClazz) {
for (Method method : methods) {
Class<?>[] parameterTypes = method.getParameterTypes();
@ -410,6 +478,7 @@ public class SanUtils {
return null;
}
public static <T, R, V> List<R> convert(List<V> list, LBiFunction0<T, R> function) {
List<Method> methods = getMethods(function);
List result = new ArrayList<>();

View File

@ -44,8 +44,8 @@ public class ReverseOrderServiceImpl implements ReverseOrderService {
@Override
public R createReverseOrder(List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList, AppliyReverseRequest appliyReverseRequest) {
List<Long> tradeOrderLineIds = SanUtils.list2list(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
Map<Long, VvTradeOrderLineEntity> vvTradeOrderLineEntityMap = SanUtils.list2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
List<Long> tradeOrderLineIds = SanUtils.list2FieldList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
Map<Long, VvTradeOrderLineEntity> vvTradeOrderLineEntityMap = SanUtils.groupByFiled2Map(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
Long tradeOrderId = SanUtils.findAnyNotNull(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTradeOrderId);
VvTradeOrderEntity vvTradeOrderEntity = vvTradeOrderDao.selectVvTradeOrderById(tradeOrderId);
VvReverseOrderEntity vvReverseOrderEntity = new VvReverseOrderEntity();

View File

@ -38,23 +38,23 @@ public class VvTradeOrderConvertServiceImpl implements VvTradeOrderConvertServic
List<VvTradeOrderLineEntity> list,boolean isApp) {
List<String> trackNumbers = SanUtils.list2listFilterNull(list, VvTradeOrderLineEntity::getTrackNumber);
List<VvPackageEntity> packageEntities = vvPackageDao.selectVvPackageByTrackNumbers(trackNumbers);
Map<String, VvPackageEntity> vvPackageEntityMap = SanUtils.list2Map(packageEntities, VvPackageEntity::getTrackNumber);
Map<String, VvPackageEntity> vvPackageEntityMap = SanUtils.groupByFiled2Map(packageEntities, VvPackageEntity::getTrackNumber);
Map<Long,List<VvTradeOrderLineEntity>> groupByTradeOrderIdMap = SanUtils.groupBy(list,VvTradeOrderLineEntity::getTradeOrderId );
Map<Long,List<VvTradeOrderLineEntity>> groupByTradeOrderIdMap = SanUtils.groupByFiled2MapList(list,VvTradeOrderLineEntity::getTradeOrderId );
List<VVOrderListResp> vvOrderListResps = new ArrayList<>();
for (VvTradeOrderEntity vvTradeOrderEntity : vvTradeOrderEntities) {
VVOrderListResp vvOrderListResp = new VVOrderListResp();
BeanUtils.copyProperties(vvTradeOrderEntity, vvOrderListResp);
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = groupByTradeOrderIdMap.get(vvTradeOrderEntity.getId());
Map<String, List<VvTradeOrderLineEntity>> groupByTrackNumberMap = SanUtils.groupBy(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTrackNumber);
Map<String, List<VvTradeOrderLineEntity>> groupByTrackNumberMap = SanUtils.groupByFiled2MapList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getTrackNumber);
List<AdminPackageDTO> packageList = new ArrayList<>();
for (Map.Entry<String, List<VvTradeOrderLineEntity>> vvTradeOrderLineTrackNumber : groupByTrackNumberMap.entrySet()) {
List<VvTradeOrderLineEntity> vvTradeOrderLineTrackNumberList = vvTradeOrderLineTrackNumber.getValue();
String trackNumber = vvTradeOrderLineTrackNumber.getKey();
List<VvTradeOrderLineDO> vvTradeOrderLineDOList = SanUtils.convert2list(vvTradeOrderLineTrackNumberList,VvTradeOrderLineDO.class);
List<VvTradeOrderLineDO> mergeTradeOrderLine = SanUtils.groupByMerge2List(
List<VvTradeOrderLineDO> vvTradeOrderLineDOList = SanUtils.convert2List(vvTradeOrderLineTrackNumberList,VvTradeOrderLineDO.class);
List<VvTradeOrderLineDO> mergeTradeOrderLine = SanUtils.groupMerge2List(
VvTradeOrderLineEntity::getSkuId,
vvTradeOrderLineDOList,
VvTradeOrderLineEntity::getPromotionPrice,

View File

@ -83,10 +83,10 @@ public class AdminBuyerController {
}
List<VvBuyerAddressEntity> vvBuyerAddressEntities = vvBuyerAddressDao.selectMapByBuyerIds(buyerIds);
Map<Long, List<VvBuyerAddressEntity>> listMap = SanUtils.groupBy(vvBuyerAddressEntities, VvBuyerAddressEntity::getBuyerId);
Map<Long, List<VvBuyerAddressEntity>> listMap = SanUtils.groupByFiled2MapList(vvBuyerAddressEntities, VvBuyerAddressEntity::getBuyerId);
List<VvPromoterEntity> vvPromoterEntities = vvPromoterDao.selectVvPromoterByPromoteIds(promoterIds);
Map<String, List<VvPromoterEntity>> vvPromoterGroupBy = SanUtils.groupBy(vvPromoterEntities, VvPromoterEntity::getPromoterId);
Map<String, List<VvPromoterEntity>> vvPromoterGroupBy = SanUtils.groupByFiled2MapList(vvPromoterEntities, VvPromoterEntity::getPromoterId);
List<VvBuyerDTO> buyerDTOs = new ArrayList<>();
for (VvBuyerEntity vvBuyerAddressEntity : vvBuyerEntities) {
VvBuyerDTO vvBuyerDTO = new VvBuyerDTO();

View File

@ -130,7 +130,7 @@ public class AdminOrderController {
List<VvTradeOrderEntity> tradeOrderEntities = vvTradeOrderDao.selectVvTradeOrderByTradeOrderIds(tradeOrderIds);
// 对订单进行排序必须按照子单的顺序
Map<Long, VvTradeOrderEntity> vvTradeOrderEntityMap = SanUtils.list2Map(tradeOrderEntities, VvTradeOrderEntity::getId);
Map<Long, VvTradeOrderEntity> vvTradeOrderEntityMap = SanUtils.groupByFiled2Map(tradeOrderEntities, VvTradeOrderEntity::getId);
List<VvTradeOrderEntity> vvTradeOrderEntities = new ArrayList<>();
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntities) {
vvTradeOrderEntities.add(vvTradeOrderEntityMap.get(vvTradeOrderLineEntity.getTradeOrderId()));
@ -175,7 +175,7 @@ public class AdminOrderController {
List<Long> tradeOrderLineIdList = SanUtils.getFieldList(vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getId);
List<VvTradeOrderLineStatusLogEntity> vvTradeOrderLineStatusLogList = vvTradeOrderLineStatusLogDao.selectVvTradeOrderLineStatusLogByIdList(tradeOrderLineIdList);
Map<Long, List<VvTradeOrderLineStatusLogEntity>> tradeOrderLineStatusLogMap = SanUtils.groupBy(vvTradeOrderLineStatusLogList, VvTradeOrderLineStatusLogEntity::getTradeOrderLineId);
Map<Long, List<VvTradeOrderLineStatusLogEntity>> tradeOrderLineStatusLogMap = SanUtils.groupByFiled2MapList(vvTradeOrderLineStatusLogList, VvTradeOrderLineStatusLogEntity::getTradeOrderLineId);
List<VvTradeOrderEntity> vvTradeOrderEntities = SanUtils.asList(vvTradeOrderEntity);
List<VVOrderListResp> vvOrderListResps = vvTradeOrderConvertService.convertTradeOrderLineResp(vvTradeOrderEntities, vvTradeOrderLineEntityList, false);

View File

@ -228,7 +228,7 @@ public class AdminProductController {
Map<Long, List<VvProductDetailEntity>> 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<VvSkuDTO> vvSkuDTOS = vvProductDTO.getVvSkuList();
List<VvSkuEntity> vvSkuEntities = vvSkuDao.selectVvSkuByProductId(productId);
Map<Long, List<VvSkuDTO>> groupbySkuDTOs = SanUtils.groupBy(vvSkuDTOS, VvSkuDTO::getId);
Map<Long, List<VvSkuDTO>> 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<Long, List<VvSkuPropertyValueEntity>> groupbySkuPropertyValue =
SanUtils.groupBy(vvSkuPropertyValueEntities, VvSkuPropertyValueEntity::getId);
SanUtils.groupByFiled2MapList(vvSkuPropertyValueEntities, VvSkuPropertyValueEntity::getId);
List<VvSkuPropertyValueEntity> vvSkuPropertyValueDB = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuId(vvSkuDTO.getId());
for (VvSkuPropertyValueEntity vvSkuPropertyValueDb : vvSkuPropertyValueDB) {
// 如果不存在 则直接删除
@ -291,7 +291,7 @@ public class AdminProductController {
List<VvProductPropertyEntity> vvProductPropertyEntities = vvProductPropertyDao.selectVvProductPropertyByProductId(productId);
Map<Long, List<VvProductPropertyDTO>> groupbyProductProperty =
SanUtils.groupBy(vvProductPropertyDTOS, VvProductPropertyDTO::getId);
SanUtils.groupByFiled2MapList(vvProductPropertyDTOS, VvProductPropertyDTO::getId);
for (VvProductPropertyEntity vvProductProperty : vvProductPropertyEntities) {
// 对他进行编辑
@ -308,7 +308,7 @@ public class AdminProductController {
List<VvProductPropertyValueEntity> vvProductPropertyValueEntities = vvProductPropertyDTO.getVvProductPropertyValueList();
Map<Long, List<VvProductPropertyValueEntity>> groupbyProductPropertyValue =
SanUtils.groupBy(vvProductPropertyValueEntities, VvProductPropertyValueEntity::getId);
SanUtils.groupByFiled2MapList(vvProductPropertyValueEntities, VvProductPropertyValueEntity::getId);
// 对他进行编辑
if (productPropertyId != null) {

View File

@ -88,9 +88,9 @@ public class AdminReverseController {
List<VvReverseOrderEntity> vvReverseOrderEntities = pageUtils.getRows();
List<Long> reverseOrderIds = SanUtils.list2listFilterNull(vvReverseOrderEntities, VvReverseOrderEntity::getId);
List<VvReverseOrderLineEntity> reverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderIds(reverseOrderIds);
Map<Long, List<VvReverseOrderLineEntity>> vvReverseOrderLineEntityMap = SanUtils.groupBy(reverseOrderLineEntities, VvReverseOrderLineEntity::getReverseOrderId);
Map<Long, List<VvReverseOrderLineEntity>> vvReverseOrderLineEntityMap = SanUtils.groupByFiled2MapList(reverseOrderLineEntities, VvReverseOrderLineEntity::getReverseOrderId);
List<VvReverseOrderProveEntity> vvReverseOrderProveEntities = vvReverseOrderProveDao.selectVvReverseOrderProveByReverseOrderId(reverseOrderIds);
Map<Long, List<VvReverseOrderProveEntity>> vvProveMap = SanUtils.groupBy(vvReverseOrderProveEntities, VvReverseOrderProveEntity::getReverseOrderId);
Map<Long, List<VvReverseOrderProveEntity>> vvProveMap = SanUtils.groupByFiled2MapList(vvReverseOrderProveEntities, VvReverseOrderProveEntity::getReverseOrderId);
List<String> trackNumbers = new ArrayList<>();
for (VvReverseOrderEntity vvReverseOrderEntity : vvReverseOrderEntities) {
if (StringUtils.isNotEmpty(vvReverseOrderEntity.getTrackNumber())) {
@ -212,7 +212,7 @@ public class AdminReverseController {
}
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(vvApproveRequest.getReverseOrderId());
List<Long> tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<Long> tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);
for (VvTradeOrderLineEntity vvTradeOrderLineEntity : vvTradeOrderLineEntityList) {
vvTradeOrderLineEntity.setReverseStatus(vvReverseOrderEntity.getStatus());

View File

@ -130,6 +130,7 @@ public class AppOrderController {
);
}
});
// 获取子单
List<VvTradeOrderLineEntity> vvTradeOrderLineEntitiesGroupByTradeOrderId = pageUtils.getRows();
// 获取订单
@ -166,31 +167,11 @@ public class AppOrderController {
@RequestMapping("/add")
public R add(@RequestBody VvTradeOrderDTO vvOrderRequest) {
List<VvTradeOrderLineEntity> vvTradeOrderLineEntityList = new ArrayList<>();
List<Long> skuIds = SanUtils.getFieldList( vvOrderRequest.getVvTradeOrderLineDTOList(),VvTradeOrderLineDTO::getSkuId);
List<Long> skuIds = new ArrayList<>();
for (VvTradeOrderLineDTO vvTradeOrderLineDTO : vvOrderRequest.getVvTradeOrderLineDTOList()) {
skuIds.add(vvTradeOrderLineDTO.getSkuId());
}
Set<Long> productIds = new HashSet<>();
List<VvSkuPropertyValueEntity> vvSkuPropertyValueList = vvSkuPropertyValueDao.selectVvSkuPropertyValueBySkuIds(skuIds);
Map<Long, List<VvSkuPropertyValueEntity>> vvSkuPropertyValueMap = new HashMap<>();
for (VvSkuPropertyValueEntity vvSkuPropertyValueEntity : vvSkuPropertyValueList) {
List<VvSkuPropertyValueEntity> vvSkuPropertyValueEntities = vvSkuPropertyValueMap.get(vvSkuPropertyValueEntity.getSkuId());
if (vvSkuPropertyValueEntities == null) {
vvSkuPropertyValueEntities = new ArrayList<>();
}
vvSkuPropertyValueEntities.add(vvSkuPropertyValueEntity);
vvSkuPropertyValueMap.put(vvSkuPropertyValueEntity.getSkuId(), vvSkuPropertyValueEntities);
productIds.add(vvSkuPropertyValueEntity.getProductId());
}
Map<Long, VvSkuEntity> skuEntityMap = new HashMap<>();
List<VvSkuEntity> 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<Long> productIdList = new ArrayList<>();
productIdList.addAll(productIds);
Map<Long, VvSkuEntity> skuEntityMap = SanUtils.groupByFiled2Map(vvSkuEntities,VvSkuEntity::getId);
Map<Long, List<VvSkuPropertyValueEntity>> vvSkuPropertyValueMap = SanUtils.groupByFiled2MapList(vvSkuPropertyValueList, VvSkuPropertyValueEntity::getSkuId);
List<Long> productIdList = SanUtils.field2Set2List(vvSkuEntities,VvSkuEntity::getProductId);
List<VvProductEntity> vvProductList = vvProductDao.selectVvProductByProductIds(productIdList);
Map<Long, VvProductEntity> vvProductMap = new HashMap<>();
for (VvProductEntity vvProductEntity : vvProductList) {
vvProductMap.put(vvProductEntity.getId(), vvProductEntity);
}
Map<Long, Integer> productNumMap = new HashMap<>();
Map<Long, VvProductEntity> 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<VvSkuPropertyValueEntity> vvSkuPropertyValueEntities = vvSkuPropertyValueMap.get(vvTradeOrderLineDTO.getSkuId());
VvProductEntity vvProduct = vvProductMap.get(vvSkuEntity.getProductId());
List<PropertyNameValue> 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<Long, Integer> productNumMap = SanUtils.groupAndSum(VvTradeOrderLineEntity::getProductId, vvTradeOrderLineEntityList, VvTradeOrderLineEntity::getNum);
for (Map.Entry<Long, Integer> 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<VvTradeOrderLineEntity> 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);
}

View File

@ -141,7 +141,7 @@ public class AppReverseController {
vvReverseOrderDao.updateVvReverseOrderById(vvReverseOrderEntity);
List<VvReverseOrderLineEntity> vvReverseOrderLineEntities = vvReverseOrderLineDao.selectVvReverseOrderLineByReverseOrderId(request.getReverseOrderId());
List<Long> tradeOrderLineIds = SanUtils.list2list(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<Long> tradeOrderLineIds = SanUtils.list2FieldList(vvReverseOrderLineEntities, VvReverseOrderLineEntity::getTradeOrderLineId);
List<VvTradeOrderLineEntity> tradeOrderLineEntities = vvTradeOrderLineDao.selectVvTradeOrderLineByIds(tradeOrderLineIds);
for (VvTradeOrderLineEntity tradeOrderLineEntity : tradeOrderLineEntities) {
tradeOrderLineEntity.setReverseStatus(ReverseStatusEnums.close.getStatus());

View File

@ -29,7 +29,7 @@ public class AppScrollController {
@RequestMapping("/list")
public R query(@RequestBody AppBaseRequest request) {
List<VvScrollConfigEntity> vvScrollConfigEntityList = vvScrollConfigDao.selectVvScrollConfigAll();
Map<String, List<VvScrollConfigEntity>> configMap = SanUtils.groupBy(vvScrollConfigEntityList, VvScrollConfigEntity::getType);
Map<String, List<VvScrollConfigEntity>> configMap = SanUtils.groupByFiled2MapList(vvScrollConfigEntityList, VvScrollConfigEntity::getType);
return R.ok().setData(configMap);
}

View File

@ -66,10 +66,10 @@ public class Test4 {
//System.out.println(JSON.toJSONString(vvTradeOrderLine));
List<VvTradeOrderLineDO> vvTradeOrderLineDOList = SanUtils.convert2list(vvTradeOrderLineEntityList, VvTradeOrderLineDO.class);
List<VvTradeOrderLineDO> vvTradeOrderLineDOList = SanUtils.convert2List(vvTradeOrderLineEntityList, VvTradeOrderLineDO.class);
Map<Long, VvTradeOrderLineDO> vvTradeOrderLineMap = SanUtils.groupByMerge2Map(VvTradeOrderLineEntity::getSkuId,
Map<Long, VvTradeOrderLineDO> vvTradeOrderLineMap = SanUtils.groupMerge2Map(VvTradeOrderLineEntity::getSkuId,
vvTradeOrderLineDOList,
VvTradeOrderLineEntity::getSalePrice,
VvTradeOrderLineEntity::getPromotionPrice,