UserSetService.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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.SetGoods;
  5. import com.izouma.jiashanxia.domain.User;
  6. import com.izouma.jiashanxia.domain.UserSet;
  7. import com.izouma.jiashanxia.domain.UserSetFlow;
  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.repo.UserRepo;
  12. import com.izouma.jiashanxia.repo.UserSetFlowRepo;
  13. import com.izouma.jiashanxia.repo.UserSetRepo;
  14. import com.izouma.jiashanxia.utils.JpaUtils;
  15. import lombok.AllArgsConstructor;
  16. import org.springframework.data.domain.Page;
  17. import org.springframework.stereotype.Service;
  18. import java.util.List;
  19. import java.util.Map;
  20. import java.util.stream.Collectors;
  21. @Service
  22. @AllArgsConstructor
  23. public class UserSetService {
  24. private UserSetRepo userSetRepo;
  25. private UserSetFlowRepo userSetFlowRepo;
  26. private UserRepo userRepo;
  27. public Page<UserSet> all(PageQuery pageQuery) {
  28. return userSetRepo.findAll(JpaUtils.toSpecification(pageQuery, UserSet.class), JpaUtils.toPageRequest(pageQuery));
  29. }
  30. /*
  31. 加入套餐
  32. 用户套餐和企业套餐重叠怎么办?
  33. */
  34. public void joinUserSet(Long userId, List<SetGoods> setGoodsList) {
  35. // 用户已有套餐
  36. Map<Long, UserSet> userSetMap = userSetRepo.findAllByUserId(userId)
  37. .stream()
  38. .collect(Collectors.toMap(UserSet::getGoodsInfoId, userSet -> userSet));
  39. // 加入用户套餐
  40. setGoodsList.forEach(setGoods -> {
  41. UserSet goods = userSetMap.get(setGoods.getGoodsInfoId());
  42. if (ObjectUtil.isNotEmpty(goods)) {
  43. goods.setNum(goods.getNum() + setGoods.getNum());
  44. goods.setRemark(setGoods.getRemark());
  45. } else {
  46. goods = UserSet.builder()
  47. .userId(userId)
  48. .goodsInfoId(setGoods.getGoodsInfoId())
  49. .num(setGoods.getNum())
  50. .remark(setGoods.getRemark())
  51. .build();
  52. }
  53. userSetRepo.save(goods);
  54. });
  55. // 记录套餐流水
  56. List<GoodsDTO> goodsDTOS = JSONObject.parseArray(JSONObject.toJSONString(setGoodsList), GoodsDTO.class);
  57. userSetFlowRepo.save(UserSetFlow.builder()
  58. .userId(userId)
  59. .type(FlowType.BUY)
  60. .content(JSONObject.toJSONString(goodsDTOS))
  61. .build());
  62. }
  63. /*
  64. 我的推广
  65. */
  66. public List<User> myPromotion(Long userId) {
  67. List<User> children = userRepo.findAllByParent(userId);
  68. return null;
  69. }
  70. }