SysResourceServiceImpl.java 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package com.backendsys.service.System;
  2. import com.backendsys.aspect.HttpRequestAspect;
  3. import com.backendsys.entity.System.SysResourcePointsDTO;
  4. import com.backendsys.entity.System.SysUserDTO;
  5. import com.backendsys.entity.System.SysUserPointsDTO;
  6. import com.backendsys.enums.UserPointActivityType;
  7. import com.backendsys.enums.UserPointOperatorType;
  8. import com.backendsys.exception.CustException;
  9. import com.backendsys.mapper.System.SysResourcePointsMapper;
  10. import com.backendsys.mapper.System.SysUserMapper;
  11. import com.backendsys.mapper.System.SysUserPointsHistoryMapper;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import java.util.Map;
  15. @Service
  16. public class SysResourceServiceImpl implements SysResourceService {
  17. @Autowired
  18. private HttpRequestAspect httpRequestAspect;
  19. @Autowired
  20. private SysUserMapper sysUserMapper;
  21. @Autowired
  22. private SysUserPointsHistoryMapper sysUserPointsHistoryMapper;
  23. @Autowired
  24. private SysResourcePointsMapper sysResourcePointsMapper;
  25. /**
  26. * 消耗积分 (查询对应积分,查询我的积分,更新我的积分,新增积分记录)
  27. */
  28. @Override
  29. public void consumptionPoint(String resource_type, String resource_tag, Integer num) {
  30. // 1.查询积分资源
  31. SysResourcePointsDTO sysResourcePointsDTO = new SysResourcePointsDTO();
  32. sysResourcePointsDTO.setResource_type(resource_type);
  33. sysResourcePointsDTO.setResource_tag(resource_tag);
  34. SysResourcePointsDTO resourcePointDetail = sysResourcePointsMapper.queryResourcePointsDetail(sysResourcePointsDTO);
  35. Float consumption_point = num == null ? resourcePointDetail.getResource_points() : (resourcePointDetail.getResource_points() * num);
  36. // 判断积分资源状态是否启用 (如果不可用,就不扣除积分了)
  37. System.out.println(resourcePointDetail);
  38. if (resourcePointDetail.getStatus() == 1) {
  39. Long user_id = httpRequestAspect.getUserId();
  40. // 2.查询我的积分
  41. SysUserPointsDTO sysUserPointsDTO = new SysUserPointsDTO();
  42. sysUserPointsDTO.setTarget_user_id(user_id);
  43. Map<String, Object> myPointDetail = sysUserMapper.queryUserPoint(sysUserPointsDTO);
  44. Float my_point = (Float) myPointDetail.get("point_balance");
  45. if (consumption_point > my_point) {
  46. throw new CustException("用户积分不足,当前积分: " + my_point + ", 需要积分: " + consumption_point);
  47. }
  48. // 3.更新我的积分
  49. Float pointBalance = my_point - consumption_point;
  50. SysUserDTO sysUserDTO = new SysUserDTO();
  51. sysUserDTO.setUser_id(user_id);
  52. sysUserDTO.setPoint_balance(pointBalance);
  53. sysUserMapper.updateUserInfo(sysUserDTO);
  54. // 4.新增积分记录
  55. // { target_user_id } 上面已经赋值
  56. sysUserPointsDTO.setPoint_adjustment(-(consumption_point));
  57. sysUserPointsDTO.setPoint_balance(pointBalance);
  58. sysUserPointsDTO.setActivity_type(UserPointActivityType.USED.getCode());
  59. sysUserPointsDTO.setActivity_type_description(UserPointActivityType.USED.getDescription());
  60. sysUserPointsDTO.setActivity_detail(resourcePointDetail.getResource_name());
  61. sysUserPointsDTO.setOperator_type(UserPointOperatorType.SYSTEM.getCode());
  62. sysUserPointsHistoryMapper.insertUserPointsHistory(sysUserPointsDTO);
  63. }
  64. }
  65. }