RiceController.java 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. package com.izouma.nineth.web;
  2. import com.izouma.nineth.domain.Rice;
  3. import com.izouma.nineth.domain.RiceUserWaterDropRecord;
  4. import com.izouma.nineth.domain.User;
  5. import com.izouma.nineth.dto.PageQuery;
  6. import com.izouma.nineth.dto.R;
  7. import com.izouma.nineth.dto.RiceDTO;
  8. import com.izouma.nineth.enums.AuthorityName;
  9. import com.izouma.nineth.enums.RiceOperationType;
  10. import com.izouma.nineth.enums.RiceWaterType;
  11. import com.izouma.nineth.exception.BusinessException;
  12. import com.izouma.nineth.repo.*;
  13. import com.izouma.nineth.service.*;
  14. import com.izouma.nineth.utils.ObjUtils;
  15. import com.izouma.nineth.utils.SecurityUtils;
  16. import com.izouma.nineth.utils.excel.ExcelUtils;
  17. import lombok.AllArgsConstructor;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.apache.commons.lang.time.DateUtils;
  20. import org.springframework.data.domain.Page;
  21. import org.springframework.security.access.prepost.PreAuthorize;
  22. import org.springframework.web.bind.annotation.*;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.IOException;
  25. import java.time.LocalDateTime;
  26. import java.util.*;
  27. @RestController
  28. @RequestMapping("/rice")
  29. @AllArgsConstructor
  30. @Slf4j
  31. public class RiceController extends BaseController {
  32. private RiceService riceService;
  33. private RiceRepo riceRepo;
  34. private UserDetailService userDetailService;
  35. private UserDetailRepo userDetailRepo;
  36. private UserService userService;
  37. private UserRepo userRepo;
  38. private RiceInviteRepo RiceInviteRepo;
  39. private RiceInviteService RiceInviteService;
  40. private SysConfigService sysConfigService;
  41. private SysConfigRepo sysConfigRepo;
  42. private static final int MAX_NICKNAME_LENGTH = 14;
  43. private static final String UPDATE_SUCCESS_MSG = "修改成功";
  44. @PreAuthorize("hasRole('ADMIN')")
  45. @PostMapping("/save")
  46. public Rice save(@RequestBody Rice record) {
  47. if (record.getId() != null) {
  48. Rice orig = riceRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
  49. ObjUtils.merge(orig, record);
  50. return riceRepo.save(orig);
  51. }
  52. return riceRepo.save(record);
  53. }
  54. @PreAuthorize("hasRole('ADMIN')")
  55. @PostMapping("/all")
  56. public Page<Rice> all(@RequestBody PageQuery pageQuery) {
  57. if (!SecurityUtils.hasRole(AuthorityName.ROLE_ADMIN) & !SecurityUtils.hasRole(AuthorityName.ROLE_ORDERINFO)) {
  58. pageQuery.getQuery().put("userId", SecurityUtils.getAuthenticatedUser().getId());
  59. }
  60. return riceService.all(pageQuery);
  61. }
  62. @GetMapping("/get/{id}")
  63. public Rice get(@PathVariable Long id) {
  64. return riceRepo.findById(id).orElseThrow(new BusinessException("无记录"));
  65. }
  66. /* @PostMapping("/del/{id}")
  67. public void del(@PathVariable Long id) {
  68. riceRepo.softDelete(id);
  69. }*/
  70. @PreAuthorize("hasRole('ADMIN')")
  71. @GetMapping("/excel")
  72. @ResponseBody
  73. public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
  74. if (!SecurityUtils.hasRole(AuthorityName.ROLE_ADMIN) & !SecurityUtils.hasRole(AuthorityName.ROLE_ORDERINFO)) {
  75. List<Rice> data = all(pageQuery).getContent();
  76. ExcelUtils.export(response, data);
  77. }
  78. }
  79. //点击水稻游戏后对riceuser进行初始化赋值
  80. @GetMapping("/current")
  81. public R<Rice> getCurrentUser() throws BusinessException {
  82. return R.success(riceService.getCurrentRiceUser(SecurityUtils.getAuthenticatedUser()));
  83. }
  84. //修改用户昵称
  85. @PostMapping("/updateNickName")
  86. public R updateNickName(@RequestParam("userId") Long userId, @RequestParam("nickname") String nickname) {
  87. return riceService.updateNickName(userId, nickname);
  88. }
  89. //等级显示
  90. @GetMapping("/showLevel")
  91. public R<Map<String, Object>> showLevel() {
  92. return riceService.showLevel();
  93. }
  94. //获取用户积分
  95. @GetMapping("/selfScore")
  96. public R<String> getCurrentScore() {
  97. return riceService.getCurrentScore();
  98. }
  99. //一个获取积分排行榜的接口
  100. @GetMapping("/scoreRanking")
  101. public R<List<RiceDTO>> getTop100AndSelf() {
  102. return R.success(riceService.getTop100(SecurityUtils.getAuthenticatedUser().getId()));
  103. }
  104. //只获取自己的排名
  105. @GetMapping("/riceUserRank")
  106. public R<?> getRiceUserRank() {
  107. return riceService.getRiceUserRank(SecurityUtils.getAuthenticatedUser().getId());
  108. }
  109. //浇水
  110. @PostMapping("/waterDrop")
  111. public R<?> waterDrop(@RequestParam("riceWaterType") RiceWaterType riceWaterType, @RequestParam Long riceId) {
  112. return riceService.waterDrop(riceWaterType, riceId);
  113. }
  114. // //获取今日已浇水次数和还需浇水次数升级的接口
  115. // @GetMapping("/watering/count")
  116. // public R<?> getWateringCount() {
  117. // Long todayWateringCount = riceService.getTodayWateringCount(SecurityUtils.getAuthenticatedUser().getId());
  118. // Rice rice = riceRepo.findByUserId(SecurityUtils.getAuthenticatedUser().getId()).orElseThrow(new BusinessException("没找到记录"));
  119. // Long waterDropNeededForLevelUp = riceService.getWaterDropNeededForLevelUp(rice);
  120. // return R.success(Map.of("todayWateringCount", todayWateringCount, "waterDropNeededForLevelUp", waterDropNeededForLevelUp));
  121. // }
  122. //签到
  123. @GetMapping("/signin")
  124. public R<?> signIn() {
  125. return riceService.signIn(SecurityUtils.getAuthenticatedUser().getId());
  126. }
  127. // 任务初始化.显示各个任务能否点击
  128. @GetMapping("/taskInitialization")
  129. public R<?> taskInitialization() {
  130. return riceService.taskInitialization();
  131. }
  132. //积分兑换水滴
  133. @GetMapping("/exchangeScoreForWaterDrop")
  134. public R<?> exchangeScoreForWaterDrop() {
  135. return riceService.exchangeScoreForWaterDrop(SecurityUtils.getAuthenticatedUser());
  136. }
  137. //活动积分兑换水滴
  138. @GetMapping("/exchangeActivityScoreForWaterDrop")
  139. public R<?> exchangeActivityScoreForWaterDrop() {
  140. return riceService.exchangeActivityScoreForWaterDrop(SecurityUtils.getAuthenticatedUser());
  141. }
  142. //测试添加用户
  143. @GetMapping("/newRiceUser")
  144. public R<?> newRiceUser() {
  145. User authenticatedUser = SecurityUtils.getAuthenticatedUser();
  146. Long id = authenticatedUser.getId();
  147. Optional<User> byId = userRepo.findByIdAndDelFalse(id);
  148. String nickname = null;
  149. String avatar = null;
  150. if (byId.isPresent()) {
  151. User user = byId.get();
  152. nickname = user.getNickname();
  153. avatar = user.getAvatar();
  154. } else {
  155. throw new BusinessException("用户不存在");
  156. }
  157. UUID uuid = UUID.randomUUID();
  158. Rice rice = new Rice();
  159. rice.setUserId(generateUniqueId());
  160. rice.setAvatar(avatar);
  161. rice.setNickname(nickname);
  162. rice.setLevel(0L);
  163. rice.setSignCount(0L);
  164. rice.setSelfScore(0L);
  165. rice.setSelfActivityScore(0L);
  166. rice.setEmpiricalValue(0L);
  167. riceRepo.save(rice);
  168. return R.success("添加成功");
  169. }
  170. public static Long generateUniqueId() {
  171. UUID uuid = UUID.randomUUID();
  172. long lsb = uuid.getLeastSignificantBits();
  173. long msb = uuid.getMostSignificantBits();
  174. return new Long((lsb & Long.MAX_VALUE) | (msb & Long.MAX_VALUE));
  175. }
  176. }