diff --git a/hiver-core/src/main/java/cc/hiver/core/dao/UserDao.java b/hiver-core/src/main/java/cc/hiver/core/dao/UserDao.java
index 6fd3b5fe..5847ccfe 100644
--- a/hiver-core/src/main/java/cc/hiver/core/dao/UserDao.java
+++ b/hiver-core/src/main/java/cc/hiver/core/dao/UserDao.java
@@ -6,6 +6,7 @@ import cc.hiver.core.vo.ShopUserDto;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -117,4 +118,8 @@ public interface UserDao extends HiverBaseDao
{
@Modifying
@Query("update User u set u.mobile=?1 where u.id=?2")
void updateUserPhoneById(String userPhone, String userId);
+
+ @Modifying
+ @Query(value = "update t_user set saved_amount = coalesce(saved_amount, 0) + ?2 where id = ?1", nativeQuery = true)
+ int increaseSavedAmount(String userId, BigDecimal savedAmount);
}
diff --git a/hiver-core/src/main/java/cc/hiver/core/entity/User.java b/hiver-core/src/main/java/cc/hiver/core/entity/User.java
index abd50d74..baaeafba 100644
--- a/hiver-core/src/main/java/cc/hiver/core/entity/User.java
+++ b/hiver-core/src/main/java/cc/hiver/core/entity/User.java
@@ -143,4 +143,7 @@ public class User extends HiverBaseEntity {
@ApiModelProperty("当å‰è´¦æˆ·ä½™é¢")
private BigDecimal depoBal = new BigDecimal(0);
+
+ @ApiModelProperty("累计已çœé‡‘é¢")
+ private BigDecimal savedAmount = new BigDecimal(0);
}
diff --git a/hiver-core/src/main/java/cc/hiver/core/service/UserService.java b/hiver-core/src/main/java/cc/hiver/core/service/UserService.java
index 20151366..d425c1fc 100644
--- a/hiver-core/src/main/java/cc/hiver/core/service/UserService.java
+++ b/hiver-core/src/main/java/cc/hiver/core/service/UserService.java
@@ -10,6 +10,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.query.Param;
+import java.math.BigDecimal;
import java.util.List;
/**
@@ -107,6 +108,8 @@ public interface UserService extends HiverBaseService {
*/
void updateDepartmentTitle(String departmentId, String departmentTitle);
+ int increaseSavedAmount(String userId, BigDecimal savedAmount);
+
/**
* é€šè¿‡è§’è‰²åæœç´¢
*
diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/UserServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/UserServiceImpl.java
index d08c1f05..21c2aa8b 100644
--- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/UserServiceImpl.java
+++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/UserServiceImpl.java
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.*;
+import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -66,6 +67,11 @@ public class UserServiceImpl implements UserService {
return userDao;
}
+ @Override
+ public int increaseSavedAmount(String userId, BigDecimal savedAmount) {
+ return userDao.increaseSavedAmount(userId, savedAmount);
+ }
+
@Override
public User findByUsername(String username) {
final User user = userDao.findByUsername(username);
diff --git a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java
index be65f64c..f6f38a98 100644
--- a/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java
+++ b/hiver-core/src/main/java/cc/hiver/core/serviceimpl/WorkerServiceImpl.java
@@ -82,6 +82,9 @@ public class WorkerServiceImpl implements WorkerService {
if (CharSequenceUtil.isNotBlank(worker.getWorkerName())) {
list.add(cb.like(workerNameField, '%' + worker.getWorkerName() + '%'));
}
+ if (CharSequenceUtil.isNotBlank(worker.getMobile())) {
+ list.add(cb.like(mobileField, '%' + worker.getMobile() + '%'));
+ }
// 状æ€
if (worker.getWorkerStatus() != null) {
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java
index 7905aadf..03b99767 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/AdminMallOrderGroupController.java
@@ -10,7 +10,6 @@ import cc.hiver.mall.entity.*;
import cc.hiver.mall.pojo.dto.ShopCacheDTO;
import cc.hiver.mall.service.mybatis.MallOrderGroupService;
import cc.hiver.mall.service.mybatis.MallOrderService;
-import cc.hiver.mall.utils.ShopGroupOrderCacheUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -31,6 +30,8 @@ import java.util.stream.Collectors;
@RequestMapping("/hiver/mall/admin/orderGroup")
public class AdminMallOrderGroupController {
+ private static final int GROUP_STATUS_FACE_TO_FACE = 3;
+
@Autowired
private MallOrderGroupService mallOrderGroupService;
@@ -40,9 +41,6 @@ public class AdminMallOrderGroupController {
@Autowired
private MallOrderGoodsMapper mallOrderGoodsMapper;
- @Autowired
- private ShopGroupOrderCacheUtil shopGroupOrderCacheUtil;
-
@Autowired
private RedisTemplateHelper redisTemplateHelper;
@@ -59,6 +57,7 @@ public class AdminMallOrderGroupController {
private String headUserId;
private Integer status;
private String productName;
+ private String shopName;
private String keyWord;
private Integer isFace;
private Integer merchantType;
@@ -98,18 +97,8 @@ public class AdminMallOrderGroupController {
if (query == null || StringUtils.isBlank(query.getRegionId())) {
return ResultUtil.error("regionIdä¸èƒ½ä¸ºç©º");
}
- if (query.getStatus() == null) {
- query.setStatus(0);
- }
- if (query.getIsFace() == null) {
- query.setIsFace(0);
- }
- List groups = shopGroupOrderCacheUtil.getAllByRegion(query.getRegionId());
- if (groups == null) {
- groups = listGroupsFromDb(query);
- shopGroupOrderCacheUtil.putAllByRegion(query.getRegionId(), groups);
- }
+ List groups = listGroupsFromDb(query);
groups = filterGroups(groups, query);
Map shopMap = buildShopMap(groups, query.getRegionId());
@@ -148,6 +137,9 @@ public class AdminMallOrderGroupController {
if (StringUtils.isNotBlank(query.getProductName())) {
qw.like(MallOrderGroup::getProductName, query.getProductName());
}
+ if (StringUtils.isNotBlank(query.getShopName())) {
+ qw.like(MallOrderGroup::getShopName, query.getShopName());
+ }
if (query.getIsFace() != null) {
qw.eq(MallOrderGroup::getIsFace, query.getIsFace());
}
@@ -166,6 +158,10 @@ public class AdminMallOrderGroupController {
.filter(group -> StringUtils.isBlank(query.getHeadUserId()) || query.getHeadUserId().equals(group.getHeadUserId()))
.filter(group -> query.getStatus() == null || query.getStatus().equals(group.getStatus()))
.filter(group -> query.getIsFace() == null || query.getIsFace().equals(group.getIsFace()))
+ .filter(group -> StringUtils.isBlank(query.getShopName()) || contains(group.getShopName(), query.getShopName()))
+ .filter(group -> query.getStatus() == null
+ || query.getStatus() != GROUP_STATUS_FACE_TO_FACE
+ || Integer.valueOf(1).equals(group.getIsFace()))
.collect(Collectors.toList());
}
@@ -310,32 +306,48 @@ public class AdminMallOrderGroupController {
OrderGroupDetailVo vo = new OrderGroupDetailVo();
vo.setGroup(group);
- // èŽ·å–æ‹¼å›¢çš„å订å•
- if (StringUtils.isNotBlank(group.getGroupOrderIds())) {
- List orderIds = Arrays.asList(group.getGroupOrderIds().split(","));
- if (!orderIds.isEmpty()) {
- LambdaQueryWrapper oqw = new LambdaQueryWrapper<>();
- oqw.in(MallOrder::getId, orderIds);
- List childOrders = mallOrderService.list(oqw);
- // 2. 一次 IN æŸ¥è¯¢æ‰€æœ‰å•†å“æ˜Žç»†
- List allGoods = mallOrderGoodsMapper.selectByOrderIds(orderIds);
-
- // 3. 按 orderId 分组
- java.util.Map> goodsMap = allGoods.stream()
- .collect(java.util.stream.Collectors.groupingBy(MallOrderGoods::getOrderId));
-
- // 4. 组装到æ¯ä¸ª VO
- for (MallOrder order : childOrders) {
- order.setGoodsList(goodsMap.getOrDefault(order.getId(), java.util.Collections.emptyList()));
- }
- vo.setChildOrders(childOrders);
- } else {
- vo.setChildOrders(new ArrayList<>());
+ // èŽ·å–æ‹¼å›¢çš„æ‰€æœ‰è®¢å•,ä¸åŒ…嫿œªæ”¯ä»˜ã€å¤±è´¥/å–æ¶ˆç‰çжæ€ã€‚
+ List orderIds = buildGroupOrderIds(group);
+ if (!orderIds.isEmpty()) {
+ LambdaQueryWrapper oqw = new LambdaQueryWrapper<>();
+ oqw.in(MallOrder::getId, orderIds).isNotNull(MallOrder::getPayTime)
+ .ne(MallOrder::getStatus, 6);;
+ List childOrders = mallOrderService.list(oqw);
+ List allGoods = mallOrderGoodsMapper.selectByOrderIds(orderIds);
+ if (allGoods == null) {
+ allGoods = Collections.emptyList();
}
+
+ java.util.Map> goodsMap = allGoods.stream()
+ .collect(java.util.stream.Collectors.groupingBy(MallOrderGoods::getOrderId));
+
+ for (MallOrder order : childOrders) {
+ order.setGoodsList(goodsMap.getOrDefault(order.getId(), java.util.Collections.emptyList()));
+ }
+ java.util.Map orderMap = childOrders.stream()
+ .collect(java.util.stream.Collectors.toMap(MallOrder::getId, order -> order, (a, b) -> a));
+ vo.setChildOrders(orderIds.stream()
+ .map(orderMap::get)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList()));
} else {
vo.setChildOrders(new ArrayList<>());
}
return new ResultUtil().setData(vo);
}
+
+ private List buildGroupOrderIds(MallOrderGroup group) {
+ Set orderIds = new LinkedHashSet<>();
+ if (StringUtils.isNotBlank(group.getHeadOrderId())) {
+ orderIds.add(group.getHeadOrderId());
+ }
+ if (StringUtils.isNotBlank(group.getGroupOrderIds())) {
+ Arrays.stream(group.getGroupOrderIds().split(","))
+ .map(String::trim)
+ .filter(StringUtils::isNotBlank)
+ .forEach(orderIds::add);
+ }
+ return new ArrayList<>(orderIds);
+ }
}
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/CommentController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/CommentController.java
index d01c7e63..c06a91ed 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/CommentController.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/CommentController.java
@@ -22,7 +22,9 @@ import cc.hiver.core.common.utils.StringUtils;
import cc.hiver.core.common.vo.Result;
import cc.hiver.core.entity.Worker;
import cc.hiver.core.serviceimpl.WorkerServiceImpl;
+import cc.hiver.mall.dao.mapper.MallOrderGoodsMapper;
import cc.hiver.mall.entity.Comment;
+import cc.hiver.mall.entity.MallOrderGoods;
import cc.hiver.mall.entity.Shop;
import cc.hiver.mall.pojo.dto.ShopCacheDTO;
import cc.hiver.mall.pojo.query.CommentQuery;
@@ -46,6 +48,8 @@ import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* 评论接å£
@@ -76,6 +80,9 @@ public class CommentController {
@Autowired
private WorkerServiceImpl workerServiceImpl;
+ @Autowired
+ private MallOrderGoodsMapper mallOrderGoodsMapper;
+
@RequestMapping(value = "/save", method = RequestMethod.POST)
@ApiOperation("ä¿å˜")
@@ -208,9 +215,21 @@ public class CommentController {
//评论分页
final Page commentsPage = commentService.getCommentList(commentQuery);
final List parentIds = new ArrayList<>();
+ final List orderIds = new ArrayList<>();
commentsPage.getRecords().forEach(e -> {
parentIds.add(e.getId());
+ if (StringUtils.isNotBlank(e.getOrderId())) {
+ orderIds.add(e.getOrderId());
+ }
});
+ //æŒ‰æœ¬é¡µè®¢å•æ‰¹é‡æŸ¥è¯¢å•†å“ï¼Œåœ¨å†…å˜æŒ‰è®¢å•组装到评论上
+ if(orderIds.size() > 0){
+ List goodsList = mallOrderGoodsMapper.selectByOrderIds(orderIds.stream().distinct().collect(Collectors.toList()));
+ Map> goodsMap = goodsList.stream()
+ .filter(goods -> StringUtils.isNotBlank(goods.getOrderId()))
+ .collect(Collectors.groupingBy(MallOrderGoods::getOrderId));
+ commentsPage.getRecords().forEach(e -> e.setGoodsList(goodsMap.getOrDefault(e.getOrderId(), new ArrayList<>())));
+ }
//å°è£…å级评论
if(parentIds.size() > 0){
final List comments = commentService.getCommentListByParentId(parentIds);
diff --git a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java
index f220981a..000e0e8e 100644
--- a/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java
+++ b/hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/MallDeliveryOrderController.java
@@ -157,6 +157,21 @@ public class MallDeliveryOrderController {
return new ResultUtil