UserPackageService.java 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.izouma.jiashanxia.service;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.izouma.jiashanxia.domain.PackageGoods;
  5. import com.izouma.jiashanxia.domain.User;
  6. import com.izouma.jiashanxia.domain.UserPackage;
  7. import com.izouma.jiashanxia.domain.UserPackageFlow;
  8. import com.izouma.jiashanxia.dto.GoodsDTO;
  9. import com.izouma.jiashanxia.dto.PageQuery;
  10. import com.izouma.jiashanxia.enums.FlowType;
  11. import com.izouma.jiashanxia.exception.BusinessException;
  12. import com.izouma.jiashanxia.repo.UserRepo;
  13. import com.izouma.jiashanxia.repo.UserPackageFlowRepo;
  14. import com.izouma.jiashanxia.repo.UserPackageRepo;
  15. import com.izouma.jiashanxia.utils.JpaUtils;
  16. import io.swagger.models.auth.In;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.data.domain.Page;
  19. import org.springframework.stereotype.Service;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.stream.Collectors;
  23. @Service
  24. @AllArgsConstructor
  25. public class UserPackageService {
  26. private UserPackageRepo userPackageRepo;
  27. private UserPackageFlowRepo userPackageFlowRepo;
  28. public Page<UserPackage> all(PageQuery pageQuery) {
  29. return userPackageRepo.findAll(JpaUtils.toSpecification(pageQuery, UserPackage.class), JpaUtils.toPageRequest(pageQuery));
  30. }
  31. /*
  32. 加入套餐
  33. 用户套餐和企业套餐重叠怎么办?
  34. */
  35. public void joinUserPackage(Long userId, List<PackageGoods> packageGoodsList, Integer num) {
  36. // 用户已有套餐
  37. Map<Long, UserPackage> userPackageMap = userPackageRepo.findAllByUserId(userId)
  38. .stream()
  39. .collect(Collectors.toMap(UserPackage::getGoodsInfoId, userSet -> userSet));
  40. // 加入用户套餐
  41. packageGoodsList.forEach(setGoods -> {
  42. UserPackage goods = userPackageMap.get(setGoods.getGoodsInfoId());
  43. if (ObjectUtil.isNotEmpty(goods)) {
  44. goods.setNum(goods.getNum() + setGoods.getNum() * num);
  45. goods.setRemark(setGoods.getRemark());
  46. } else {
  47. goods = UserPackage.builder()
  48. .userId(userId)
  49. .goodsInfoId(setGoods.getGoodsInfoId())
  50. .num(setGoods.getNum() * num)
  51. .remark(setGoods.getRemark())
  52. .build();
  53. }
  54. userPackageRepo.save(goods);
  55. });
  56. // 记录套餐流水
  57. List<GoodsDTO> goodsDTOS = JSONObject.parseArray(JSONObject.toJSONString(packageGoodsList), GoodsDTO.class);
  58. userPackageFlowRepo.save(UserPackageFlow.builder()
  59. .userId(userId)
  60. .type(FlowType.BUY)
  61. .content(JSONObject.toJSONString(goodsDTOS))
  62. .build());
  63. }
  64. }