137 Commits

Author SHA1 Message Date
sunjiabei b86e20e374 8月12.新增校验 1 week ago
huangqizhen 351c6dcaef Merge remote-tracking branch 'origin/milestone-20250727-金币重构三期' into milestone-20250727-金币重构三期 2 weeks ago
huangqizhen 6b8280bffb 8.11修复时间问题 2 weeks ago
lijianlin d1e12ba3d4 工作太较前一日变化bug修复 2 weeks ago
lihuilin f7f9f03311 金币余额地区传参mapper层 2 weeks ago
lihuilin 559e5cbe22 这是一次拉取Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 2 weeks ago
huangqizhen 0dbe418934 8.9研发部校验 2 weeks ago
huangqizhen 874a05782b 8.9研发部校验 2 weeks ago
huangqizhen 5c21068152 Merge remote-tracking branch 'origin/milestone-20250727-金币重构三期' into milestone-20250727-金币重构三期 2 weeks ago
huangqizhen 31ce4cbed3 8.9修改地区问题 2 weeks ago
lijianlin 37acc998ee 8-9金豆新增消耗,判断顺序优化 2 weeks ago
huangqizhen 87731ab867 8.9修改配置 2 weeks ago
lijianlin 8c2e28027e 文章类型筛选后合计数失效bug修复+客户金币地区 2 weeks ago
sunjiabei e0166ba398 8月9日付费金豆命名修改 2 weeks ago
sunjiabei 8d1b04d84e 8月9日新增金币校验 2 weeks ago
sunjiabei 1e2b8d38a8 8月9日金币用户卡片 2 weeks ago
huangqizhen affaa44066 8.9修改配置导 2 weeks ago
huangqizhen 882a5c42ef 8.9修改配置导 2 weeks ago
lihuilin c51c0a7aa2 这是一次拉取 2 weeks ago
huangqizhen 4c1a92680c 8.9修改配置导出重新上传 2 weeks ago
lijianlin 4b121e4250 文章类型筛选后排序失效bug修复 2 weeks ago
lihuilin 6b650f6943 这是一次拉取 2 weeks ago
huangqizhen 3948ebcfab 8.8导出bug修复 2 weeks ago
sunjiabei cd0ac0edb1 8月8日金豆审核校验 2 weeks ago
lijianlin 8b50783248 文章标题+作者模糊查询,消费金豆数量校验,频道排除空记录 2 weeks ago
lihuilin 008a0dd4c5 这是一次拉取 2 weeks ago
lijianlin 7013715b0c Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 2 weeks ago
lijianlin 99a7f511e8 铁粉消费金豆详情+直播消费背包礼物 2 weeks ago
lijianlin 52b526e8a9 Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 2 weeks ago
lijianlin 9d3e215a62 金豆新增消耗 2 weeks ago
sunjiabei 3a722c4bf7 8月7日金豆精网号校验 2 weeks ago
sunjiabei 21f048aa0f 8月7日金币精网号校验 2 weeks ago
sunjiabei 7ce2c0f9ce 8月6日金币导出 2 weeks ago
sunjiabei c38dfcbd5e 8月6日新币数量修改 2 weeks ago
huangqizhen 42c233e079 8.6修改配置文件 2 weeks ago
lihuilin 7c4c57d712 Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 2 weeks ago
huangqizhen a7ad0b6a47 8.4打包配置 2 weeks ago
lijianlin 70c4393eaa Merge remote-tracking branch 'origin/milestone-20250727-金币重构三期' into milestone-20250727-金币重构三期 2 weeks ago
lijianlin b7041c16f8 客户明细地区映射 2 weeks ago
sunjiabei 27126b7e2e 8月5日地区权限 2 weeks ago
sunjiabei f572bb33ee 8月5日地区权限 2 weeks ago
lijianlin 034575270e Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 2 weeks ago
lijianlin 3cf02b3f2c 充值驳回bug修复 2 weeks ago
sunjiabei a7b7e4c808 8月5日用户卡片地区权限 2 weeks ago
lihuilin e4784dcfb6 Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 2 weeks ago
lijianlin bab9bbf578 Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 2 weeks ago
lijianlin 1e4c6cbfaa 文章名称合计数 2 weeks ago
sunjiabei c2d2ad6724 8月5日用户卡片地区权限 2 weeks ago
sunjiabei ef1d54cca1 8月5日更新角色循环遍历父id方法删除 2 weeks ago
sunjiabei 56e6e80134 8月5日小数位调整 2 weeks ago
lijianlin 22030aad5a 金币退款审核地区查询,管理员地区bug修复 2 weeks ago
lihuilin 042617044d 这是一次拉取 2 weeks ago
sunjiabei 89ee1b5db5 8月4日导出调整 3 weeks ago
sunjiabei a7785c56c0 8月4日导出 3 weeks ago
sunjiabei adc3df7153 8月4日导出 3 weeks ago
sunjiabei 92b6259250 8月4日导出 3 weeks ago
sunjiabei b6aad271b2 Merge branch 'sunjiabei/feature-20250725135225-金币三期' into milestone-20250727-金币重构三期 3 weeks ago
sunjiabei 3a39dd3122 8月4日金豆地址拆分 3 weeks ago
lijianlin c22acffb44 工作台地区优化 3 weeks ago
lijianlin 2ed8ad4305 Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
sunjiabei 16aeaf11e6 8月4日金豆正式地址 3 weeks ago
lijianlin f90f96ef5e 权限地区优化 3 weeks ago
lijianlin 6deaf25c4a 地区权限筛选优化(充值、消费、退款、明细、审核) 3 weeks ago
lijianlin 56cefade48 Merge remote-tracking branch 'origin/milestone-20250727-金币重构三期' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin 96c62cd004 角色地区权限 3 weeks ago
sunjiabei 8e6131bcc7 8月4日地区权限修正 3 weeks ago
huangqizhen 60091a7aeb 8.4打包配置 3 weeks ago
huangqizhen 5d63edd819 8.3完成金豆导出 3 weeks ago
lijianlin ed40a383cd Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin 3067c30f47 新增充值 3 weeks ago
lihuilin 92c8c0d798 reason 3 weeks ago
sunjiabei b3262b52e8 8月2日充值审核reason字段 3 weeks ago
lihuilin b57e0f5546 小喷菇说序号加完了,拉一下i 3 weeks ago
lijianlin 2385b7dd4d Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin e91a7b4dce 消费序号补充,重构直播优化 3 weeks ago
sunjiabei cbc766605f Merge branch 'sunjiabei/feature-20250725135225-金币三期' into milestone-20250727-金币重构三期 3 weeks ago
sunjiabei a74e194152 8月2日充值审核接口补全 3 weeks ago
lihuilin 38d27c189f Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 3 weeks ago
lijianlin 6c159981a9 Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin 6fc1a26eb3 直播消费重构 3 weeks ago
huangqizhen 1d0b2bace1 8.1完成金豆消费导出 3 weeks ago
sunjiabei 92c3c44b4b 8月1日充值审核接口补全 3 weeks ago
lihuilin 276978169d Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 3 weeks ago
sunjiabei ef5fd9f170 8月1日充值审核接口修改 3 weeks ago
sunjiabei d756c9bfe0 Merge branch 'sunjiabei/feature-20250725135225-金币三期' into milestone-20250727-金币重构三期 3 weeks ago
sunjiabei 7bafda6af8 8月1日充值审核接口 3 weeks ago
lihuilin 13fc709f90 Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 3 weeks ago
lijianlin ac12dbc730 Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin 2abd7a3179 客户金豆余额及合计数 3 weeks ago
huangqizhen 6ec8e59080 7.30地区部分修改以及导出的封装 3 weeks ago
sunjiabei c39565c409 8月1日充值地区接口 3 weeks ago
sunjiabei 92ce83c768 7月31日代码合并 3 weeks ago
sunjiabei 1b9514be2f Merge branch 'milestone-20250727-金币重构三期' into sunjiabei/feature-20250725135225-金币三期 3 weeks ago
sunjiabei df23d7058b 7月31日线上充值与与金币统计 3 weeks ago
lijianlin 1e39013157 Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin 7949151ab6 文章消费记录与合计数,BeanPage转移至Page 3 weeks ago
sunjiabei 0e5dfe0fc2 7月31日系统充值与与金币统计 3 weeks ago
huangqizhen c2f590d6c4 7.30地区部分修改以及导出的封装 3 weeks ago
lijianlin 17f3a48fea Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin 6607411bb7 铁粉消费合计数 3 weeks ago
sunjiabei 88d0488a1b Merge branch 'milestone-20250727-金币重构三期' into sunjiabei/feature-20250725135225-金币三期 3 weeks ago
sunjiabei 3ce7e1a727 7月31日系统充值与新增 3 weeks ago
lijianlin 91ed5a7eac 消费直播页面(列表+合计数) 3 weeks ago
sunjiabei b9956c2db9 Merge branch 'milestone-20250727-金币重构三期' into sunjiabei/feature-20250725135225-金币三期 3 weeks ago
sunjiabei 9d9d0faefa 7月30日系统充值 3 weeks ago
lijianlin 98e156370b 消费合计数(仅直播消耗) 3 weeks ago
sunjiabei 090d0b54f1 Merge branch 'milestone-20250727-金币重构三期' into sunjiabei/feature-20250725135225-金币三期 3 weeks ago
sunjiabei 9be131f870 7月30日暂存 3 weeks ago
sunjiabei b36a5e25fc 7月30日新增金豆 3 weeks ago
lijianlin 0caa98808c Merge remote-tracking branch 'refs/remotes/origin/lijianlin/feature-20250728171217-三期金豆消费相关' into milestone-20250727-金币重构三期 3 weeks ago
lijianlin a95c19c926 直播消费实体类与获取用户分部 3 weeks ago
sunjiabei b9ffc6004d 删除垃圾文件 3 weeks ago
lihuilin b1cc600207 Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 3 weeks ago
sunjiabei 00566d17cf 用户卡片和数据源配置 3 weeks ago
sunjiabei f0ddbe6a35 Merge branch 'milestone-20250727-金币重构三期' into sunjiabei/feature-20250725135225-金币三期 3 weeks ago
sunjiabei 78132d34bf 用户卡片 3 weeks ago
lijianlin bc8928c1da 金币目录整合 3 weeks ago
sunjiabei 776170d761 金豆目录初始化 3 weeks ago
sunjiabei 591c5b7f26 金豆目录初始化 3 weeks ago
sunjiabei 38dc238bef 金豆目录初始化 3 weeks ago
sunjiabei f3eedd8644 金豆目录初始化 3 weeks ago
lihuilin 0443cef530 Merge branch 'milestone-20250727-金币重构三期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250727-金币重构三期 3 weeks ago
huangqizhen 0bc4bad11d 7.28数据库配置 4 weeks ago
huangqizhen 4cac592e7e 7.27地区查询 4 weeks ago
lihuilin a30945ca84 Merge branch 'milestone-20250711-金币重构二期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250711-金币重构二期 4 weeks ago
lihuilin eb46e64401 Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 1 month ago
lihuilin 5e39bde176 Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 1 month ago
lihuilin 5166afcf0f Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 1 month ago
lihuilin 7a71dfa488 Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 1 month ago
lihuilin 14dcd1cd53 Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 1 month ago
lihuilin 68ed2799ab Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 2 months ago
lihuilin 945610e59a Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 2 months ago
lihuilin 25fac7bc4f Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 2 months ago
lihuilin 4252618236 拉一下Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 2 months ago
lihuilin d024415f3c 拉一下Merge branch 'milestone-20250702-金币重构一期' of http://39.101.133.168:8807/huangqizhen/gold-java into milestone-20250702-金币重构一期 2 months ago
lihuilin c567bae07f 哪里有冲突? 2 months ago
lihuilin 41e1fd7c23 改一下映射 2 months ago
  1. 2
      README.md
  2. 58
      pom.xml
  3. 6
      src/main/java/com/example/demo/DemoApplication.java
  4. 16
      src/main/java/com/example/demo/Export/ExportService.java
  5. 370
      src/main/java/com/example/demo/Export/ExportServiceImpl.java
  6. 2
      src/main/java/com/example/demo/Mysql/MysqlController.java
  7. 17
      src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java
  8. 2
      src/main/java/com/example/demo/Util/BaseDES2.java
  9. 4
      src/main/java/com/example/demo/Util/CacheRefreshTask.java
  10. 2
      src/main/java/com/example/demo/Util/ExecutionContextUtil.java
  11. 2
      src/main/java/com/example/demo/Util/ExecutionTimeAspect.java
  12. 2
      src/main/java/com/example/demo/Util/FeiShuAlertUtil.java
  13. 5
      src/main/java/com/example/demo/config/AppConfig.java
  14. 2
      src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java
  15. 49
      src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java
  16. 47
      src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java
  17. 54
      src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java
  18. 54
      src/main/java/com/example/demo/config/Mysql5DataSourceConfig.java
  19. 2
      src/main/java/com/example/demo/config/RedisConfig.java
  20. 104
      src/main/java/com/example/demo/controller/ExportController.java
  21. 97
      src/main/java/com/example/demo/controller/bean/BeanAuditController.java
  22. 130
      src/main/java/com/example/demo/controller/bean/BeanConsumeController.java
  23. 121
      src/main/java/com/example/demo/controller/bean/BeanRechargeController.java
  24. 79
      src/main/java/com/example/demo/controller/bean/BeanUserController.java
  25. 10
      src/main/java/com/example/demo/controller/coin/AdminController.java
  26. 8
      src/main/java/com/example/demo/controller/coin/AuditController.java
  27. 39
      src/main/java/com/example/demo/controller/coin/ConsumeController.java
  28. 198
      src/main/java/com/example/demo/controller/coin/ExportController.java
  29. 10
      src/main/java/com/example/demo/controller/coin/GeneralController.java
  30. 39
      src/main/java/com/example/demo/controller/coin/GoldDetailController.java
  31. 26
      src/main/java/com/example/demo/controller/coin/MarketController.java
  32. 11
      src/main/java/com/example/demo/controller/coin/MenuController.java
  33. 11
      src/main/java/com/example/demo/controller/coin/PermissionController.java
  34. 10
      src/main/java/com/example/demo/controller/coin/RateController.java
  35. 41
      src/main/java/com/example/demo/controller/coin/RechargeController.java
  36. 42
      src/main/java/com/example/demo/controller/coin/RefundController.java
  37. 12
      src/main/java/com/example/demo/controller/coin/RoleController.java
  38. 11
      src/main/java/com/example/demo/controller/coin/StatisticsController.java
  39. 10
      src/main/java/com/example/demo/controller/coin/UserController.java
  40. 19
      src/main/java/com/example/demo/controller/coin/WorkbenchController.java
  41. 37
      src/main/java/com/example/demo/domain/DTO/ArticleDTO.java
  42. 38
      src/main/java/com/example/demo/domain/DTO/BeanRechargeDTO.java
  43. 2
      src/main/java/com/example/demo/domain/DTO/ConsumeDTO.java
  44. 37
      src/main/java/com/example/demo/domain/DTO/FanDTO.java
  45. 2
      src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java
  46. 37
      src/main/java/com/example/demo/domain/DTO/LiveDTO.java
  47. 36
      src/main/java/com/example/demo/domain/DTO/OnlineDTO.java
  48. 2
      src/main/java/com/example/demo/domain/DTO/RechargeDTO.java
  49. 2
      src/main/java/com/example/demo/domain/DTO/RefundDTO.java
  50. 33
      src/main/java/com/example/demo/domain/entity/Market.java
  51. 32
      src/main/java/com/example/demo/domain/vo/Page.java
  52. 49
      src/main/java/com/example/demo/domain/vo/bean/BeanAuditInfo.java
  53. 27
      src/main/java/com/example/demo/domain/vo/bean/BeanConsume.java
  54. 63
      src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java
  55. 58
      src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java
  56. 24
      src/main/java/com/example/demo/domain/vo/bean/BeanConsumeGold.java
  57. 69
      src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java
  58. 58
      src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java
  59. 27
      src/main/java/com/example/demo/domain/vo/bean/BeanRecharge.java
  60. 62
      src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java
  61. 58
      src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java
  62. 29
      src/main/java/com/example/demo/domain/vo/bean/BeanUser.java
  63. 29
      src/main/java/com/example/demo/domain/vo/bean/BeanUserCard.java
  64. 25
      src/main/java/com/example/demo/domain/vo/bean/GoldBean.java
  65. 2
      src/main/java/com/example/demo/domain/vo/coin/AdminVo.java
  66. 2
      src/main/java/com/example/demo/domain/vo/coin/AiEmotionExportRecordVO.java
  67. 2
      src/main/java/com/example/demo/domain/vo/coin/AuditRequest.java
  68. 4
      src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java
  69. 2
      src/main/java/com/example/demo/domain/vo/coin/ExecutionContext.java
  70. 2
      src/main/java/com/example/demo/domain/vo/coin/ExportVo.java
  71. 2
      src/main/java/com/example/demo/domain/vo/coin/Gold.java
  72. 4
      src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java
  73. 2
      src/main/java/com/example/demo/domain/vo/coin/GoldUser.java
  74. 2
      src/main/java/com/example/demo/domain/vo/coin/MarketRechargeStat.java
  75. 2
      src/main/java/com/example/demo/domain/vo/coin/MenuVo.java
  76. 43
      src/main/java/com/example/demo/domain/vo/coin/Page.java
  77. 2
      src/main/java/com/example/demo/domain/vo/coin/Password.java
  78. 2
      src/main/java/com/example/demo/domain/vo/coin/Permission.java
  79. 2
      src/main/java/com/example/demo/domain/vo/coin/RateDetail.java
  80. 2
      src/main/java/com/example/demo/domain/vo/coin/RechargeAudit.java
  81. 44
      src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java
  82. 2
      src/main/java/com/example/demo/domain/vo/coin/RefundAudit.java
  83. 4
      src/main/java/com/example/demo/domain/vo/coin/RefundUser.java
  84. 2
      src/main/java/com/example/demo/domain/vo/coin/Result.java
  85. 2
      src/main/java/com/example/demo/domain/vo/coin/RoleMenu.java
  86. 2
      src/main/java/com/example/demo/domain/vo/coin/RoleVo.java
  87. 2
      src/main/java/com/example/demo/domain/vo/coin/TestRequest.java
  88. 2
      src/main/java/com/example/demo/domain/vo/coin/Total.java
  89. 2
      src/main/java/com/example/demo/domain/vo/coin/WorkbenchCard.java
  90. 2
      src/main/java/com/example/demo/domain/vo/coin/WorkbenchFullStatistics.java
  91. 2
      src/main/java/com/example/demo/domain/vo/coin/WorkbenchMarketCard.java
  92. 2
      src/main/java/com/example/demo/domain/vo/coin/WorkbenchMarketGraph.java
  93. 40
      src/main/java/com/example/demo/mapper/bean/BeanConsumeMapper.java
  94. 25
      src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java
  95. 31
      src/main/java/com/example/demo/mapper/bean/BeanUserMapper.java
  96. 2
      src/main/java/com/example/demo/mapper/coin/AdminMapper.java
  97. 4
      src/main/java/com/example/demo/mapper/coin/AiEmotionMapper.java
  98. 7
      src/main/java/com/example/demo/mapper/coin/AuditMapper.java
  99. 31
      src/main/java/com/example/demo/mapper/coin/BeanAuditMapper.java
  100. 20
      src/main/java/com/example/demo/mapper/coin/BeanRechargeMapper1.java

2
README.md

@ -6,7 +6,7 @@
## Maven:3.9.8
## Mysql:5.7.44 地址端口号:18.143.76.3:3306
## Mysql:5.7.44 地址端口号:54.255.212.181:3306
### 数据库:
#### 正式 hwgold aDiw7MERSATdfGta

58
pom.xml

@ -115,23 +115,11 @@
<version>3.0.4</version>
<scope>test</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-api</artifactId>-->
<!-- <version>0.11.5</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-impl</artifactId>-->
<!-- <version>0.11.5</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.jsonwebtoken</groupId>-->
<!-- <artifactId>jjwt-jackson</artifactId> &lt;!&ndash; 或 jjwt-gson &ndash;&gt;-->
<!-- <version>0.11.5</version>-->
<!-- <scope>runtime</scope>-->
<!-- </dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.2</version> <!-- 版本号可根据实际情况调整 -->
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
@ -172,7 +160,43 @@
</dependency>
</dependencies>
<!--配置多环境打包-->
<profiles>
<!--开发环境-->
<profile>
<id>dev</id>
<properties>
<!--自定义的属性-->
<spring.profiles.active>dev</spring.profiles.active>
</properties>
<activation>
<!--如果不指定,则默认使用dev开发环境配置-->
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 测试环境-->
<profile>
<id>test</id>
<properties>
<spring.profiles.active>test</spring.profiles.active>
</properties>
</profile>
<!--生产环境-->
<profile>
<id>prod</id>
<properties>
<spring.profiles.active>prod</spring.profiles.active>
</properties>
</profile>
</profiles>
<build>
<finalName>${project.name}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>

6
src/main/java/com/example/demo/DemoApplication.java

@ -7,7 +7,11 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling // 启用调度功能
@MapperScan(basePackages = "com.example.demo.mapper", sqlSessionTemplateRef = "mysql1SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.coin", sqlSessionTemplateRef = "mysql1SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.bean", sqlSessionTemplateRef = "mysql2SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.pay", sqlSessionTemplateRef = "mysql3SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.cms", sqlSessionTemplateRef = "mysql4SqlSessionTemplate")
@MapperScan(basePackages = "com.example.demo.mapper.live", sqlSessionTemplateRef = "mysql5SqlSessionTemplate")
public class DemoApplication {
public static void main(String[] args) {

16
src/main/java/com/example/demo/Export/ExportService.java

@ -1,10 +1,7 @@
package com.example.demo.Export;
import com.example.demo.domain.DTO.ConsumeDTO;
import com.example.demo.domain.DTO.GoldDetailDTO;
import com.example.demo.domain.DTO.RechargeDTO;
import com.example.demo.domain.DTO.RefundDTO;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.DTO.*;
import com.example.demo.domain.vo.coin.Result;
/**
* @program: GOLD
@ -21,5 +18,14 @@ public interface ExportService {
Result addExportRefund(RefundDTO dto);
//消费导出
Result addExportConsume(ConsumeDTO dto);
//金豆直播导出
Result addExportLive(LiveDTO dto);
//金豆粉丝导出
Result addExportFan(FanDTO dto);
//金豆文章导出
Result addExportArticle(ArticleDTO dto);
Result addExportBean(BeanRechargeDTO dto);
Result addExportOnline(OnlineDTO dto);
}

370
src/main/java/com/example/demo/Export/ExportServiceImpl.java

@ -1,17 +1,13 @@
package com.example.demo.Export;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.DTO.ConsumeDTO;
import com.example.demo.domain.DTO.RechargeDTO;
import com.example.demo.domain.DTO.RefundDTO;
import com.example.demo.domain.DTO.*;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.exception.SystemException;
import com.example.demo.mapper.GoldDetailMapper;
import com.example.demo.mapper.coin.GoldDetailMapper;
import com.example.demo.Util.RedisUtil;
import com.example.demo.service.AdminService;
import com.example.demo.service.UserService;
import com.example.demo.service.coin.AdminService;
import com.fasterxml.jackson.databind.ObjectMapper;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
@ -25,8 +21,6 @@ import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
import static net.sf.jsqlparser.util.validation.metadata.NamedObject.user;
/**
* @program: GOLD
* @ClassName ExportServiceImpl
@ -36,7 +30,7 @@ import static net.sf.jsqlparser.util.validation.metadata.NamedObject.user;
* @Version 1.0
**/
@Service
public class ExportServiceImpl implements ExportService{
public class ExportServiceImpl implements ExportService {
@Autowired
private GoldDetailMapper goldDetailMapper;
@Autowired
@ -44,174 +38,260 @@ public class ExportServiceImpl implements ExportService{
@Autowired
private AdminService adminService;
@Override
public Result addExportRecharge(RechargeDTO dto) {
// 获取操作者 jwcode
HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
/**
* 通用导出逻辑
*
* @param dto 数据传输对象 (RechargeDTO, RefundDTO, ConsumeDTO)
* @param exportType 导出类型 ("充值明细", "退款明细", "消耗明细")
* @param queueName Redis 队列名称
* @param requestData 请求数据字段名 ("rechargeUser", "refundUser", "consumeUser","liveUser")
* @return Result
*/
private Result addExport(Object dto, String exportType, String queueName, String requestData) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
dto.setAccount(Integer.valueOf(token1.getUsername()));
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名
String fileName = String.format("%s_%s_%s.xlsx",
"充值明细",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
// System.out.println(fileName);
dto.setUrl("");
dto.setFileName(fileName);
dto.setDataNum(0);
// 获取操作者信息
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
Integer account = Integer.valueOf(admin.getAccount());
String adminName = admin.getAdminName();
// 设置 DTO 的通用字段
setCommonFields(dto, account, adminName);
try{
// 调用方式
// 插入导出记录并获取主键
GoldDetailMapper.ExportRecordIdHolder idHolder = new GoldDetailMapper.ExportRecordIdHolder();
goldDetailMapper.insertExportRecord(
idHolder, // 用于接收主键
dto.getAccount(),
dto.getType(),
dto.getState(),
dto.getUrl(),
dto.getFileName(),
dto.getDataNum()
);
// 获取主键
insertExportRecord(dto, idHolder, account);
Long recordId = idHolder.getId();
// 2. 构造完整的 JSON 数据包含所有请求参数
Map<String, Object> exportData = new HashMap<>();
exportData.put("recordId", recordId);
// 添加 token exportData
exportData.put("token", token);
// 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>();
requestData.put("rechargeUser", dto.getRechargeUser());
exportData.put("requestData", requestData);
// 构造完整的 JSON 数据
Map<String, Object> exportData = constructExportData(recordId, token, dto, requestData);
// 3. 发送到 Redis 消息队列
// 发送到 Redis 消息队列
String jsonData = new ObjectMapper().writeValueAsString(exportData);
redisUtil.sendMessage("recharge:queue:export_queue", jsonData);
}catch (Exception e){
redisUtil.sendMessage(queueName, jsonData);
} catch (Exception e) {
e.printStackTrace();
throw new SystemException("导出数据异常,请稍后重试", e);
}
return Result.success();
}
@Override
public Result addExportRefund(RefundDTO dto) {
// 获取操作者 jwcode
HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
dto.setAccount(Integer.valueOf(token1.getUsername()));
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
/**
* 设置 DTO 的通用字段
*/
private void setCommonFields(Object dto, Integer account,String adminName) throws Exception {
if (dto instanceof RechargeDTO rechargeDTO) {
rechargeDTO.setAccount(Integer.valueOf(account));
rechargeDTO.setUrl("");
rechargeDTO.setFileName(generateFileName("充值明细", adminName));
rechargeDTO.setDataNum(0);
} else if (dto instanceof RefundDTO refundDTO) {
refundDTO.setAccount(Integer.valueOf(account));
refundDTO.setUrl("");
refundDTO.setFileName(generateFileName("退款明细", adminName));
refundDTO.setDataNum(0);
} else if (dto instanceof ConsumeDTO consumeDTO) {
consumeDTO.setAccount(Integer.valueOf(account));
consumeDTO.setUrl("");
consumeDTO.setFileName(generateFileName("消耗明细", adminName));
consumeDTO.setDataNum(0);
} else if (dto instanceof LiveDTO liveDTO) {
liveDTO.setAccount(Integer.valueOf(account));
liveDTO.setUrl("");
liveDTO.setFileName(generateFileName("直播明细", adminName));
liveDTO.setDataNum(0);
} else if (dto instanceof FanDTO fanDTO) {
fanDTO.setAccount(Integer.valueOf(account));
fanDTO.setUrl("");
fanDTO.setFileName(generateFileName("铁粉明细", adminName));
fanDTO.setDataNum(0);
} else if (dto instanceof BeanRechargeDTO beanRechargeDTO){
beanRechargeDTO.setAccount(Integer.valueOf(account));
beanRechargeDTO.setUrl("");
beanRechargeDTO.setFileName(generateFileName("金豆充值明细", adminName));
beanRechargeDTO.setDataNum(0);
} else if(dto instanceof OnlineDTO onlineDTO){
onlineDTO.setAccount(Integer.valueOf(account));
onlineDTO.setUrl("");
onlineDTO.setFileName(generateFileName("在线明细", adminName));
onlineDTO.setDataNum(0);
} else if(dto instanceof ArticleDTO articleDTO){
articleDTO.setAccount(Integer.valueOf(account));
articleDTO.setUrl("");
articleDTO.setFileName(generateFileName("文章明细", adminName));
articleDTO.setDataNum(0);
}
}
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名
String fileName = String.format("%s_%s_%s.xlsx",
"退款明细",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName);
dto.setUrl("");
dto.setFileName(fileName);
dto.setDataNum(0);
try{
// 调用方式
GoldDetailMapper.ExportRecordIdHolder idHolder = new GoldDetailMapper.ExportRecordIdHolder();
/**
* 插入导出记录
*/
private void insertExportRecord(Object dto, GoldDetailMapper.ExportRecordIdHolder idHolder, Integer account) throws Exception {
if (dto instanceof RechargeDTO rechargeDTO) {
goldDetailMapper.insertExportRecord(
idHolder, // 用于接收主键
dto.getAccount(),
dto.getType(),
dto.getState(),
dto.getUrl(),
dto.getFileName(),
dto.getDataNum()
idHolder,
account,
rechargeDTO.getType(),
rechargeDTO.getState(),
rechargeDTO.getUrl(),
rechargeDTO.getFileName(),
rechargeDTO.getDataNum()
);
// 获取主键
Long recordId = idHolder.getId();
// 2. 构造完整的 JSON 数据包含所有请求参数
} else if (dto instanceof RefundDTO refundDTO) {
goldDetailMapper.insertExportRecord(
idHolder,
account,
refundDTO.getType(),
refundDTO.getState(),
refundDTO.getUrl(),
refundDTO.getFileName(),
refundDTO.getDataNum()
);
} else if (dto instanceof ConsumeDTO consumeDTO) {
goldDetailMapper.insertExportRecord(
idHolder,
account,
consumeDTO.getType(),
consumeDTO.getState(),
consumeDTO.getUrl(),
consumeDTO.getFileName(),
consumeDTO.getDataNum()
);
} else if(dto instanceof LiveDTO liveDTO){
goldDetailMapper.insertExportRecord(
idHolder,
account,
liveDTO.getType(),
liveDTO.getState(),
liveDTO.getUrl(),
liveDTO.getFileName(),
liveDTO.getDataNum()
);
} else if (dto instanceof FanDTO fanDTO) {
goldDetailMapper.insertExportRecord(
idHolder,
account,
fanDTO.getType(),
fanDTO.getState(),
fanDTO.getUrl(),
fanDTO.getFileName(),
fanDTO.getDataNum()
);
} else if (dto instanceof ArticleDTO articleDTO) {
goldDetailMapper.insertExportRecord(
idHolder,
account,
articleDTO.getType(),
articleDTO.getState(),
articleDTO.getUrl(),
articleDTO.getFileName(),
articleDTO.getDataNum()
);
} else if (dto instanceof BeanRechargeDTO beanRechargeDTO){
goldDetailMapper.insertExportRecord(
idHolder,
account,
beanRechargeDTO.getType(),
beanRechargeDTO.getState(),
beanRechargeDTO.getUrl(),
beanRechargeDTO.getFileName(),
beanRechargeDTO.getDataNum()
);
} else if (dto instanceof OnlineDTO onlineDTO){
goldDetailMapper.insertExportRecord(
idHolder,
account,
onlineDTO.getType(),
onlineDTO.getState(),
onlineDTO.getUrl(),
onlineDTO.getFileName(),
onlineDTO.getDataNum()
);
}
}
/**
* 构造导出数据
*/
private Map<String, Object> constructExportData(Long recordId, String token, Object dto, String requestDataKey) throws Exception {
Map<String, Object> exportData = new HashMap<>();
exportData.put("recordId", recordId);
// 添加 token exportData
exportData.put("token", token);
// 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>();
requestData.put("refundUser", dto.getRefundUser());
if (dto instanceof RechargeDTO rechargeDTO) {
requestData.put(requestDataKey, rechargeDTO.getRechargeUser());
} else if (dto instanceof RefundDTO refundDTO) {
requestData.put(requestDataKey, refundDTO.getRefundUser());
} else if (dto instanceof ConsumeDTO consumeDTO) {
requestData.put(requestDataKey, consumeDTO.getConsumeUser());
} else if(dto instanceof LiveDTO liveDTO){
requestData.put(requestDataKey, liveDTO.getBeanConsumeLive());
} else if (dto instanceof FanDTO fanDTO) {
requestData.put(requestDataKey, fanDTO.getBeanConsumeFan());
} else if (dto instanceof ArticleDTO articleDTO) {
requestData.put(requestDataKey, articleDTO.getBeanConsumeArticle());
} else if (dto instanceof BeanRechargeDTO beanRechargeDTO){
requestData.put(requestDataKey, beanRechargeDTO.getBeanSystemRechargeInfo());
} else if (dto instanceof OnlineDTO onlineDTO){
requestData.put(requestDataKey, onlineDTO.getBeanOnlineRechargeInfo());
}
exportData.put("requestData", requestData);
// 3. 发送到 Redis 消息队列
String jsonData = new ObjectMapper().writeValueAsString(exportData);
redisUtil.sendMessage("refund:queue:export_queue", jsonData);
}catch (Exception e){
e.printStackTrace();
throw new SystemException("导出数据异常,请稍后重试", e);
return exportData;
}
return Result.success();
/**
* 生成文件名
*/
private String generateFileName(String exportType, String adminName) {
return String.format("%s_%s_%s.xlsx",
exportType,
adminName,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
}
@Override
public Result addExportRecharge(RechargeDTO dto) {
return addExport(dto, "充值明细", "recharge:queue:export_queue", "rechargeUser");
}
@Override
public Result addExportRefund(RefundDTO dto) {
return addExport(dto, "退款明细", "refund:queue:export_queue", "refundUser");
}
@Override
public Result addExportConsume(ConsumeDTO dto) {
// 获取操作者 jwcode
HttpServletRequest request=((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
dto.setAccount(Integer.valueOf(token1.getUsername()));
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
return addExport(dto, "消耗明细", "consume:queue:export_queue", "consumeUser");
}
String admin = adminService.getName(String.valueOf(dto.getAccount()));
// 生成文件名
String fileName = String.format("%s_%s_%s.xlsx",
"消耗明细",
admin,
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
System.out.println(fileName);
dto.setUrl("");
dto.setFileName(fileName);
dto.setDataNum(0);
try{
// 调用方式
GoldDetailMapper.ExportRecordIdHolder idHolder = new GoldDetailMapper.ExportRecordIdHolder();
goldDetailMapper.insertExportRecord(
idHolder, // 用于接收主键
dto.getAccount(),
dto.getType(),
dto.getState(),
dto.getUrl(),
dto.getFileName(),
dto.getDataNum()
);
// 获取主键
Long recordId = idHolder.getId();
// 2. 构造完整的 JSON 数据包含所有请求参数
Map<String, Object> exportData = new HashMap<>();
exportData.put("recordId", recordId);
// 添加 token exportData
exportData.put("token", token);
@Override
public Result addExportLive(LiveDTO dto) {
return addExport(dto, "直播明细", "lives:queue:export_queue", "beanConsumeLive");
}
// 手动构造请求数据避免 toString() 只返回部分字段
Map<String, Object> requestData = new HashMap<>();
requestData.put("consumeUser", dto.getConsumeUser());
exportData.put("requestData", requestData);
@Override
public Result addExportFan(FanDTO dto) {
return addExport(dto, "铁粉明细", "fan:queue:export_queue", "beanConsumeFan");
}
// 3. 发送到 Redis 消息队列
String jsonData = new ObjectMapper().writeValueAsString(exportData);
redisUtil.sendMessage("consume:queue:export_queue", jsonData);
}catch (Exception e){
e.printStackTrace();
throw new SystemException("导出数据异常,请稍后重试", e);
@Override
public Result addExportArticle(ArticleDTO dto) {
return addExport(dto, "文章明细", "article:queue:export_queue", "beanConsumeArticle");
}
return Result.success();
@Override
public Result addExportBean(BeanRechargeDTO dto) {
return addExport(dto, "金豆明细", "bean:queue:export_queue", "beanSystemRechargeInfo");
}
@Override
public Result addExportOnline(OnlineDTO dto) {
return addExport(dto, "在线明细", "online:queue:export_queue", "beanOnlineRechargeInfo");
}
}

2
src/main/java/com/example/demo/Mysql/MysqlController.java

@ -1,6 +1,6 @@
package com.example.demo.Mysql;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.coin.Result;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

17
src/main/java/com/example/demo/Mysql/MysqlServiceImpl.java

@ -3,15 +3,14 @@ package com.example.demo.Mysql;
import com.example.demo.Util.BaseDES;
import com.example.demo.domain.entity.User;
import com.example.demo.service.AdminService;
import com.example.demo.service.UserService;
import com.example.demo.service.coin.AdminService;
import com.example.demo.service.coin.UserService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.security.SecurityProperties;
import org.springframework.http.*;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@ -77,7 +76,7 @@ public class MysqlServiceImpl implements MysqlService {
//退款类型 61ERP退款退金币
String insertSql = "INSERT INTO user_gold_record (order_code,jwcode,sum_gold,permanent_gold,free_june,free_december," +
"task_gold,pay_platform,goods_name,refund_type,refund_model,remark,type,admin_id," +
"audit_status,create_time,flag) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
"audit_status,create_time,flag,update_time) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ";
try (PreparedStatement mysqlStmt = mysqlConn.prepareStatement(insertSql)) {
while (resultSet.next()) {
int gtype = resultSet.getInt("gtype");
@ -144,15 +143,16 @@ public class MysqlServiceImpl implements MysqlService {
if (operation_platform.equals("1")){
mysqlStmt.setString(8, "ERP");
}
if (operation_platform.equals("2")){
else if (operation_platform.equals("2")){
mysqlStmt.setString(8, "HomilyLink");
}
if(operation_platform.equals("3")){
else if(operation_platform.equals("3")){
mysqlStmt.setString(8, "HomilyChart");
}
if(operation_platform.equals("4")){
else if(operation_platform.equals("4")){
continue;
}if(operation_platform.equals("0")){
}
else if(operation_platform.equals("0")){
mysqlStmt.setString(8, "初始化金币");
}
else {
@ -167,6 +167,7 @@ public class MysqlServiceImpl implements MysqlService {
}else {
mysqlStmt.setInt(17, 1);
}
mysqlStmt.setTimestamp(18, created_at);
// 更新时的值
mysqlStmt.addBatch();

2
src/main/java/com/example/demo/Util/BaseDES2.java

@ -91,7 +91,7 @@ public class BaseDES2 {
public static void main(String args[]) {
try {
BaseDES2 d = new BaseDES2();
String encryptedText = d.encrypt("30003761");
String encryptedText = d.encrypt("90035176");
System.out.println("加密结果:" + encryptedText);
} catch (Exception e) {
e.printStackTrace();

4
src/main/java/com/example/demo/Util/CacheRefreshTask.java

@ -1,7 +1,7 @@
package com.example.demo.Util;
import com.example.demo.service.GeneralService;
import com.example.demo.service.WorkbenchService;
import com.example.demo.service.coin.GeneralService;
import com.example.demo.service.coin.WorkbenchService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

2
src/main/java/com/example/demo/Util/ExecutionContextUtil.java

@ -1,7 +1,7 @@
package com.example.demo.Util;
import com.example.demo.domain.vo.ExecutionContext;
import com.example.demo.domain.vo.coin.ExecutionContext;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

2
src/main/java/com/example/demo/Util/ExecutionTimeAspect.java

@ -18,7 +18,7 @@ import org.springframework.stereotype.Component;
@Component
public class ExecutionTimeAspect {
@Around("execution(* com.example.demo.serviceImpl.WorkbenchServiceImpl.*(..))")
@Around("execution(* com.example.demo.serviceImpl.coin.WorkbenchServiceImpl.*(..))")
public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
Object proceed = joinPoint.proceed();

2
src/main/java/com/example/demo/Util/FeiShuAlertUtil.java

@ -2,7 +2,7 @@ package com.example.demo.Util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.example.demo.domain.vo.ExecutionContext;
import com.example.demo.domain.vo.coin.ExecutionContext;
import com.example.demo.config.EnvConfig;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;

5
src/main/java/com/example/demo/config/AppConfig.java

@ -2,6 +2,7 @@ package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;
@Configuration
@ -9,6 +10,8 @@ public class AppConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
return restTemplate;
}
}

2
src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java

@ -20,7 +20,7 @@ public class Mysql1DataSourceConfig {
@Bean(name = "mysql1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql1")
public DataSource mysql2DataSource() {
public DataSource mysql1DataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "mysql1SqlSessionFactory")

49
src/main/java/com/example/demo/config/Mysql2DataSourceConfig.java

@ -0,0 +1,49 @@
package com.example.demo.config;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Slf4j
@Configuration
public class Mysql2DataSourceConfig {
@Bean(name = "mysql2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql2")
public DataSource mysql2DataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "mysql2SqlSessionFactory")
// @Primary
public SqlSessionFactory mysql2SqlSessionFactory(@Qualifier("mysql2DataSource") DataSource dataSource,
@Qualifier("globalConfiguration2") org.apache.ibatis.session.Configuration globalConfiguration2) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:jindouMapper/*.xml"));
sessionFactory.setConfiguration(globalConfiguration2);
return sessionFactory.getObject();
}
@Bean(name = "mysql2SqlSessionTemplate")
// @Primary
public SqlSessionTemplate mysql2SqlSessionTemplate(@Qualifier("mysql2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean
@ConfigurationProperties(prefix = "mybatis.configuration.mysql2")
public org.apache.ibatis.session.Configuration globalConfiguration2() {
return new org.apache.ibatis.session.Configuration();
}
}

47
src/main/java/com/example/demo/config/Mysql3DataSourceConfig.java

@ -0,0 +1,47 @@
package com.example.demo.config;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
@Slf4j
@Configuration
public class Mysql3DataSourceConfig {
@Bean(name = "mysql3DataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql3")
public DataSource mysql3DataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "mysql3SqlSessionFactory")
// @Primary
public SqlSessionFactory mysql3SqlSessionFactory(@Qualifier("mysql3DataSource") DataSource dataSource,
@Qualifier("globalConfiguration3") org.apache.ibatis.session.Configuration globalConfiguration3) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:paymapper/*.xml"));
sessionFactory.setConfiguration(globalConfiguration3);
return sessionFactory.getObject();
}
@Bean(name = "mysql3SqlSessionTemplate")
// @Primary
public SqlSessionTemplate mysql3SqlSessionTemplate(@Qualifier("mysql3SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean
@ConfigurationProperties(prefix = "mybatis.configuration.mysql3")
public org.apache.ibatis.session.Configuration globalConfiguration3() {
return new org.apache.ibatis.session.Configuration();
}
}

54
src/main/java/com/example/demo/config/Mysql4DataSourceConfig.java

@ -0,0 +1,54 @@
package com.example.demo.config;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* @program: gold-java
* @ClassName Mysql4DataSourceConfig
* @description:
* @author: Ethan
* @create: 202508-01 17:12
* @Version 1.0
**/
@Slf4j
@Configuration
public class Mysql4DataSourceConfig {
@Bean(name = "mysql4DataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql4")
public DataSource mysql4DataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "mysql4SqlSessionFactory")
// @Primary
public SqlSessionFactory mysql4SqlSessionFactory(@Qualifier("mysql4DataSource") DataSource dataSource,
@Qualifier("globalConfiguration4") org.apache.ibatis.session.Configuration globalConfiguration4) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:paymapper/*.xml"));
sessionFactory.setConfiguration(globalConfiguration4);
return sessionFactory.getObject();
}
@Bean(name = "mysql4SqlSessionTemplate")
// @Primary
public SqlSessionTemplate mysql4SqlSessionTemplate(@Qualifier("mysql4SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean
@ConfigurationProperties(prefix = "mybatis.configuration.mysql4")
public org.apache.ibatis.session.Configuration globalConfiguration4() {
return new org.apache.ibatis.session.Configuration();
}
}

54
src/main/java/com/example/demo/config/Mysql5DataSourceConfig.java

@ -0,0 +1,54 @@
package com.example.demo.config;
import com.zaxxer.hikari.HikariDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* @program: gold-java
* @ClassName Mysql5DataSourceConfig
* @description:
* @author: Ethan
* @create: 202508-01 17:17
* @Version 1.0
**/
@Slf4j
@Configuration
public class Mysql5DataSourceConfig {
@Bean(name = "mysql5DataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql5")
public DataSource mysql5DataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean(name = "mysql5SqlSessionFactory")
// @Primary
public SqlSessionFactory mysql5SqlSessionFactory(@Qualifier("mysql5DataSource") DataSource dataSource,
@Qualifier("globalConfiguration5") org.apache.ibatis.session.Configuration globalConfiguration5) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:liveMapper/*.xml"));
sessionFactory.setConfiguration(globalConfiguration5);
return sessionFactory.getObject();
}
@Bean(name = "mysql5SqlSessionTemplate")
// @Primary
public SqlSessionTemplate mysql5SqlSessionTemplate(@Qualifier("mysql5SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
@Bean
@ConfigurationProperties(prefix = "mybatis.configuration.mysql5")
public org.apache.ibatis.session.Configuration globalConfiguration5() {
return new org.apache.ibatis.session.Configuration();
}
}

2
src/main/java/com/example/demo/config/RedisConfig.java

@ -1,7 +1,7 @@
package com.example.demo.config;
import com.example.demo.domain.vo.WorkbenchCard;
import com.example.demo.domain.vo.coin.WorkbenchCard;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.cache.CacheProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

104
src/main/java/com/example/demo/controller/ExportController.java

@ -1,104 +0,0 @@
package com.example.demo.controller;
import com.example.demo.Util.BusinessException;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.RedisLockUtil;
import com.example.demo.domain.DTO.ConsumeDTO;
import com.example.demo.domain.DTO.RechargeDTO;
import com.example.demo.domain.DTO.RefundDTO;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.Export;
import com.example.demo.domain.vo.Result;
import com.example.demo.service.ExportExcelService;
import com.example.demo.service.GoldDetailService;
import com.example.demo.Export.ExportService;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.UUID;
/**
* @program: GOLD
* @ClassName ExportController
* @description:
* @author: huangqizhen
* @create: 202506-28 15:22
* @Version 1.0
**/
@RestController
@RequestMapping("/export")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class ExportController {
@Autowired
private ExportExcelService exportExcelService;
@Autowired
private RedisLockUtil redisLockUtil;
@Autowired
private GoldDetailService goldDetailService;
@Autowired
private ExportService exportService;
@PostMapping("/export")
public Result export(@Valid @RequestBody Export export, @RequestHeader("token") String token) throws Exception {
try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
export.setAccount(Integer.valueOf(token1.getUsername()));
return Result.success(exportExcelService.getExcel(export));
} catch (Exception e) {
log.error("导出失败", e.getMessage());
return Result.error("导出失败" + e.getMessage());
}
}
@PostMapping("/exportRecharge")
public Result export(@Valid @RequestBody RechargeDTO dto) {
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key可按用户/业务区分
String requestId = UUID.randomUUID().toString(); // 请求 ID防止误删锁
long expireTime = 5000; // 锁过期时间5秒s
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportRecharge(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportRefund")
public Result export(@Valid @RequestBody RefundDTO dto) {
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key可按用户/业务区分
String requestId = UUID.randomUUID().toString(); // 请求 ID防止误删锁
long expireTime = 5000; // 锁过期时间5秒s
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportRefund(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportConsume")
public Result export(@Valid @RequestBody ConsumeDTO dto) {
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key可按用户/业务区分
String requestId = UUID.randomUUID().toString(); // 请求 ID防止误删锁
long expireTime = 5000; // 锁过期时间5秒s
try {
return exportService.addExportConsume(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
}

97
src/main/java/com/example/demo/controller/bean/BeanAuditController.java

@ -0,0 +1,97 @@
package com.example.demo.controller.bean;
import com.example.demo.domain.vo.bean.BeanAuditInfo;
import com.example.demo.domain.vo.bean.BeanRechargeInfo;
import com.example.demo.domain.vo.bean.GoldBean;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.bean.BeanAuditService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanAuditController
* @description:
* @author: Double
* @create: 202508-01 11:03
* @Version 1.0
**/
@RestController
@RequestMapping("/beanAudit")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class BeanAuditController {
@Autowired
private BeanAuditService beanAuditService;
//审核查找
@PostMapping("/selectBy")
public Result selectBy(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
if (page.getBeanAuditInfo().getStatus() == null) {
return Result.error("状态不能为空");
}
return Result.success(beanAuditService.selectBy(page.getPageNum(), page.getPageSize(), page.getBeanAuditInfo()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
}
}
@PostMapping("/status1")
public Result updateStatus1(@RequestBody BeanAuditInfo beanAuditInfo) {
try {
if (ObjectUtils.isEmpty(beanAuditInfo.getId())) {
return Result.error("id不能为空");
}
return beanAuditService.updateStatus1(beanAuditInfo);
} catch (Exception e) {
e.printStackTrace();
return Result.error("更新失败,查看id");
}
}
@PostMapping("/status2")
public Result updateStatus2(@RequestBody BeanAuditInfo beanAuditInfo) {
try {
if (ObjectUtils.isEmpty(beanAuditInfo.getId())) {
return Result.error("id不能为空");
}
if (ObjectUtils.isEmpty(beanAuditInfo.getReason())) {
return Result.error("审核意见不能为空");
}
beanAuditService.updateStatus2(beanAuditInfo);
return Result.success();
} catch (Exception e) {
return Result.error("更新失败,查看id");
}
}
//金豆统计
@PostMapping("/statsBean")
public Result statsBean(@RequestBody BeanAuditInfo beanAuditInfo) {
try {
GoldBean goldBean = beanAuditService.statsBean(beanAuditInfo);
return Result.success(goldBean);
} catch (Exception e) {
return Result.error("请检查数据的格式");
}
}
}

130
src/main/java/com/example/demo/controller/bean/BeanConsumeController.java

@ -0,0 +1,130 @@
package com.example.demo.controller.bean;
import com.example.demo.domain.vo.bean.BeanConsume;
import com.example.demo.domain.vo.bean.BeanConsumeGold;
import com.example.demo.domain.vo.bean.BeanRecharge;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.bean.BeanConsumeService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanConsumeController
* @description:
* @author: Ethan
* @create: 202507-30 11:30
* @Version 1.0
**/
@RestController
@RequestMapping("/beanConsume")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class BeanConsumeController {
@Autowired
private BeanConsumeService beanConsumeService;
//获取消费用户分部信息
@PostMapping("/getDept")
public Result getDept(){
List<String> deptList = beanConsumeService.getDept();
return Result.success(deptList);
}
//获取直播消费用户分部信息
@PostMapping("/getLiveDept")
public Result getLiveDept(){
List<String> deptList = beanConsumeService.getLiveDept();
return Result.success(deptList);
}
//减少金豆
@PostMapping("/reduce")
public Result reduce(@RequestBody BeanConsume consume) {
try {
return beanConsumeService.reduce(consume);
} catch (Exception e) {
return Result.error("减少失败");
}
}
//筛选查询直播消费记录
@PostMapping("/selectLiveBy")
public Result selectLiveBy(@RequestBody Page page){
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanConsumeService.selectLiveBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeLive()));
}
} catch (Exception e) {
e.printStackTrace();
//返回堆栈信息
return Result.error(e.toString());
}}
//筛选查询铁粉消费记录
@PostMapping("/selectFanBy")
public Result selectFanBy(@RequestBody Page page){
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanConsumeService.selectFanBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeFan()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error(e.toString());
}}
//筛选查询文章消费记录
@PostMapping("/selectArticleBy")
public Result selectArticleBy(@RequestBody Page page){
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanConsumeService.selectArticleBy(page.getPageNum(), page.getPageSize(), page.getBeanConsumeArticle()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error(e.toString());
}}
//消费合计数
@PostMapping("sumConsumeGold")
public BeanConsumeGold sumConsumeGold(@RequestBody Page page) {
return beanConsumeService.sumConsumeGold( page);
}
//查询所有直播礼物
@PostMapping("/getLiveGift")
public Result getLiveGift(){
return Result.success(beanConsumeService.getLiveGift());
}
//查询所有直播频道
@PostMapping("/getLiveChannel")
public Result getLiveChannel(){
return Result.success(beanConsumeService.getLiveChannel());
}
}

121
src/main/java/com/example/demo/controller/bean/BeanRechargeController.java

@ -0,0 +1,121 @@
package com.example.demo.controller.bean;
import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo;
import com.example.demo.domain.vo.bean.BeanRecharge;
import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo;
import com.example.demo.domain.vo.bean.GoldBean;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.bean.BeanRechargeService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanRechrageController
* @description:
* @author: Double
* @create: 202507-29 16:46
* @Version 1.0
**/
@RestController
@RequestMapping("/beanRecharge")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class BeanRechargeController {
@Autowired
private BeanRechargeService beanRechargeService;
//添加金豆
@PostMapping("/add")
public Result add(@RequestBody BeanRecharge recharge) {
try {
return beanRechargeService.add(recharge);
} catch (Exception e) {
return Result.error("添加失败");
}
}
//系统充值
@PostMapping("/selectBySystem")
public Result selectBySystem(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanRechargeService.selectBySystem(page.getPageNum(), page.getPageSize(), page.getBeanSystemRechargeInfo()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
}
}
//系统金豆统计
@PostMapping("/statsSystemBean")
public Result statsSystemBean(@RequestBody BeanSystemRechargeInfo beanSystemRechargeInfo) {
try {
GoldBean goldBean = beanRechargeService.statsSystemBean(beanSystemRechargeInfo);
return Result.success(goldBean);
} catch (Exception e) {
return Result.error("请检查数据的格式");
}
}
//获取系统充值地区
@PostMapping("/systemMarket")
public Result systemMarket()
{
List<String> list = beanRechargeService.systemMarket();
return Result.success(list);
}
//线上充值
@PostMapping("/selectByOnline")
public Result selectByOnline(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanRechargeService.selectByOnline(page.getPageNum(), page.getPageSize(), page.getBeanOnlineRechargeInfo()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
}
}
//线上金豆统计
@PostMapping("/statsOnlineBean")
public Result statsOnlineBean(@RequestBody BeanOnlineRechargeInfo beanOnlineRechargeInfo) {
try {
GoldBean goldBean = beanRechargeService.statsOnlineBean(beanOnlineRechargeInfo);
return Result.success(goldBean);
} catch (Exception e) {
return Result.error("请检查数据的格式");
}
}
//获取线上充值地区
@PostMapping("/onlineMarket")
public Result onlineMarket()
{
List<String> list = beanRechargeService.onlineMarket();
return Result.success(list);
}
}

79
src/main/java/com/example/demo/controller/bean/BeanUserController.java

@ -0,0 +1,79 @@
package com.example.demo.controller.bean;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.bean.BeanUser;
import com.example.demo.domain.vo.bean.BeanUserCard;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.bean.BeanUserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanUserController
* @description:
* @author: Double
* @create: 202507-29 17:03
* @Version 1.0
**/
@RestController
@RequestMapping("/beanUser")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class BeanUserController {
@Autowired
private BeanUserService beanUserService;
//查询用户卡片
@PostMapping("/userCard")
public Result userCard(@RequestBody BeanUserCard user) {
try {
return beanUserService.userCard(user.getJwcode().toString());
} catch (Exception e) {
return Result.error("请检查输入精网号格式");
}
}
//客户金豆余额
@PostMapping("/userBean")
public Result userBean(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(beanUserService.selectUserBy(page.getPageNum(), page.getPageSize(), page.getBeanUser()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error(e.toString());
}}
//客户金币余额合计数
@PostMapping("/userBeanSum")
public Result userBeanSum(@RequestBody Page page) {
return Result.success(beanUserService.sumUserGold(page));
}
//查询客户分部
@PostMapping("/getDept")
public Result getDept() {
List<String> deptList = beanUserService.getDept();
return Result.success(deptList);
}
}

10
src/main/java/com/example/demo/controller/AdminController.java → src/main/java/com/example/demo/controller/coin/AdminController.java

@ -1,11 +1,11 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.Password;
import com.example.demo.domain.vo.Result;
import com.example.demo.mapper.AdminMapper;
import com.example.demo.service.AdminService;
import com.example.demo.domain.vo.coin.Password;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.mapper.coin.AdminMapper;
import com.example.demo.service.coin.AdminService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

8
src/main/java/com/example/demo/controller/AuditController.java → src/main/java/com/example/demo/controller/coin/AuditController.java

@ -1,20 +1,18 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.*;
import com.example.demo.service.AuditService;
import com.example.demo.service.coin.AuditService;
import com.github.pagehelper.PageInfo;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.example.demo.domain.vo.coin.*;
import java.util.Arrays;
import java.util.List;

39
src/main/java/com/example/demo/controller/ConsumeController.java → src/main/java/com/example/demo/controller/coin/ConsumeController.java

@ -1,17 +1,16 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result;
import com.example.demo.service.ConsumeService;
import com.example.demo.domain.vo.coin.ConsumeUser;
import com.example.demo.domain.vo.coin.Gold;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.ConsumeService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
@ -87,6 +86,7 @@ public class ConsumeController {
return Result.error("页大小为空!");
} else {
//解token权限
if(page.getConsumeUser().getMarkets()==null||page.getConsumeUser().getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
@ -97,6 +97,7 @@ public class ConsumeController {
else{
return Result.error("角色为空");
}
}
return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser()));
}
} catch (Exception e) {
@ -110,7 +111,7 @@ public class ConsumeController {
@PostMapping("/statsGold")
public Result statsGold(@RequestBody ConsumeUser consumeUser) {
try {
//解token权限
if(consumeUser.getMarkets()==null||consumeUser.getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
@ -121,6 +122,7 @@ public class ConsumeController {
else{
return Result.error("角色为空");
}
}
Gold gold = consumeService.statsGold(consumeUser);
return Result.success(gold);
} catch (Exception e) {
@ -146,6 +148,25 @@ public class ConsumeController {
}
}
public Result select(@RequestBody Page page) {
try {
//页码校验
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
//页面大小校验
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(consumeService.selectBy(page.getPageNum(), page.getPageSize(), page.getConsumeUser()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
}
}
}

198
src/main/java/com/example/demo/controller/coin/ExportController.java

@ -0,0 +1,198 @@
package com.example.demo.controller.coin;
import com.example.demo.Util.BusinessException;
import com.example.demo.Util.JWTUtil;
import com.example.demo.Util.RedisLockUtil;
import com.example.demo.domain.DTO.*;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.Export;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.ExportExcelService;
import com.example.demo.service.coin.GoldDetailService;
import com.example.demo.Export.ExportService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.UUID;
/**
* @program: GOLD
* @ClassName ExportController
* @description:
* @author: huangqizhen
* @create: 202506-28 15:22
* @Version 1.0
**/
@RestController
@RequestMapping("/export")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class ExportController {
@Autowired
private ExportExcelService exportExcelService;
@Autowired
private RedisLockUtil redisLockUtil;
@Autowired
private GoldDetailService goldDetailService;
@Autowired
private ExportService exportService;
@PostMapping("/export")
public Result export(@Valid @RequestBody Export export, @RequestHeader("token") String token) throws Exception {
try {
UserDetails token1= JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
export.setAccount(Integer.valueOf(token1.getUsername()));
return Result.success(exportExcelService.getExcel(export));
} catch (Exception e) {
log.error("导出失败", e.getMessage());
return Result.error("导出失败" + e.getMessage());
}
}
@PostMapping("/exportRecharge")
public Result export(@Valid @RequestBody RechargeDTO dto) {
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key可按用户/业务区分
String requestId = UUID.randomUUID().toString(); // 请求 ID防止误删锁
long expireTime = 5000; // 锁过期时间5秒s
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
dto.setToken(token);
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportRecharge(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportRefund")
public Result export(@Valid @RequestBody RefundDTO dto) {
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key可按用户/业务区分
String requestId = UUID.randomUUID().toString(); // 请求 ID防止误删锁
long expireTime = 5000; // 锁过期时间5秒s
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
dto.setToken(token);
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportRefund(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportConsume")
public Result export(@Valid @RequestBody ConsumeDTO dto) {
String lockKey = "export:lock:" + dto.getToken(); // 锁的 Key可按用户/业务区分
String requestId = UUID.randomUUID().toString(); // 请求 ID防止误删锁
long expireTime = 5000; // 锁过期时间5秒s
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
dto.setToken(token);
try {
return exportService.addExportConsume(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportLive")
public Result export(@Valid @RequestBody LiveDTO dto) {
String lockKey = "export:lock:" + dto.getToken();
String requestId = UUID.randomUUID().toString();
long expireTime = 5000;
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportLive(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportFan")
public Result export(@Valid @RequestBody FanDTO dto){
String lockKey = "export:lock:" + dto.getToken();
String requestId = UUID.randomUUID().toString();
long expireTime = 5000;
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportFan(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportArticle")
public Result export(@Valid @RequestBody ArticleDTO dto){
String lockKey = "export:lock:" + dto.getToken();
String requestId = UUID.randomUUID().toString();
long expireTime = 5000;
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportArticle(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportBean")
public Result export(@Valid @RequestBody BeanRechargeDTO dto){
String lockKey = "export:lock:" + dto.getToken();
String requestId = UUID.randomUUID().toString();
long expireTime = 5000;
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportBean(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
@PostMapping("/exportol")
public Result exportol(@Valid @RequestBody OnlineDTO dto) throws Exception {
String lockKey = "export:lock:" + dto.getToken();
String requestId = UUID.randomUUID().toString();
long expireTime = 5000;
try {
// 尝试获取锁
if (!redisLockUtil.tryLock(lockKey, requestId, expireTime)) {
throw new BusinessException("操作太频繁,请稍后重试");
}
// 执行业务逻辑
return exportService.addExportOnline(dto);
} finally {
// 释放锁
redisLockUtil.unlock(lockKey, requestId);
}
}
}

10
src/main/java/com/example/demo/controller/GeneralController.java → src/main/java/com/example/demo/controller/coin/GeneralController.java

@ -1,9 +1,9 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.domain.vo.AdminVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.service.GeneralService;
import com.example.demo.domain.vo.coin.AdminVo;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.domain.vo.coin.RoleVo;
import com.example.demo.service.coin.GeneralService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

39
src/main/java/com/example/demo/controller/GoldDetailController.java → src/main/java/com/example/demo/controller/coin/GoldDetailController.java

@ -1,4 +1,4 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.BusinessException;
import com.example.demo.Util.JWTUtil;
@ -7,11 +7,12 @@ import com.example.demo.domain.DTO.GoldDetailDTO;
import com.example.demo.domain.DTO.GoldUserDTO;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.GoldDetail;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result;
import com.example.demo.service.GoldDetailService;
import com.example.demo.serviceImpl.AiEmotionServiceImpl;
import com.example.demo.domain.vo.coin.GoldDetail;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.GoldDetailService;
import com.example.demo.service.coin.MarketService;
import com.example.demo.serviceImpl.coin.AiEmotionServiceImpl;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
@ -24,7 +25,6 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
@ -43,13 +43,16 @@ import java.util.UUID;
@Slf4j
@CrossOrigin
public class GoldDetailController {
private final GoldDetailService goldDetailService;
@Autowired
private GoldDetailService goldDetailService;
@Autowired
private RedisLockUtil redisLockUtil;
@Autowired
private AiEmotionServiceImpl aiEmotionServiceImpl;
@Autowired
MarketService marketService;
@PostMapping("/getGoldDetail")
public Result getGoldDetail(@RequestBody Page page) throws Exception {
@ -66,8 +69,9 @@ public class GoldDetailController {
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));;
if(!markets.contains("总部")) {
page.getGoldDetail().setMarkets(markets);
if(!markets.contains("总部")&&!markets.contains("研发部")) {
page.getGoldDetail().setMarkets(marketService.getMarketIds(markets));
}
}
return Result.success(goldDetailService.getGoldDetail(page.getPageNum(), page.getPageSize(), page.getGoldDetail()));
@ -83,8 +87,9 @@ public class GoldDetailController {
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
page.getGoldDetail().setMarkets(markets);
if(!markets.contains("总部")&&!markets.contains("研发部")) {
page.getGoldDetail().setMarkets(marketService.getMarketIds(markets));
}
}
return Result.success(goldDetailService.sumGold(pageNum,pageSize,goldDetail));
@ -97,8 +102,9 @@ public class GoldDetailController {
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
user.setMarkets(markets);
if(!markets.contains("总部")&&!markets.contains("研发部")) {
user.setMarkets(marketService.getMarketIds(markets));
}
}
return Result.success(goldDetailService.GoldTotal(user));
@ -118,8 +124,9 @@ public class GoldDetailController {
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
if(!markets.contains("总部")) {
page.getUser().setMarkets(markets);
if(!markets.contains("总部")&&!markets.contains("研发部")) {
page.getUser().setMarkets(marketService.getMarketIds(markets));
}
}
return Result.success(goldDetailService.getGold(page.getPageNum(), page.getPageSize(), page.getUser()));

26
src/main/java/com/example/demo/controller/coin/MarketController.java

@ -0,0 +1,26 @@
package com.example.demo.controller.coin;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.MarketService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/market")
@RequiredArgsConstructor
@Slf4j
@CrossOrigin
public class MarketController {
@Autowired
private MarketService marketService;
@RequestMapping("/selectMarket")
public Result selectMarket()
{
return Result.success(marketService.selectMarket());
}
}

11
src/main/java/com/example/demo/controller/MenuController.java → src/main/java/com/example/demo/controller/coin/MenuController.java

@ -1,13 +1,12 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.service.MenuService;
import com.example.demo.domain.vo.coin.MenuVo;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.domain.vo.coin.RoleVo;
import com.example.demo.service.coin.MenuService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;

11
src/main/java/com/example/demo/controller/PermissionController.java → src/main/java/com/example/demo/controller/coin/PermissionController.java

@ -1,13 +1,12 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.AdminRole;
import com.example.demo.domain.vo.AdminVo;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Permission;
import com.example.demo.domain.vo.Result;
import com.example.demo.service.PermissionService;
import com.example.demo.domain.vo.coin.AdminVo;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.PermissionService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

10
src/main/java/com/example/demo/controller/RateController.java → src/main/java/com/example/demo/controller/coin/RateController.java

@ -1,16 +1,14 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.domain.entity.Rate;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result;
import com.example.demo.mapper.RateMapper;
import com.example.demo.service.RateService;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.RateService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;

41
src/main/java/com/example/demo/controller/RechargeController.java → src/main/java/com/example/demo/controller/coin/RechargeController.java

@ -1,13 +1,13 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.*;
import com.example.demo.service.ConsumeService;
import com.example.demo.service.RechargeService;
import com.example.demo.domain.vo.coin.*;
import com.example.demo.service.coin.RechargeService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
@ -79,19 +79,19 @@ public class RechargeController {
return Result.error("页大小为空!");
} else {
//解token权限
if(page.getRechargeUser().getMarkets()==null||page.getRechargeUser().getMarkets().isEmpty()){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
page.getRechargeUser().setMarkets(list);
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));;
page.getRechargeUser().setMarkets(markets);
}
else{
return Result.error("角色为空");
}
return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser()));
}
} catch (Exception e) {
e.printStackTrace();
return Result.error("请检查筛选数据的格式");
}
@ -102,15 +102,12 @@ public class RechargeController {
public Result statsGold(@RequestBody RechargeUser rechargeUser) {
try {
//解token权限
if(rechargeUser.getMarkets()==null||rechargeUser.getMarkets().isEmpty()){
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
rechargeUser.setMarkets(list);
}
else{
return Result.error("角色为空");
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
rechargeUser.setMarkets(markets);
}
Gold gold = rechargeService.statsGold(rechargeUser);
return Result.success(gold);
@ -130,5 +127,21 @@ public class RechargeController {
}
public Result selcet(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
//解token权限
return Result.success(rechargeService.selectBy(page.getPageNum(), page.getPageSize(), page.getRechargeUser()));
}
} catch (Exception e) {
return Result.error("请检查筛选数据的格式");
}
}
}

42
src/main/java/com/example/demo/controller/RefundController.java → src/main/java/com/example/demo/controller/coin/RefundController.java

@ -1,19 +1,18 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.*;
import com.example.demo.service.ConsumeService;
import com.example.demo.service.RefundService;
import com.example.demo.service.coin.RefundService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.example.demo.domain.vo.coin.*;
import java.util.Arrays;
import java.util.List;
@ -75,14 +74,12 @@ public class RefundController {
return Result.error("页大小为空!");
} else {
//解token权限
if(page.getRefundUser().getMarkets()==null||page.getRefundUser().getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
page.getRefundUser().setMarkets(list);
} else {
return Result.error("角色为空");
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
page.getRefundUser().setMarkets(markets);
}
return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
}
@ -97,15 +94,12 @@ public class RefundController {
public Result statsGold(@RequestBody RefundUser refundUser) {
try {
//解token权限
if(refundUser.getMarkets()==null||refundUser.getMarkets().isEmpty()) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = request.getHeader("token");
Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class);
if (admin != null) {
List<String> list = Arrays.asList(admin.getMarkets().split(","));
refundUser.setMarkets(list);
}
else{
return Result.error("角色为空");
List<String> markets = Arrays.asList(StringUtils.split(admin.getMarkets(), ","));
refundUser.setMarkets(markets);
}
Gold gold = refundService.statsGold(refundUser);
return Result.success(gold);
@ -137,4 +131,20 @@ public class RefundController {
return Result.error("请检查数据的格式");
}
}
public Result selcet(@RequestBody Page page) {
try {
if (ObjectUtils.isEmpty(page.getPageNum())) {
return Result.error("页码数为空!");
}
if (ObjectUtils.isEmpty(page.getPageSize())) {
return Result.error("页大小为空!");
} else {
return Result.success(refundService.selectBy(page.getPageNum(), page.getPageSize(), page.getRefundUser()));
}
} catch (Exception e) {
return Result.error("请检查筛选数据的格式");
}
}
}

12
src/main/java/com/example/demo/controller/RoleController.java → src/main/java/com/example/demo/controller/coin/RoleController.java

@ -1,13 +1,11 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.Page;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.service.RefundService;
import com.example.demo.service.RoleService;
import com.example.demo.domain.vo.coin.Page;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.domain.vo.coin.RoleVo;
import com.example.demo.service.coin.RoleService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

11
src/main/java/com/example/demo/controller/StatisticsController.java → src/main/java/com/example/demo/controller/coin/StatisticsController.java

@ -1,9 +1,7 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.domain.entity.Statistics;
import com.example.demo.domain.vo.Result;
import com.example.demo.service.GeneralService;
import com.example.demo.service.StatisticsService;
import com.example.demo.service.coin.GeneralService;
import com.example.demo.service.coin.StatisticsService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -12,9 +10,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName StatisticsController

10
src/main/java/com/example/demo/controller/UserController.java → src/main/java/com/example/demo/controller/coin/UserController.java

@ -1,11 +1,9 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.Gold;
import com.example.demo.domain.vo.GoldUser;
import com.example.demo.domain.vo.Result;
import com.example.demo.service.ConsumeService;
import com.example.demo.service.UserService;
import com.example.demo.domain.vo.coin.GoldUser;
import com.example.demo.domain.vo.coin.Result;
import com.example.demo.service.coin.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

19
src/main/java/com/example/demo/controller/WorkbenchController.java → src/main/java/com/example/demo/controller/coin/WorkbenchController.java

@ -1,26 +1,23 @@
package com.example.demo.controller;
package com.example.demo.controller.coin;
import com.example.demo.Util.JWTUtil;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.WorkbenchCard;
import com.example.demo.mapper.StatisticsMapper;
import com.example.demo.service.GeneralService;
import com.example.demo.service.StatisticsService;
import com.example.demo.service.WorkbenchService;
import com.example.demo.domain.vo.coin.WorkbenchCard;
import com.example.demo.mapper.coin.StatisticsMapper;
import com.example.demo.service.coin.GeneralService;
import com.example.demo.service.coin.StatisticsService;
import com.example.demo.service.coin.WorkbenchService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @program: gold-java
@ -60,7 +57,7 @@ public class WorkbenchController {
List<String> markets = workbenchService.getAdminMarket(account);
WorkbenchCard result;
//判断是否是总部
if (markets != null && markets.contains("总部")) {
if (markets != null && markets.contains("总部")||markets.contains("研发部")) {
result = workbenchService.getCardCache(markets);//走缓存拿全部市场的缓存数据
} else {
result = workbenchService.getCard(markets);//不走缓存计算卡片属性
@ -74,7 +71,7 @@ public class WorkbenchController {
@PostMapping("getGraph")
public ResponseEntity<WorkbenchCard> graph1(@RequestBody WorkbenchCard workbench, @AuthenticationPrincipal Admin admin) {
String account = admin.getAccount();
List<String> markets = generalService.getAdminMarket(account);
List<String> markets = workbenchService.getAdminMarket(account);
workbench.setMarkets(markets);

37
src/main/java/com/example/demo/domain/DTO/ArticleDTO.java

@ -0,0 +1,37 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.bean.BeanConsumeArticle;
import com.example.demo.domain.vo.bean.BeanConsumeFan;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName ArticleDTO
* @description:
* @author: huangqizhen
* @create: 202508-01 17:33
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class ArticleDTO {
private String token;
private String url = "";
private String fileName = "";
private Integer sort = 0;
private String field = "";
private Integer account;
private Integer type = 8; //类型
private Integer state = 0; //状态
private String text = ""; //关键词搜索
private Integer dataNum = 0;
private String deptid = "";
@NotNull(message = "page不能为空")
private Integer page = 1;
@NotNull(message = "pageSize不能为空")
private Integer pageSize = 20;
private BeanConsumeArticle beanConsumeArticle;
}

38
src/main/java/com/example/demo/domain/DTO/BeanRechargeDTO.java

@ -0,0 +1,38 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.bean.BeanConsumeArticle;
import com.example.demo.domain.vo.bean.BeanRechargeInfo;
import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName BeanRechargeDTO
* @description:
* @author: huangqizhen
* @create: 202508-03 09:26
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class BeanRechargeDTO {
private String token;
private String url = "";
private String fileName = "";
private Integer sort = 0;
private String field = "";
private Integer account;
private Integer type = 9; //类型
private Integer state = 0; //状态
private String text = ""; //关键词搜索
private Integer dataNum = 0;
private String deptid = "";
@NotNull(message = "page不能为空")
private Integer page = 1;
@NotNull(message = "pageSize不能为空")
private Integer pageSize = 20;
private BeanSystemRechargeInfo beanSystemRechargeInfo;
}

2
src/main/java/com/example/demo/domain/DTO/ConsumeDTO.java

@ -1,6 +1,6 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.ConsumeUser;
import com.example.demo.domain.vo.coin.ConsumeUser;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;

37
src/main/java/com/example/demo/domain/DTO/FanDTO.java

@ -0,0 +1,37 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.bean.BeanConsumeFan;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName FanDTO
* @description:
* @author: huangqizhen
* @create: 202508-01 15:45
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class FanDTO {
private String token;
private String url = "";
private String fileName = "";
private Integer sort = 0;
private String field = "";
private Integer account;
private Integer type = 7; //类型
private Integer state = 0; //状态
private String text = ""; //关键词搜索
private Integer dataNum = 0;
private String deptid = "";
@NotNull(message = "page不能为空")
private Integer page = 1;
@NotNull(message = "pageSize不能为空")
private Integer pageSize = 20;
private BeanConsumeFan beanConsumeFan;
}

2
src/main/java/com/example/demo/domain/DTO/GoldDetailDTO.java

@ -1,6 +1,6 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.GoldDetail;
import com.example.demo.domain.vo.coin.GoldDetail;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;

37
src/main/java/com/example/demo/domain/DTO/LiveDTO.java

@ -0,0 +1,37 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.bean.BeanConsumeLive;
import com.example.demo.domain.vo.coin.ConsumeUser;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName LiveDTO
* @description:
* @author: huangqizhen
* @create: 202507-31 17:28
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class LiveDTO {
private String token;
private String url = "";
private String fileName = "";
private Integer sort = 0;
private String field = "";
private Integer account;
private Integer type = 6; //类型
private Integer state = 0; //状态
private String text = ""; //关键词搜索
private Integer dataNum = 0;
private String deptid = "";
@NotNull(message = "page不能为空")
private Integer page = 1;
@NotNull(message = "pageSize不能为空")
private Integer pageSize = 20;
private BeanConsumeLive beanConsumeLive;
}

36
src/main/java/com/example/demo/domain/DTO/OnlineDTO.java

@ -0,0 +1,36 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.bean.BeanOnlineRechargeInfo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName OnlineDTO
* @description:
* @author: huangqizhen
* @create: 202508-03 11:51
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class OnlineDTO {
private String token;
private String url = "";
private String fileName = "";
private Integer sort = 0;
private String field = "";
private Integer account;
private Integer type = 10; //类型
private Integer state = 0; //状态
private String text = ""; //关键词搜索
private Integer dataNum = 0;
private String deptid = "";
@NotNull(message = "page不能为空")
private Integer page = 1;
@NotNull(message = "pageSize不能为空")
private Integer pageSize = 20;
private BeanOnlineRechargeInfo beanOnlineRechargeInfo;
}

2
src/main/java/com/example/demo/domain/DTO/RechargeDTO.java

@ -1,6 +1,6 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.RechargeUser;
import com.example.demo.domain.vo.coin.RechargeUser;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;

2
src/main/java/com/example/demo/domain/DTO/RefundDTO.java

@ -1,6 +1,6 @@
package com.example.demo.domain.DTO;
import com.example.demo.domain.vo.RefundUser;
import com.example.demo.domain.vo.coin.RefundUser;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.NoArgsConstructor;

33
src/main/java/com/example/demo/domain/entity/Market.java

@ -0,0 +1,33 @@
package com.example.demo.domain.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @program: GOLD
* @ClassName Export
* @description:
* @author: huangqizhen
* @create: 202507-26 16:17
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class Market {
private Integer id;
private String name;
private Integer parentId;
private Date createTime;
private String treelist;
private Integer type;
private List<Market> children;
}

32
src/main/java/com/example/demo/domain/vo/Page.java

@ -1,32 +0,0 @@
package com.example.demo.domain.vo;
import com.example.demo.domain.entity.User;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName Page
* @description:
* @author: huangqizhen
* @create: 202506-23 16:23
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class Page {
private static final long serialVersionUID = 1L;
private String token;
private Integer pageNum;
private Integer pageSize;
private GoldDetail goldDetail;
private ConsumeUser consumeUser;
private User user;
private RefundUser refundUser;
private Permission permission;
private RechargeAudit rechargeAudit;
private RefundAudit refundAudit;
private RechargeUser rechargeUser;
private RoleVo roleVo;
}

49
src/main/java/com/example/demo/domain/vo/bean/BeanAuditInfo.java

@ -0,0 +1,49 @@
package com.example.demo.domain.vo.bean;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName BeanAuditInfo
* @description:
* @author: Double
* @create: 202508-01 11:33
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanAuditInfo {
private Long id; // id
private Integer jwcode; // 精网号
private String name; // 姓名
private String market; // 所属地区
private Integer freeBean; // 免费豆
private Integer permanentBean; // 永久豆
private String remark; // 备注
private String submitName; // 提交人名称
private String auditName; // 审核人名称
private String reason; // 审核意见
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; //创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime; //审核时间
private String status; // 状态
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createStartTime; // 开始时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createEndTime; // 结束时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditStartTime; // 开始时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditEndTime; // 结束时间
private String sortField; // 排序字段
private String sortOrder; // 排序顺序
}

27
src/main/java/com/example/demo/domain/vo/bean/BeanConsume.java

@ -0,0 +1,27 @@
package com.example.demo.domain.vo.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName BeanConsume
* @description:
* @author: Ethan
* @create: 202508-02 11:32
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanConsume {
private Integer id;//id
private String jwcode; // 精网号
private Integer total; //总金豆
private Integer freeBean; // 免费豆
private Integer permanentBean; // 永久豆
private String remark; //备注
private Integer money; // 金额
private String adminName; // 管理员名称
}

63
src/main/java/com/example/demo/domain/vo/bean/BeanConsumeArticle.java

@ -0,0 +1,63 @@
package com.example.demo.domain.vo.bean;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName BeanConsumeArticle
* @description:
* @author: Ethan
* @create: 202507-31 17:05
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeArticle {
private static final long serialVersionUID = 1L;
@ExcelProperty("ID")
private Integer id;
@ExcelProperty("姓名")
private String name; //姓名
@ExcelProperty("精网号")
private Integer jwcode; //精网号
@ExcelProperty("地区/分部")
private String dept; //地区/分部
@ExcelProperty("类型")
private String type; //类型source_type 910打赏11付费
@ExcelIgnore
private Integer payMode; // 0 打赏 1 付费 2 其他
@ExcelProperty("金豆数量")
private String beanNum; //金豆数量
@ExcelProperty("付费金豆数量")
private Integer buyBean; //付费金豆
@ExcelProperty("免费金豆数量")
private Integer freeBean; //免费金豆
private Integer articleId; //文章/视频ID
@ExcelProperty("文章/视频标题")
private String articleName; //文章/视频标题source_name
@ExcelProperty("作者")
private String author; //作者
@ExcelProperty("支付类型")
private String payType; //支付类型 1-5:直播 7铁粉 8文章
@ExcelIgnore
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelProperty("付费时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date consumeTime; // 付费时间 时间戳转化
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
}

58
src/main/java/com/example/demo/domain/vo/bean/BeanConsumeFan.java

@ -0,0 +1,58 @@
package com.example.demo.domain.vo.bean;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @program: gold-java
* @ClassName BeanConsumeFan
* @description:
* @author: Ethan
* @create: 202507-31 11:30
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeFan {
private static final long serialVersionUID = 1L;
@ExcelProperty("ID")
private Integer id;
@ExcelProperty("姓名")
private String name; //姓名
@ExcelProperty("精网号")
private Integer jwcode; //精网号
@ExcelProperty("地区/分部")
private String dept; //地区/分部
@ExcelProperty("金豆数量")
private String beanNum; //金豆数量
@ExcelProperty("免费金豆")
private String freeBean; //免费金豆
@ExcelProperty("付费金豆")
private String buyBean; //付费金豆
@ExcelProperty("频道名称")
private String channel; //频道名称source_name
@ExcelProperty("消费方式")
private String type; //类型source_type 单月连续包月
@ExcelProperty("支付方式")
private Integer payType; //支付方式直播12345铁粉7文章8
@ExcelIgnore
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelProperty("消费时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date consumeTime; // 消费时间 时间戳转化
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
@ExcelIgnore
private Date startTime; // 开始时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
}

24
src/main/java/com/example/demo/domain/vo/bean/BeanConsumeGold.java

@ -0,0 +1,24 @@
package com.example.demo.domain.vo.bean;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName BeanConsumeGold
* @description:
* @author: Ethan
* @create: 202507-30 16:12
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeGold {
private static final long serialVersionUID = 1L;
private Integer sumBean ; //总金豆
private Integer permanentBean ; //付费金豆
private Integer freeBean ; //免费金豆
private Integer totalNum; //总条数
}

69
src/main/java/com/example/demo/domain/vo/bean/BeanConsumeLive.java

@ -0,0 +1,69 @@
package com.example.demo.domain.vo.bean;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanConsume
* @description:
* @author: Ethan
* @create: 202507-30 10:41
* @Version 1.0
**/
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanConsumeLive {
private static final long serialVersionUID = 1L;
@ExcelProperty("ID")
private Integer id;
@ExcelProperty("姓名")
private String name; //姓名
@ExcelProperty("精网号")
private Integer jwcode; //精网号
@ExcelProperty("地区/分部")
private String dept; //地区/分部
//类型 直播 1. 发礼物2. 发红包3. 发福袋4. 付费直播5. 加入粉丝团6. 发弹幕
//文章 1. 打赏2. 付费
@ExcelProperty("类型")
private String type; //类型
@ExcelProperty("礼物名称")
private String gift; //礼物名称
@ExcelProperty("是否为背包礼物")
private String isBackpack;
@ExcelProperty("金豆数量")
private String beanNum; //金豆数量
@ExcelProperty("频道名称")
private String liveChannel; //频道名称截取content
@ExcelProperty("免费金豆")
private String freeBean; //免费金豆
@ExcelProperty("付费金豆")
private String buyBean; //付费金豆
@ExcelProperty("直播名称")
private String liveName; //直播间名称
@ExcelProperty("消费时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date consumeTime; // 消费时间 时间戳转化
@ExcelProperty("支付方式")
private Integer payType; //支付方式直播12345铁粉7文章8
@ExcelIgnore
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
}

58
src/main/java/com/example/demo/domain/vo/bean/BeanOnlineRechargeInfo.java

@ -0,0 +1,58 @@
package com.example.demo.domain.vo.bean;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanRecharge
* @description:
* @author: Double
* @create: 202507-30 15:11
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanOnlineRechargeInfo {
private Long id;//id
@ExcelProperty("精网号")
private Integer jwcode; // 精网号
@ExcelProperty("客户姓名")
private String name; // 姓名
@ExcelProperty("所属地区")
private String market; // 所属地区
@ExcelProperty("金额")
private Double money; // 金额
@ExcelProperty("数量")
private Integer num; // 数量
@ExcelProperty("订单号")
private String orderNo; // 订单号
@ExcelProperty("充值平台 PC:1 手机:2")
private String platform; // 充值平台
@ExcelProperty("充值时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date rechargeTime; // 充值时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
@ExcelIgnore
private List<String> markets; // 地区列表
@ExcelIgnore
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
}

27
src/main/java/com/example/demo/domain/vo/bean/BeanRecharge.java

@ -0,0 +1,27 @@
package com.example.demo.domain.vo.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName BeanRecharge
* @description:
* @author: Double
* @create: 202507-29 16:50
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanRecharge {
private Integer id;//id
private Integer jwcode; // 精网号
private Integer freeBean; // 免费豆
private Integer permanentBean; // 永久豆
private String remark; //备注
private Integer money; // 金额
private String adminName; // 管理员名称
}

62
src/main/java/com/example/demo/domain/vo/bean/BeanRechargeInfo.java

@ -0,0 +1,62 @@
package com.example.demo.domain.vo.bean;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanRecharge
* @description:
* @author: Double
* @create: 202507-30 15:11
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanRechargeInfo {
private Long id;//id
@ExcelProperty("精网号")
private Integer jwcode; // 精网号
@ExcelProperty("客户姓名")
private String name; // 姓名
@ExcelProperty("所属地区")
private String market; // 所属地区
@ExcelProperty("免费金豆")
private Integer freeBean; // 免费豆
@ExcelProperty("付费金豆")
private Integer permanentBean; // 永久豆
@ExcelProperty("金额")
private Double money; // 金额
@ExcelProperty("数量")
private Integer num; // 数量
@ExcelProperty("订单号")
private String orderNo; // 订单号
@ExcelProperty("充值平台 PC:1 手机:2")
private String platform; // 充值平台
@ExcelProperty("充值时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date rechargeTime; // 充值时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
@ExcelIgnore
private List<String> markets; // 地区列表
@ExcelIgnore
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
}

58
src/main/java/com/example/demo/domain/vo/bean/BeanSystemRechargeInfo.java

@ -0,0 +1,58 @@
package com.example.demo.domain.vo.bean;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanRecharge
* @description:
* @author: Double
* @create: 202507-30 15:11
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanSystemRechargeInfo {
private Long id;//id
@ExcelProperty("精网号")
private Integer jwcode; // 精网号
@ExcelProperty("客户姓名")
private String name; // 姓名
@ExcelProperty("所属地区")
private String market; // 所属地区
@ExcelProperty("免费金豆")
private Integer freeBean; // 免费豆
@ExcelProperty("付费金豆")
private Integer permanentBean; // 永久豆
@ExcelProperty("金额")
private Double money; // 金额
@ExcelProperty("备注")
private String remark; //备注
@ExcelProperty("充值时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date rechargeTime; // 充值时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date startTime; // 开始时间
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
@ExcelIgnore
private List<String> markets; // 地区列表
@ExcelIgnore
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
}

29
src/main/java/com/example/demo/domain/vo/bean/BeanUser.java

@ -0,0 +1,29 @@
package com.example.demo.domain.vo.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName BeanUser
* @description:
* @author: Ethan
* @create: 202508-01 10:40
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanUser {
private Integer id;
private String name; //姓名
private Integer jwcode; //精网号
private String dept; //分部
private Integer beanNum; //金豆数量
private Integer buyBean; //付费金豆
private Integer freeBean; //免费金豆
private Integer totalCostBean; //历史消费
private String sortField; //排序字段
private String sortOrder; //排序顺序
}

29
src/main/java/com/example/demo/domain/vo/bean/BeanUserCard.java

@ -0,0 +1,29 @@
package com.example.demo.domain.vo.bean;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName BeanUser
* @description:
* @author: Double
* @create: 202507-29 17:06
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BeanUserCard {
private String name; // 客户姓名
private Integer jwcode; // 精网号
private String market; // 所属地区
private Integer sumBean; // 所有金豆
private Integer freeBean; // 免费豆
private Integer permanentBean; // 永久豆
private Integer consumeSum; // 消费金额
}

25
src/main/java/com/example/demo/domain/vo/bean/GoldBean.java

@ -0,0 +1,25 @@
package com.example.demo.domain.vo.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName GoldBean
* @description:
* @author: Double
* @create: 202507-31 13:10
* @Version 1.0
**/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class GoldBean {
private Integer freeBean; // 免费豆
private Integer permanentBean; // 永久豆
private Double money; // 金额
private Integer beanNum; // 豆数量
private Integer num; // 订单数
}

2
src/main/java/com/example/demo/domain/vo/AdminVo.java → src/main/java/com/example/demo/domain/vo/coin/AdminVo.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

2
src/main/java/com/example/demo/domain/vo/AiEmotionExportRecordVO.java → src/main/java/com/example/demo/domain/vo/coin/AiEmotionExportRecordVO.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.Data;
import lombok.NoArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/AuditRequest.java → src/main/java/com/example/demo/domain/vo/coin/AuditRequest.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

4
src/main/java/com/example/demo/domain/vo/ConsumeUser.java → src/main/java/com/example/demo/domain/vo/coin/ConsumeUser.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
@ -68,6 +68,6 @@ public class ConsumeUser implements Serializable {
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表
}

2
src/main/java/com/example/demo/domain/vo/ExecutionContext.java → src/main/java/com/example/demo/domain/vo/coin/ExecutionContext.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

2
src/main/java/com/example/demo/domain/vo/ExportVo.java → src/main/java/com/example/demo/domain/vo/coin/ExportVo.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.Data;
import lombok.NoArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/Gold.java → src/main/java/com/example/demo/domain/vo/coin/Gold.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

4
src/main/java/com/example/demo/domain/vo/GoldDetail.java → src/main/java/com/example/demo/domain/vo/coin/GoldDetail.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
@ -57,7 +57,7 @@ public class GoldDetail {
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelIgnore
@ExcelProperty("更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date auditTime;
@ExcelIgnore

2
src/main/java/com/example/demo/domain/vo/GoldUser.java → src/main/java/com/example/demo/domain/vo/coin/GoldUser.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;

2
src/main/java/com/example/demo/domain/vo/MarketRechargeStat.java → src/main/java/com/example/demo/domain/vo/coin/MarketRechargeStat.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

2
src/main/java/com/example/demo/domain/vo/MenuVo.java → src/main/java/com/example/demo/domain/vo/coin/MenuVo.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

43
src/main/java/com/example/demo/domain/vo/coin/Page.java

@ -0,0 +1,43 @@
package com.example.demo.domain.vo.coin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.vo.bean.*;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: GOLD
* @ClassName Page
* @description:
* @author: huangqizhen
* @create: 202506-23 16:23
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class Page {
private static final long serialVersionUID = 1L;
private String token;
private Integer pageNum;
private Integer pageSize;
private GoldDetail goldDetail;
private ConsumeUser consumeUser;
private User user;
private RefundUser refundUser;
private Permission permission;
private RechargeAudit rechargeAudit;
private RefundAudit refundAudit;
private RechargeUser rechargeUser;
private RoleVo roleVo;
private Integer payType; //支付方式直播12345铁粉7文章8
private BeanConsumeLive beanConsumeLive; //直播金豆消费
private BeanConsumeFan beanConsumeFan; //铁粉金豆消费
private BeanConsumeArticle beanConsumeArticle; //文章金豆消费
private BeanSystemRechargeInfo beanSystemRechargeInfo; //金豆充值信息
private BeanOnlineRechargeInfo beanOnlineRechargeInfo; //金豆充值信息
private BeanConsumeGold beanConsumeGold; //金豆消费合计数
private BeanUser beanUser; //客户金豆余额明细
private BeanUserCard beanUserCard; //客户金豆卡片
private BeanAuditInfo beanAuditInfo; //金豆审核信息
}

2
src/main/java/com/example/demo/domain/vo/Password.java → src/main/java/com/example/demo/domain/vo/coin/Password.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

2
src/main/java/com/example/demo/domain/vo/Permission.java → src/main/java/com/example/demo/domain/vo/coin/Permission.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.Data;
import lombok.NoArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/RateDetail.java → src/main/java/com/example/demo/domain/vo/coin/RateDetail.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

2
src/main/java/com/example/demo/domain/vo/RechargeAudit.java → src/main/java/com/example/demo/domain/vo/coin/RechargeAudit.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

44
src/main/java/com/example/demo/domain/vo/RechargeUser.java → src/main/java/com/example/demo/domain/vo/coin/RechargeUser.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
@ -25,64 +25,64 @@ public class RechargeUser {
private static final long serialVersionUID = 1L;
// @ExcelProperty("客户姓名")
@ExcelProperty("客户姓名")
private String name; // 客户姓名
// @ExcelProperty("精网号")
@ExcelProperty("精网号")
private Integer jwcode; // 精网号
// @ExcelProperty("所属地区")
@ExcelProperty("所属地区")
private String market; // 所属地区
// @ExcelProperty("活动名称")
@ExcelProperty("活动名称")
private String activity; // 活动名称
// @ExcelProperty("汇率ID")
@ExcelProperty("汇率ID")
private Integer rateId; // 汇率ID
// @ExcelProperty("汇率名称")
@ExcelProperty("汇率名称")
private String rateName; // 汇率名称
// @ExcelProperty("金额[分]")
@ExcelProperty("金额[分]")
private Integer money; // 金额[]
// @ExcelProperty("永久金币")
@ExcelProperty("永久金币")
private Integer permanentGold; // 永久金币
// @ExcelProperty("免费金币")
@ExcelProperty("免费金币")
private Integer freeGold; // 免费金币
// @ExcelProperty("支付方式")
@ExcelProperty("支付方式")
private String payModel; // 支付方式
// @ExcelProperty("支付平台")
@ExcelProperty("支付平台")
private String payPlatform; // 支付平台
// @ExcelProperty("支付凭证")
@ExcelProperty("支付凭证")
private String voucher; // 支付凭证
// @ExcelProperty("备注")
@ExcelProperty("备注")
private String remark; // 备注
// @ExcelProperty("提交人Id")
@ExcelProperty("提交人Id")
private Integer adminId; // 提交人Id
// @ExcelProperty("提交人姓名")
@ExcelProperty("提交人姓名")
private String adminName; // 提交人姓名
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
// @ExcelProperty("创建时间")
@ExcelProperty("创建时间")
private Date payTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
// @ExcelIgnore
@ExcelIgnore
private Date startTime; // 开始时间
// @ExcelIgnore
@ExcelIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date endTime; // 结束时间
// @ExcelIgnore
@ExcelIgnore
private String sortField; //排序字段
// @ExcelIgnore
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表
}

2
src/main/java/com/example/demo/domain/vo/RefundAudit.java → src/main/java/com/example/demo/domain/vo/coin/RefundAudit.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

4
src/main/java/com/example/demo/domain/vo/RefundUser.java → src/main/java/com/example/demo/domain/vo/coin/RefundUser.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
@ -68,6 +68,6 @@ public class RefundUser {
private String sortField; //排序字段
@ExcelIgnore
private String sortOrder; //排序顺序
@ExcelIgnore
private List<String> markets; // 地区列表
}

2
src/main/java/com/example/demo/domain/vo/Result.java → src/main/java/com/example/demo/domain/vo/coin/Result.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.example.demo.Util.BusinessException;
import com.fasterxml.jackson.core.JsonProcessingException;

2
src/main/java/com/example/demo/domain/vo/RoleMenu.java → src/main/java/com/example/demo/domain/vo/coin/RoleMenu.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.Data;
import lombok.NoArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/RoleVo.java → src/main/java/com/example/demo/domain/vo/coin/RoleVo.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

2
src/main/java/com/example/demo/domain/vo/TestRequest.java → src/main/java/com/example/demo/domain/vo/coin/TestRequest.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

2
src/main/java/com/example/demo/domain/vo/Total.java → src/main/java/com/example/demo/domain/vo/coin/Total.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.Data;
import lombok.NoArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/WorkbenchCard.java → src/main/java/com/example/demo/domain/vo/coin/WorkbenchCard.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/WorkbenchFullStatistics.java → src/main/java/com/example/demo/domain/vo/coin/WorkbenchFullStatistics.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

2
src/main/java/com/example/demo/domain/vo/WorkbenchMarketCard.java → src/main/java/com/example/demo/domain/vo/coin/WorkbenchMarketCard.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;

2
src/main/java/com/example/demo/domain/vo/WorkbenchMarketGraph.java → src/main/java/com/example/demo/domain/vo/coin/WorkbenchMarketGraph.java

@ -1,4 +1,4 @@
package com.example.demo.domain.vo;
package com.example.demo.domain.vo.coin;
import lombok.AllArgsConstructor;
import lombok.Data;

40
src/main/java/com/example/demo/mapper/bean/BeanConsumeMapper.java

@ -0,0 +1,40 @@
package com.example.demo.mapper.bean;
import com.example.demo.domain.vo.bean.*;
import com.example.demo.domain.vo.coin.RechargeAudit;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanConsumeMapper.xml
* @description:
* @author: Ethan
* @create: 202507-30 11:56
* @Version 1.0
**/
@Mapper
public interface BeanConsumeMapper {
//获取消费用户分部
List<String> getDept();
//筛选查询直播消费
List<BeanConsumeLive> selectLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive);
//筛选查询铁粉消费
List<BeanConsumeFan> selectFanBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan);
//筛选查询文章消费
List<BeanConsumeArticle> selectArticleBy(@Param("beanConsumeArticle") BeanConsumeArticle beanConsumeArticle);
//查询金豆直播消费金额
BeanConsumeGold selectSumLiveBy(@Param("beanConsumeLive") BeanConsumeLive beanConsumeLive);
//查询金豆铁粉消费金额
BeanConsumeGold selectSumFansBy(@Param("beanConsumeFan") BeanConsumeFan beanConsumeFan);
//查询金豆文章消费金额
BeanConsumeGold selectSumArticleBy(@Param("beanConsumeArticle") BeanConsumeArticle beanConsumeArticle);
//查询直播礼物
List<String> getLiveGift();
//查询直播全部频道
List<String> getLiveChannel();
}

25
src/main/java/com/example/demo/mapper/bean/BeanRechargeMapper2.java

@ -0,0 +1,25 @@
package com.example.demo.mapper.bean;
import com.example.demo.domain.vo.bean.BeanSystemRechargeInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanRechargeMapper
* @description:
* @author: Double
* @create: 202507-30 15:43
* @Version 1.0
**/
@Mapper
public interface BeanRechargeMapper2 {
List<BeanSystemRechargeInfo> selectBySystem(BeanSystemRechargeInfo beanSystemRechargeInfo);
List<String> systemMarket();
}

31
src/main/java/com/example/demo/mapper/bean/BeanUserMapper.java

@ -0,0 +1,31 @@
package com.example.demo.mapper.bean;
import com.example.demo.domain.vo.bean.BeanUser;
import com.example.demo.domain.vo.bean.BeanUserCard;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanUserMapper
* @description:
* @author: Double
* @create: 202507-29 17:31
* @Version 1.0
**/
@Mapper
public interface BeanUserMapper {
//查询客户金豆余额
List<BeanUser> selectUserBy(@Param("beanUser") BeanUser beanUser);
//查询用户卡片
BeanUserCard userCard(@Param("jwcode")String jwcode);
//查询客户金豆余额合计
BeanUserCard SumUserBy(@Param("beanUser")BeanUser beanUser);
//查询客户分部
List<String> getDept();
}

2
src/main/java/com/example/demo/mapper/AdminMapper.java → src/main/java/com/example/demo/mapper/coin/AdminMapper.java

@ -1,4 +1,4 @@
package com.example.demo.mapper;
package com.example.demo.mapper.coin;
import com.example.demo.domain.entity.Admin;
import org.apache.ibatis.annotations.Mapper;

4
src/main/java/com/example/demo/mapper/AiEmotionMapper.java → src/main/java/com/example/demo/mapper/coin/AiEmotionMapper.java

@ -1,6 +1,6 @@
package com.example.demo.mapper;
package com.example.demo.mapper.coin;
import com.example.demo.domain.vo.AiEmotionExportRecordVO;
import com.example.demo.domain.vo.coin.AiEmotionExportRecordVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

7
src/main/java/com/example/demo/mapper/AuditMapper.java → src/main/java/com/example/demo/mapper/coin/AuditMapper.java

@ -1,10 +1,9 @@
package com.example.demo.mapper;
package com.example.demo.mapper.coin;
import com.example.demo.domain.entity.User;
import com.example.demo.domain.entity.UserGoldRecord;
import com.example.demo.domain.vo.RechargeAudit;
import com.example.demo.domain.vo.RefundAudit;
import com.github.pagehelper.PageInfo;
import com.example.demo.domain.vo.coin.RechargeAudit;
import com.example.demo.domain.vo.coin.RefundAudit;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

31
src/main/java/com/example/demo/mapper/coin/BeanAuditMapper.java

@ -0,0 +1,31 @@
package com.example.demo.mapper.coin;
import com.example.demo.domain.vo.bean.BeanAuditInfo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* @program: gold-java
* @ClassName BeanAuditMapper
* @description:
* @author: Double
* @create: 202508-01 11:44
* @Version 1.0
**/
@Mapper
public interface BeanAuditMapper {
//查找审核信息
List<BeanAuditInfo> selectBy(BeanAuditInfo beanAuditInfo);
//根据id查询审核信息
BeanAuditInfo selectById(Long id);
//根据id更新状态为1
void updateStatus1(BeanAuditInfo beanAuditInfo);
//根据id更新状态为2
void updateStatus2(BeanAuditInfo beanAuditInfo);
}

20
src/main/java/com/example/demo/mapper/coin/BeanRechargeMapper1.java

@ -0,0 +1,20 @@
package com.example.demo.mapper.coin;
import com.example.demo.domain.vo.bean.BeanRecharge;
import org.apache.ibatis.annotations.Mapper;
/**
* @program: gold-java
* @ClassName BeanRechargeMapper
* @description:
* @author: Double
* @create: 202507-30 15:43
* @Version 1.0
**/
@Mapper
public interface BeanRechargeMapper1 {
int add(BeanRecharge recharge);
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save