| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- package com.izouma.jiashanxia.service;
- import cn.hutool.core.util.ObjectUtil;
- import com.alibaba.fastjson.JSONObject;
- import com.izouma.jiashanxia.domain.PackageGoods;
- import com.izouma.jiashanxia.domain.User;
- import com.izouma.jiashanxia.domain.UserPackage;
- import com.izouma.jiashanxia.domain.UserPackageFlow;
- import com.izouma.jiashanxia.dto.GoodsDTO;
- import com.izouma.jiashanxia.dto.PageQuery;
- import com.izouma.jiashanxia.enums.FlowType;
- import com.izouma.jiashanxia.enums.PackageType;
- import com.izouma.jiashanxia.exception.BusinessException;
- import com.izouma.jiashanxia.repo.UserRepo;
- import com.izouma.jiashanxia.repo.UserPackageFlowRepo;
- import com.izouma.jiashanxia.repo.UserPackageRepo;
- import com.izouma.jiashanxia.utils.JpaUtils;
- import io.swagger.models.auth.In;
- import lombok.AllArgsConstructor;
- import org.springframework.data.domain.Page;
- import org.springframework.stereotype.Service;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- @Service
- @AllArgsConstructor
- public class UserPackageService {
- private final UserPackageRepo userPackageRepo;
- private final UserPackageFlowRepo userPackageFlowRepo;
- public Page<UserPackage> all(PageQuery pageQuery) {
- return userPackageRepo.findAll(JpaUtils.toSpecification(pageQuery, UserPackage.class), JpaUtils.toPageRequest(pageQuery));
- }
- /**
- * 加入套餐
- *
- * @param userId 用户id
- * @param packageGoodsList 套餐商品
- * @param num 数量
- * @param type 类型(团队/个人)
- */
- public void joinUserPackage(Long userId, List<PackageGoods> packageGoodsList, Integer num, PackageType type) {
- // 用户已有套餐
- Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserIdAndType(userId, type)
- .stream()
- .collect(Collectors.toMap(UserPackage::getGoodsInfoId, userSet -> userSet));
- // 加入用户套餐
- packageGoodsList.forEach(setGoods -> {
- UserPackage goods = userPackageMap.get(setGoods.getGoodsInfoId());
- if (ObjectUtil.isNotEmpty(goods)) {
- goods.setNum(goods.getNum() + setGoods.getNum() * num);
- goods.setRemark(setGoods.getRemark());
- } else {
- goods = UserPackage.builder()
- .userId(userId)
- .goodsInfoId(setGoods.getGoodsInfoId())
- .num(setGoods.getNum() * num)
- .remark(setGoods.getRemark())
- .type(type)
- .build();
- }
- userPackageRepo.save(goods);
- });
- // 记录套餐流水
- List<GoodsDTO> goodsDTOS = JSONObject.parseArray(JSONObject.toJSONString(packageGoodsList), GoodsDTO.class);
- userPackageFlowRepo.save(UserPackageFlow.builder()
- .userId(userId)
- .type(FlowType.BUY)
- .packageType(type)
- // .content(JSONObject.toJSONString(goodsDTOS))
- .content(goodsDTOS)
- .build());
- }
- public void joinUserPackage1(Long userId, List<PackageGoods> packageGoodsList, Integer num) {
- // 用户已有套餐
- Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserId(userId)
- .stream()
- .collect(Collectors.toMap(UserPackage::getGoodsInfoId, userSet -> userSet));
- // 加入用户套餐
- packageGoodsList.forEach(setGoods -> {
- UserPackage goods = userPackageMap.get(setGoods.getGoodsInfoId());
- if (ObjectUtil.isNotEmpty(goods)) {
- goods.setNum(goods.getNum() + setGoods.getNum() * num);
- goods.setRemark(setGoods.getRemark());
- } else {
- goods = UserPackage.builder()
- .userId(userId)
- .goodsInfoId(setGoods.getGoodsInfoId())
- .num(setGoods.getNum() * num)
- .remark(setGoods.getRemark())
- .build();
- }
- userPackageRepo.save(goods);
- });
- }
- /*
- 多次套餐退款
- */
- public boolean canRefund(Long userId, Long orderId) {
- UserPackageFlow flow = userPackageFlowRepo.findByOrderInfoId(orderId);
- List<GoodsDTO> content = flow.getContent();
- Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserId(userId)
- .stream()
- .collect(Collectors.toMap(UserPackage::getGoodsInfoId, aPackage -> aPackage));
- for (GoodsDTO goods : content) {
- UserPackage userPackage = userPackageMap.get(goods.getGoodsInfoId());
- if (ObjectUtil.isNull(userPackage)) {
- return false;
- }
- if (userPackage.getNum() < goods.getNum()) {
- return false;
- }
- }
- return true;
- }
- }
|