RedEnvelopeApiController.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.txz.cif.web;
  2. import cn.hutool.core.date.DateUtil;
  3. import cn.hutool.json.JSONUtil;
  4. import com.txz.cif.core.*;
  5. import com.txz.cif.core.cache.CacheKey;
  6. import com.txz.cif.core.cache.CacheType;
  7. import com.txz.cif.model.RedEnvelope;
  8. import com.txz.cif.model.User;
  9. import com.txz.cif.service.RedEnvelopeService;
  10. import com.github.pagehelper.PageHelper;
  11. import com.github.pagehelper.PageInfo;
  12. import com.txz.cif.service.UserService;
  13. import com.txz.cif.web.bo.UserDetailBo;
  14. import com.txz.cif.web.bo.UserTopBo;
  15. import com.txz.cif.web.para.RedEnvelopeListParam;
  16. import com.txz.cif.web.para.RedEnvelopeParam;
  17. import org.springframework.web.bind.annotation.*;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import com.txz.core.ServiceException;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiOperation;
  23. import tk.mybatis.mapper.entity.Condition;
  24. import tk.mybatis.mapper.entity.Example.Criteria;
  25. import javax.annotation.Resource;
  26. import javax.servlet.http.HttpServletRequest;
  27. import java.util.Date;
  28. import java.util.List;
  29. import java.util.concurrent.TimeUnit;
  30. import java.util.stream.Collectors;
  31. import org.apache.commons.lang.StringUtils;
  32. /**
  33. * Created by CodeGenerator on 2025/07/15.
  34. */
  35. @Api(tags = "[api]redEnvelope管理")
  36. @RestController
  37. @RequestMapping("/api/red/envelope")
  38. public class RedEnvelopeApiController {
  39. private static Logger log = LoggerFactory.getLogger(RedEnvelopeApiController.class);
  40. @Resource
  41. private RedEnvelopeService redEnvelopeService;
  42. @Resource
  43. private AuthService authService;
  44. @Resource
  45. private RedisUtil redisUtil;
  46. @Resource
  47. private UserService userService;
  48. @PostMapping("/list")
  49. @ApiOperation(value = "redEnvelope获取列表",httpMethod = "POST")
  50. public Result<List<RedEnvelope>> list(@RequestBody RedEnvelopeListParam param, HttpServletRequest request) {
  51. Long userId = authService.getTokenUserId(request);
  52. PageHelper.startPage(param.getPage(), param.getSize());
  53. Condition condition = new Condition(RedEnvelope.class);
  54. Criteria criteria = condition.createCriteria();
  55. criteria.andEqualTo("userId",userId);
  56. if (param.getType() == 1 ){
  57. Date todayStart = DateUtil.beginOfDay(DateUtil.date());
  58. criteria.andGreaterThanOrEqualTo("createTime", todayStart);
  59. } else if (param.getType() == 2){
  60. Date yesterdayStart = DateUtil.beginOfDay(DateUtil.yesterday());
  61. Date todayStart = DateUtil.beginOfDay(DateUtil.date());
  62. criteria.andBetween("createTime", yesterdayStart,todayStart);
  63. } else if (param.getType() == 3){
  64. Date start = DateUtil.beginOfDay(DateUtil.offsetDay(DateUtil.date(),-7));
  65. criteria.andGreaterThanOrEqualTo("createTime",start);
  66. } else if (param.getType() == 4){
  67. Date start = DateUtil.beginOfMonth(DateUtil.date());
  68. criteria.andGreaterThanOrEqualTo("createTime",start);
  69. } else if (param.getType() == 5){
  70. Date start = DateUtil.beginOfYear(DateUtil.date());
  71. criteria.andGreaterThanOrEqualTo("createTime",start);
  72. }
  73. PageInfo pageInfo = null;
  74. try {
  75. condition.setOrderByClause("create_time desc");
  76. List<RedEnvelope> list = redEnvelopeService.findByCondition(condition);
  77. pageInfo = new PageInfo(list);
  78. } catch (Exception e) {
  79. log.error("查询对象操作异常e:{}",e);
  80. return ResultGenerator.genFailResult(ResultCode.INTERNAL_SERVER_ERROR);
  81. }
  82. return ResultGenerator.genSuccessResult(pageInfo);
  83. }
  84. @GetMapping("/top")
  85. @ApiOperation(value = "排行榜type 1 7天收益排行",httpMethod = "GET")
  86. public Result<List<UserTopBo>> top(@RequestParam(defaultValue = "1") Integer type,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "10") Integer size) {
  87. String key = CacheKey.generateKey(CacheType.Top,type+":"+page+":"+size).toString();
  88. Object o = redisUtil.get(key);
  89. if (o != null){
  90. return ResultGenerator.genSuccessResult(JSONUtil.toBean(o.toString(),PageInfo.class));
  91. }
  92. List<UserTopBo> tops= redEnvelopeService.top(type,page,size);
  93. PageInfo pageInfo = new PageInfo(tops);
  94. pageInfo.setList(tops.stream().map(e->{
  95. User user = userService.findById(e.getUserId());
  96. if (user != null){
  97. e.setHeadPic(user.getHeadPic());
  98. e.setNickname(user.getNickname());
  99. e.setNickname(user.getName());
  100. e.setVipLevel(user.getVipLevel());
  101. e.setUserNo(user.getUserNo());
  102. }
  103. Condition c = new Condition(User.class);
  104. c.createCriteria().andEqualTo("pid",e.getUserId());
  105. Integer invited = userService.countByCondition(c);
  106. if (invited != null){
  107. e.setInviteNum(invited);
  108. }
  109. c = new Condition(User.class);
  110. c.createCriteria().andEqualTo("ppid",e.getUserId());
  111. Integer invited2 = userService.countByCondition(c);
  112. if (invited != null && invited2 != null){
  113. e.setTeamNum(invited+invited2);
  114. }
  115. return e;
  116. }).collect(Collectors.toList()));
  117. redisUtil.set(key,JSONUtil.toJsonStr(pageInfo),1, TimeUnit.DAYS);
  118. return ResultGenerator.genSuccessResult(pageInfo);
  119. }
  120. }