|
|
@@ -1,14 +1,11 @@
|
|
|
package com.izouma.jiashanxia.service;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
-import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.izouma.jiashanxia.domain.GoodsInfo;
|
|
|
-import com.izouma.jiashanxia.domain.OrderInfo;
|
|
|
-import com.izouma.jiashanxia.domain.UserPackage;
|
|
|
-import com.izouma.jiashanxia.domain.UserPackageFlow;
|
|
|
+import com.izouma.jiashanxia.domain.*;
|
|
|
+import com.izouma.jiashanxia.domain.Package;
|
|
|
import com.izouma.jiashanxia.dto.*;
|
|
|
import com.izouma.jiashanxia.enums.FlowType;
|
|
|
import com.izouma.jiashanxia.enums.OrderInfoStatus;
|
|
|
@@ -32,6 +29,8 @@ public class UserPackageFlowService {
|
|
|
private final UserPackageRepo userPackageRepo;
|
|
|
private final OrderInfoRepo orderInfoRepo;
|
|
|
private final CommissionRecordService commissionRecordService;
|
|
|
+ private final UserCouponService userCouponService;
|
|
|
+ private final PackageRepo packageRepo;
|
|
|
|
|
|
|
|
|
public Page<UserPackageFlow> all(PageQuery pageQuery) {
|
|
|
@@ -64,9 +63,13 @@ public class UserPackageFlowService {
|
|
|
|
|
|
public Page<UserPackageFlowVO> writeOffAll1(PageQuery pageQuery) {
|
|
|
pageQuery.setSort("createdAt,desc");
|
|
|
- Map<Long, String> goodsMap = goodsInfoRepo.findAll()
|
|
|
+ Map<Long, Package> packageMap = packageRepo.findAll()
|
|
|
.stream()
|
|
|
- .collect(Collectors.toMap(GoodsInfo::getId, GoodsInfo::getName));
|
|
|
+ .collect(Collectors.toMap(Package::getId, aPackage -> aPackage));
|
|
|
+
|
|
|
+ Map<Long, OrderInfo> orderInfoMap = orderInfoRepo.findAllByStatus(OrderInfoStatus.USED)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(OrderInfo::getId, orderInfo -> orderInfo));
|
|
|
return userPackageFlowRepo.findAll(((root, criteriaQuery, criteriaBuilder) -> {
|
|
|
List<Predicate> and = JpaUtils
|
|
|
.toPredicates(pageQuery, UserPackageFlow.class, root, criteriaQuery, criteriaBuilder);
|
|
|
@@ -81,39 +84,54 @@ public class UserPackageFlowService {
|
|
|
and.add(criteriaBuilder.or(or.toArray(new Predicate[0])));
|
|
|
}
|
|
|
return criteriaBuilder.and(and.toArray(new Predicate[0]));
|
|
|
- }), JpaUtils.toPageRequest(pageQuery)).map(flow -> {
|
|
|
-
|
|
|
- UserPackageFlowVO vo = new UserPackageFlowVO();
|
|
|
- BeanUtil.copyProperties(flow, vo);
|
|
|
- vo.setNickname(flow.getUser().getNickname());
|
|
|
- vo.setAvatar(flow.getUser().getAvatar());
|
|
|
- if (CollUtil.isNotEmpty(flow.getContent())){
|
|
|
- List<GoodsVO> goodsVOS = this.toGoodsVO(flow.getContent(), goodsMap);
|
|
|
- vo.setContent(goodsVOS);
|
|
|
- }
|
|
|
- return vo;
|
|
|
- });
|
|
|
+ }), JpaUtils.toPageRequest(pageQuery))
|
|
|
+ .map(flow -> this.toVO(flow, orderInfoMap.get(flow.getOrderInfoId()), packageMap));
|
|
|
}
|
|
|
|
|
|
public List<UserPackageFlowVO> my(Long userId) {
|
|
|
List<UserPackageFlowVO> vos = new ArrayList<>();
|
|
|
// 查找用户相关
|
|
|
List<UserPackageFlow> flows = userPackageFlowRepo.findAllByUserIdOrderByCreatedAtDesc(userId);
|
|
|
- Map<Long, String> goodsMap = goodsInfoRepo.findAll()
|
|
|
+ Map<Long, OrderInfo> orderInfoMap = orderInfoRepo.findAllByStatusAndUserId(OrderInfoStatus.USED, userId)
|
|
|
.stream()
|
|
|
- .collect(Collectors.toMap(GoodsInfo::getId, GoodsInfo::getName));
|
|
|
+ .collect(Collectors.toMap(OrderInfo::getId, orderInfo -> orderInfo));
|
|
|
+ Set<Long> packageIds = orderInfoMap.values().stream().map(OrderInfo::getPackageId).collect(Collectors.toSet());
|
|
|
+ Map<Long, Package> packageMap = packageRepo.findAllById(packageIds)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(Package::getId, aPackage -> aPackage));
|
|
|
+// Map<Long, String> goodsMap = goodsInfoRepo.findAll()
|
|
|
+// .stream()
|
|
|
+// .collect(Collectors.toMap(GoodsInfo::getId, GoodsInfo::getName));
|
|
|
// 转vo
|
|
|
flows.forEach(flow -> {
|
|
|
- List<GoodsVO> goodsVOS = this.toGoodsVO(flow.getContent(), goodsMap);
|
|
|
- UserPackageFlowVO vo = new UserPackageFlowVO();
|
|
|
- BeanUtil.copyProperties(flow, vo);
|
|
|
- vo.setContent(goodsVOS);
|
|
|
- vos.add(vo);
|
|
|
+// if (CollUtil.isNotEmpty(flow.getContent())) {
|
|
|
+// List<GoodsVO> goodsVOS = this.toGoodsVO(flow.getContent(), goodsMap);
|
|
|
+// vo.setContent(goodsVOS);
|
|
|
+// }
|
|
|
+ vos.add(this.toVO(flow, orderInfoMap.get(flow.getOrderInfoId()), packageMap));
|
|
|
});
|
|
|
return vos;
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public UserPackageFlowVO toVO(UserPackageFlow flow, OrderInfo orderInfo, Map<Long, Package> packageMap) {
|
|
|
+ UserPackageFlowVO vo = new UserPackageFlowVO();
|
|
|
+ BeanUtil.copyProperties(flow, vo);
|
|
|
+ vo.setWriteOffTime(flow.getCreatedAt());
|
|
|
+
|
|
|
+ vo.setNickname(flow.getUser().getNickname());
|
|
|
+ vo.setAvatar(flow.getUser().getAvatar());
|
|
|
+ if (ObjectUtil.isNotNull(orderInfo)) {
|
|
|
+ BeanUtil.copyProperties(orderInfo, vo);
|
|
|
+ Package aPackage = packageMap.get(orderInfo.getPackageId());
|
|
|
+ if (ObjectUtil.isNotNull(aPackage)) {
|
|
|
+ vo.setPackageImg(aPackage.getImg().get(0));
|
|
|
+ vo.setName(aPackage.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return vo;
|
|
|
+ }
|
|
|
+
|
|
|
public List<GoodsVO> toGoodsVO(List<GoodsDTO> goodsDTOS, Map<Long, String> goodsMap) {
|
|
|
// List<GoodsDTO> goodsDTOS = JSONObject.parseArray(content, GoodsDTO.class);
|
|
|
List<GoodsVO> goodsVOS = new ArrayList<>();
|
|
|
@@ -130,10 +148,6 @@ public class UserPackageFlowService {
|
|
|
核销
|
|
|
*/
|
|
|
public UserPackageFlow writeOff(WriteOffSaveVO writeOffSaveVO) {
|
|
|
-// if (writeOffSaveVO.getUserId().equals(writeOffSaveVO.getWriteOffUserId())) {
|
|
|
-// throw new BusinessException("不可自己核销自己");
|
|
|
-// }
|
|
|
-
|
|
|
// 用户已有套餐
|
|
|
Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserId(writeOffSaveVO.getUserId())
|
|
|
.stream()
|
|
|
@@ -176,33 +190,31 @@ public class UserPackageFlowService {
|
|
|
if (ObjectUtil.isNotEmpty(orderInfoId)) {
|
|
|
OrderInfo orderInfo = orderInfoRepo.findById(orderInfoId)
|
|
|
.orElseThrow(new BusinessException("无订单"));
|
|
|
-
|
|
|
- if (orderInfo.getUserId().equals(writeOffSaveVO.getWriteOffUserId())) {
|
|
|
+ Long userId = orderInfo.getUserId();
|
|
|
+ if (userId.equals(writeOffSaveVO.getWriteOffUserId())) {
|
|
|
throw new BusinessException("不可自己核销自己");
|
|
|
}
|
|
|
|
|
|
-// if (orderInfo.isUse()) {
|
|
|
if (OrderInfoStatus.USED.equals(orderInfo.getStatus())) {
|
|
|
throw new BusinessException("已核销");
|
|
|
}
|
|
|
-// orderInfo.setUse(true);
|
|
|
orderInfo.setStatus(OrderInfoStatus.USED);
|
|
|
orderInfoRepo.save(orderInfo);
|
|
|
-// UserPackageFlow flow = userPackageFlowRepo.findByOrderInfoId(orderInfoId);
|
|
|
-// flow.getContent().forEach(goods -> goods.setNum(-goods.getNum()));
|
|
|
|
|
|
// 上级分销变 可提现
|
|
|
commissionRecordService.canWithdraw(orderInfoId);
|
|
|
+ // 获得优惠券
|
|
|
+ userCouponService.autoGetCoupon(orderInfo.getPackageId(), userId);
|
|
|
|
|
|
return userPackageFlowRepo.save(
|
|
|
UserPackageFlow.builder()
|
|
|
- .userId(orderInfo.getUserId())
|
|
|
-// .content(flow.getContent())
|
|
|
- .orderInfoId(writeOffSaveVO.getOrderInfoId())
|
|
|
+ .userId(userId)
|
|
|
+ .orderInfoId(orderInfoId)
|
|
|
.type(FlowType.WRITE_OFF)
|
|
|
.writeOffUserId(writeOffSaveVO.getWriteOffUserId())
|
|
|
.build());
|
|
|
}
|
|
|
+
|
|
|
// 余额类的
|
|
|
if (writeOffSaveVO.getUserId().equals(writeOffSaveVO.getWriteOffUserId())) {
|
|
|
throw new BusinessException("不可自己核销自己");
|