UserPropertyRepoTest.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. package com.izouma.nineth.repo;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.izouma.nineth.ApplicationTests;
  4. import com.izouma.nineth.domain.Asset;
  5. import com.izouma.nineth.domain.Order;
  6. import com.izouma.nineth.domain.User;
  7. import com.izouma.nineth.domain.UserProperty;
  8. import com.izouma.nineth.dto.AirDropExcelDTO;
  9. import com.izouma.nineth.dto.TestDTO;
  10. import com.izouma.nineth.enums.AssetStatus;
  11. import com.izouma.nineth.enums.OrderStatus;
  12. import com.izouma.nineth.service.CacheService;
  13. import com.izouma.nineth.utils.excel.UploadDataListener;
  14. import org.apache.commons.lang3.ObjectUtils;
  15. import org.junit.jupiter.api.Test;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import java.io.File;
  18. import java.time.LocalDateTime;
  19. import java.util.*;
  20. import java.util.concurrent.atomic.AtomicInteger;
  21. import java.util.stream.Collectors;
  22. import org.springframework.boot.test.context.SpringBootTest;
  23. import org.junit.jupiter.api.extension.ExtendWith;
  24. import org.springframework.test.context.junit.jupiter.SpringExtension;
  25. @ExtendWith(SpringExtension.class)
  26. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class UserPropertyRepoTest {
  27. @Autowired
  28. private UserPropertyRepo userPropertyRepo;
  29. @Autowired
  30. private AssetRepo assetRepo;
  31. @Autowired
  32. private UserRepo userRepo;
  33. @Autowired
  34. private CacheService cacheService;
  35. @Autowired
  36. private OrderRepo orderRepo;
  37. @Test
  38. public void save() {
  39. UserProperty property = new UserProperty();
  40. property.setId(9972L);
  41. property.setMaxCount(5);
  42. //24h
  43. // property.setTime(86400L);
  44. userPropertyRepo.save(property);
  45. }
  46. @Test
  47. public void get() {
  48. AtomicInteger userMax = new AtomicInteger();
  49. userPropertyRepo.findById(9972L).ifPresent(userProperty -> userMax.set(userProperty.getMaxCount()));
  50. System.out.println(userMax.addAndGet(1));
  51. }
  52. @Test
  53. public void clear() {
  54. }
  55. @Test
  56. public void setProperty() {
  57. //封神星主
  58. List<Long> userIds = userRepo.findIdByLevel();
  59. userIds.forEach(id -> {
  60. UserProperty userProperty = userPropertyRepo.findById(id).orElse(new UserProperty(id, 0));
  61. userProperty.setMaxCount(userProperty.getMaxCount() + 1);
  62. if (userProperty.getMaxCount() > 6) {
  63. userProperty.setMaxCount(6);
  64. }
  65. userPropertyRepo.save(userProperty);
  66. });
  67. //OASIS004:绿洲朋克战神3D持斧模型 2516069L 或 OASIS002: 绿洲朋克猴王3D旋转眺望模型 2514968L
  68. //OASISPUNK007:OASISPUNK绿洲朋克族人共治会荣誉勋章 5050947L
  69. //冠军赛 · 李小龙80周年纪念勋章 7275L
  70. List<Asset> assets = assetRepo.findByCollectionIdInAndStatus(Arrays.asList(2516069L, 2514968L, 5050947L, 7275L), AssetStatus.NORMAL);
  71. Map<Long, List<Asset>> collect = assets.stream().collect(Collectors.groupingBy(Asset::getOwnerId));
  72. collect.forEach((key, value) -> {
  73. List<Long> ids = value.stream().map(Asset::getCollectionId).distinct().collect(Collectors.toList());
  74. int size = ids.size();
  75. if (ids.contains(2516069L) && ids.contains(2514968L)) {
  76. size -= 1;
  77. }
  78. UserProperty userProperty = userPropertyRepo.findById(key).orElse(new UserProperty(key, 0));
  79. userProperty.setMaxCount(userProperty.getMaxCount() + size);
  80. if (userProperty.getMaxCount() > 6) {
  81. userProperty.setMaxCount(6);
  82. }
  83. userPropertyRepo.save(userProperty);
  84. });
  85. //凤鸣寺
  86. File file = new File("/Users/qiufangchao/Desktop/mingdan.xlsx");
  87. UploadDataListener<AirDropExcelDTO> listener = new UploadDataListener<>();
  88. List<AirDropExcelDTO> dtos = EasyExcel.read(file, AirDropExcelDTO.class, listener)
  89. .sheet()
  90. .doReadSync();
  91. List<Long> userIds2 = userRepo.findIdByPhones(dtos.stream()
  92. .map(AirDropExcelDTO::getPhone)
  93. .collect(Collectors.toSet()));
  94. System.out.println(userIds2);
  95. userIds2.forEach(id -> {
  96. UserProperty userProperty = userPropertyRepo.findById(id).orElse(new UserProperty(id, 0));
  97. userProperty.setMaxCount(userProperty.getMaxCount() + 1);
  98. if (userProperty.getMaxCount() > 6) {
  99. userProperty.setMaxCount(6);
  100. }
  101. userPropertyRepo.save(userProperty);
  102. });
  103. //vip
  104. File file1 = new File("/Users/qiufangchao/Desktop/VIP.xlsx");
  105. UploadDataListener<AirDropExcelDTO> listener1 = new UploadDataListener<>();
  106. List<AirDropExcelDTO> dtos1 = EasyExcel.read(file1, AirDropExcelDTO.class, listener1)
  107. .sheet()
  108. .doReadSync();
  109. Set<String> userIds3 = dtos1.stream()
  110. .map(AirDropExcelDTO::getPhone)
  111. .collect(Collectors.toSet());
  112. System.out.println(userIds3);
  113. userIds3.forEach(id -> {
  114. UserProperty userProperty = userPropertyRepo.findById(Long.parseLong(id))
  115. .orElse(new UserProperty(Long.parseLong(id), 0));
  116. userProperty.setMaxCount(userProperty.getMaxCount() + 1);
  117. if (userProperty.getMaxCount() > 6) {
  118. userProperty.setMaxCount(6);
  119. }
  120. userPropertyRepo.save(userProperty);
  121. });
  122. //-1
  123. Iterable<UserProperty> all = userPropertyRepo.findAll();
  124. all.forEach(p -> {
  125. if (p.getMaxCount() > 1) {
  126. p.setMaxCount(p.getMaxCount() - 1);
  127. userPropertyRepo.save(p);
  128. }
  129. });
  130. }
  131. @Test
  132. public void setByphone() {
  133. File file = new File("/Users/qiufangchao/Desktop/mingdan.xlsx");
  134. UploadDataListener<AirDropExcelDTO> listener = new UploadDataListener<>();
  135. List<AirDropExcelDTO> dtos = EasyExcel.read(file, AirDropExcelDTO.class, listener)
  136. .sheet()
  137. .doReadSync();
  138. // List<Long> userIds = userRepo.findIdByPhones(dtos.stream()
  139. // .map(AirDropExcelDTO::getPhone)
  140. // .collect(Collectors.toSet()));
  141. // System.out.println(userIds);
  142. List<User> users = userRepo.findByPhoneInAndDelFalse(dtos.stream()
  143. .map(AirDropExcelDTO::getPhone)
  144. .collect(Collectors.toSet()));
  145. Map<String, Long> userMap = users.stream().collect(Collectors.toMap(User::getPhone, User::getId));
  146. dtos.forEach(dto -> {
  147. Long aLong = userMap.get(dto.getPhone());
  148. if (aLong == null) {
  149. System.out.println(dto.getPhone());
  150. }
  151. });
  152. // userIds.forEach(id -> {
  153. // UserProperty userProperty = userPropertyRepo.findById(id).orElse(new UserProperty(id, 0));
  154. // userProperty.setMaxCount(userProperty.getMaxCount() + 1);
  155. // if (userProperty.getMaxCount() > 6) {
  156. // userProperty.setMaxCount(6);
  157. // }
  158. // userPropertyRepo.save(userProperty);
  159. // });
  160. }
  161. @Test
  162. public void setById() {
  163. // userPropertyRepo.deleteAll();
  164. File file = new File("/Users/sunnianwen/Desktop/all1.xlsx");
  165. File file2 = new File("/Users/sunnianwen/Desktop/123.xlsx");
  166. UploadDataListener<AirDropExcelDTO> listener = new UploadDataListener<>();
  167. List<AirDropExcelDTO> dtos = EasyExcel.read(file, AirDropExcelDTO.class, listener)
  168. .sheet()
  169. .doReadSync();
  170. List<AirDropExcelDTO> dtos2 = EasyExcel.read(file2, AirDropExcelDTO.class, listener)
  171. .sheet()
  172. .doReadSync();
  173. // Set<String> userIds = dtos.stream()
  174. // .map(AirDropExcelDTO::getPhone)
  175. // .collect(Collectors.toSet());
  176. // System.out.println(userIds);
  177. dtos.forEach(id -> {
  178. UserProperty userProperty = userPropertyRepo.findById(Long.parseLong(id.getPhone()))
  179. .orElse(new UserProperty(Long.parseLong(id.getPhone()), 0));
  180. userProperty.setMaxCount(Integer.parseInt(id.getName()));
  181. // if (userProperty.getMaxCount() > 6) {
  182. // userProperty.setMaxCount(6);
  183. // }
  184. userPropertyRepo.save(userProperty);
  185. });
  186. dtos2.forEach(id -> {
  187. UserProperty userProperty = userPropertyRepo.findById(Long.parseLong(id.getPhone()))
  188. .orElse(null);
  189. if (ObjectUtils.isEmpty(userProperty)) {
  190. userProperty = new UserProperty(Long.parseLong(id.getPhone()), Integer.parseInt(id.getName()));
  191. } else {
  192. userProperty.setMaxCount(userProperty.getMaxCount() + 1);
  193. }
  194. userPropertyRepo.save(userProperty);
  195. });
  196. }
  197. @Test
  198. public void statistic() {
  199. Map<Long, Integer> map = new HashMap<>();
  200. //凤鸣寺
  201. File file = new File("/Users/qiufangchao/Desktop/mingdan.xlsx");
  202. UploadDataListener<AirDropExcelDTO> listener = new UploadDataListener<>();
  203. List<AirDropExcelDTO> dtos = EasyExcel.read(file, AirDropExcelDTO.class, listener)
  204. .sheet()
  205. .doReadSync();
  206. List<Long> userIds = userRepo.findIdByPhones(dtos.stream()
  207. .map(AirDropExcelDTO::getPhone)
  208. .collect(Collectors.toSet()));
  209. userIds.forEach(id -> map.merge(id, 1, Integer::sum));
  210. //封神星主
  211. List<Long> userIds1 = userRepo.findIdByLevel();
  212. userIds1.forEach(id -> map.merge(id, 1, Integer::sum));
  213. //OASIS004:绿洲朋克战神3D持斧模型 2516069L 或 OASIS002: 绿洲朋克猴王3D旋转眺望模型 2514968L
  214. //OASISPUNK007:OASISPUNK绿洲朋克族人共治会荣誉勋章 5050947L
  215. //冠军赛 · 李小龙80周年纪念勋章 7275L
  216. List<Asset> assets = assetRepo.findByCollectionIdInAndStatus(Arrays.asList(2516069L, 2514968L, 5050947L, 7275L), AssetStatus.NORMAL);
  217. Map<Long, List<Asset>> collect = assets.stream().collect(Collectors.groupingBy(Asset::getOwnerId));
  218. collect.forEach((key, value) -> {
  219. List<Long> ids = value.stream().map(Asset::getCollectionId).distinct().collect(Collectors.toList());
  220. int size = ids.size();
  221. if (ids.contains(2516069L) && ids.contains(2514968L)) {
  222. size -= 1;
  223. }
  224. map.merge(key, size, Integer::sum);
  225. });
  226. map.forEach((key, value) -> System.out.println(key + "," + value));
  227. }
  228. @Test
  229. public void test() {
  230. Iterable<UserProperty> all = userPropertyRepo.findAll();
  231. List<String> result = new ArrayList<>();
  232. all.forEach(p -> {
  233. if (p != null && p.getId() != null) {
  234. if (p.getMaxCount() > 0) {
  235. int num = userRepo.countAllByCollectionIdAndCollectionInvitorAndSettleAccountIdIsNotNull(8573130L, p.getId());
  236. User user = userRepo.findById(p.getId()).orElse(null);
  237. if (user.getVipPurchase() > 0 || user.getCreatedAt().isAfter(LocalDateTime.of(2022, 7, 5, 0, 0))) {
  238. if ((num / 3) + 1 != p.getMaxCount()) {
  239. result.add(p.getId() + "," + p.getMaxCount() + "," + num);
  240. }
  241. } else {
  242. if (num / 3 != p.getMaxCount()) {
  243. result.add(p.getId() + "," + p.getMaxCount() + "," + num);
  244. }
  245. }
  246. // if (num == 0) {
  247. // userPropertyRepo.delete(p);
  248. // user.setVipPoint(0);
  249. // userRepo.save(user);
  250. // cacheService.clearUser(user.getId());
  251. // cacheService.clearUser(user.getId());
  252. // }
  253. // int size = num / 3;
  254. // if (user.getVipPurchase() > 0 || user.getCreatedAt().isAfter(LocalDateTime.of(2022, 7, 5, 0, 0))) {
  255. // if (size + 1 != p.getMaxCount()) {
  256. // if (size + 1 >= 10 && p.getMaxCount() != 10) {
  257. // p.setMaxCount(10);
  258. // userPropertyRepo.save(p);
  259. // } else {
  260. // p.setMaxCount(size + 1);
  261. // userPropertyRepo.save(p);
  262. // }
  263. // }
  264. //
  265. // } else {
  266. // if (size != p.getMaxCount()) {
  267. // if (size >= 10 && p.getMaxCount() != 10) {
  268. // p.setMaxCount(10);
  269. // userPropertyRepo.save(p);
  270. // } else {
  271. // p.setMaxCount(size);
  272. // userPropertyRepo.save(p);
  273. // }
  274. // }
  275. // }
  276. }
  277. }
  278. });
  279. result.forEach(System.out::println);
  280. }
  281. @Test
  282. public void test3() {
  283. List<String> result = new ArrayList<>();
  284. File file = new File("/Users/qiufangchao/Desktop/error.xlsx");
  285. UploadDataListener<TestDTO> listener = new UploadDataListener<>();
  286. List<TestDTO> dtos = EasyExcel.read(file, TestDTO.class, listener)
  287. .sheet()
  288. .doReadSync();
  289. dtos.forEach(dto -> {
  290. int size = dto.getReal() / 3;
  291. int orders = orderRepo.countAllByUserIdAndCollectionIdAndStatusIn(dto.getId(), 8573130L, Arrays.asList(OrderStatus.FINISH, OrderStatus.PROCESSING));
  292. User user = userRepo.findById(dto.getId()).orElse(null);
  293. if (user.getVipPurchase() > 0 || user.getCreatedAt().isAfter(LocalDateTime.of(2022, 7, 5, 0, 0))) {
  294. if (size + 1 < orders) {
  295. int num = size + 1;
  296. result.add(dto.getId() + "," + num + "," + orders);
  297. }
  298. } else {
  299. if (size < orders) {
  300. result.add(dto.getId() + "," + size + "," + orders);
  301. }
  302. }
  303. });
  304. result.forEach(System.out::println);
  305. }
  306. }